Spaces:
Runtime error
Runtime error
# go-chatgpt-api | |
### [中文文档](README.md) | |
## A forward proxy program attempting to bypass `Cloudflare 403` and `Access Denied`. | |
### Experimental project, with no guarantee of stability and backward compatibility, use at your own risk. | |
--- | |
### Troubleshooting | |
English countries does not have the "Great Firewall", so many issues are gone. | |
More details: https://github.com/linweiyuan/go-chatgpt-api/issues/74 | |
--- | |
### Supported APIs (URL and parameters are mostly consistent with the official website, with slight modifications to some interfaces). | |
--- | |
## ChatGPT APIs | |
--- | |
- `ChatGPT` user login (`accessToken` will be returned) (currently `Google` or `Microsoft` accounts are not supported). | |
`POST /chatgpt/login` | |
<details> | |
```json | |
{ | |
"username": "email", | |
"password": "password" | |
} | |
``` | |
</details> | |
--- | |
- get conversation list | |
`GET /chatgpt/conversations?offset=0&limit=20` | |
`offset` defaults to 0, `limit` defaults to 20 (max 100). | |
--- | |
- get conversation content | |
`GET /chatgpt/conversation/{conversationID}` | |
--- | |
- create conversation | |
`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> | |
--- | |
- generate conversation title | |
`POST /chatgpt/conversation/gen_title/{conversationID}` | |
<details> | |
```json | |
{ | |
"message_id": "role assistant response message id" | |
} | |
``` | |
</details> | |
--- | |
- rename conversation | |
`PATCH /chatgpt/conversation/{conversationID}` | |
<details> | |
```json | |
{ | |
"title": "new title" | |
} | |
``` | |
</details> | |
--- | |
- delete conversation | |
`PATCH /chatgpt/conversation/{conversationID}` | |
<details> | |
```json | |
{ | |
"is_visible": false | |
} | |
``` | |
</details> | |
--- | |
- delete all conversations | |
`PATCH /chatgpt/conversations` | |
<details> | |
```json | |
{ | |
"is_visible": false | |
} | |
``` | |
</details> | |
--- | |
- feedback message | |
`POST /chatgpt/conversation/message_feedback` | |
<details> | |
```json | |
{ | |
"message_id": "message id", | |
"conversation_id": "conversation id", | |
"rating": "thumbsUp/thumbsDown" | |
} | |
``` | |
</details> | |
--- | |
## Platform APIs | |
--- | |
- `platform` user login (`sessionKey` will be returned) | |
`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` | |
--- | |
- get `credit grants` (only support `sessionkey`) | |
`GET /platform/dashboard/billing/credit_grants` | |
--- | |
- get `subscription` (only support `sessionkey`) | |
`GET /platform/dashboard/billing/subscription` | |
--- | |
- get `api keys` (only support `sessionkey`) | |
`GET /platform/dashboard/user/api_keys` | |
--- | |
### Configuration | |
To set a proxy, you can use the environment variable `GO_CHATGPT_API_PROXY`, such | |
as `GO_CHATGPT_API_PROXY=http://127.0.0.1:20171` or `GO_CHATGPT_API_PROXY=socks5://127.0.0.1:20170`. If it is commented | |
out or left blank, it will not be enabled. | |
To use with `warp`: `GO_CHATGPT_API_PROXY=socks5://chatgpt-proxy-server-warp:65535`. Since the scenario that requires | |
setting up `warp` can directly access the `ChatGPT` website by default, using the same variable will not cause | |
conflicts. | |
--- | |
`docker-compose.yaml`: | |
```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 | |
``` | |
I only develop and test on `Arch Linux`, which is a `rolling` release version, meaning that everything on the system is | |
`up-to-date`. If you encounter a `yaml` error while using it, you can add `version: '3'` in front of `services:`. | |
If you encounter an `Access denied` error, but your server is indeed | |
in [Supported countries and territories](https://platform.openai.com/docs/supported-countries), try this | |
configuration (it is not guaranteed to solve the problem, for example, if your server is in `Zone A`, but `Zone A` | |
is not on the list of supported countries, even if you use `warp` to change to a `Cloudflare IP`, the result will still | |
be | |
`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 | |
``` | |
If you know what `teams-enroll-token` is and want to set its value, you can do so through the environment | |
variable `TEAMS_ENROLL_TOKEN`. | |
Run this command to check the result: | |
`docker-compose exec chatgpt-proxy-server-warp warp-cli --accept-tos account | awk 'NR==1'` | |
``` | |
Account type: Free (wrong) | |
Account type: Team (correct) | |
``` | |
--- | |
If you want to make sure the image is always latest, try this: | |
```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>AD</summary> | |
`Vultr` Referral Program: https://www.vultr.com/?ref=7372562 | |
</details> | |