getSystemPrompt method
Get system prompt for structured output generation Uses C++ rac_structured_output_get_system_prompt
Implementation
String getSystemPrompt(String schema) {
final schemaPtr = schema.toNativeUtf8();
final promptPtrPtr = calloc<Pointer<Utf8>>();
try {
final lib = PlatformLoader.loadCommons();
final getSystemPromptFn = lib.lookupFunction<
Int32 Function(Pointer<Utf8>, Pointer<Pointer<Utf8>>),
int Function(Pointer<Utf8>, Pointer<Pointer<Utf8>>)>(
'rac_structured_output_get_system_prompt');
final result = getSystemPromptFn(schemaPtr, promptPtrPtr);
if (result != RAC_SUCCESS) {
_logger.warning(
'getSystemPrompt failed with code $result, using fallback');
return _fallbackSystemPrompt(schema);
}
final promptPtr = promptPtrPtr.value;
if (promptPtr == nullptr) {
return _fallbackSystemPrompt(schema);
}
final prompt = promptPtr.toDartString();
lib.lookupFunction<Void Function(Pointer<Void>),
void Function(Pointer<Void>)>('rac_free')(promptPtr.cast<Void>());
return prompt;
} catch (e) {
_logger.error('getSystemPrompt exception: $e');
return _fallbackSystemPrompt(schema);
} finally {
calloc.free(schemaPtr);
calloc.free(promptPtrPtr);
}
}