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-Type:
application/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 狀態 | 說明 |
|---|---|---|
|
|
401 |
需要身分驗證或無效的登入資料 |
|
|
403 |
請求操作的許可不足 |
|
|
400 |
無效的請求資料或參數 |
|
|
429 |
來自用戶端的請求過多 |
|
|
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標頭。