mod openai_chat#
- module openai_chat#
Built-in codec for the OpenAI Chat Completions API.
Implements
LlmCodec(request decode/encode) andLlmResponseCodec(response decode) for the OpenAI Chat Completions format.Structs and Unions
- struct OpenAIChatCodec#
Built-in codec for the OpenAI Chat Completions API.
Traits implemented
- impl LlmResponseCodec for OpenAIChatCodec#
- impl LlmCodec for OpenAIChatCodec#
- struct OpenAIChatStreamingCodec#
Streaming counterpart to
OpenAIChatCodec.Replays the OpenAI Chat Completions SSE chunk sequence into the same JSON shape returned for a non-streaming request (
{id, object, created, model, choices: [{message, finish_reason}], usage}). Once finalized, the assembled JSON can be fed back throughOpenAIChatCodec::decode_responseto produce the canonicalAnnotatedLlmResponse.Strategy
Chat Completions streams untyped SSE chunks of
{choices: [{index, delta: {...}, finish_reason: ...}]}. Each delta may carry arole(typically only on the first chunk), incrementalcontenttext, or partialtool_callswhosefunction.argumentsstream as a JSON-encoded string fragment-by-fragment. Top-level fields (id,model,created) are repeated on every chunk; we capture them once. Final-chunkusageis preserved when emitted (only sent whenstream_options.include_usageis set on the request).The OpenAI
[DONE]end-of-stream sentinel is dropped by the SSE event decoder before reaching the collector, so this codec never sees it.Internal state lives behind
Arc<Mutex<...>>so the&self-produced collector and finalizer closures share access. Each instance is single-use becauseLlmFinalizerFnconsumes the finalize step.Implementations
- impl OpenAIChatStreamingCodec#
Functions
- fn new() -> Self#
Creates a fresh streaming codec with empty accumulator state.
Traits implemented
- impl Default for OpenAIChatStreamingCodec#
- impl super::streaming::StreamingCodec for OpenAIChatStreamingCodec#