利用Golang实现对接ChatGPT3.5模型接口-并且无需翻墙已经使用代理域名

2023-03-22

利用Golang实现对接ChatGPT3.5模型接口-并且无需翻墙已经使用代理域名

演示网站:gofly.v1kf.com
我的微信:llike620
我的微信

GPT3.5的模型接口已经出来了一段时间,之前使用Vue.js对接过该模型的接口

现在使用Golang来对接实现一下这个接口

对第三方库github.com/sashabaranov/go-openai 进行二次封装


import (
   “context”
   “fmt”
   “github.com/sashabaranov/go-openai”
   “github.com/tidwall/gjson”
   “log”
   “strings”
)

type ChatGptTool struct {    Secret string    Client *openai.Client } type Gpt3Dot5Message openai.ChatCompletionMessage

func NewChatGptTool(secret string) *ChatGptTool {    config := openai.DefaultConfig(secret)    config.BaseURL = “https://openai.geekr.cool/v1”    client := openai.NewClientWithConfig(config)    //client := openai.NewClient(secret)    return &ChatGptTool{       Secret: secret,       Client: client,    } }

/** 调用gpt3.5接口 */ func (this *ChatGptTool) ChatGPT3Dot5Turbo(messages []Gpt3Dot5Message) (string, error) {    reqMessages := make([]openai.ChatCompletionMessage, 0)    for _, row := range messages {       reqMessage := openai.ChatCompletionMessage{          Role:    row.Role,          Content: row.Content,          Name:    row.Name,       }       reqMessages = append(reqMessages, reqMessage)    }    resp, err := this.Client.CreateChatCompletion(       context.Background(),       openai.ChatCompletionRequest{          Model:    openai.GPT3Dot5Turbo,          Messages: reqMessages,       },    )

   if err != nil {       log.Println(“ChatGPT3Dot5Turbo error: ”, err)       return “”, err    }

   return resp.Choices[0].Message.Content, nil }


测试用例如下面所示

func TestChatGPT3Dot5Turbo(t *testing.T) {
   gpt := NewChatGptTool(“你的Key”)
   message := []Gpt3Dot5Message{
      {
         Role:    “system”,
         Content: “你是一个精通开发的资深工程师,熟悉全栈技术,任何问题都难不倒你”,
      },
      {
         Role:    “user”,
         Content: “帮我使用golang开发一个在线客服系统”,
      },
   }
   res, err := gpt.ChatGPT3Dot5Turbo(message)
   log.Println(res, err)
}