使用Golang调用OpenAI GPT的方法与技巧
使用Golang调用OpenAI GPT的方法与技巧 大家好,
我想在我的网站中集成OpenAI GPT-3 API。 请问如何使用Golang来实现,请帮帮我。
1 回复
更多关于使用Golang调用OpenAI GPT的方法与技巧的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
在Golang中调用OpenAI GPT-3 API,可以使用官方提供的Go SDK或直接通过HTTP请求实现。以下是两种方法的示例:
方法一:使用官方Go SDK
首先安装OpenAI Go包:
go get github.com/sashabaranov/go-openai
示例代码:
package main
import (
"context"
"fmt"
"log"
"github.com/sashabaranov/go-openai"
)
func main() {
client := openai.NewClient("your-api-key-here")
resp, err := client.CreateChatCompletion(
context.Background(),
openai.ChatCompletionRequest{
Model: openai.GPT3Dot5Turbo,
Messages: []openai.ChatCompletionMessage{
{
Role: openai.ChatMessageRoleUser,
Content: "Hello, GPT!",
},
},
},
)
if err != nil {
log.Fatalf("ChatCompletion error: %v", err)
}
fmt.Println(resp.Choices[0].Message.Content)
}
方法二:直接使用HTTP请求
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"log"
)
type GPTRequest struct {
Model string `json:"model"`
Messages []Message `json:"messages"`
}
type Message struct {
Role string `json:"role"`
Content string `json:"content"`
}
type GPTResponse struct {
Choices []struct {
Message struct {
Content string `json:"content"`
} `json:"message"`
} `json:"choices"`
}
func main() {
apiKey := "your-api-key-here"
url := "https://api.openai.com/v1/chat/completions"
requestBody := GPTRequest{
Model: "gpt-3.5-turbo",
Messages: []Message{
{
Role: "user",
Content: "Hello, GPT!",
},
},
}
jsonData, err := json.Marshal(requestBody)
if err != nil {
log.Fatal(err)
}
req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer "+apiKey)
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
var gptResp GPTResponse
err = json.Unmarshal(body, &gptResp)
if err != nil {
log.Fatal(err)
}
if len(gptResp.Choices) > 0 {
fmt.Println(gptResp.Choices[0].Message.Content)
}
}
关键技巧
- 环境变量管理:
import "os"
apiKey := os.Getenv("OPENAI_API_KEY")
- 错误处理增强:
resp, err := client.CreateChatCompletion(ctx, req)
if err != nil {
var openAIErr *openai.APIError
if errors.As(err, &openAIErr) {
log.Printf("OpenAI API error: %v", openAIErr)
}
return err
}
- 流式响应处理:
stream, err := client.CreateChatCompletionStream(ctx, req)
if err != nil {
return err
}
defer stream.Close()
for {
response, err := stream.Recv()
if errors.Is(err, io.EOF) {
break
}
if err != nil {
return err
}
fmt.Print(response.Choices[0].Delta.Content)
}
- 请求超时设置:
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
resp, err := client.CreateChatCompletion(ctx, req)
这些示例展示了在Golang中调用OpenAI GPT-3 API的基本实现。根据实际需求调整模型参数、消息结构和错误处理逻辑。

