View a markdown version of this page

AG-UI 通訊協定合約 - Amazon Bedrock AgentCore

AG-UI 通訊協定合約

AG-UI 通訊協定合約定義在 Amazon Bedrock AgentCore 執行期中實作agent-to-user界面通訊的需求。本合約會指定 AG-UI 代理程式必須實作的技術需求、端點和通訊模式。

如需程式碼範例,請參閱在 AgentCore 執行期中部署 AG-UI 伺服器

通訊協定實作要求

您的 AG-UI 代理程式必須實作這些特定的通訊協定需求:

  • 傳輸 :伺服器傳送事件 (SSE) 或 WebSocket - SSE 提供從伺服器到用戶端的單向串流,而 WebSocket 則啟用雙向即時通訊

  • 工作階段管理:平台會自動新增工作階段隔離的X-Amzn-Bedrock-AgentCore-Runtime-Session-Id標頭

容器需求

您的 AG-UI 代理程式必須部署為符合下列規格的容器化應用程式:

  • 主機0.0.0.0

  • 連接埠:- AG-UI 8080 代理程式通訊的標準連接埠 (與 HTTP 通訊協定相同)

  • 平台 :ARM64 容器 - 與 Amazon Bedrock AgentCore AWS 執行期環境相容時需要

路徑需求

/invocations - POST

用途

接收使用者請求並將回應串流為伺服器傳送事件 (SSE)

使用案例

調用端點有幾個主要用途:

  • 串流聊天回應

  • 客服人員狀態和思考步驟

  • 工具呼叫和結果

要求格式

Amazon Bedrock AgentCore 會將請求承載直接傳遞到您的容器,無需驗證。若要符合 AG-UI-compliant,您的請求應遵循 RunAgentInput 格式。您的容器實作會決定需要哪些欄位,以及如何處理驗證錯誤。

AG-UI-compliant代理程式預期會有 RunAgentInput JSON 承載。範例:

{ "threadId": "thread-123", "runId": "run-456", "messages": [{"id": "msg-1", "role": "user", "content": "Hello, agent!"}], "tools": [], "context": [], "state": {}, "forwardedProps": {} }

如需完整的RunAgentInput結構描述和訊息格式詳細資訊,請參閱 AG-UI 類型

回應格式

AG-UI 代理程式會以 SSE 格式的事件串流回應:

Content-Type: text/event-stream data: {"type":"RUN_STARTED","threadId":"thread-123","runId":"run-456"} data: {"type":"TEXT_MESSAGE_START","messageId":"msg-789","role":"assistant"} data: {"type":"TEXT_MESSAGE_CONTENT","messageId":"msg-789","delta":"Processing your request"} data: {"type":"TOOL_CALL_START","toolCallId":"tool-001","toolCallName":"search","parentMessageId":"msg-789"} data: {"type":"TOOL_CALL_RESULT","messageId":"msg-789","toolCallId":"tool-001","content":"Search completed"} data: {"type":"TEXT_MESSAGE_END","messageId":"msg-789"} data: {"type":"RUN_FINISHED","threadId":"thread-123","runId":"run-456"}

/ws - WebSocket

用途

提供用戶端和客服人員之間的雙向即時通訊

使用案例

WebSocket 端點有幾個主要用途:

  • 即時對話界面

  • 使用者中斷的互動式代理程式工作階段

  • 具有持久性連線的多轉對話

/ping - GET

用途

驗證您的 AG-UI 代理程式是否正常運作並準備好處理請求

回應格式

傳回狀態碼,指出代理程式的運作狀態:

  • Content-Typeapplication/json

  • HTTP 狀態碼200適用於運作狀態不良、適當的錯誤碼

{ "status": "Healthy" }

status 為必要項目,且為 Healthy或 之一HealthyBusy。當狀態為 時HealthyBusy,執行階段工作階段會保持運作狀態。

可能會包含選用time_of_last_update欄位 (以秒為單位的 Unix 時間戳記),以報告status上次變更的時間。

警告

請勿在每個 ping 上time_of_last_update將 設定為目前時間。在每個 ping 上推進的時間戳記會發出持續狀態變更,防止閒置工作階段逾時永遠觸發 — 然後工作階段會保留到 ,MaxLifetime並可以耗盡工作階段配額。如果您省略 欄位,平台會自行追蹤狀態變更。如果您使用 Bedrock AgentCore 開發套件,則會為您處理 ping 回應。

身分驗證要求

AG-UI 代理程式支援多個身分驗證機制:

OAuth 2.0 承載權杖

對於 AG-UI 用戶端身分驗證,請在請求標頭中包含承載字符:

Authorization: Bearer <oauth-token> X-Amzn-Bedrock-AgentCore-Runtime-Session-Id: <session-id>

SigV4 身分驗證

程式設計存取也支援 Standard AWS SigV4 身分驗證。

錯誤處理

錯誤根據發生的時間分為兩個類別:

  • 連線層級錯誤 :在請求到達您的容器 (身分驗證、驗證、限流) 之前發生。這些會傳回標準 HTTP 狀態碼。

  • 執行時間錯誤 :串流啟動後,在代理程式執行期間發生。這些會在 SSE 串流中顯示為RUN_ERROR事件,而非 HTTP 狀態碼。

AG-UI 錯誤代碼 HTTP 狀態 說明

UNAUTHORIZED

401

需要身分驗證或無效的登入資料

ACCESS_DENIED

403

請求操作的許可不足

VALIDATION_ERROR

400

無效的請求資料或參數

RATE_LIMIT_EXCEEDED

429

來自用戶端的請求過多

AGENT_ERROR

200

代理程式程式碼在執行期間失敗 – 檢查您的 CloudWatch 日誌

範例執行時間錯誤 (代理程式失敗):

HTTP/1.1 200 OK Content-Type: text/event-stream x-amzn-requestid: 8bg30e9c-7e26-6bge-dc4b-75h368cc10cf data: {"type":"RUN_ERROR","code":"AGENT_ERROR","message":"Agent execution failed"}

OAuth 身分驗證回應

OAuth 設定的代理程式會傳回具有標準 HTTP 狀態碼的身分驗證錯誤。回應包含透過 GetRuntimeProtectedResourceMetadata API 進行 OAuth 探索的WWW-Authenticate標頭 (根據 RFC 7235)。

OAuth 身分驗證錯誤範例:

HTTP/1.1 401 Unauthorized Content-Type: text/event-stream WWW-Authenticate: Bearer resource_metadata="https://bedrock-agentcore.{region}.amazonaws.com/runtimes/{ESCAPED_ARN}/invocations/.well-known/oauth-protected-resource?qualifier={QUALIFIER}" x-amzn-requestid: 8bg30e9c-7e26-6bge-dc4b-75h368cc10cf data: {"type":"RUN_ERROR","code":"UNAUTHORIZED","message":"Authentication required"}

SigV4-configured代理程式傳回 HTTP 403 時發生錯誤ACCESS_DENIED,且不包含WWW-Authenticate標頭。