Unofficial reverse-engineered ChatGPT API in Python.
Project description
Reverse Engineered ChatGPT API
Use OpenAI ChatGPT in your Python code without an API key
English | 简体中文
Table of Contents
About The Project
This project can be used to integrate OpenAI's ChatGPT services into your python code. You can use this project to prompt ChatGPT for responses directly from python, without using an official API key.
This can be useful if you want to use ChatGPT API without a ChatGPT Plus account.
Inspiration
ChatGPT has an official API which can be used to interface your Python code to it, but it needs to be used with an API key. This API key can only be obtained if you have a ChatGPT Plus account, which requires $20/month (as of 05/11/2023). But you can use ChatGPT for free, using the ChatGPT web interface. This project aims to interface your code to ChatGPT web version so you can use ChatGPT in your Python code without using an API key.
How it works
ChatGPT web interface's requests have been reverse engineered, and directly integrated into Python requests. Hence, any requests made using this script is a simulated as a request made by a user directly on the website. Hence, it is free and needs no API key.
Built Using
Getting Started
Prerequisites
- Python >= 3.9
Installation
pip install re-gpt
Usage
Basic example
from re_gpt import SyncChatGPT
session_token = "__Secure-next-auth.session-token here"
conversation_id = None # conversation ID here
with SyncChatGPT(session_token=session_token) as chatgpt:
prompt = input("Enter your prompt: ")
if conversation_id:
conversation = chatgpt.get_conversation(conversation_id)
else:
conversation = chatgpt.create_new_conversation()
for message in conversation.chat(prompt):
print(message["content"], flush=True, end="")
Basic async example
import asyncio
import sys
from re_gpt import AsyncChatGPT
session_token = "__Secure-next-auth.session-token here"
conversation_id = conversation_id = None # conversation ID here
if sys.version_info >= (3, 8) and sys.platform.lower().startswith("win"):
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
async def main():
async with AsyncChatGPT(session_token=session_token) as chatgpt:
prompt = input("Enter your prompt: ")
if conversation_id:
conversation = chatgpt.get_conversation(conversation_id)
else:
conversation = chatgpt.create_new_conversation()
async for message in conversation.chat(prompt):
print(message["content"], flush=True, end="")
if __name__ == "__main__":
asyncio.run(main())
More Examples
For a more complex example, check out the examples folder in the repository.
Obtaining The Session Token
- Go to https://chat.openai.com/chat and log in or sign up.
- Open the developer tools in your browser.
- Go to the
Applicationtab and open theCookiessection. - Copy the value for
__Secure-next-auth.session-tokenand save it.
TODO
- Add more examples
- Add better error handling
- Implement a function to retrieve all ChatGPT chats
- Improve documentation
Contributing
Contributions are what makes the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
License
Distributed under the Apache License 2.0. See LICENSE for more information.
Contact/Bug report
Zai-Kun - Discord Server
Repo Link: https://github.com/Zai-Kun/reverse-engineered-chatgpt
Acknowledgments
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file re_gpt-4.0.0.tar.gz.
File metadata
- Download URL: re_gpt-4.0.0.tar.gz
- Upload date:
- Size: 18.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3fb33a89cb02509ef30b4320f0e76af03bdb886ae6f2f5a64248175660fc0747
|
|
| MD5 |
d64f132c8078f39b07708e72d12d1dd2
|
|
| BLAKE2b-256 |
b55170db53a26830e7c9eb9aed743fcd37e75b57012957c4b00f56765308ade4
|
File details
Details for the file re_gpt-4.0.0-py3-none-any.whl.
File metadata
- Download URL: re_gpt-4.0.0-py3-none-any.whl
- Upload date:
- Size: 20.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
995838e96a3d457f835d501671f96b3432098b0ce1b44f201b5242e097c68ea6
|
|
| MD5 |
a282124673f7b1dd9f3e36e2e73cc46b
|
|
| BLAKE2b-256 |
8dc855a36e95b7c5f7c5958eaf7a4e22c4875302d3c9817f20018cf51cd03575
|