Skip to content

Latest commit

 

History

History
417 lines (278 loc) · 7.71 KB

README_zh.md

File metadata and controls

417 lines (278 loc) · 7.71 KB

go-chatgpt-api

一个尝试绕过 Cloudflare 403Access denied 的正向代理程序

实验性质项目,不保证稳定性和向后兼容,使用风险自负

版本 分支 镜像 特点
新版 main linweiyuan/go-chatgpt-api:latest API 直连,仅需跑一个容器即可(不算 warpcookies
旧版 legacy linweiyuan/go-chatgpt-api:legacy 基于浏览器,需要额外跑 linweiyuan/chatgpt-proxy-server(不算 warp

新版是趋势,但是如果用新版遇到问题,可以撤回旧版,旧版还能用,并且基于浏览器应该是比较终极的解决方案,理论上很长一段时间都可以用(旧版资源占用会多一点)


使用的过程中遇到问题应该如何解决

汇总贴:linweiyuan#74


支持的 API(URL 和参数基本保持着和官网一致,部分接口有些许改动)


ChatGPT APIs


  • ChatGPT 登录(返回 accessToken)(目前仅支持 ChatGPT 账号,谷歌或微软账号没有测试)

POST /chatgpt/login

{
  "username": "email",
  "password": "password"
}

  • 获取对话列表(历史记录)

GET /chatgpt/conversations?offset=0&limit=20

offset 不传默认为 0, limit 不传默认为 20 (最大为 100)


  • 获取对话内容

GET /chatgpt/conversation/{conversationID}


  • 新建对话

POST /chatgpt/conversation

{
  "action": "next",
  "messages": [
    {
      "id": "message id",
      "author": {
        "role": "user"
      },
      "content": {
        "content_type": "text",
        "parts": [
          "Hello World"
        ]
      }
    }
  ],
  "parent_message_id": "parent message id",
  "conversation_id": "conversation id",
  "model": "text-davinci-002-render-sha",
  "timezone_offset_min": -480,
  "history_and_training_disabled": false
}

  • 生成对话标题

POST /chatgpt/conversation/gen_title/{conversationID}

{
  "message_id": "role assistant response message id"
}

  • 重命名对话标题

PATCH /chatgpt/conversation/{conversationID}

{
  "title": "new title"
}

  • 删除单个对话

PATCH /chatgpt/conversation/{conversationID}

{
  "is_visible": false
}

  • 删除所有对话

PATCH /chatgpt/conversations

{
  "is_visible": false
}

  • 消息反馈

POST /chatgpt/conversation/message_feedback

{
  "message_id": "message id",
  "conversation_id": "conversation id",
  "rating": "thumbsUp/thumbsDown"
}

Platform APIs


  • platform 登录(返回 sessionKey

POST /platform/login

{
  "username": "email",
  "password": "password"
}

GET /platform/v1/models


GET /platform/v1/models/{model}


POST /platform/v1/completions

{
  "model": "text-davinci-003",
  "prompt": "Say this is a test",
  "max_tokens": 7,
  "temperature": 0,
  "stream": true
}

POST /platform/v1/chat/completions

{
  "messages": [
    {
      "role": "user",
      "content": "Hello World"
    }
  ],
  "model": "gpt-3.5-turbo",
  "stream": true
}

POST /platform/v1/edits

{
  "model": "text-davinci-edit-001",
  "input": "What day of the wek is it?",
  "instruction": "Fix the spelling mistakes"
}

POST /platform/v1/images/generations

{
  "prompt": "A cute dog",
  "n": 2,
  "size": "1024x1024"
}

POST /platform/v1/embeddings

{
  "model": "text-embedding-ada-002",
  "input": "The food was delicious and the waiter..."
}

GET /platform/v1/files


  • 获取 credit grants (只能传 sessionKey

GET /platform/dashboard/billing/credit_grants


  • 获取 subscription (只能传 sessionKey

GET /platform/dashboard/billing/subscription


  • 获取 api keys (只能传 sessionKey

GET /platform/dashboard/user/api_keys


如需设置代理,可以设置环境变量 GO_CHATGPT_API_PROXY,比如 GO_CHATGPT_API_PROXY=http://127.0.0.1:20171 或者 GO_CHATGPT_API_PROXY=socks5://127.0.0.1:20170,注释掉或者留空则不启用

如需配合 warp 使用:GO_CHATGPT_API_PROXY=socks5://chatgpt-proxy-server-warp:65535,因为需要设置 warp 的场景已经默认可以直接访问 ChatGPT 官网,因此共用一个变量不冲突


docker-compose 配置文件:

services:
  go-chatgpt-api:
    container_name: go-chatgpt-api
    image: linweiyuan/go-chatgpt-api
    ports:
      - 8080:8080
    environment:
      - GIN_MODE=release
      - GO_CHATGPT_API_PROXY=
    restart: unless-stopped

我仅仅在 Arch Linux 上进行开发和测试,这是一个滚动更新的版本,意味着系统上所有东西都是最新的,如果你在使用的过程中 yaml 报错了,则可以加上 version: '3'services: 前面

如果遇到 Access denied,但是你的服务器确实在被支持的国家或地区 ,尝试一下这个配置(不保证能解决问题,比如你的服务器在 A 地区,但 A 地不在支持列表内,即使用上了 warp 后是 Cloudflare IP ,结果也会是 403):

services:
  go-chatgpt-api:
    container_name: go-chatgpt-api
    image: linweiyuan/go-chatgpt-api
    ports:
      - 8080:8080
    environment:
      - GIN_MODE=release
      - GO_CHATGPT_API_PROXY=socks5://chatgpt-proxy-server-warp:65535
    depends_on:
      - chatgpt-proxy-server-warp
    restart: unless-stopped

  chatgpt-proxy-server-warp:
    container_name: chatgpt-proxy-server-warp
    image: linweiyuan/chatgpt-proxy-server-warp
    environment:
      - LOG_LEVEL=OFF
    restart: unless-stopped

如果要让运行的镜像总是保持最新,可以配合这个一起使用:

services:
  watchtower:
    container_name: watchtower
    image: containrrr/watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    command: --interval 3600
    restart: unless-stopped
广告位

Vultr 推荐链接:https://www.vultr.com/?ref=7372562


个人微信(没有验证,谁都能加,但是不聊日常和私人问题,不进群;可以解答程序使用问题,但最好自己要有一定的基础;可以远程调试,仅限 SSHToDesk,但不保证能解决):


微信赞赏码(经济条件允许的可以考虑支持下):