mod anthropic#

module anthropic#

Built-in codec for the Anthropic Messages API.

Implements LlmCodec (request decode/encode) and LlmResponseCodec (response decode) for the Anthropic Messages API format.

Anthropic-specific patterns handled

  • Content blocks: Heterogeneous array of text, tool_use, thinking, redacted_thinking, mcp_tool_use, server_tool_use blocks

  • Top-level system: System prompt is a top-level field, not inside messages

  • stop_reason: Maps to FinishReason (not finish_reason)

  • Tool definitions: Uses input_schema instead of parameters

  • Tool choice: {"type":"auto"} / {"type":"any"} / {"type":"tool","name":"..."}

  • Cache tokens: cache_read_input_tokens / cache_creation_input_tokens

Structs and Unions

struct AnthropicMessagesCodec#

Built-in codec for the Anthropic Messages API.

Traits implemented

impl LlmResponseCodec for AnthropicMessagesCodec#
impl LlmCodec for AnthropicMessagesCodec#
struct AnthropicMessagesStreamingCodec#

Streaming counterpart to AnthropicMessagesCodec.

Replays the Anthropic Messages SSE event sequence into the same JSON shape Anthropic returns for a non-streaming request ({id, type, role, model, content, stop_reason, stop_sequence, usage}). Once finalized, the assembled JSON can be fed back through AnthropicMessagesCodec::decode_response to produce an AnnotatedLlmResponse — meaning streaming and non-streaming Anthropic requests converge on the same observability output.

Internal state lives behind Arc<Mutex<...>> so the &self-produced collector and finalizer closures share access. Each instance is single-use because LlmFinalizerFn consumes the finalize step.

Implementations

impl AnthropicMessagesStreamingCodec#

Functions

fn new() -> Self#

Creates a fresh streaming codec with empty accumulator state.

Traits implemented

impl Default for AnthropicMessagesStreamingCodec#
impl super::streaming::StreamingCodec for AnthropicMessagesStreamingCodec#