Skip to main content

Unofficial reverse-engineered ChatGPT API in Python.

Project description

Reverse Engineered ChatGPT API

Use OpenAI ChatGPT in your Python code without an API key

Stargazers Forks Discussions Issues MIT License

English | 简体中文

Report Bug | Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgments

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

  • Python

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

  1. Go to https://chat.openai.com/chat and log in or sign up.
  2. Open the developer tools in your browser.
  3. Go to the Application tab and open the Cookies section.
  4. Copy the value for __Secure-next-auth.session-token and 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!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. 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

re_gpt-4.0.0.tar.gz (18.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

re_gpt-4.0.0-py3-none-any.whl (20.4 kB view details)

Uploaded Python 3

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

Hashes for re_gpt-4.0.0.tar.gz
Algorithm Hash digest
SHA256 3fb33a89cb02509ef30b4320f0e76af03bdb886ae6f2f5a64248175660fc0747
MD5 d64f132c8078f39b07708e72d12d1dd2
BLAKE2b-256 b55170db53a26830e7c9eb9aed743fcd37e75b57012957c4b00f56765308ade4

See more details on using hashes here.

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

Hashes for re_gpt-4.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 995838e96a3d457f835d501671f96b3432098b0ce1b44f201b5242e097c68ea6
MD5 a282124673f7b1dd9f3e36e2e73cc46b
BLAKE2b-256 8dc855a36e95b7c5f7c5958eaf7a4e22c4875302d3c9817f20018cf51cd03575

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page