go语言调用chatgpt
时间: 2023-08-26 20:18:23 浏览: 85
您好!对于使用Go语言调用ChatGPT,您可以通过使用OpenAI的GPT-3 API来实现。以下是一个简单的示例代码,使用Go语言发送请求并接收ChatGPT的响应:
```go
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
const (
apiKey = "YOUR_OPENAI_API_KEY"
modelName = "gpt-3.5-turbo"
)
type GPTRequest struct {
Prompt string `json:"prompt"`
MaxTokens int `json:"max_tokens"`
Temperature float32 `json:"temperature"`
}
type GPTResponse struct {
Choices []struct {
Text string `json:"text"`
} `json:"choices"`
}
func main() {
prompt := "你的对话提示" // 替换为您自己的对话提示
requestData := GPTRequest{
Prompt: prompt,
MaxTokens: 50, // 控制生成的响应长度
Temperature: 0.7, // 控制生成的多样性,0.0最保守,1.0最随机
}
data, err := json.Marshal(requestData)
if err != nil {
fmt.Println("JSON marshal error:", err)
return
}
url := fmt.Sprintf("https://api.openai.com/v1/engines/%s/completions", modelName)
req, err := http.NewRequest("POST", url, bytes.NewBuffer(data))
if err != nil {
fmt.Println("Request error:", err)
return
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer "+apiKey)
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
fmt.Println("API request error:", err)
return
}
defer resp.Body.Close()
respData, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("Response read error:", err)
return
}
var responseData GPTResponse
err = json.Unmarshal(respData, &responseData)
if err != nil {
fmt.Println("JSON unmarshal error:", err)
return
}
if len(responseData.Choices) > 0 {
fmt.Println("ChatGPT response:", responseData.Choices[0].Text)
} else {
fmt.Println("No response from ChatGPT")
}
}
```
请确保将 `YOUR_OPENAI_API_KEY` 替换为您自己的OpenAI API密钥,并根据您的需求自定义对话提示、响应长度和多样性。
这只是一个简单的示例,您可以根据自己的需求进行进一步的开发和调整。希望对您有所帮助!如有其他问题,请随时提问。