Spaces:
Runtime error
Runtime error
| title: Go Chatgpt Api | |
| emoji: 💩 | |
| colorFrom: green | |
| colorTo: indigo | |
| sdk: docker | |
| pinned: false | |
| app_port: 8080 | |
| # go-chatgpt-api | |
| ### [English Doc](README_en.md) | |
| ## 一个尝试绕过 `Cloudflare 403` 和 `Access denied` 的正向代理程序 | |
| ### 实验性质项目,不保证稳定性和向后兼容,使用风险自负 | |
| ### 使用的过程中遇到问题应该如何解决 | |
| 汇总贴:https://github.com/linweiyuan/go-chatgpt-api/issues/74 | |
| --- | |
| ### 支持的 API(URL 和参数基本保持着和官网一致,部分接口有些许改动) | |
| --- | |
| ### ChatGPT APIs | |
| --- | |
| - `ChatGPT` 登录(返回 `accessToken`)(目前仅支持 `ChatGPT` 账号,谷歌或微软账号没有测试) | |
| `POST /chatgpt/login` | |
| <details> | |
| ```json | |
| { | |
| "username": "email", | |
| "password": "password" | |
| } | |
| ``` | |
| </details> | |
| --- | |
| - 获取对话列表(历史记录) | |
| `GET /chatgpt/conversations?offset=0&limit=20` | |
| `offset` 不传默认为 0, `limit` 不传默认为 20 (最大为 100) | |
| --- | |
| - 获取对话内容 | |
| `GET /chatgpt/conversation/{conversationID}` | |
| --- | |
| - 新建对话 | |
| `POST /chatgpt/conversation` | |
| <details> | |
| ```json | |
| { | |
| "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 | |
| } | |
| ``` | |
| </details> | |
| --- | |
| - 生成对话标题 | |
| `POST /chatgpt/conversation/gen_title/{conversationID}` | |
| <details> | |
| ```json | |
| { | |
| "message_id": "role assistant response message id" | |
| } | |
| ``` | |
| </details> | |
| --- | |
| - 重命名对话标题 | |
| `PATCH /chatgpt/conversation/{conversationID}` | |
| <details> | |
| ```json | |
| { | |
| "title": "new title" | |
| } | |
| ``` | |
| </details> | |
| --- | |
| - 删除单个对话 | |
| `PATCH /chatgpt/conversation/{conversationID}` | |
| <details> | |
| ```json | |
| { | |
| "is_visible": false | |
| } | |
| ``` | |
| </details> | |
| --- | |
| - 删除所有对话 | |
| `PATCH /chatgpt/conversations` | |
| <details> | |
| ```json | |
| { | |
| "is_visible": false | |
| } | |
| ``` | |
| </details> | |
| --- | |
| - 消息反馈 | |
| `POST /chatgpt/conversation/message_feedback` | |
| <details> | |
| ```json | |
| { | |
| "message_id": "message id", | |
| "conversation_id": "conversation id", | |
| "rating": "thumbsUp/thumbsDown" | |
| } | |
| ``` | |
| </details> | |
| --- | |
| ### Platform APIs | |
| --- | |
| - `platform` 登录(返回 `sessionKey`) | |
| `POST /platform/login` | |
| <details> | |
| ```json | |
| { | |
| "username": "email", | |
| "password": "password" | |
| } | |
| ``` | |
| </details> | |
| --- | |
| - [List models](https://platform.openai.com/docs/api-reference/models/list) | |
| `GET /platform/v1/models` | |
| --- | |
| - [Retrieve model](https://platform.openai.com/docs/api-reference/models/retrieve) | |
| `GET /platform/v1/models/{model}` | |
| --- | |
| - [Create completion](https://platform.openai.com/docs/api-reference/completions/create) | |
| `POST /platform/v1/completions` | |
| <details> | |
| ```json | |
| { | |
| "model": "text-davinci-003", | |
| "prompt": "Say this is a test", | |
| "max_tokens": 7, | |
| "temperature": 0, | |
| "stream": true | |
| } | |
| ``` | |
| </details> | |
| --- | |
| - [Create chat completion](https://platform.openai.com/docs/api-reference/chat/create) | |
| `POST /platform/v1/chat/completions` | |
| <details> | |
| ```json | |
| { | |
| "messages": [ | |
| { | |
| "role": "user", | |
| "content": "Hello World" | |
| } | |
| ], | |
| "model": "gpt-3.5-turbo", | |
| "stream": true | |
| } | |
| ``` | |
| </details> | |
| --- | |
| - [Create edit](https://platform.openai.com/docs/api-reference/edits/create) | |
| `POST /platform/v1/edits` | |
| <details> | |
| ```json | |
| { | |
| "model": "text-davinci-edit-001", | |
| "input": "What day of the wek is it?", | |
| "instruction": "Fix the spelling mistakes" | |
| } | |
| ``` | |
| </details> | |
| --- | |
| - [Create image](https://platform.openai.com/docs/api-reference/images/create) | |
| `POST /platform/v1/images/generations` | |
| <details> | |
| ```json | |
| { | |
| "prompt": "A cute dog", | |
| "n": 2, | |
| "size": "1024x1024" | |
| } | |
| ``` | |
| </details> | |
| --- | |
| - [Create embeddings](https://platform.openai.com/docs/api-reference/embeddings/create) | |
| `POST /platform/v1/embeddings` | |
| <details> | |
| ```json | |
| { | |
| "model": "text-embedding-ada-002", | |
| "input": "The food was delicious and the waiter..." | |
| } | |
| ``` | |
| </details> | |
| --- | |
| - [Create moderations](https://platform.openai.com/docs/api-reference/moderations/create) | |
| `POST /platform/v1/moderations` | |
| <details> | |
| ```json | |
| { | |
| "model": "text-moderation-stable", | |
| "input": "I want to kill them." | |
| } | |
| ``` | |
| </details> | |
| --- | |
| - [List files](https://platform.openai.com/docs/api-reference/files/list) | |
| `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` 配置文件: | |
| ```yaml | |
| services: | |
| go-chatgpt-api: | |
| container_name: go-chatgpt-api | |
| image: linweiyuan/go-chatgpt-api | |
| ports: | |
| - 8080:8080 | |
| environment: | |
| - GO_CHATGPT_API_PROXY= | |
| restart: unless-stopped | |
| ``` | |
| 我仅仅在 `Arch Linux` 上进行开发和测试,这是一个滚动更新的版本,意味着系统上所有东西都是最新的,如果你在使用的过程中 `yaml` | |
| 报错了,则可以加上 `version: '3'` 在 `services:` 前面 | |
| 如果遇到 `Access denied`,但是你的服务器确实在[被支持的国家或地区](https://platform.openai.com/docs/supported-countries) | |
| ,尝试一下这个配置(不保证能解决问题,比如你的服务器在 A 地区,但 A 地不在支持列表内,即使用上了 `warp` 后是 `Cloudflare IP` | |
| ,结果也会是 `403`): | |
| ```yaml | |
| services: | |
| go-chatgpt-api: | |
| container_name: go-chatgpt-api | |
| image: linweiyuan/go-chatgpt-api | |
| ports: | |
| - 8080:8080 | |
| environment: | |
| - 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 | |
| ``` | |
| 如果你知道什么是 `teams-enroll-token`,可以通过环境变量 `TEAMS_ENROLL_TOKEN` 设置它的值 | |
| 然后利用这条命令来检查是否生效: | |
| `docker-compose exec chatgpt-proxy-server-warp warp-cli --accept-tos account | awk 'NR==1'` | |
| ``` | |
| Account type: Free (没有生效) | |
| Account type: Team (设置正常) | |
| ``` | |
| --- | |
| 如果要让运行的镜像总是保持最新,可以配合这个一起使用: | |
| ```yaml | |
| services: | |
| watchtower: | |
| container_name: watchtower | |
| image: containrrr/watchtower | |
| volumes: | |
| - /var/run/docker.sock:/var/run/docker.sock | |
| command: --interval 3600 | |
| restart: unless-stopped | |
| ``` | |
| <details> | |
| <summary>广告位</summary> | |
| `Vultr` 推荐链接:https://www.vultr.com/?ref=7372562 | |
| --- | |
| 个人微信(没有验证,谁都能加,添加即通过,不用打招呼,直接把问题发出来,日常和私人问题不聊,不进群;可以解答程序使用问题,但最好自己要有一定的基础;可以远程调试,仅限 `SSH` | |
| 或`ToDesk`,但不保证能解决): | |
|  | |
| --- | |
| 微信赞赏码(经济条件允许的可以考虑支持下): | |
|  | |
| </details> | |