Skip to content

AnthropicStreamEvent

AnthropicStreamEvent = { message: Partial<AnthropicResponse>; type: "message_start"; } | { content_block: AnthropicContentBlock; index: number; type: "content_block_start"; } | { delta: { text: string; type: "text_delta"; } | { partial_json: string; type: "input_json_delta"; }; index: number; type: "content_block_delta"; } | { index: number; type: "content_block_stop"; } | { delta: { stop_reason: string; stop_sequence?: string | null; }; type: "message_delta"; usage: { output_tokens: number; }; } | { type: "message_stop"; } | { error: { message: string; type: string; }; type: "error"; }

Defined in: adapters/anthropic.ts:261

Anthropic streaming event types via Server-Sent Events.

Claude uses a more complex streaming protocol than OpenAI, with distinct events for different stages: message start, content block start/delta/stop, and message completion. This enables fine-grained control over streaming display and supports tool use streaming.

Event flow:

  1. message_start - Stream begins with metadata
  2. content_block_start - Each content block (text/tool) starts
  3. content_block_delta - Incremental content for the block
  4. content_block_stop - Block is complete
  5. message_delta - Final metadata (stop reason, usage)
  6. message_stop - Stream ends
// Message start event
const start: AnthropicStreamEvent = {
type: 'message_start',
message: { id: 'msg_123', model: 'claude-3-5-sonnet-20241022' }
};
// Text delta event
const delta: AnthropicStreamEvent = {
type: 'content_block_delta',
index: 0,
delta: { type: 'text_delta', text: 'Hello' }
};
// Completion event
const done: AnthropicStreamEvent = {
type: 'message_delta',
delta: { stop_reason: 'end_turn' },
usage: { output_tokens: 42 }
};