generateWithStructuredOutput static method
Future<LLMGenerationResult>
generateWithStructuredOutput({
- required String prompt,
- required StructuredOutputOptions structuredOutput,
- LLMGenerationOptions? options,
Apply a structured-output configuration to a normal LLM generation.
Mirrors Swift RunAnywhere.generateWithStructuredOutput(...): prompt
preparation remains in commons, then the standard generated LLM request
path runs through rac_llm_generate_proto.
Implementation
static Future<LLMGenerationResult> generateWithStructuredOutput({
required String prompt,
required StructuredOutputOptions structuredOutput,
LLMGenerationOptions? options,
}) async {
final effectiveOptions = LLMGenerationOptions();
if (options != null) {
effectiveOptions.mergeFromMessage(options);
}
effectiveOptions.structuredOutput = structuredOutput;
if (structuredOutput.includeSchemaInPrompt) {
final result = DartBridgeStructuredOutput.shared.preparePrompt(
prompt: prompt,
options: structuredOutput,
);
if (result.errorCode != 0) {
// Mirrors Swift `.processingFailed` on prep failure
// (RunAnywhere+StructuredOutput.swift:148-150).
throw SDKException.processingFailed(
result.errorMessage.isNotEmpty
? result.errorMessage
: 'Structured-output prompt preparation failed',
);
}
if (result.hasSystemPrompt()) {
effectiveOptions.systemPrompt = result.systemPrompt;
}
}
return RunAnywhereLLM.shared.generate(prompt, effectiveOptions);
}