2022-12-03 00:04:53 +00:00
chatgpt / [Exports ](modules.md )
# ChatGPT API <!-- omit in toc -->
2022-12-03 08:46:57 +00:00
> Node.js wrapper around [ChatGPT](https://openai.com/blog/chatgpt/). Uses headless Chrome until the official API is released.
2022-12-03 00:04:53 +00:00
[](https://www.npmjs.com/package/chatgpt) [](https://github.com/transitive-bullshit/chatgpt-api/actions/workflows/test.yml) [](https://github.com/transitive-bullshit/chatgpt-api/blob/main/license) [](https://prettier.io)
- [Intro ](#intro )
2022-12-03 08:46:57 +00:00
- [How it works ](#how-it-works )
- [Install ](#install )
2022-12-03 00:04:53 +00:00
- [Usage ](#usage )
- [Docs ](#docs )
- [Related ](#related )
- [License ](#license )
## Intro
2022-12-03 08:46:57 +00:00
This package is a Node.js wrapper around [ChatGPT ](https://openai.com/blog/chatgpt ) by [OpenAI ](https://openai.com ). TS batteries included. ✨
2022-12-03 00:04:53 +00:00
2022-12-03 08:46:57 +00:00
You can use it to start building projects powered by ChatGPT like chatbots, websites, etc...
2022-12-03 00:53:33 +00:00
2022-12-03 08:46:57 +00:00
## How it works
2022-12-03 00:04:53 +00:00
2022-12-03 08:46:57 +00:00
We use headless Chromium via [Playwright ](https://playwright.dev ) to automate the webapp, so **you still need to have access to ChatGPT** . It just makes building API-like integrations much easier.
2022-12-03 00:04:53 +00:00
2022-12-03 08:46:57 +00:00
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 context, however, so you shouldn't need to keep re-logging in after the first time. When you log in the first time, _make sure that you also dismiss the welcome modal_ .
> **Note**
> We'll replace headless chrome with the official API once it's released.
## Install
```bash
npm install --save chatgpt
# or
yarn add chatgpt
# or
pnpm add chatgpt
```
2022-12-03 00:04:53 +00:00
## Usage
```ts
2022-12-03 00:53:33 +00:00
import { ChatGPTAPI } from 'chatgpt'
2022-12-03 00:04:53 +00:00
async function example() {
2022-12-03 00:53:33 +00:00
const api = new ChatGPTAPI()
2022-12-03 00:04:53 +00:00
2022-12-03 08:46:57 +00:00
// open chromium and wait until you've logged in
2022-12-03 00:53:33 +00:00
await api.init({ auth: 'blocking' })
2022-12-03 00:04:53 +00:00
2022-12-03 08:46:57 +00:00
// send a message and wait for the response
2022-12-03 00:53:33 +00:00
const response = await api.sendMessage(
'Write a python version of bubble sort. Do not include example usage.'
)
console.log(response)
}
```
2022-12-03 00:04:53 +00:00
2022-12-03 00:53:33 +00:00
Which outputs a similar reponse to this (as a markdown string, including the _```python_ code block prefix):
2022-12-03 00:04:53 +00:00
2022-12-03 00:53:33 +00:00
```python
2022-12-03 00:04:53 +00:00
def bubble_sort(lst):
# Set the initial flag to True to start the loop
swapped = True
# Keep looping until there are no more swaps
while swapped:
# Set the flag to False initially
swapped = False
# Loop through the list
for i in range(len(lst) - 1):
# If the current element is greater than the next element,
# swap them and set the flag to True
if lst[i] > lst[i + 1]:
lst[i], lst[i + 1] = lst[i + 1], lst[i]
swapped = True
# Return the sorted list
return lst
```
2022-12-03 08:46:57 +00:00
By default, ChatGPT responses are parsed as markdown using [html-to-md ](https://github.com/stonehank/html-to-md ). I've found that this works really well during my testing, but if you'd rather output plaintext, you can use:
2022-12-03 00:04:53 +00:00
2022-12-03 00:53:33 +00:00
```ts
const api = new ChatGPTAPI({ markdown: false })
```
2022-12-03 00:04:53 +00:00
2022-12-03 08:46:57 +00:00
A full [example ](./src/example.ts ) is included for testing purposes:
2022-12-03 00:04:53 +00:00
2022-12-03 08:46:57 +00:00
```bash
# clone repo
# install node deps
# then run
2022-12-03 00:53:33 +00:00
npx tsx src/example.ts
```
2022-12-03 00:04:53 +00:00
## Docs
2022-12-03 00:53:33 +00:00
See the [auto-generated docs ](./docs/classes/ChatGPTAPI.md ) for more info on methods parameters.
2022-12-03 00:04:53 +00:00
## Related
2022-12-03 00:53:33 +00:00
- Inspired by this [Go module ](https://github.com/danielgross/whatsapp-gpt ) by [Daniel Gross ](https://github.com/danielgross )
2022-12-03 08:46:57 +00:00
- [Python port ](https://github.com/taranjeet/chatgpt-api )
2022-12-03 00:04:53 +00:00
## License
MIT © [Travis Fischer ](https://transitivebullsh.it )
Support my open source work by < a href = "https://twitter.com/transitive_bs" > following me on twitter < img src = "https://storage.googleapis.com/saasify-assets/twitter-logo.svg" alt = "twitter" height = "24px" align = "center" > < / a >