Skip to main content

StreamDelta

Enum StreamDelta 

Source
#[non_exhaustive]
pub enum StreamDelta { Start { id: String, model: String, provider_echoes: Vec<ProviderEchoSnapshot>, }, TextDelta { text: String, provider_echoes: Vec<ProviderEchoSnapshot>, }, ThinkingDelta { text: String, provider_echoes: Vec<ProviderEchoSnapshot>, }, ToolUseStart { id: String, name: String, provider_echoes: Vec<ProviderEchoSnapshot>, }, ToolUseInputDelta { partial_json: String, }, ToolUseStop, Usage(Usage), RateLimit(RateLimitSnapshot), Warning(ModelWarning), Stop { stop_reason: StopReason, }, }
Expand description

One chunk from a streaming model response.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

Start

First message — vendor’s response id and model identifier.

Fields

§id: String

Vendor message id (echoed in the final ModelResponse).

§model: String

Resolved model identifier.

§provider_echoes: Vec<ProviderEchoSnapshot>

Response-level vendor opaque round-trip tokens — OpenAI Responses Response.id (so the next request can chain via previous_response_id from ModelRequest::continued_from), or anything else the codec wants to carry at response root rather than on a single content part. The aggregator surfaces these on ModelResponse::provider_echoes at finalize time, mirroring the non-streaming decode path.

§

TextDelta

Append text to the in-progress text block. Consecutive TextDeltas fold into a single ContentPart::Text in the output.

Fields

§text: String

Text fragment to append.

§provider_echoes: Vec<ProviderEchoSnapshot>

Vendor opaque round-trip tokens this fragment carries (Gemini 3.x attaches thought_signature to text parts on reasoning turns). The aggregator extends the open-text block’s accumulated echoes — a single ContentPart::Text finalises with the union of every delta’s echoes.

§

ThinkingDelta

Append text (or vendor opaque tokens) to the in-progress thinking block. Consecutive ThinkingDeltas fold into a single ContentPart::Thinking in the output. A delta carrying only provider_echoes (empty text) attaches the round-trip marker without growing the body — Anthropic emits the signature on a discrete signature_delta SSE event with no associated text.

Fields

§text: String

Text fragment to append. Empty when the delta carries only a provider_echoes update.

§provider_echoes: Vec<ProviderEchoSnapshot>

Vendor opaque round-trip tokens (Anthropic signature, Gemini thought_signature, OpenAI Responses encrypted_content). Codecs pre-wrap the wire-shape blob into ProviderEchoSnapshot before yielding the delta; the aggregator stays codec-agnostic and just accumulates.

§

ToolUseStart

Begin a new tool-use block. Closes any open text block so the output preserves the model’s intended ordering.

Fields

§id: String

Stable tool-use id.

§name: String

Tool name to call.

§provider_echoes: Vec<ProviderEchoSnapshot>

Vendor opaque round-trip tokens attached to this tool call (Gemini 3.x thought_signature on functionCall parts — missing on the next turn yields HTTP 400 on the first functionCall of a step).

§

ToolUseInputDelta

Append partial JSON to the open tool-use block’s input buffer.

Fields

§partial_json: String

Raw JSON fragment — the aggregator concatenates and parses once the block closes.

§

ToolUseStop

Close the current tool-use block. Returns Err if the buffered JSON does not parse.

§

Usage(Usage)

Token usage update (last value wins).

§

RateLimit(RateLimitSnapshot)

Provider rate-limit snapshot, typically emitted as the leading chunk by ChatModel::stream_deltas before the first content delta. Last value wins inside an aggregator.

§

Warning(ModelWarning)

Provider warning surfaced inline.

§

Stop

End of stream with stop reason.

Fields

§stop_reason: StopReason

Reason the model halted.

Trait Implementations§

Source§

impl Clone for StreamDelta

Source§

fn clone(&self) -> StreamDelta

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for StreamDelta

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for StreamDelta

Source§

fn eq(&self, other: &StreamDelta) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for StreamDelta

Source§

impl StructuralPartialEq for StreamDelta

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more