Merge pull request #828 from jmorganca/mxyng/template-parameters

image: show parameters
This commit is contained in:
Michael Yang 2023-10-19 09:31:31 -07:00 committed by GitHub
commit 846f593dbf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -896,51 +896,27 @@ func DeleteModel(name string) error {
} }
func ShowModelfile(model *Model) (string, error) { func ShowModelfile(model *Model) (string, error) {
type modelTemplate struct { var mt struct {
*Model *Model
From string From string
Params string Parameters map[string][]any
} }
var params []string mt.Parameters = make(map[string][]any)
for k, v := range model.Options { for k, v := range model.Options {
switch val := v.(type) { if s, ok := v.([]any); ok {
case string: mt.Parameters[k] = s
params = append(params, fmt.Sprintf("PARAMETER %s %s", k, val)) continue
case int:
params = append(params, fmt.Sprintf("PARAMETER %s %s", k, strconv.Itoa(val)))
case float64:
params = append(params, fmt.Sprintf("PARAMETER %s %s", k, strconv.FormatFloat(val, 'f', 0, 64)))
case bool:
params = append(params, fmt.Sprintf("PARAMETER %s %s", k, strconv.FormatBool(val)))
case []interface{}:
for _, nv := range val {
switch nval := nv.(type) {
case string:
params = append(params, fmt.Sprintf("PARAMETER %s %s", k, nval))
case int:
params = append(params, fmt.Sprintf("PARAMETER %s %s", k, strconv.Itoa(nval)))
case float64:
params = append(params, fmt.Sprintf("PARAMETER %s %s", k, strconv.FormatFloat(nval, 'f', 0, 64)))
case bool:
params = append(params, fmt.Sprintf("PARAMETER %s %s", k, strconv.FormatBool(nval)))
default:
log.Printf("unknown type: %s", reflect.TypeOf(nv).String())
}
}
default:
log.Printf("unknown type: %s", reflect.TypeOf(v).String())
}
} }
mt := modelTemplate{ mt.Parameters[k] = []any{v}
Model: model,
From: model.OriginalModel,
Params: strings.Join(params, "\n"),
} }
if mt.From == "" { mt.Model = model
mt.From = model.ModelPath mt.From = model.ModelPath
if model.OriginalModel != "" {
mt.From = model.OriginalModel
} }
modelFile := `# Modelfile generated by "ollama show" modelFile := `# Modelfile generated by "ollama show"
@ -957,8 +933,12 @@ SYSTEM """{{ .System }}"""
{{- range $adapter := .AdapterPaths }} {{- range $adapter := .AdapterPaths }}
ADAPTER {{ $adapter }} ADAPTER {{ $adapter }}
{{- end }} {{- end }}
{{ .Params }}
` {{- range $k, $v := .Parameters }}
{{- range $parameter := $v }}
PARAMETER {{ $k }} {{ printf "%#v" $parameter }}
{{- end }}
{{- end }}`
tmpl, err := template.New("").Parse(modelFile) tmpl, err := template.New("").Parse(modelFile)
if err != nil { if err != nil {