/ChatGPT

Reverse engineered ChatGPT API

Primary LanguagePythonGNU General Public License v2.0GPL-2.0

ChatGPT

PyPi Downloads

Reverse Engineered ChatGPT API by OpenAI. Extensible for chatbots etc.

Support my work

You can support me by providing access to a Microsoft account with access to the New Bing. I reverse engineered it but account was suspended as a result. Check out my work: https://github.com/acheong08/EdgeGPT - (Do not use for now while I ensure it is safe.) You can slide into my Discord DMs at Churchless#2499

Discord community: https://discord.gg/WMNtbDUjUv

V1 Standard ChatGPT

Update 2023/02/14 9:00 PM GMT+8: It is working. Use this.

Installation

pip3 install revChatGPT

Configuration

  1. Create account on OpenAI's ChatGPT
  2. Save your email and password

Authentication method: (Choose 1)

Email/Password

Not supported for Google/Microsoft accounts

{
  "email": "email",
  "password": "your password"
}

Session token

Comes from cookies on chat.openai.com as "__Secure-next-auth.session-token"

{
  "session_token": "..."
}

Access token

https://chat.openai.com/api/auth/session

{
  "access_token": "<access_token>"
}

Optional configuration:

{
  "conversation_id": "UUID...",
  "parent_id": "UUID...",
  "proxy": "...",
  "paid": false
}
  1. Save this as $HOME/.config/revChatGPT/config.json

Usage

Command line

python3 -m revChatGPT.V1

!help - Show this message
!reset - Forget the current conversation
!config - Show the current configuration
!rollback x - Rollback the conversation (x being the number of messages to rollback)
!exit - Exit this program

Developer

Basic example:

from revChatGPT.V1 import Chatbot

chatbot = Chatbot(config={
  "email": "<your email>",
  "password": "your password"
})

for data in chatbot.ask(
  prompt,
  conversation_id=chatbot.config.get("conversation"),
  parent_id=chatbot.config.get("parent_id"),
):
  print(data["message"], end="", flush = True)
print()

Refer to wiki for advanced developer usage

V2 Fast ChatGPT API

Under maintenance

Using cloudflare bypass server (no browser on server either). Check out the server source code: https://github.com/acheong08/ChatGPT-Proxy-V2

Notices

It seems I wasn't clear enough in my explanations and lead to some misunderstandings:

  • Your email and password are not sent to me. Authentication is done locally with https://github.com/acheong08/OpenAIAuth
  • Unless you use --insecure-auth. This is meant for users who are blocked from accessing OpenAI websites
  • The server is open source: https://github.com/acheong08/ChatGPT-Proxy-V2 but with a config.json missing to avoid OpenAI detection.
  • Rate limits: 180 requests per minute (IP based)
  • I am running the server right now

IMPORTANT

You must either define --paid in command line or paid=True in code if you have a plus subscription.

Usage

pip3 install --upgrade revChatGPT

 $ python3 -m revChatGPT.V2 -h

        ChatGPT - A command-line interface to OpenAI's ChatGPT (https://chat.openai.com/chat)
        Repo: github.com/acheong08/ChatGPT

usage: V2.py [-h] [-e EMAIL] [-p PASSWORD] [--paid] [--proxy PROXY] [--insecure-auth]
             [--session_token SESSION_TOKEN]

options:
  -h, --help            show this help message and exit
  -e EMAIL, --email EMAIL
                        Your OpenAI email address
  -p PASSWORD, --password PASSWORD
                        Your OpenAI password
  --paid                Use the paid API
  --proxy PROXY         Use a proxy
  --insecure-auth       (Deprecated)
  --session_token SESSION_TOKEN Alternative to email and password authentication. Use this if you have Google/Microsoft account.

Developers

Wiki: https://github.com/acheong08/ChatGPT/wiki/V2

Example code:

from revChatGPT.V2 import Chatbot

async def main():
    chatbot = Chatbot(email="...", password="...")
    async for line in chatbot.ask("Hello"):
        print(line["choices"][0]["text"].replace("<|im_end|>", ""), end="", flush = True)
    print()

if __name__ == "__main__":
    import asyncio
    asyncio.run(main())

Awesome ChatGPT

My list

If you have a cool project you want added to the list, open an issue.

Disclaimers

This is not an official OpenAI product. This is a personal project and is not affiliated with OpenAI in any way. Don't sue me

Credits