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
Thestream() method accepts the same input types as send():
String Input
Wheninput 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
Thestream() 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 thechoices array contains:
Example - Handling Multiple Choices:
StreamDelta Object
Thedelta object contains incremental updates:
Convenience Methods
TheStreamChunk struct provides convenience methods for easier access:
Example - Using Convenience Methods:
Understanding Streaming Behavior
Chunk Structure
- First chunk: Contains
role(typicallyRole::Assistant) and may contain initialcontent - Content chunks: Contain incremental
contentupdates - Final chunk: Contains
finish_reasonindicating why generation stopped
Finish Reasons
Empty Chunks
Some chunks may not containcontent. 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
chunk.text() before using it:
Error Handling
Thestream() method can return errors at two levels:
- Initial error: When creating the stream (returns
Result<Stream>) - Stream errors: Individual chunks may contain errors (returns
Result<StreamChunk>)