1
0
This repository has been archived on 2024-02-27. You can view files and clone it, but cannot push or open issues or pull requests.
chatgpt-to-api/docs/GUIDE_CN.md
2023-05-29 12:11:39 +08:00

4.5 KiB
Raw Blame History

中文指导手册

本中文手册由 @BlueSkyXN 编写

中文文档Chinese Docs 英文文档English Docs

基本配置

有关docker的指导请阅读 DOCKER中文手册

有关Token的指导请阅读 TOKEN中文手册

Docker-Compase配置

version: '3'

services:
  app:
    image: acheong08/chatgpt-to-api
    container_name: chatgpttoapi
    restart: unless-stopped
    ports:
      - '10080:10080'
    environment:
      SERVER_HOST: 0.0.0.0
      SERVER_PORT: 10080
      ADMIN_PASSWORD: TotallySecurePassword
      API_REVERSE_PROXY: https://ai.fakeopen.com/api/conversation
      PUID: user-X

  • ports 左边是外部端口右边是内部端口内部端口要和下面环境变量的Server port一致。
  • Server host/port监听配置默认0000监听某一端口。
  • ADMIN_PASSWORD管理员密码HTTP请求时候需要验证。
  • API_REVERSE_PROXY:接口的反向代理,具体介绍请看下文的后端代理介绍部分。
  • PUID: user-X请看中文文档Chinese Docs 的介绍

其他可以不需要设置包括预设的AccessToken和代理表、HTTP/S5代理。

后端代理

目前使用PUID+官网URL的方式不是很可靠建议使用第三方程序或者网站绕过这个WAF限制。

公共代理

温馨提醒由于OpenAI用的强力CloudFlareWAF所以7层转发是无效的不过4层在浏览器还是可以的

目前根据几个大项目的介绍,我找到了这个介绍页 https://github.com/transitive-bullshit/chatgpt-api#reverse-proxy 最后得知主要是这两个

Reverse Proxy URL Author Rate Limits Last Checked
https://ai.fakeopen.com/api/conversation @pengzhile 5 req / 10 seconds by IP 4/18/2023
https://api.pawan.krd/backend-api/conversation @PawanOsman 50 req / 15 seconds (~3 r/s) 3/23/2023

自建方案

我经过测试发现Pandora的API不行原因可能是发起对话后的返回值会一次性返回一堆信息导致提取失败。不过我亲测GO-ChatGPT-API是可以的。

GO-ChatGPT-API项目 https://github.com/linweiyuan/go-chatgpt-api

我是注释掉 ##- GO_CHATGPT_API_PROXY= 的环境变量、换个外部端口后用Docker-Compase启动即可。然后不需要对这个代理接口做其他操作包括登录。

搭建好之后最好测试下基本调用能不能用,下面是一个示例,你需要根据实际情况修改。

curl http://127.0.0.1:8080/chatgpt/conversation \
  -H "Content-Type: application/json" \
  -d '{
     "model": "gpt-3.5-turbo",
     "messages": [{"role": "user", "content": "Say this is a test!"}],
     "temperature": 0.7
   }'

如果得到缺少认证的提示比如 {"errorMessage":"Missing accessToken."} 就说明已经正常跑了

用例

基本提问

curl http://127.0.0.1:10080/v1/chat/completions \
  -d '{
     "model": "text-davinci-002-render-sha",
     "messages": [{"role": "user", "content": "你是什么模型是GPT3.5吗"}]
   }'

参考回复如下

{"id":"chatcmpl-QXlha2FBbmROaXhpZUFyZUF3XXXXXX","object":"chat.completion","created":0,"model":"gpt-3.5-turbo-0301","usage":{"prompt_tokens":0,"completion_tokens":0,"total_tokens":0},"choices":[{"index":0,"message":{"role":"assistant","content":"是的我是一个基于GPT-3.5架构的语言模型被称为ChatGPT。我可以回答各种问题提供信息和进行对话。尽管我会尽力提供准确和有用的回答但请记住我并不是完美的有时候可能会出现错误或者误导性的答案。"},"finish_reason":null}]}

请注意无论什么模型提问都只会显示为模型是GPT3.5T-0301。你在网页版看不到消息记录可能是删除了Chat不支持并发提问你需要token轮询。

提交Token

通过文件提交

curl -X PATCH \
     -H "Content-Type: application/json" \
     -H "Authorization: TotallySecurePassword" \
     -d "@/root/access_tokens.json" \
     http://127.0.0.1:10080/admin/tokens

直接提交

curl -X PATCH \
  -H "Content-Type: application/json" \
  -H "Authorization: TotallySecurePassword" \
  -d '["eyJhbXXX"]' \
  http://127.0.0.1:10080/admin/tokens

要清理Token直接停用删除Docker容器后重新构建运行容器即可