getSystemPrompt method

String getSystemPrompt(
  1. String schema
)

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);
  }
}