image: show parameters

This commit is contained in:
Michael Yang 2023-10-17 15:40:06 -07:00
parent 627d04d927
commit 019e4a4558

View File

@ -898,51 +898,28 @@ func DeleteModel(name string) error {
}
func ShowModelfile(model *Model) (string, error) {
type modelTemplate struct {
var mt struct {
*Model
From string
Params string
From string
Parameters []string
}
var params []string
for k, v := range model.Options {
switch val := v.(type) {
case string:
params = append(params, fmt.Sprintf("PARAMETER %s %s", k, val))
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)))
switch v := v.(type) {
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())
}
for _, nv := range v {
mt.Parameters = append(mt.Parameters, fmt.Sprintf("%s %v", k, nv))
}
default:
log.Printf("unknown type: %s", reflect.TypeOf(v).String())
mt.Parameters = append(mt.Parameters, fmt.Sprintf("%s %v", k, v))
}
}
mt := modelTemplate{
Model: model,
From: model.OriginalModel,
Params: strings.Join(params, "\n"),
}
mt.Model = model
mt.From = model.ModelPath
if mt.From == "" {
mt.From = model.ModelPath
if model.OriginalModel != "" {
mt.From = model.OriginalModel
}
modelFile := `# Modelfile generated by "ollama show"
@ -959,8 +936,10 @@ SYSTEM """{{ .System }}"""
{{- range $adapter := .AdapterPaths }}
ADAPTER {{ $adapter }}
{{- end }}
{{ .Params }}
`
{{- range $parameter := .Parameters }}
PARAMETER {{ $parameter }}
{{- end }}`
tmpl, err := template.New("").Parse(modelFile)
if err != nil {