chatStream method
Sends a streaming chat request to the provider
messages
- The conversation history as a list of chat messages
tools
- Optional list of tools to use in the chat
Returns a stream of chat events
Implementation
@override
Stream<ChatStreamEvent> chatStream(
List<ChatMessage> messages, {
List<Tool>? tools,
}) async* {
if (config.baseUrl.isEmpty) {
yield ErrorEvent(const InvalidRequestError('Missing Ollama base URL'));
return;
}
try {
final effectiveTools = tools ?? config.tools;
final requestBody = _buildRequestBody(messages, effectiveTools, true);
// Create JSON stream
final stream = client.postStreamRaw(chatEndpoint, requestBody);
await for (final chunk in stream) {
final events = _parseStreamEvents(chunk);
for (final event in events) {
yield event;
}
}
} catch (e) {
yield ErrorEvent(GenericError('Unexpected error: $e'));
}
}