generate<C> function
Future<GenerateResponse>
generate<C>({
- String? prompt,
- List<
Message> ? messages, - required Model<
C> model, - C? config,
- List<
Tool> ? tools, - String? toolChoice,
- bool? returnToolRequests,
- int? maxTurns,
- JsonExtensionType? outputSchema,
- String? outputFormat,
- bool? outputConstrained,
- String? outputInstructions,
- bool? outputNoInstructions,
- String? outputContentType,
- Map<
String, dynamic> ? context, - StreamingCallback<
GenerateResponseChunk> ? onChunk,
Implementation
Future<GenerateResponse> generate<C>({
String? prompt,
List<Message>? messages,
required Model<C> model,
C? config,
List<Tool>? tools,
String? toolChoice,
bool? returnToolRequests,
int? maxTurns,
JsonExtensionType? outputSchema,
String? outputFormat,
bool? outputConstrained,
String? outputInstructions,
bool? outputNoInstructions,
String? outputContentType,
Map<String, dynamic>? context,
StreamingCallback<GenerateResponseChunk>? onChunk,
}) async {
if (outputInstructions != null && outputNoInstructions == true) {
throw ArgumentError(
'Cannot set both outputInstructions and outputNoInstructions to true.',
);
}
final registry = Registry();
registry.register(model);
tools?.forEach((t) => registry.register(t));
GenerateActionOutputConfig? outputConfig;
if (outputSchema != null ||
outputFormat != null ||
outputConstrained != null ||
outputInstructions != null ||
outputNoInstructions != null ||
outputContentType != null) {
outputConfig = GenerateActionOutputConfig({
if (outputFormat != null) 'format': outputFormat,
if (outputSchema != null)
'jsonSchema': outputSchema.jsonSchema as Map<String, dynamic>,
if (outputConstrained != null) 'constrained': outputConstrained,
if (outputInstructions != null) 'instructions': outputInstructions,
if (outputContentType != null) 'contentType': outputContentType,
if (outputNoInstructions == true) 'instructions': false,
});
}
return generateHelper(
registry,
prompt: prompt,
messages: messages,
model: model,
config: config,
tools: tools?.map((t) => t.name).toList(),
toolChoice: toolChoice,
returnToolRequests: returnToolRequests,
maxTurns: maxTurns,
output: outputConfig,
context: context,
onChunk: onChunk,
);
}