package main import ( "encoding/json" "github.com/gin-gonic/gin" "io/ioutil" "net/http" "strings" ) func callGpt(method string, url string, postjson string, authorization string, OpenAIOrganization string) (string, map[string]interface{}) { payload := strings.NewReader(postjson) client := &http.Client{} req, err := http.NewRequest(method, url, payload) if err != nil { //fmt.Println(err) return "(1)请求太频繁!", nil } req.Header.Add("Content-Type", "application/json") req.Header.Add("Authorization", "Bearer "+authorization) if !strings.EqualFold(strings.ToLower(OpenAIOrganization), "personl") { req.Header.Add("OpenAI-Organization", OpenAIOrganization) } res, err := client.Do(req) if err != nil { //fmt.Println(err) return "(2)请求太频繁!", nil } defer res.Body.Close() body, err := ioutil.ReadAll(res.Body) if err != nil { //fmt.Println(err) return "err", nil } jsonData := []byte(string(body)) var v interface{} json.Unmarshal(jsonData, &v) data := v.(map[string]interface{}) return "ok", data } func main() { //创建路由 r := gin.Default() //绑定路由规则,执行的函数 r.POST("/v1Models", func(c *gin.Context) { authorization := c.PostForm("authorization") url := "https://api.某个ai地址.com/v1/models" method := "GET" postjson := `` //Personal OpenAIOrganization := c.PostForm("OpenAI-Organization") resultMsg, data := callGpt(method, url, postjson, authorization, OpenAIOrganization) if resultMsg == "ok" { c.JSON(200, gin.H{"code": 0, "data": data}) } else { c.JSON(500, gin.H{"code": 500, "data": resultMsg}) } }) //gin.Context,封装了request和response r.POST("/v1ChatCompletions", func(c *gin.Context) { content := c.PostForm("content") authorization := c.PostForm("authorization") model := c.PostForm("model") //Personal OpenAIOrganization := c.PostForm("OpenAI-Organization") url := "https://api.某个ai地址.com/v1/chat/completions" method := "POST" postjson := `{"model": "#model#","messages": [{"role": "user", "content": "#content#"}]}` postjson = strings.Replace(postjson, "#content#", content, 1) postjson = strings.Replace(postjson, "#model#", model, 1) resultMsg, data := callGpt(method, url, postjson, authorization, OpenAIOrganization) if resultMsg == "ok" { c.JSON(200, gin.H{"code": 0, "data": data}) } else { c.JSON(500, gin.H{"code": 500, "data": resultMsg}) } }) //gin.Context,封装了request和response 带对话 r.POST("/v2ChatCompletions", func(c *gin.Context) { content := c.PostForm("content") authorization := c.PostForm("authorization") model := c.PostForm("model") //Personal OpenAIOrganization := c.PostForm("OpenAI-Organization") url := "https://api.某个ai地址.com/v1/chat/completions" method := "POST" postjson := `{"model": "#model#","messages": #content#}` postjson = strings.Replace(postjson, "#content#", content, 1) postjson = strings.Replace(postjson, "#model#", model, 1) resultMsg, data := callGpt(method, url, postjson, authorization, OpenAIOrganization) if resultMsg == "ok" { c.JSON(200, gin.H{"code": 0, "data": data}) } else { c.JSON(500, gin.H{"code": 500, "data": resultMsg}) } }) //监听端口,默认在8080,可以在这里指定端口号 r.Run(":8000") }