跳转到内容
返回主站

Go

Go 语言接入 零派智能API 有两种方式:使用标准库 net/http 直接发送请求,或使用第三方库 go-openai。

环境变量设置

Terminal window
export API_KEY="sk-your-api-key"
export BASE_URL="https://your-domain.com/v1"
export MODEL="gpt-4o"

使用标准库 net/http

无需安装任何第三方依赖,直接使用 Go 标准库发送请求:

package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
"os"
)
func main() {
url := os.Getenv("BASE_URL") + "/chat/completions"
requestBody, _ := json.Marshal(map[string]interface{}{
"model": os.Getenv("MODEL"),
"messages": []map[string]string{
{"role": "system", "content": "你是一个有帮助的助手。"},
{"role": "user", "content": "用一句话解释什么是 Go 语言。"},
},
})
req, err := http.NewRequest("POST", url, bytes.NewBuffer(requestBody))
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("API_KEY"))
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}

使用 sashabaranov/go-openai 库

go-openai 是社区维护的 OpenAI Go 客户端,提供更友好的 API。

安装

Terminal window
go get github.com/sashabaranov/go-openai

Chat Completions 示例

package main
import (
"context"
"fmt"
"os"
openai "github.com/sashabaranov/go-openai"
)
func main() {
config := openai.DefaultConfig(os.Getenv("API_KEY"))
config.BaseURL = os.Getenv("BASE_URL")
client := openai.NewClientWithConfig(config)
resp, err := client.CreateChatCompletion(context.Background(), openai.ChatCompletionRequest{
Model: os.Getenv("MODEL"),
Messages: []openai.ChatCompletionMessage{
{Role: openai.ChatMessageRoleSystem, Content: "你是一个有帮助的助手。"},
{Role: openai.ChatMessageRoleUser, Content: "用一句话解释什么是 Go 语言。"},
},
})
if err != nil {
panic(err)
}
fmt.Println(resp.Choices[0].Message.Content)
}

流式响应示例

package main
import (
"context"
"fmt"
"io"
"os"
openai "github.com/sashabaranov/go-openai"
)
func main() {
config := openai.DefaultConfig(os.Getenv("API_KEY"))
config.BaseURL = os.Getenv("BASE_URL")
client := openai.NewClientWithConfig(config)
stream, err := client.CreateChatCompletionStream(context.Background(), openai.ChatCompletionRequest{
Model: os.Getenv("MODEL"),
Messages: []openai.ChatCompletionMessage{
{Role: openai.ChatMessageRoleUser, Content: "写一首关于大海的诗。"},
},
})
if err != nil {
panic(err)
}
defer stream.Close()
for {
response, err := stream.Recv()
if err == io.EOF {
break
}
if err != nil {
panic(err)
}
fmt.Print(response.Choices[0].Delta.Content)
}
}

运行

Terminal window
go run main.go