![]() |
||
---|---|---|
.github | ||
.husky | ||
docs | ||
media | ||
src | ||
.env.example | ||
.gitignore | ||
.npmrc | ||
.prettierignore | ||
.prettierrc.cjs | ||
license | ||
package.json | ||
pnpm-lock.yaml | ||
readme.md | ||
tsconfig.json | ||
tsup.config.ts | ||
typedoc.json |
readme.md
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)
}
The default ChatGPT responses are 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
})
If you want to automatically track the conversation, you can use ChatGPTAPI.getConversation()
:
const api = new ChatGPTAPI({
sessionToken: process.env.SESSION_TOKEN
})
const conversation = api.getConversation()
// send a message and wait for the response
const response0 = await conversation.sendMessage('What is OpenAI?')
// send a follow-up prompt to the previous message and wait for the response
const response1 = await conversation.sendMessage('Can you expand on that?')
// send another follow-up to the same conversation
const response2 = await conversation.sendMessage('Oh cool; thank you')
Usage in CommonJS (Dynamic import)
async function example() {
// To use ESM in CommonJS, you can use a dynamic import
const { ChatGPTAPI } = await import('chatgpt')
const api = new ChatGPTAPI({
sessionToken: process.env.SESSION_TOKEN
})
await api.ensureAuth()
const response = await api.sendMessage('Hello World!')
console.log(response)
}
Docs
See the auto-generated docs for more info on methods and parameters.
Demos
A basic demo is included for testing purposes:
# 1. clone repo
# 2. install node deps
# 3. set `SESSION_TOKEN` in .env
# 4. run:
npx tsx src/demo.ts
A conversation demo is also included:
# 1. clone repo
# 2. install node deps
# 3. set `SESSION_TOKEN` in .env
# 4. run:
npx tsx src/demo-conversation.ts
Session Tokens
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.
Compatibility
This package is ESM-only. It supports:
- Node.js >= 16.8
- Edge runtimes like CF workers and Vercel edge functions
- Modern browsers
- This is mainly intended for chrome extensions where your code is protected to a degree
- We do not recommend using
chatgpt
from client-side browser code because it would expose your private session token - If you want to build a website with
chatgpt
, we recommend using it only from your backend API
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 #1 (demo)
- VSCode Extension #2 (marketplace)
- VSCode Extension #3 (marketplace)
- Raycast Extension (demo)
- Go Telegram Bot
- GitHub ProBot
- Discord Bot
- WeChat Bot
- Lovelines.xyz
- EXM smart contracts
- Flutter ChatGPT API
If you create a cool integration, feel free to open a PR and add it to the list.
Credit
- Huge thanks to @RomanHotsiy, @ElijahPepe, and all the other contributors 💪
- The original browser version was inspired by this Go module by Daniel Gross
- The original REST version was inspired by chat-gpt-google-extension by @wong2
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