Go
Go 语言接入 零派智能API 有两种方式:使用标准库 net/http 直接发送请求,或使用第三方库 go-openai。
环境变量设置
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。
安装
go get github.com/sashabaranov/go-openaiChat 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) }}运行
go run main.go