stream method
Streams the output of invoking the Runnable on the given input
.
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,
);
},
);
}