2022-12-05 07:09:24 +00:00
< p align = "center" >
< img alt = "Example usage" src = "/media/demo.gif" >
< / p >
2022-12-02 23:43:59 +00:00
# ChatGPT API <!-- omit in toc -->
2022-12-05 05:13:36 +00:00
> Node.js client for the unofficial [ChatGPT](https://openai.com/blog/chatgpt/) API.
2022-12-02 23:43:59 +00:00
[![NPM ](https://img.shields.io/npm/v/chatgpt.svg )](https://www.npmjs.com/package/chatgpt) [![Build Status ](https://github.com/transitive-bullshit/chatgpt-api/actions/workflows/test.yml/badge.svg )](https://github.com/transitive-bullshit/chatgpt-api/actions/workflows/test.yml) [![MIT License ](https://img.shields.io/badge/license-MIT-blue )](https://github.com/transitive-bullshit/chatgpt-api/blob/main/license) [![Prettier Code Formatting ](https://img.shields.io/badge/code_style-prettier-brightgreen.svg )](https://prettier.io)
- [Intro ](#intro )
2022-12-03 05:06:26 +00:00
- [Install ](#install )
2022-12-03 00:04:53 +00:00
- [Usage ](#usage )
2022-12-02 23:43:59 +00:00
- [Docs ](#docs )
2022-12-05 22:15:16 +00:00
- [How it works ](#how-it-works )
2022-12-04 10:09:35 +00:00
- [Examples ](#examples )
2022-12-05 05:13:36 +00:00
- [Credit ](#credit )
2022-12-02 23:43:59 +00:00
- [License ](#license )
## Intro
2022-12-03 05:34:15 +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 05:57:23 +00:00
You can use it to start building projects powered by ChatGPT like chatbots, websites, etc...
2022-12-03 00:04:53 +00:00
2022-12-03 05:06:26 +00:00
## Install
```bash
2022-12-05 22:15:16 +00:00
npm install chatgpt
2022-12-03 05:06:26 +00:00
```
2022-12-03 00:04:53 +00:00
## Usage
```ts
2022-12-03 00:43:44 +00:00
import { ChatGPTAPI } from 'chatgpt'
2022-12-03 00:04:53 +00:00
async function example() {
2022-12-05 22:15:16 +00:00
// sessionToken is required; see below for details
2022-12-05 05:34:15 +00:00
const api = new ChatGPTAPI({ sessionToken: process.env.SESSION_TOKEN })
2022-12-03 00:04:53 +00:00
2022-12-05 22:15:16 +00:00
// ensure the API is properly authenticated
2022-12-05 05:13:36 +00:00
await api.ensureAuth()
2022-12-03 00:04:53 +00:00
2022-12-03 05:49:30 +00:00
// send a message and wait for the response
2022-12-03 00:04:53 +00:00
const response = await api.sendMessage(
'Write a python version of bubble sort. Do not include example usage.'
)
2022-12-03 10:02:07 +00:00
// response is a markdown-formatted string
2022-12-03 00:04:53 +00:00
console.log(response)
}
```
2022-12-05 05:34:15 +00:00
By default, the response will be formatted as markdown. If you want to work with plaintext only, you can use:
```ts
const api = new ChatGPTAPI({
sessionToken: process.env.SESSION_TOKEN,
markdown: false
})
```
2022-12-05 23:14:19 +00:00
A full [demo ](./src/demo.ts ) is included for testing purposes:
2022-12-03 00:53:24 +00:00
2022-12-03 05:59:20 +00:00
```bash
2022-12-05 05:13:36 +00:00
# 1. clone repo
# 2. install node deps
# 3. set `SESSION_TOKEN` in .env
# 4. run:
2022-12-05 23:14:19 +00:00
npx tsx src/demo.ts
2022-12-03 00:53:24 +00:00
```
2022-12-02 23:43:59 +00:00
## Docs
2022-12-03 11:13:39 +00:00
See the [auto-generated docs ](./docs/classes/ChatGPTAPI.md ) for more info on methods and parameters.
2022-12-02 23:43:59 +00:00
2022-12-05 22:15:16 +00:00
## How it works
2022-12-05 22:16:18 +00:00
**This package requires a valid session token from ChatGPT to access it's unofficial REST API.**
2022-12-05 22:15:16 +00:00
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 ](./media/session-token.png )
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](https://playwright.dev/) to automate the web UI. Here are the [docs for the initial browser version](https://github.com/transitive-bullshit/chatgpt-api/tree/v0.4.2).
2022-12-04 10:09:35 +00:00
## Examples
2022-12-02 23:43:59 +00:00
2022-12-05 22:15:16 +00:00
All of these awesome projects are built using the `chatgpt` package. 🤯
2022-12-04 11:11:18 +00:00
- [Twitter Bot ](https://github.com/transitive-bullshit/chatgpt-twitter-bot ) powered by ChatGPT ✨
2022-12-04 09:15:21 +00:00
- Mention [@ChatGPTBot ](https://twitter.com/ChatGPTBot ) on Twitter with your prompt to try it out
2022-12-04 18:48:40 +00:00
- [Chrome Extension ](https://github.com/gragland/chatgpt-everywhere ) ([demo](https://twitter.com/gabe_ragland/status/1599466486422470656))
2022-12-04 18:38:04 +00:00
- [VSCode Extension ](https://github.com/mpociot/chatgpt-vscode ) ([demo](https://twitter.com/marcelpociot/status/1599180144551526400))
- [Go Telegram Bot ](https://github.com/m1guelpf/chatgpt-telegram )
2022-12-05 17:49:35 +00:00
- [GitHub ProBot ](https://github.com/oceanlvr/ChatGPTBot )
2022-12-05 18:07:27 +00:00
- [Discord Bot ](https://github.com/onury5506/Discord-ChatGPT-Bot )
2022-12-05 22:15:16 +00:00
- [Lovelines.xyz ](https://lovelines.xyz )
- [EXM smart contracts ](https://github.com/decentldotland/molecule )
2022-12-04 10:09:35 +00:00
2022-12-04 11:11:18 +00:00
If you create a cool integration, feel free to open a PR and add it to the list.
2022-12-05 05:13:36 +00:00
## Credit
2022-12-04 10:09:35 +00:00
2022-12-06 04:17:59 +00:00
- Huge thanks to [@RomanHotsiy ](https://github.com/RomanHotsiy ), [@ElijahPepe ](https://github.com/ElijahPepe ), and all the other contributors 💪
2022-12-05 05:34:15 +00:00
- The original browser version was inspired by this [Go module ](https://github.com/danielgross/whatsapp-gpt ) by [Daniel Gross ](https://github.com/danielgross )
2022-12-06 04:17:59 +00:00
- Thew new version takes code for ChatGPT API request from [chat-gpt-google-extension ](https://github.com/wong2/chat-gpt-google-extension ) by [@wong2 ](https://github.com/wong2 )
2022-12-02 23:43:59 +00:00
## License
MIT © [Travis Fischer ](https://transitivebullsh.it )
2022-12-05 07:47:15 +00:00
If you found this project interesting, please consider supporting my open source work by [sponsoring me ](https://github.com/sponsors/transitive-bullshit ) or < 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 >