利用Golang实现对接ChatGPT3.5模型接口-并且无需FQ已经使用代理域名
GPT3.5的模型接口已经出来了一段时间,之前使用Vue.js对接过该模型的接口
现在使用Golang来对接实现一下这个接口
对第三方库github/sashabaranov/go-openai 进行二次封装
域名部分找了一个代理域名,要不然国内服务器访问不通
import (
"context"
"fmt"
"github/sashabaranov/go-openai"
"github/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 = "/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)
}
原文地址:https://gofly.v1kf/article/36
利用Golang实现对接ChatGPT3.5模型接口-并且无需FQ已经使用代理域名
GPT3.5的模型接口已经出来了一段时间,之前使用Vue.js对接过该模型的接口
现在使用Golang来对接实现一下这个接口
对第三方库github/sashabaranov/go-openai 进行二次封装
域名部分找了一个代理域名,要不然国内服务器访问不通
import (
"context"
"fmt"
"github/sashabaranov/go-openai"
"github/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 = "/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)
}
原文地址:https://gofly.v1kf/article/36