ChatGPT-Proxy
Python version of OpenAI's ChatGPT web API proxy
Python alternative of ChatGPT-Proxy-V4
Use cookie cf_clearance to pass Cloudflare browser check
_puid no longer works
Requirements
- Access to chat.openai.com
Install
pip install chatgpt-proxy
Usage
For how to get a usable cf_clearance cookie, checkout issue #1 (Chinese only sorry)
Run as a service
Set these environment variables:
CF_CLEARANCE: (Optional) Cookiecf_clearanceUSER_AGENT: (Optional) User-agent of your browser when you get the cookiecf_clearanceACCESS_TOKEN: (Optional) Obtains from herePUID: (Optional) Cookie_puid, still needed to start a conversation for plus account (?) When set a plus account's access_token, this can be automatically refreshPROXY_TRUST_CLIENT: (Optional) Trust requests from any client.
When set toTrue, any requests without an access_token will be given the above access_token.
Default toFalse, which will only use for refresh puid.HOST: (Optional) Listen on host, default to127.0.0.1PORT: (Optional) Listen on port, default to7800MOD_ACCESS_TOKEN: (Optional) Update info like cf_clearance through http request requires you set this access_token inAuthorizationHeader
Or create a .env file with your environment variables at where you want to run the proxy:
cf_clearance=YOUR_CF_CLEARANCE
user_agent=YOUR_USER_AGENT
access_token=YOUR_ACCESS_TOKEN
puid=ANY_VALID_PUID
proxy_trust_client=False
host=127.0.0.1
port=7800
mod_access_token=YOUR_MOD_ACCESS_TOKEN
Note that environment variables will override the values in .env file.
Then run: python -m chatgpt_proxy
Success
If you see this in console:
2023-01-01 00:00:00,000 - chatgpt_proxy.proxy - INFO - puid: user-xxxxxx
You are ready to go
The proxy is avaliable at http://host:port/backend-api/
Integrate into your FastAPI app
Check out __main__.py
from chatgpt_proxy import WebChatGPTProxy
proxy = WebChatGPTProxy(cf_clearance=CF_CLEARANCE, user_agent=USER_AGENT, access_token=ACCESS_TOKEN, trust=False)
app = FastAPI()
proxy.attach(app, path="/backend-api")
class WebChatGPTProxy:
cf_clearance: Cookiecf_clearanceuser_agent: User-agent of your browser when you get the cookiecf_clearanceaccess_token: (Optional)puid: (Optional)trust: (Optional) Trust requests from any client. When set to True, any requests without an access_token will be given the above access_token. Default to False, which will only use for refresh puid.
Behind a http proxy
You need to use the same ip address you used to get the cookie cf_clearance
Set HTTP_PROXY and HTTPS_PROXY or ALL_PROXY environment variables.
This cannot be set in .env file becauce httpx (the package we used to send request) reads from environment variables only. See also httpx#Proxies.
Credits
- ChatGPT-Proxy-V4 https://github.com/acheong08/ChatGPT-Proxy-V4
- Implement reverse proxy in FastAPI https://github.com/tiangolo/fastapi/discussions/7382#discussioncomment-5136454
License
This work is licensed under the GNU Affero General Public License v3.0 or later, with the "CHATGPT-PROXY" exception.
"CHATGPT-PROXY" EXCEPTION TO THE AGPL
As a special exception, using this work in the following ways does not cause your program to be covered by the AGPL:
- Bundling the unaltered code or binary of this work in your program; or
- Interacting with this work through the provided inter-process communication interface, such as the HTTP API.
Metadata
Release files for chatgpt-proxy 0.2.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| chatgpt-proxy-0.2.5.tar.gz | 17.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| chatgpt_proxy-0.2.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 36.2 kB
Release files / chatgpt-proxy-0.2.5.tar.gz
| Download URL | chatgpt-proxy-0.2.5.tar.gz |
|---|---|
| Size | 17.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5a5bbf68acd90690124c226047b04eb2afa4974210c36fca7fb65f39fb6b50f2
|
|
BLAKE2b-256 checksum How to use checksums |
42325c28e7b308219d2ddd9626040fa62f58a0ccb39d44a9f077635518f4a4ca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.9.16
|
Release files / chatgpt_proxy-0.2.5-py3-none-any.whl
| Download URL | chatgpt_proxy-0.2.5-py3-none-any.whl |
|---|---|
| Size | 18.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
09429535a399ebb485ad651af66d24ddf3e90e149c7c1b1687aca8b562084fb6
|
|
BLAKE2b-256 checksum How to use checksums |
5baa5e12422e07a9a0cffe8f3a78cbc7a1aee74eb83c4d9c2fdbf8356c8bc739
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.9.16
|