Node.js client for the unofficial ChatGPT API.
Go to file
Travis Fischer 07f7fb47a5
Update readme.md
Add raycast extension to readme by @abielzulio
2022-12-06 14:05:15 -06:00
.github fix: add fake session token for CI 2022-12-05 17:11:32 -06:00
.husky feat: init 2022-12-02 17:43:59 -06:00
docs chore: update docs 2022-12-06 02:40:40 -06:00
media chore: update demo gif 2022-12-05 17:38:28 -06:00
src test: adjust unit test timeouts 2022-12-05 23:05:35 -06:00
.env.example feat: convert from browser to REST API 2022-12-05 01:32:27 -06:00
.gitignore feat: init 2022-12-02 17:43:59 -06:00
.npmrc feat: init 2022-12-02 17:43:59 -06:00
.prettierignore feat: init 2022-12-02 17:43:59 -06:00
.prettierrc.cjs feat: init 2022-12-02 17:43:59 -06:00
license feat: init 2022-12-02 17:43:59 -06:00
package.json 1.4.0 2022-12-06 03:01:08 -06:00
pnpm-lock.yaml feat: revert to node-fetch@2 2022-12-05 17:25:40 -06:00
readme.md Update readme.md 2022-12-06 14:05:15 -06:00
tsconfig.json feat: init 2022-12-02 17:43:59 -06:00
tsup.config.ts feat: remove commonjs support 2022-12-05 04:00:09 -06:00
typedoc.json feat: init 2022-12-02 17:43:59 -06:00

readme.md

Example usage

ChatGPT API

Node.js client for the unofficial ChatGPT API.

NPM Build Status MIT License Prettier Code Formatting

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 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

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:

  1. Go to https://chat.openai.com/chat and log in or sign up.
  2. Open dev tools.
  3. Open Application > Cookies. ChatGPT cookies
  4. 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. 🤯

If you create a cool integration, feel free to open a PR and add it to the list.

Credit

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 twitter