Node.js TS wrapper around ChatGPT. Uses headless Chrome until the official API is released.
This package is a Node.js TypeScript wrapper around ChatGPT by OpenAI.
You can use it to start experimenting with ChatGPT by integrating it into websites, chatbots, etc...
It uses headless Chromium via Playwright under the hood, so you still need to have access to ChatGPT, but it makes it much easier to access programatically.
Chromium is 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. Chromium is launched with a persistent context, so you shouldn't need to keep re-logging in after the first time.
async function example() {
const api = new ChatGPTAPI()
// open chromium and wait until the user has logged in
await api.init({ auth: 'blocking' })
// send a message and wait for a complete response, then parse it as markdown
const response = await api.sendMessage(
'Write a python version of bubble sort. Do not include example usage.'
)
console.log(response)
}
Which outputs:
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
Note that the default functionality is to parse ChatGPT responses as markdown using html-to-md. I've found the markdown quality to be excellent in my testing, but if you'd rather output plaintext, just pass { markdown: false }
to the ChatGPTAPI
constructor.
See the auto-generated docs for more info on methods parameters.
- Add message and conversation IDs
- Add support for streaming responses
- Add basic unit tests
- Inspired by this Go module by Daniel Gross
MIT © Travis Fischer
Support my open source work by following me on twitter