stream method

  1. @override
Stream<ChatResult> stream(
  1. PromptValue input, {
  2. FakeEchoChatModelOptions? options,
})
override

Streams the output of invoking the Runnable on the given input.

  • input - the input to invoke the Runnable on.
  • options - the options to use when invoking the Runnable.

Implementation

@override
Stream<ChatResult> stream(
  final PromptValue input, {
  final FakeEchoChatModelOptions? options,
}) {
  final prompt = input.toChatMessages().first.contentAsString.split('');
  final throwError =
      options?.throwRandomError ?? defaultOptions.throwRandomError;

  var index = 0;
  return Stream.fromIterable(prompt).map((final char) {
    if (throwError && index == prompt.length ~/ 2) {
      throw Exception('Random error');
    }

    return ChatResult(
      id: 'fake-echo-chat-model',
      output: AIChatMessage(content: char),
      finishReason: FinishReason.stop,
      metadata: {
        'model': options?.model ?? defaultOptions.model,
        ...?options?.metadata ?? defaultOptions.metadata,
        'index': index++,
      },
      usage: const LanguageModelUsage(),
      streaming: true,
    );
  });
}