이벤트 패턴

이벤트 패턴 (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)

Streaming Messages 참고.

스냅샷과 델타 (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)

Snapshots and Deltas 참고.

인터럽트와 재개 (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 …

Interrupts and Resume 참고.

패턴 추가 (Adding patterns)

모든 프로토콜 기능은 이 패턴들로 구축되어요. 패턴을 추가하는 프로토콜 개정은 이 페이지에서 정의합니다. 패턴은 전적으로 이벤트와 run input으로 표현되므로 transport는 변경 없이 새 패턴을 담아요.

더 알아보기 (Learn more)