mirror of https://gitee.com/godoos/godoos.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.2 KiB
46 lines
1.2 KiB
package model
|
|
|
|
import (
|
|
"fmt"
|
|
"godo/libs"
|
|
"net/http"
|
|
"os"
|
|
)
|
|
|
|
func ConvertOllama(w http.ResponseWriter, r *http.Request, req ReqBody) {
|
|
modelFile := "FROM " + req.Paths[0] + "\n"
|
|
modelFile += `TEMPLATE """` + req.Info["template"].(string) + `"""`
|
|
if parameters, ok := req.Info["parameters"].([]interface{}); ok {
|
|
for _, param := range parameters {
|
|
if strParam, ok := param.(string); ok {
|
|
modelFile += "\nPARAMETER " + strParam
|
|
} else {
|
|
// 处理非字符串的情况,根据需要可以选择忽略或报告错误
|
|
fmt.Fprintf(os.Stderr, "Unexpected parameter type: %T\n", param)
|
|
}
|
|
}
|
|
}
|
|
|
|
url := GetOllamaUrl() + "/api/create"
|
|
postParams := map[string]string{
|
|
"name": req.Model,
|
|
"modelfile": modelFile,
|
|
}
|
|
ForwardHandler(w, r, postParams, url, "POST")
|
|
modelDir, err := GetModelDir(req.Model)
|
|
if err != nil {
|
|
libs.ErrorMsg(w, "GetModelDir")
|
|
return
|
|
}
|
|
|
|
// modelFilePath := filepath.Join(modelDir, "Modelfile")
|
|
// if err := os.WriteFile(modelFilePath, []byte(modelFile), 0644); err != nil {
|
|
// ErrMsg("WriteFile", err, w)
|
|
// return
|
|
// }
|
|
err = os.RemoveAll(modelDir)
|
|
if err != nil {
|
|
libs.ErrorMsg(w, "Error removing directory")
|
|
return
|
|
}
|
|
}
|
|
|