AG-UI 프로토콜 계약
AG-UI 프로토콜 계약은 Amazon Bedrock AgentCore 런타임에서 agent-to-user 인터페이스 통신을 구현하기 위한 요구 사항을 정의합니다. 이 계약은 AG-UI 에이전트가 구현해야 하는 기술 요구 사항, 엔드포인트 및 통신 패턴을 지정합니다.
예제 코드는 AgentCore 런타임에서 AG-UI 서버 배포를 참조하세요.
프로토콜 구현 요구 사항
AG-UI 에이전트는 다음과 같은 특정 프로토콜 요구 사항을 구현해야 합니다.
-
전송: Server-Sent Events(SSE) 또는 WebSocket - SSE는 서버에서 클라이언트로의 단방향 스트리밍을 제공하는 반면, WebSocket은 양방향 실시간 통신을 지원합니다.
-
세션 관리: 플랫폼은 세션 격리를 위한
X-Amzn-Bedrock-AgentCore-Runtime-Session-Id헤더를 자동으로 추가합니다.
컨테이너 요구 사항
AG-UI 에이전트는 다음 사양을 충족하는 컨테이너화된 애플리케이션으로 배포되어야 합니다.
-
호스트:
0.0.0.0 -
포트:
8080- AG-UI 에이전트 통신을 위한 표준 포트(HTTP 프로토콜과 동일) -
플랫폼: ARM64 컨테이너 - AWS Amazon Bedrock AgentCore 런타임 환경과의 호환성에 필요합니다.
경로 요구 사항
/호출 - POST
용도
사용자 요청을 수신하고 응답을 SSE(Server-Sent Events)로 스트리밍합니다.
사용 사례
호출 엔드포인트는 다음과 같은 몇 가지 주요 용도로 사용됩니다.
-
채팅 응답 스트리밍
-
에이전트 상태 및 사고 단계
-
도구 호출 및 결과
요청 형식
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 마지막으로 변경된 시기를 보고할 수 있습니다.
주의
모든 pingtime_of_last_update에서 현재 시간으로 설정하지 마십시오. 모든 ping에서 진행되는 타임스탬프는 지속적인 상태 변경 신호를 보내 유휴 세션 제한 시간이 실행되지 않도록 합니다. 그러면 세션은 MaxLifetime가 세션 할당량을 소진할 수 있을 때까지 지속됩니다. 필드를 생략하면 플랫폼이 자체적으로 상태 변경을 추적합니다. Bedrock AgentCore SDK를 사용하는 경우 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 상태 코드를 반환합니다.
-
런타임 오류: 스트림이 시작된 후 에이전트 실행 중에 발생합니다. 이러한는 HTTP 상태 코드가 아닌 SSE 스트림의
RUN_ERROR이벤트로 표시됩니다.
| 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 에이전트는 ACCESS_DENIED 오류와 함께 HTTP 403을 반환하며 WWW-Authenticate 헤더를 포함하지 않습니다.