이벤트 패턴
이벤트 패턴 (Event Patterns)
프로듀서가 이벤트를 스트림으로 구성하는 방식 — 1.0 버전을 설명드릴게요.
출처: 문서
본문
이 페이지는 핵심 프로토콜의 이벤트 패턴을 정의합니다: 프로듀서가 이벤트를 스트림으로 구성하는 방식이에요. 모든 transport가 이 모든 패턴을 담아요; transport는 이벤트가 어떻게 프레이밍되고 전달되는지에서만 다릅니다.
프로토콜의 방향은 고정되어 있어요. 이벤트는 프로듀서에서 소비자로 흐르고; 소비자는 그것을 여는 run input을 보냄으로써 교환당 정확히 한 번 말합니다. 프로듀서는 소비자에게 실행 중 메시지를 요구해선 안 돼요(MUST NOT) — 외부 입력이 필요한 실행은 끝나고, 답은 다음 실행에 도착합니다: 인터럽트와 그 재개 항목을 통해, 또는 답하지 않고 남아 다음 입력의 messages에 담겨 답해지는 프론트엔드 도구 호출을 통해요.
스트리밍 (Streaming)
긴 값은 조각 단위로 도착해요: *_START가 항목을 열고, 콘텐츠 이벤트가 확장하며, *_END가 닫아요 — 또는 청크형 축약(chunked shorthand)이 그 셋을 압축합니다. 텍스트 메시지, 도구 호출, 추론 메시지가 모두 이렇게 스트리밍돼요.
sequenceDiagram
participant Producer
participant Consumer
Producer->>Consumer: *_START (id)
Producer->>Consumer: content (id, delta) ×N
Producer->>Consumer: *_END (id)
스냅샷과 델타 (Snapshot and delta)
진화하는 값 — 에이전트 상태, 액티비티, 대화 자체 — 은 교체하는 스냅샷과 보정하는 델타로 전달되며, 델타는 RFC 6902 JSON Patch로 표현돼요.
sequenceDiagram
participant Producer
participant Consumer
Producer->>Consumer: *_SNAPSHOT (the whole value)
Producer->>Consumer: *_DELTA (a patch) ×N
Producer->>Consumer: *_SNAPSHOT (resynchronise)
인터럽트와 재개 (Interrupt and resume)
외부에서 무언가를 필요로 하는 실행 — 승인, 누락된 값 — 은 인터럽트 결과(outcome)로 끝나고, 그로부터 이어지는 실행은 입력에 답을 담아요.
sequenceDiagram
participant Application
participant Agent
Application->>Agent: RunAgentInput
Agent->>Application: … events …
Agent->>Application: RUN_FINISHED (outcome: interrupt)
Note over Application: gathers the answer
Application->>Agent: RunAgentInput (resume: answers)
Agent->>Application: RUN_STARTED …
패턴 추가 (Adding patterns)
모든 프로토콜 기능은 이 패턴들로 구축되어요. 패턴을 추가하는 프로토콜 개정은 이 페이지에서 정의합니다. 패턴은 전적으로 이벤트와 run input으로 표현되므로 transport는 변경 없이 새 패턴을 담아요.
더 알아보기 (Learn more)
- 이벤트 모델 — 이벤트 봉투·식별자
- Streaming Messages — open–content–close 규율
- Transports — 스트림 프레이밍과 전달
- EventArgs — 이벤트 패밀리