golang开发智能客服接口案例,仅供学习和研究[建议收藏]
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")
}