EdgeGPT - Reverse engineered API of Microsoft's Bing Chat

Created at: 2023-02-10 00:07:42
Language: Python
License: Unlicense
EdgeGPT

Edge GPT

The reverse engineering the chat feature of the new version of Bing

PyPI version Python version


Table of Contents

Setup

Install package

python3 -m pip install EdgeGPT --upgrade

Requirements

Checking access (Required)

  • Install the latest version of Microsoft Edge
  • Open http://bing.com/chat
  • If you see a chat feature, you are good to go

Getting authentication (Required)

  • Install the cookie editor extension for Chrome or Firefox
  • Go to bing.com
  • Open the extension
  • Click "Export" on the bottom right (This saves your cookies to clipboard)
  • Paste your cookies into a file cookies.json

Usage

Quick start

 $ python3 -m EdgeGPT -h

        EdgeGPT - A demo of reverse engineering the Bing GPT chatbot
        Repo: github.com/acheong08/EdgeGPT
        By: Antonio Cheong

        !help for help

        Type !exit to exit
        Enter twice to send message or set --enter-once to send one line message

usage: EdgeGPT.py [-h] [--enter-once] [--no-stream] [--style {creative,balanced,precise}] --cookie-file COOKIE_FILE

options:
  -h, --help            show this help message and exit
  --enter-once
  --no-stream
  --style {creative,balanced,precise}
  --cookie-file COOKIE_FILE

Developer demo

Three ways to pass in cookies:

  • Environment variable: export COOKIE_FILE=/path/to/cookies.json.

  • Specify the path to cookies.json in the argument cookiePath like this:

    bot = Chatbot(cookiePath='./cookie.json')
  • Pass in the cookies directly by the argument cookies, like this:

    with open('./cookie.json', 'r') as f:
        cookies = json.load(f)
    bot = Chatbot(cookies=cookies)

Use Async for the best experience

Reference code for more advanced example of usage:

import asyncio
from EdgeGPT import Chatbot, ConversationStyle

async def main():
    bot = Chatbot()
    print(await bot.ask(prompt="Hello world", conversation_style=ConversationStyle.creative))
    await bot.close()


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

Work in progress

  • Error handling

Star History

Star History Chart

Contributors

This project exists thanks to all the people who contribute.