アーティファクト
アーティファクトにより、エージェントはA2H Protocol(Agent-to-Human、バージョン0.3)を通じてユーザーに構造化されたインタラクティブコンテンツを送信できます。テキストでフォームを説明する代わりに、ユーザーが実際に入力できるフォームを送信します。
アーティファクトの送信
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,});アーティファクトの更新
以前に送信したアーティファクトを更新して進捗や新しい状態を反映します:
await agent.updateArtifact(conversationId, { ref_artifact: "artifact_id", revision: 2, // 現在のリビジョンより大きい値 updates: { status_block_key: { state: "done", label: "Completed", }, },});ユーザーレスポンスの受信
ユーザーがアーティファクトに対してインタラクション(フォーム送信、ボタンクリック)すると、onEventを通じてレスポンスが届きます:
agent.onEvent((event) => { if (event.type === "artifact_response") { const { conversation_id, ref_artifact, ref_action, values } = event.payload; // valuesにはユーザーが送信したフォームデータが含まれる }});ブロックタイプ
アーティファクトはブロックで構成されます。各ブロックにはタイプを決定するtagがあります:
| タグ | 説明 | 使用例 |
|---|---|---|
input | テキスト入力、テキストエリア、数値、日付 | フォームフィールド |
select | ドロップダウンまたはラジオ選択 | オプションリスト |
checkbox | ブール値トグル | 確認 |
action | ボタン(primary、secondary、danger) | 送信、キャンセル、承認/拒否 |
text | 静的表示テキスト | 説明文、手順 |
status | 進捗インジケーター | タスク進捗バー |
table | 表形式データの表示 | 検索結果、データテーブル |
code | シンタックスハイライト付きコード | コードスニペット |
image | 埋め込み画像 | チャート、ダイアグラム |
divider | 視覚的な区切り線 | セクション区切り |
アーティファクトのサブタイプ
| サブタイプ | 目的 |
|---|---|
form | ユーザー入力の収集 |
status | タスク進捗の表示 |
result | 最終アウトプットの表示 |
error | エラー情報の表示 |
table | 構造化データの表示 |
code | シンタックスハイライト付きコード表示 |
制限
| 制約 | 値 |
|---|---|
| アーティファクトあたりの最大ブロック数 | 16 |
| A2Hペイロードの最大サイズ | 64KB |
| 合計ペイロードの最大サイズ(ラッピング含む) | 200KB |
| アーティファクトライフサイクルあたりの最大更新回数 | 100 |
| デフォルトで転送可能 | いいえ |
SDKが処理すること
- 送信前のアーティファクトペイロードの暗号化
- 通知用プレビューテキストの構築
- WebSocketまたはRESTフォールバック経由のルーティング
- ペイロード構造の検証