golang 调用chatgpt api
今天给大家分享一下golang调用chatgpt api的示例代码
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
type ChatGPTRequest struct {
Prompt string `json:"prompt"`
}
type ChatGPTResponse struct {
Choices []struct {
Text string `json:"text"`
} `json:"choices"`
}
func main() {
apiKey := "sk-xxxxxxxxx"
url := "https://api.openai.com/v1/engines/gpt-3.5-turbo-16k/completions"
reqData := ChatGPTRequest{Prompt: "golang和python的区别"}
reqBody, _ := json.Marshal(reqData)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(reqBody))
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("Error sending request to API: ", err)
return
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
var chatGPTResponse ChatGPTResponse
_ = json.Unmarshal(body, &chatGPTResponse)
fmt.Println("Response from ChatGPT: ", string(body))
}
代码解析:
-
package main
定义这是一个 Go 语言的主程序包。 -
导入所需包:
bytes
用于处理字节缓冲。encoding/json
用于 JSON 数据的序列化和反序列化。fmt
用于格式化输出(打印错误信息)。io/ioutil
提供读取 HTTP 响应体的简便方法。net/http
用于处理 HTTP 请求和响应。
-
定义两个结构体:
ChatGPTRequest
结构体用来表示要发送给 ChatGPT API 的请求数据,其中包含一个字段Prompt
,它是待生成回复的问题或提示。ChatGPTResponse
结构体用来解析从 ChatGPT API 返回的数据,它包含一个名为Choices
的切片,每个元素是一个匿名结构体,该结构体仅有一个字段Text
,代表 ChatGPT 生成的文本回复之一。
-
在
main
函数中:-
初始化一个变量
apiKey
存储 OpenAI API 密钥,此处被注释要求替换为实际密钥。 - 设置 API 终点 URL 为 GPT-3.5 Turbo-16k 引擎的访问地址。
-
创建一个新的请求:
- 构建一个
ChatGPTRequest
实例,其 Prompt 设置为 “golang和python的区别”。 - 使用
json.Marshal()
将请求结构体转换成 JSON 格式的字节流。 - 创建一个
http.Request
对象,方法为 POST,URL 为上述引擎地址,请求体为构造好的 JSON 数据,并设置请求头 Content-Type 为 application/json 和 Authorization 为 Bearer Token 形式的 API 密钥。
- 构建一个
-
发送请求:
- 创建一个
http.Client
实例并使用它来发送请求。 - 如果发生错误,打印错误信息并结束程序运行。
- 当请求完成后,确保关闭响应体。
- 创建一个
-
处理响应:
- 读取响应体的所有内容到内存。
- 将响应体的 JSON 数据反序列化到
ChatGPTResponse
结构体实例中。 - 虽然这里使用
_ = json.Unmarshal()
来忽略可能发生的错误,但在实际开发中应该处理这个错误。
-
打印响应:
- 输出原始的响应体内容(字符串形式)。
-
初始化一个变量
要注意的是
ChatGPT4 会员并没有ChatGPT API的访问权限
使用 ChatGPT API,需单独申请和购买
没有单独购买 ChatGPT API 的调用api 接口报错如下:
Was this helpful?
0 / 0