下面介绍在国内网络中不科学上网的情况下来调用OpenAI的api接口,从而使用chatgpt开发应用或者使用chagpt的镜像站比如 这个项目
注意事项:
1、你需要有一个自己的chatgpt账号
2、登录openai的网站,创建一个openai的apiKey,创建apikey地址在这里
3、你需要有一台可以正常访问Chatgpt的海外vps服务器,推荐使用微软云的服务器,官网在这里
安装Nginx
1 2 3 4 5
| $ yum install -y nginx
$ apt-get install -y nginx
|
Nginx创建一个反向代理chagpt接口的vhost
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| $ vim /etc/nginx/conf.d/chat.conf server { listen 80; server_name chatapi.xxx.com; location / { proxy_pass https://api.openai.com/; proxy_ssl_server_name on; proxy_set_header Host api.openai.com; }
}
|
启动Nginx服务
1 2 3 4
| $ systemctl start nginx
|
此时反代接口就部署好了,程序可以通过我们自定义反代地址http://chatapi.xxx.com
来免科学上网访问Chatgpt了
下面我们来通过curl测试一下反代服务器的可用性,
官方的api地址:https://api.openai.com/v1/chat/completions
我们反代的地址:http://chatapi.xxx.com/v1/chat/completions
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| $ OPENAI_API_KEY="这里是你的API Key" $ PROXY_URL="http://chatapi.xxx.com/v1/chat/completions"
$ curl -s -k $PROXY_URL \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -d '{ "model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": "你好啊"}], "temperature": 0.7 }'
{"id":"chatcmpl-76bAOcDx7jkQdeXCOlXbQhy2b6TZq","object":"chat.completion","created":1681807192,"model":"gpt-3.5-turbo-0301","usage":{"prompt_tokens":12,"completion_tokens":18,"total_tokens":30},"choices":[{"message":{"role":"assistant","content":"您好!有什么我可以帮助您的吗?"},"finish_reason":"stop","index":0}]}
|
也可以使用下面的shell脚本来调用反代服务器进行连续对话
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
$ vim chat.sh
OPENAI_API_KEY="你的openai API Key" PROXY_URL="-k 自建的反代服务器访问地址http://chatapi.xxx.com/v1/chat/completions " user="`echo -e "\e[1;32m 我: \e[0m"`"
request(){ user_input="$1" reply=$(curl -s $PROXY_URL \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -d '{ "model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": "'"$user_input"'"}], "temperature": 0.7 }' | jq -r '.choices[0].message') echo -e "\e[1;31mOPENAI\e[0m: $reply" }
while true do read -p "$user " info request "$info" done
$ chmod +x chat.sh
|
运行脚本测试效果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| $ ./chat.sh 我: 简单介绍一下自己吧 OPENAI: { "role": "assistant", "content": "我是一名AI语言模型,由OpenAI公司开发。我可以用自然语言与人类进行交互,帮助人们解决问题、提供信息和建议等。虽然我没有实体,但我能够学习和不断提高自己的语言技能。希望能为您提供有用的帮助!" } 我: 帮我使用golang写一个99乘法表的代码 OPENAI: { "role": "assistant", "content": "以下是一个简单的实现:
```go package main
import \"fmt\"
func main() { for i := 1; i <= 9; i++ { for j := 1; j <= i; j++ { fmt.Printf(\"%d*%d=%d \", j, i, j*i) } fmt.Println() } } ```
|