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.
70 lines
1.6 KiB
70 lines
1.6 KiB
package server
|
|
|
|
import (
|
|
"encoding/json"
|
|
"godo/ai/llms"
|
|
"godo/libs"
|
|
"net/http"
|
|
)
|
|
|
|
func ChatHandler(w http.ResponseWriter, r *http.Request) {
|
|
// url := GetOllamaUrl() + "/v1/chat/completions"
|
|
var url string
|
|
var req map[string]interface{}
|
|
err := json.NewDecoder(r.Body).Decode(&req)
|
|
if err != nil {
|
|
libs.ErrorMsg(w, err.Error())
|
|
return
|
|
}
|
|
engine, ok := req["engine"].(string)
|
|
if !ok {
|
|
libs.ErrorMsg(w, "Invalid engine field in request")
|
|
return
|
|
}
|
|
model, ok := req["model"].(string)
|
|
if !ok {
|
|
libs.ErrorMsg(w, "Invalid model field in request")
|
|
return
|
|
}
|
|
var headers map[string]string
|
|
switch engine {
|
|
case "ollama":
|
|
ollamaUrl := GetOllamaUrl()
|
|
url = llms.GetOllamaChatUrl(ollamaUrl)
|
|
headers = map[string]string{
|
|
"Content-Type": "application/json",
|
|
}
|
|
case "gitee":
|
|
url = llms.GetGiteeChatUrl(model)
|
|
case "openai":
|
|
headers, url, err = llms.GetOpenAIChatUrl("openai")
|
|
if err != nil {
|
|
libs.ErrorMsg(w, err.Error())
|
|
return
|
|
}
|
|
case "cloudflare":
|
|
headers, url, err = llms.GetOpenAIChatUrl("cloudflare")
|
|
if err != nil {
|
|
libs.ErrorMsg(w, err.Error())
|
|
return
|
|
}
|
|
default:
|
|
headers, url, err = llms.GetOpenAIChatUrl("openai") // 默认URL
|
|
if err != nil {
|
|
libs.ErrorMsg(w, err.Error())
|
|
return
|
|
}
|
|
}
|
|
ForwardHandler(w, r, req, url, headers, "POST")
|
|
}
|
|
|
|
func EmbeddingHandler(w http.ResponseWriter, r *http.Request) {
|
|
url := GetOllamaUrl() + "/api/embeddings"
|
|
var request interface{}
|
|
err := json.NewDecoder(r.Body).Decode(&request)
|
|
if err != nil {
|
|
libs.ErrorMsg(w, err.Error())
|
|
return
|
|
}
|
|
ForwardHandler(w, r, request, url, nil, "POST")
|
|
}
|
|
|