package ollama import ( "bytes" "encoding/json" "errors" "fmt" "net/http" ) type ShowModelDetailsRequest struct { Model string `json:"model"` Verbose *bool `json:"verbose,omitempty"` } type ShowModelDetailsResponse struct { Parameters string `json:"parameters"` License string `json:"license"` ModifiedAt string `json:"modified_at"` Details struct { Format string `json:"format"` Family string `json:"family"` Families []string `json:"families"` ParameterSize string `json:"parameter_size"` QuantizationLevel string `json:"quantization_level"` } `json:"details"` Template string `json:"template"` Capabilities []string `json:"capabilities"` ModelInfo map[string]any `json:"model_info"` } func (o Ollama) ShowModelDetails(reqBody ShowModelDetailsRequest) (ShowModelDetailsResponse, error) { reqBodyBytes, err := json.Marshal(reqBody) if err != nil { return ShowModelDetailsResponse{}, err } req, err := http.NewRequest(http.MethodPost, fmt.Sprintf("%s/show", o.baseUrl), bytes.NewReader(reqBodyBytes)) if err != nil { return ShowModelDetailsResponse{}, err } for key, val := range o.customHeaders { req.Header.Set(key, val) } req.Header.Set("Content-Type", "application/json") resp, err := http.DefaultClient.Do(req) if err != nil { return ShowModelDetailsResponse{}, err } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { return ShowModelDetailsResponse{}, errors.New("status code is not 200") } var respBody ShowModelDetailsResponse if err := json.NewDecoder(resp.Body).Decode(&respBody); err != nil { return ShowModelDetailsResponse{}, err } return respBody, nil }