要使用Go语言调用OpenAI(例如GPT-3)进行聊天,您需要遵循以下步骤:
1安装一个HTTP客户端库,例如net/http(Go标准库中的库)或第三方库(例如github.com/go-resty/resty)。这将帮助您与OpenAI API进行通信。
2获取API密钥:要调用OpenAI的API,您需要获得API密钥。通常,您可以在OpenAI网站上注册并创建一个API密钥。
3编写一个函数,使用HTTP客户端库向OpenAI API发起请求。确保使用API密钥进行身份验证。
以下是一个使用Go标准库net/http和encoding/json的示例:
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
const openAIURL = "https://api.openai.com/v1/engines/davinci-codex/completions"
type Prompt struct {
Prompt string `json:"prompt"`
MaxTokens int `json:"max_tokens"`
}
func chatWithOpenAI(apiKey, prompt string) (string, error) {
client := &http.Client{}
// 创建请求体
requestBody := Prompt{
Prompt: prompt,
MaxTokens: 50,
}
jsonBody, err := json.Marshal(requestBody)
if err != nil {
return "", err
}
// 创建请求
req, err := http.NewRequest("POST", openAIURL, bytes.NewBuffer(jsonBody))
if err != nil {
return "", err
}
// 设置头信息
req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", apiKey))
req.Header.Set("Content-Type", "application/json")
// 发送请求
resp, err := client.Do(req)
if err != nil {
return "", err
}
defer resp.Body.Close()
// 读取响应
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return "", err
}
var result map[string]interface{}
err = json.Unmarshal(body, &result)
if err != nil {
return "", err
}
choices := result["choices"].([]interface{})
text := choices[0].(map[string]interface{})["text"].(string)
return text, nil
}
func main() {
apiKey := "your_api_key_here"
prompt := "What is the capital of France?"
response, err := chatWithOpenAI(apiKey, prompt)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println("Response:", response)
}
请注意,您需要用您的API密钥替换your_api_key_here。
这个示例程序将创建一个与OpenAI API的HTTP POST请求,并将结果解析为JSON格式。请根据实际情况对示例代码进行修改。注意,由于API限制,GPT-3可能不会一直生成完美的回答。