cdd71d7ab4 | ||
---|---|---|
.github | ||
.husky | ||
docs | ||
src | ||
.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 wrapper around ChatGPT. Uses headless Chrome until the official API is released.
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...
How it works
It uses headless Chromium via Playwright to automate the webapp, so you still need to have access to ChatGPT. It just makes building API-like integrations much easier.
Chromium will be opened in non-headless mode by default, which is important because the first time you run ChatGPTAPI.init()
, you'll need to log in manually. We launch Chromium with a persistent session, however, so you shouldn't need to keep re-logging in after the first time.
When you log in the first time, we recommend dismissing the welcome modal so you can watch the progress. This isn't strictly necessary, but it helps to understand what's going on.
- Demo video showing how the initial auth flow works (29 seconds)
- Demo video showing how it works if you're already authed (13 seconds)
Note We'll replace headless chrome with the official API once it's released.
Install
npm install --save chatgpt
# or
yarn add chatgpt
# or
pnpm add chatgpt
Usage
import { ChatGPTAPI } from 'chatgpt'
async function example() {
const api = new ChatGPTAPI()
// open chromium and wait until you've logged in
await api.init({ auth: 'blocking' })
// 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, ChatGPT responses are parsed as markdown using html-to-md. I've found that this works really well during my testing, but if you'd rather output plaintext, you can use:
const api = new ChatGPTAPI({ markdown: false })
A full example is included for testing purposes:
# clone repo
# install node deps
# then run
npx tsx src/example.ts
Docs
See the auto-generated docs for more info on methods and parameters.
Examples
- Twitter Bot - Twitter bot powered by this package.
- Mention @ChatGPTBot on Twitter with your prompt to try it out
- VSCode extension (demo)
- Go Telegram bot
Related
- Inspired by this Go module by Daniel Gross
- Python port
License
MIT © Travis Fischer
Support my open source work by following me on twitter