4.7 KiB
ChatGPT API
Node.js client for the unofficial ChatGPT API.
Intro
This package is a Node.js wrapper around ChatGPT by OpenAI. TS batteries included. ✨
You can use it to start building projects powered by ChatGPT like chatbots, websites, etc...
Install
npm install chatgpt
Usage
import { ChatGPTAPI } from 'chatgpt'
async function example() {
// sessionToken is required; see below for details
const api = new ChatGPTAPI({ sessionToken: process.env.SESSION_TOKEN })
// ensure the API is properly authenticated
await api.ensureAuth()
// send a message and wait for the response
const response = await api.sendMessage(
'Write a python version of bubble sort. Do not include example usage.'
)
// response is a markdown-formatted string
console.log(response)
}
By default, the response will be formatted as markdown. If you want to work with plaintext only, you can use:
const api = new ChatGPTAPI({
sessionToken: process.env.SESSION_TOKEN,
markdown: false
})
A full example is included for testing purposes:
# 1. clone repo
# 2. install node deps
# 3. set `SESSION_TOKEN` in .env
# 4. run:
npx tsx src/example.ts
Docs
See the auto-generated docs for more info on methods and parameters.
How it works
This package requires a valid session token from ChatGPT to access it's unofficial REST API.
To get a session token:
- Go to https://chat.openai.com/chat and log in or sign up.
- Open dev tools.
- Open
Application
>Cookies
. - Copy the value for
__Secure-next-auth.session-token
and save it to your environment.
If you want to run the built-in demo, store this value as SESSION_TOKEN
in a local .env
file.
Note This package will switch to using the official API once it's released.
Note Prior to v1.0.0, this package used a headless browser via Playwright to automate the web UI. Here are the docs for the initial browser version.
Examples
All of these awesome projects are built using the chatgpt
package. 🤯
- Twitter Bot powered by ChatGPT ✨
- Mention @ChatGPTBot on Twitter with your prompt to try it out
- Chrome Extension (demo)
- VSCode Extension (demo)
- Go Telegram Bot
- GitHub ProBot
- Discord Bot
- Lovelines.xyz
- EXM smart contracts
If you create a cool integration, feel free to open a PR and add it to the list.
Credit
- Huge thanks to @RomanHotsiy, @ElijahPepe, @wong2, and all the other contributors 💪
- The original browser version was inspired by this Go module by Daniel Gross
License
MIT © Travis Fischer
If you found this project interesting, please consider supporting my open source work by sponsoring me or following me on twitter