toOpenAITool method

Map<String, dynamic> toOpenAITool()

Implementation

Map<String, dynamic> toOpenAITool() {
  final properties = <String, dynamic>{};
  final required = <String>[];
  for (final entry in inputs.entries) {
    final rawSchema = entry.value;
    final schema = rawSchema is Map
        ? Map<String, dynamic>.from(rawSchema)
        : <String, dynamic>{'type': rawSchema};
    if (schema.remove('required') == true) required.add(entry.key);
    schema.remove('default');
    properties[entry.key] = schema;
  }

  return {
    'type': 'function',
    'function': {
      'name': name,
      'description': description,
      'parameters': {
        'type': 'object',
        'properties': properties,
        if (required.isNotEmpty) 'required': required,
        'additionalProperties': false,
      },
    },
  };
}