in gollm/ollama.go [289:327]
func fnDefToOllamaTool(fnDef *FunctionDefinition) api.Tool {
tool := api.Tool{
Type: "function",
Function: api.ToolFunction{
Name: fnDef.Name,
Description: fnDef.Description,
Parameters: struct {
Type string `json:"type"`
Required []string `json:"required"`
Properties map[string]struct {
Type string `json:"type"`
Description string `json:"description"`
Enum []string `json:"enum,omitempty"`
} `json:"properties"`
}{
Type: "object",
Required: fnDef.Parameters.Required,
Properties: map[string]struct {
Type string `json:"type"`
Description string `json:"description"`
Enum []string `json:"enum,omitempty"`
}{},
},
},
}
for paramName, param := range fnDef.Parameters.Properties {
tool.Function.Parameters.Properties[paramName] = struct {
Type string `json:"type"`
Description string `json:"description"`
Enum []string `json:"enum,omitempty"`
}{
Type: string(param.Type),
Description: param.Description,
}
}
return tool
}