func fnDefToOllamaTool()

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
}