Просмотр исходного кода

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

image: show parameters
Michael Yang 1 год назад
Родитель
Сommit
846f593dbf
1 измененных файлов с 19 добавлено и 39 удалено
  1. 19 39
      server/images.go

+ 19 - 39
server/images.go

@@ -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
-		Params string
+		From       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) {
-		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)))
-		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())
+		if s, ok := v.([]any); ok {
+			mt.Parameters[k] = s
+			continue
 		}
 		}
-	}
 
 
-	mt := modelTemplate{
-		Model:  model,
-		From:   model.OriginalModel,
-		Params: strings.Join(params, "\n"),
+		mt.Parameters[k] = []any{v}
 	}
 	}
 
 
-	if mt.From == "" {
-		mt.From = model.ModelPath
+	mt.Model = model
+	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 {