基于Go写一个Gpt机器人(1)

39 阅读1分钟
package main

import (
   "encoding/json"
   "fmt"
   "io/ioutil"
   "net/http"
   "net/url"
   "strings"
)

func main() {
   // 设置API密钥
   apiKey := " "

   // 设置API端点和调用参数
   url1 := "https://api.openai.com/v1/chat/completions"
   data := map[string]interface{}{
      "messages": []map[string]string{
         {
            "role":    "system",
            "content": "你好", //这里更改请求内容
         },
      },
      "max_tokens": 100,
      "model":      "gpt-3.5-turbo",
   }

   // 创建自定义Transport,并设置代理
   proxyURL, err := url.Parse("http://localhost:7901")
   if err != nil {
      fmt.Println("Error parsing proxy URL:", err)
      return
   }
   transport := &http.Transport{
      Proxy: http.ProxyURL(proxyURL),
   }

   // 创建带有自定义Transport的HTTP客户端
   client := &http.Client{
      Transport: transport,
   }

   ////////////////////////

   jsonData, err := json.Marshal(data)
   if err != nil {
      fmt.Println("Error marshaling JSON:", err)
      return
   }

   // 创建HTTP POST请求
   req, err := http.NewRequest("POST", url1, strings.NewReader(string(jsonData)))
   if err != nil {
      fmt.Println("Error creating request:", err)
      return
   }

   // 设置请求头部信息
   req.Header.Set("Content-Type", "application/json")
   req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", apiKey))

   // 发送请求并获取响应
   resp, err := client.Do(req)
   if err != nil {
      fmt.Println("Error sending request:", err)
      return
   }
   defer resp.Body.Close()

   // 读取响应内容
   body, err := ioutil.ReadAll(resp.Body)
   if err != nil {
      fmt.Println("Error reading response:", err)
      return
   }

   // 打印响应内容
   fmt.Println(string(body))
}