Skip to main content
執行一個 Agent 回合,並以 Anthropic 風格的 server-sent events(SSE)串流回傳結果。
以下範例使用 DataGen Cloud(https://api.datagen.dev)。自架安裝請把主機換成自己的 伺服器 — 例如 http://10.0.0.42:3001/api/agents/invoice-agent/v1/messages — 其餘完全相同。 詳見 Base URL

請求內容

其他 Anthropic 欄位(max_tokenstemperaturetools 等)會被接受但忽略。

metadata

metadata.builder 會在 Agent builder 的工作樹中執行(僅限以儲存空間為來源的 Agent,需要 Admin 或 Builder 權限);metadata.test 會把新對話標記為隱藏的測試 執行。兩者是 DataGen 網頁介面在使用的,並非提供給外部整合。

寫入連結的 repository

使用 API key 呼叫時預設為唯讀。 以 repo 為來源的 Agent 會 clone 並讀取 repo, 但除非你明確要求,否則不會寫回。 若要讓某一回合可以提交它的成果:
read_only: false 時,只要該回合變更了任何檔案,結束前就會執行 git add -A、 以 datagen-agent 身分 commit,並 push 到 repository 的預設分支 — 不是暫存 分支。請只在整合的目的就是修改 repository 時才送出這個設定,並考慮讓 Agent 指向 預設分支受保護的 repo。
以儲存空間為來源的 Agent 沒有 repository,也不會 push。它們的工作檔案在每一回合開始 時重新還原、結束後不會寫回;一個回合的持久產出,是 Agent 寫入 outputs 目錄的內容, 這些會發佈到 workspace 的儲存空間。

附件

只接受 base64,不要加 data: 前綴。檔名會被正規化為安全的檔名並自動去重複。格式錯誤 的項目、以及超出上限的部分會被靜默捨棄,因此若「缺少檔案」對你而言屬於重大問題,請在 用戶端先行驗證。附件永遠不會被提交到連結的 repository。

回應

200 OKContent-Type: text/event-stream,並帶有 X-Conversation-Id 回應 header — 若你沒有自訂 id,請記得把它保存下來。
區塊型別。 textthinking(其後會跟著 signature_delta),以及在開啟 stream_tool_calls 時的 tool_use(伴隨 input_json_delta)與 tool_result (帶有 tool_use_idcontentis_error)。tool_result 區塊是 DataGen 的擴充, 一般 Anthropic 客戶端會忽略它。 顆粒度。 區塊是整塊送達,而非逐 token:每個區塊是 content_block_start + 一次完整的 content_block_delta + content_block_stopindex 是這一回合的遞增計數。 結束方式。 串流在 message_stop 結束 — 沒有 data: [DONE] 結尾標記。 用量。 message_delta.usage 包含 input_tokensoutput_tokenscache_read_input_tokenscache_creation_input_tokens,以及 DataGen 專屬的 total_cost_usd(該回合的美元成本)。
串流開始之後才發生的失敗,會以 SSE error 事件出現在一個已經回傳 200 的回應中: event: error data: {"error":{"type":"api_error","message":"…"}}。 請檢查 error 事件,不要只看 HTTP 狀態碼。

範例

之所以需要 extra_body(Python)與型別轉換(TypeScript),是因為 SDK 把 metadata 定義成 Anthropic 的 {user_id} 物件。這個欄位會原封不動傳給 DataGen。

不使用 SDK 讀取串流


以模型字串指定 Agent

如果你偏好用模型字串而不是 URL 路徑來選擇 Agent:
並帶上 "model": "datagen-agent--data-agent"(或直接用 Agent 名稱)。當用戶端只能 設定一個 base URL、而透過模型選單切換 Agent 時特別有用。其餘行為完全相同。