in gollm/gemini.go [322:360]
func toGeminiSchema(schema *Schema) (*genai.Schema, error) {
ret := &genai.Schema{
Description: schema.Description,
Required: schema.Required,
}
switch schema.Type {
case TypeObject:
ret.Type = genai.TypeObject
case TypeString:
ret.Type = genai.TypeString
case TypeBoolean:
ret.Type = genai.TypeBoolean
case TypeInteger:
ret.Type = genai.TypeInteger
case TypeArray:
ret.Type = genai.TypeArray
default:
return nil, fmt.Errorf("type %q not handled by genai.Schema", schema.Type)
}
if schema.Properties != nil {
ret.Properties = make(map[string]*genai.Schema)
for k, v := range schema.Properties {
geminiValue, err := toGeminiSchema(v)
if err != nil {
return nil, err
}
ret.Properties[k] = geminiValue
}
}
if schema.Items != nil {
geminiValue, err := toGeminiSchema(schema.Items)
if err != nil {
return nil, err
}
ret.Items = geminiValue
}
return ret, nil
}