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,
      );
    },
  );
}