Skip to main content
The stream() method is used to make streaming chat completion requests to the Edgee AI Gateway. It returns a Result containing a Stream that yields Result<StreamChunk> objects as they arrive from the API.

Arguments

Input Types

The stream() method accepts the same input types as send():

String Input

When input is a string, it’s automatically converted to a user message:

Vec<Message> or InputObject

When input is a Vec<Message> or InputObject, you have full control over the conversation: For details about Message type, see the Send Method documentation. For details about Tool and ToolChoice types, see the Tools documentation. Example - Streaming with Messages:

Return Value

The stream() method returns a Result containing a Stream that yields Result<StreamChunk>. Each chunk contains incremental updates to the response.

StreamChunk Object

Each chunk yielded by the stream has the following structure:

StreamChoice Object

Each choice in the choices array contains: Example - Handling Multiple Choices:

StreamDelta Object

The delta object contains incremental updates:

Convenience Methods

The StreamChunk struct provides convenience methods for easier access: Example - Using Convenience Methods:

Understanding Streaming Behavior

Chunk Structure

  1. First chunk: Contains role (typically Role::Assistant) and may contain initial content
  2. Content chunks: Contain incremental content updates
  3. Final chunk: Contains finish_reason indicating why generation stopped
Example - Collecting Full Response:

Finish Reasons

Empty Chunks

Some chunks may not contain content. This is normal and can happen when:
  • The chunk only contains metadata (role, finish_reason)
  • The chunk is part of tool call processing
  • Network buffering creates empty chunks
Always check for chunk.text() before using it:

Error Handling

The stream() method can return errors at two levels:
  1. Initial error: When creating the stream (returns Result<Stream>)
  2. Stream errors: Individual chunks may contain errors (returns Result<StreamChunk>)