getStreamingChatResponse method

  1. @override
Stream<ChatResponseUpdate> getStreamingChatResponse({
  1. required Iterable<ChatMessage> messages,
  2. ChatOptions? options,
  3. CancellationToken? cancellationToken,
})
override

Sends a chat request and returns a stream of response updates.

Implementation

@override
Stream<ChatResponseUpdate> getStreamingChatResponse({
  required Iterable<ChatMessage> messages,
  ChatOptions? options,
  CancellationToken? cancellationToken,
}) {
  Stream<ChatResponseUpdate> stream() async* {
    _logInvoked('getStreamingChatResponse');
    _logInvokedSensitive('getStreamingChatResponse', messages, options);

    try {
      await for (final update in super.getStreamingChatResponse(
        messages: messages,
        options: options,
        cancellationToken: cancellationToken,
      )) {
        _logStreamingUpdateSensitive(update);
        yield update;
      }

      _logCompleted('getStreamingChatResponse');
    } on OperationCanceledException {
      _logInvocationCanceled('getStreamingChatResponse');
      rethrow;
    } catch (e) {
      _logInvocationFailed('getStreamingChatResponse', e);
      rethrow;
    }
  }

  return stream();
}