chatStream method

  1. @override
Stream<ChatStreamEvent> chatStream(
  1. List<ChatMessage> messages, {
  2. List<Tool>? tools,
})
override

Stream chat responses with real-time events

API Reference: https://docs.anthropic.com/en/api/messages-streaming

Returns a stream of events including text deltas, thinking deltas, tool calls, and completion events. Supports all message types and extended thinking for reasoning models.

Implementation

@override
Stream<ChatStreamEvent> chatStream(
  List<ChatMessage> messages, {
  List<Tool>? tools,
}) async* {
  final effectiveTools = tools ?? config.tools;
  final requestBody =
      _requestBuilder.buildRequestBody(messages, effectiveTools, true);

  // Create SSE stream - headers are automatically handled by AnthropicClient
  // including interleaved thinking beta header if enabled
  final stream = client.postStreamRaw(chatEndpoint, requestBody);

  await for (final chunk in stream) {
    final events = _parseStreamEvents(chunk);
    for (final event in events) {
      yield event;
    }
  }
}