Struct OpenAI Responses Streaming Codec

View as Markdown

Generated from cargo doc --no-deps -p nemo-relay -p nemo-relay-adaptive -p nemo-relay-ffi.

1pub struct OpenAIResponsesStreamingCodec { /* private fields */ }

Streaming counterpart to OpenAIResponsesCodec.

Replays the OpenAI Responses SSE event sequence into the same JSON shape the API returns for a non-streaming request ({id, model, status, output, usage, incomplete_details, ...}). Once finalized, the assembled JSON can be fed back through OpenAIResponsesCodec::decode_response to produce the canonical AnnotatedLlmResponse.

Strategy

The Responses API is a relatively forgiving streaming target because every event carries either the full response snapshot (response.created, response.in_progress, response.completed, response.failed, response.incomplete) or the final-state output item (response.output_item.done). We:

  1. Track the latest response snapshot - terminal events (completed/failed/incomplete) typically carry the complete state including output, so we prefer those when present.
  2. Track output items by output_index - output_item.done events deliver the final per-item state, used as a fallback when the terminal response.output is missing or empty.
  3. Per-token output_text.delta and function_call_arguments.delta events are ignored because their content is redelivered in the matching output_item.done event. Skipping deltas keeps the codec resilient to schema additions and avoids double-accumulation.

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 OpenAIResponsesStreamingCodec

impl OpenAIResponsesStreamingCodec

new

pub fn new() -> Self

Creates a fresh streaming codec with empty accumulator state.

Trait Implementations

impl Default for OpenAIResponsesStreamingCodec

impl Default for OpenAIResponsesStreamingCodec

default

fn default() -> Self

impl StreamingCodec for OpenAIResponsesStreamingCodec

impl StreamingCodec for OpenAIResponsesStreamingCodec

collector

fn collector(&self) -> LlmCollectorFn

finalizer

fn finalizer(&self) -> LlmFinalizerFn