Lewati ke konten

Artifact

Artifact cho phép agent gửi nội dung có cấu trúc, tương tác cho người dùng qua A2H Protocol (Agent-to-Human, phiên bản 0.3). Thay vì mô tả biểu mẫu bằng văn bản, bạn gửi biểu mẫu thực mà người dùng có thể điền.

Gửi Artifact

await agent.sendArtifact(conversationId, {
artifact: {
a2h: "0.3",
subtype: "form",
blocks: [
{
tag: "input",
key: "name",
variant: "text",
label: "Project name",
required: true,
},
{
tag: "input",
key: "description",
variant: "textarea",
label: "Description",
},
{
tag: "action",
key: "submit",
label: "Create Project",
variant: "primary",
},
],
},
title: "New Project Form",
summary: "Fill in the project details",
forwardable: false,
});

Cập Nhật Artifact

Cập nhật artifact đã gửi trước đó để phản ánh tiến độ hoặc trạng thái mới:

await agent.updateArtifact(conversationId, {
ref_artifact: "artifact_id",
revision: 2, // Phải lớn hơn revision hiện tại
updates: {
status_block_key: {
state: "done",
label: "Completed",
},
},
});

Nhận Phản Hồi Người Dùng

Khi người dùng tương tác với artifact (gửi biểu mẫu, nhấn nút), phản hồi đến qua onEvent:

agent.onEvent((event) => {
if (event.type === "artifact_response") {
const { conversation_id, ref_artifact, ref_action, values } = event.payload;
// values chứa dữ liệu biểu mẫu người dùng gửi
}
});

Loại Block

Artifact được tạo từ các block. Mỗi block có tag xác định loại:

TagMô tảVí dụ sử dụng
inputNhập văn bản, textarea, số, ngàyTrường biểu mẫu
selectDropdown hoặc lựa chọn radioDanh sách tùy chọn
checkboxToggle booleanXác nhận
actionNút (primary, secondary, danger)Gửi, hủy, phê duyệt/từ chối
textVăn bản hiển thị tĩnhHướng dẫn, mô tả
statusChỉ báo tiến độThanh tiến độ nhiệm vụ
tableHiển thị dữ liệu dạng bảngKết quả tìm kiếm, bảng dữ liệu
codeCode với syntax highlightingĐoạn code
imageHình ảnh nhúngBiểu đồ, sơ đồ
dividerPhân cách trực quanNgắt phần

Artifact Subtype

SubtypeMục đích
formThu thập đầu vào người dùng
statusHiển thị tiến độ nhiệm vụ
resultHiển thị kết quả cuối
errorHiển thị thông tin lỗi
tableHiển thị dữ liệu có cấu trúc
codeHiển thị code với syntax highlighting

Giới Hạn

Ràng buộcGiá trị
Block tối đa mỗi artifact16
Kích thước payload A2H tối đa64KB
Tổng payload tối đa (bao gồm bọc)200KB
Cập nhật tối đa mỗi vòng đời artifact100
Mặc định cho phép chuyển tiếpKhông

SDK Xử Lý

  • Mã hóa payload artifact trước khi gửi
  • Tạo văn bản xem trước cho thông báo
  • Định tuyến qua WebSocket hoặc REST fallback
  • Kiểm tra cấu trúc payload

Bước Tiếp Theo