generateStream<Output, C> function
ActionStream<GenerateResponseChunk<Output> , GenerateResult<Output> >
generateStream<Output, C>({
- required Model<
C> model, - String? system,
- String? prompt,
- List<
Part> ? promptParts, - List<
Message> ? messages, - C? config,
- List<
Tool> ? tools, - List<
String> ? toolNames, - ToolChoice? toolChoice,
- bool? returnToolRequests,
- int? maxTurns,
- SchemanticType<
Output> ? outputSchema, - String? outputFormat,
- bool? outputConstrained,
- String? outputInstructions,
- bool? outputNoInstructions,
- String? outputContentType,
- Map<
String, dynamic> ? context, - List<
GenerateMiddleware> ? use, - CancellationToken? cancel,
- List<
InterruptResponse> ? interruptRespond, - List<
ToolRequestPart> ? interruptRestart,
Streams a response from model; see generate.
Implementation
ActionStream<GenerateResponseChunk<Output>, GenerateResult<Output>>
generateStream<Output, C>({
required Model<C> model,
String? system,
String? prompt,
List<Part>? promptParts,
List<Message>? messages,
C? config,
List<Tool>? tools,
List<String>? toolNames,
ToolChoice? toolChoice,
bool? returnToolRequests,
int? maxTurns,
SchemanticType<Output>? outputSchema,
String? outputFormat,
bool? outputConstrained,
String? outputInstructions,
bool? outputNoInstructions,
String? outputContentType,
Map<String, dynamic>? context,
List<GenerateMiddleware>? use,
CancellationToken? cancel,
List<InterruptResponse>? interruptRespond,
List<ToolRequestPart>? interruptRestart,
}) {
final chunks = StreamController<GenerateResponseChunk<Output>>();
final result = generate<Output, C>(
system: system,
prompt: prompt,
promptParts: promptParts,
messages: messages,
model: model,
config: config,
tools: tools,
toolNames: toolNames,
toolChoice: toolChoice,
returnToolRequests: returnToolRequests,
maxTurns: maxTurns,
outputSchema: outputSchema,
outputFormat: outputFormat,
outputConstrained: outputConstrained,
outputInstructions: outputInstructions,
outputNoInstructions: outputNoInstructions,
outputContentType: outputContentType,
context: context,
cancel: cancel,
onChunk: (chunk) {
if (!chunks.isClosed) chunks.add(chunk);
},
use: use,
interruptRespond: interruptRespond,
interruptRestart: interruptRestart,
);
// Close the chunk stream once generation settles, surfacing a failure on
// the stream as well as on `onResult`.
result.then(
(_) => chunks.close(),
onError: (Object e, StackTrace s) {
chunks
..addError(e, s)
..close();
},
);
return ActionStream.withResult(chunks.stream, result);
}