chatgpt-api/readme.md

267 wiersze
12 KiB
Markdown
Czysty Zwykły widok Historia

2023-02-01 10:58:25 +00:00
# Update February 1, 2023 <!-- omit in toc -->
2022-12-12 01:52:50 +00:00
2023-02-01 10:58:25 +00:00
This package no longer requires any browser hacks – **it is now using the official OpenAI API** with a leaked, unofficial ChatGPT model. 🔥
```ts
2023-02-01 10:58:25 +00:00
import { ChatGPTAPI } from 'chatgpt'
2023-02-01 10:58:25 +00:00
const api = new ChatGPTAPI({
apiKey: process.env.OPENAI_API_KEY
})
2023-02-01 10:58:25 +00:00
const res = await api.sendMessage('Hello World!')
console.log(res.text)
```
2023-02-01 10:58:25 +00:00
The updated solution is significantly more lightweight and robust compared with previous versions.
2023-01-12 10:04:31 +00:00
If you run into any issues, we do have a pretty active [Discord](https://discord.gg/v9gERj825w) with a bunch of ChatGPT hackers from the Node.js & Python communities.
2022-12-12 18:41:19 +00:00
Lastly, please consider starring this repo and <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> to help support the project.
2022-12-12 17:35:28 +00:00
Thanks && cheers,
[Travis](https://twitter.com/transitive_bs)
2022-12-12 01:52:50 +00:00
---
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-07 00:27:55 +00:00
- [Docs](#docs)
- [Demos](#demos)
2022-12-07 04:29:10 +00:00
- [Projects](#projects)
2022-12-07 00:19:30 +00:00
- [Compatibility](#compatibility)
2022-12-07 04:29:10 +00:00
- [Credits](#credits)
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
2023-02-01 10:58:25 +00:00
npm install chatgpt
2022-12-03 05:06:26 +00:00
```
2022-12-03 00:04:53 +00:00
## Usage
2022-12-07 19:23:35 +00:00
2023-02-01 10:58:25 +00:00
Sign up for an [OpenAI API key](https://platform.openai.com/overview) and store it in your environment.
```ts
2023-02-01 10:58:25 +00:00
import { ChatGPTAPI } from 'chatgpt'
async function example() {
2023-02-01 10:58:25 +00:00
const api = new ChatGPTAPI({
apiKey: process.env.OPENAI_API_KEY
})
2023-02-01 10:58:25 +00:00
const res = await api.sendMessage('Hello World!')
console.log(res.text)
}
```
2023-02-01 10:58:25 +00:00
If you want to track the conversation, use the `conversationId` and `id` in the result object, and pass them to `sendMessage` as `conversationId` and `parentMessageId` respectively.
2022-12-07 00:27:55 +00:00
```ts
2023-02-01 10:58:25 +00:00
const api = new ChatGPTAPI({ apiKey: process.env.OPENAI_API_KEY })
2022-12-07 00:27:55 +00:00
// send a message and wait for the response
2022-12-18 06:17:57 +00:00
let res = await api.sendMessage('What is OpenAI?')
2023-02-01 10:58:25 +00:00
console.log(res.text)
2022-12-07 00:27:55 +00:00
// send a follow-up
2022-12-18 06:17:57 +00:00
res = await api.sendMessage('Can you expand on that?', {
2022-12-17 09:56:06 +00:00
conversationId: res.conversationId,
2023-02-01 10:58:25 +00:00
parentMessageId: res.id
2022-12-17 09:56:06 +00:00
})
2023-02-01 10:58:25 +00:00
console.log(res.text)
2022-12-07 00:27:55 +00:00
// send another follow-up
2022-12-17 09:56:06 +00:00
// send a follow-up
2022-12-18 06:17:57 +00:00
res = await api.sendMessage('What were we talking about?', {
2022-12-17 09:56:06 +00:00
conversationId: res.conversationId,
2023-02-01 10:58:25 +00:00
parentMessageId: res.id
2022-12-17 09:56:06 +00:00
})
2023-02-01 10:58:25 +00:00
console.log(res.text)
2022-12-07 00:27:55 +00:00
```
2023-02-01 10:58:25 +00:00
You can add streaming via the `onProgress` handler:
2022-12-07 04:29:10 +00:00
2023-02-01 10:58:25 +00:00
```ts
// timeout after 2 minutes (which will also abort the underlying HTTP request)
const res = await api.sendMessage('Write me a 500 word essay on frogs.', {
onProgress: (partialResponse) => console.log(partialResponse)
})
```
You can add a timeout using the `timeoutMs` option:
2022-12-07 04:29:10 +00:00
```ts
// timeout after 2 minutes (which will also abort the underlying HTTP request)
const response = await api.sendMessage('this is a timeout test', {
timeoutMs: 2 * 60 * 1000
})
```
2022-12-07 04:15:58 +00:00
<details>
<summary>Usage in CommonJS (Dynamic import)</summary>
```js
async function example() {
2022-12-07 04:15:58 +00:00
// To use ESM in CommonJS, you can use a dynamic import
2023-02-01 10:58:25 +00:00
const { ChatGPTAPI } = await import('chatgpt')
2023-02-01 10:58:25 +00:00
const api = new ChatGPTAPI({ apiKey: process.env.OPENAI_API_KEY })
2023-02-01 10:58:25 +00:00
const res = await api.sendMessage('Hello World!')
console.log(res.text)
}
```
2022-12-07 04:15:58 +00:00
</details>
2022-12-07 00:27:55 +00:00
### Docs
2023-02-01 10:58:25 +00:00
See the [auto-generated docs](./docs/classes/ChatGPTAPI.md) for more info on methods and parameters. Here are the [docs](./docs/classes/ChatGPTAPI.md) for the browser-based version.
2022-12-07 00:27:55 +00:00
### Demos
To run the included demos:
1. clone repo
2. install node deps
2023-02-01 10:58:25 +00:00
3. set `OPENAI_API_KEY` in .env
A [basic demo](./demos/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-13 04:07:58 +00:00
npx tsx demos/demo.ts
2022-12-03 00:53:24 +00:00
```
A [demo showing on progress handler](./demos/demo-on-progress.ts):
```bash
npx tsx demos/demo-on-progress.ts
```
2023-01-12 10:04:31 +00:00
The on progress demo uses the optional `onProgress` parameter to `sendMessage` to receive intermediary results as ChatGPT is "typing".
A [conversation demo](./demos/demo-conversation.ts):
2022-12-02 23:43:59 +00:00
2022-12-07 00:27:55 +00:00
```bash
2022-12-13 04:07:58 +00:00
npx tsx demos/demo-conversation.ts
2022-12-07 00:27:55 +00:00
```
2022-12-02 23:43:59 +00:00
2023-02-01 10:58:25 +00:00
Lastly, a [persitence demo](./demos/demo-persistence.ts) shows how to store messages in Redis for persistence:
2022-12-18 07:37:29 +00:00
2023-02-01 10:58:25 +00:00
```bash
npx tsx demos/demo-conversation.ts
2022-12-18 22:23:02 +00:00
```
2023-02-01 10:58:25 +00:00
Any [keyv adaptor](https://github.com/jaredwray/keyv) is supported for persistence, and there are overrides if you'd like to use a different way of storing / retrieving messages.
2022-12-12 17:35:28 +00:00
2023-02-01 10:58:25 +00:00
Note that persisting message is very important for remembering the context of previous conversations.
2022-12-05 22:15:16 +00:00
2022-12-07 04:29:10 +00:00
## Projects
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
- [ChatGPT API Server](https://github.com/waylaidwanderer/node-chatgpt-api) - API server for this package with support for multiple OpenAI accounts, proxies, and load-balancing requests between accounts.
2022-12-14 19:07:26 +00:00
- [Lovelines.xyz](https://lovelines.xyz?ref=chatgpt-api)
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-07 14:24:10 +00:00
- [VSCode Extension #1](https://github.com/mpociot/chatgpt-vscode) ([demo](https://twitter.com/marcelpociot/status/1599180144551526400), [updated version](https://github.com/timkmecl/chatgpt-vscode), [marketplace](https://marketplace.visualstudio.com/items?itemName=timkmecl.chatgpt))
2022-12-07 02:10:02 +00:00
- [VSCode Extension #2](https://github.com/barnesoir/chatgpt-vscode-plugin) ([marketplace](https://marketplace.visualstudio.com/items?itemName=JayBarnes.chatgpt-vscode-plugin))
- [VSCode Extension #3](https://github.com/gencay/vscode-chatgpt) ([marketplace](https://marketplace.visualstudio.com/items?itemName=gencay.vscode-chatgpt))
- [VSCode Extension #4](https://github.com/dogukanakkaya/chatgpt-code-vscode-extension) ([marketplace](https://marketplace.visualstudio.com/items?itemName=dogukanakkaya.chatgpt-code))
2022-12-08 10:38:18 +00:00
- [Raycast Extension #1](https://github.com/abielzulio/chatgpt-raycast) ([demo](https://twitter.com/abielzulio/status/1600176002042191875))
- [Raycast Extension #2](https://github.com/domnantas/raycast-chatgpt)
2022-12-08 22:18:51 +00:00
- [Telegram Bot #1](https://github.com/realies/chatgpt-telegram-bot)
- [Telegram Bot #2](https://github.com/dawangraoming/chatgpt-telegram-bot)
2022-12-26 02:14:25 +00:00
- [Telegram Bot #3](https://github.com/RainEggplant/chatgpt-telegram-bot) (group privacy mode, ID-based auth)
2023-01-02 00:18:18 +00:00
- [Telegram Bot #4](https://github.com/ArdaGnsrn/chatgpt-telegram) (queue system, ID-based chat thread)
2022-12-09 11:35:24 +00:00
- [Deno Telegram Bot](https://github.com/Ciyou/chatbot-telegram)
- [Go Telegram Bot](https://github.com/m1guelpf/chatgpt-telegram)
2022-12-29 07:15:25 +00:00
- [Telegram Bot for YouTube Summaries](https://github.com/codextde/youtube-summary)
- [GitHub ProBot](https://github.com/oceanlvr/ChatGPTBot)
- [Discord Bot #1](https://github.com/onury5506/Discord-ChatGPT-Bot)
- [Discord Bot #2](https://github.com/Nageld/ChatGPT-Bot)
2022-12-08 21:31:41 +00:00
- [Discord Bot #3](https://github.com/leinstay/gptbot)
- [Discord Bot #4 (selfbot)](https://github.com/0x7030676e31/cumsocket)
2023-01-21 00:44:01 +00:00
- [Discord Bot #5](https://github.com/itskdhere/ChatGPT-Discord-BOT)
2023-01-22 07:05:08 +00:00
- [Discord Bot #6 (Shakespeare bot)](https://gist.github.com/TheBrokenRail/4b37e7c44e8f721d8bd845050d034c16)
- [WeChat Bot #1](https://github.com/AutumnWhj/ChatGPT-wechat-bot)
- [WeChat Bot #2](https://github.com/fuergaosi233/wechat-chatgpt)
2022-12-08 12:50:52 +00:00
- [WeChat Bot #3](https://github.com/wangrongding/wechat-bot)
2022-12-09 02:21:47 +00:00
- [WeChat Bot #4](https://github.com/darknightlab/wechat-bot)
2022-12-09 07:55:37 +00:00
- [WeChat Bot #5](https://github.com/sunshanpeng/wechaty-chatgpt)
2022-12-08 03:03:30 +00:00
- [QQ Bot (plugin for Yunzai-bot)](https://github.com/ikechan8370/chatgpt-plugin)
2022-12-09 05:24:55 +00:00
- [QQ Bot (plugin for KiviBot)](https://github.com/KiviBotLab/kivibot-plugin-chatgpt)
2022-12-09 14:33:28 +00:00
- [QQ Bot (oicq)](https://github.com/easydu2002/chat_gpt_oicq)
2022-12-10 02:37:08 +00:00
- [QQ Bot (oicq + RabbitMQ)](https://github.com/linsyking/ChatGPT-QQBot)
- [QQ Bot (go-cqhttp)](https://github.com/PairZhu/ChatGPT-QQRobot)
2022-12-05 22:15:16 +00:00
- [EXM smart contracts](https://github.com/decentldotland/molecule)
2022-12-06 14:26:24 +00:00
- [Flutter ChatGPT API](https://github.com/coskuncay/flutter_chatgpt_api)
2022-12-07 23:37:33 +00:00
- [Carik Bot](https://github.com/luridarmawan/Carik)
2022-12-08 05:34:36 +00:00
- [Github Action for reviewing PRs](https://github.com/kxxt/chatgpt-action/)
2022-12-11 00:56:19 +00:00
- [WhatsApp Bot #1](https://github.com/pascalroget/whatsgpt) (multi-user support)
- [WhatsApp Bot #2](https://github.com/amosayomide05/chatgpt-whatsapp-bot)
2022-12-12 11:40:57 +00:00
- [WhatsApp Bot #3](https://github.com/navopw/whatsapp-chatgpt)
2023-01-09 10:29:12 +00:00
- [WhatsApp Bot #4](https://github.com/noelzappy/chatgpt-whatsapp) (schedule periodic messages)
- [Matrix Bot](https://github.com/matrixgpt/matrix-chatgpt-bot)
2022-12-10 06:47:42 +00:00
- [Rental Cover Letter Generator](https://sharehouse.app/ai)
2022-12-10 20:57:14 +00:00
- [Assistant CLI](https://github.com/diciaup/assistant-cli)
2022-12-11 07:51:31 +00:00
- [Teams Bot](https://github.com/formulahendry/chatgpt-teams-bot)
- [Askai](https://github.com/yudax42/askai)
- [TalkGPT](https://github.com/ShadovvBeast/TalkGPT)
2023-01-14 23:03:38 +00:00
- [ChatGPT With Voice](https://github.com/thanhsonng/chatgpt-voice)
2022-12-13 18:28:07 +00:00
- [iOS Shortcut](https://github.com/leecobaby/shortcuts/blob/master/other/ChatGPT_EN.md)
2022-12-28 16:29:05 +00:00
- [Slack Bot #1](https://github.com/trietphm/chatgpt-slackbot/)
- [Slack Bot #2](https://github.com/lokwkin/chatgpt-slackbot-node/) (with queueing mechanism)
2022-12-17 16:28:28 +00:00
- [Electron Bot](https://github.com/ShiranAbir/chaty)
- [Kodyfire CLI](https://github.com/nooqta/chatgpt-kodyfire)
2022-12-18 19:52:41 +00:00
- [Twitch Bot](https://github.com/BennyDeeDev/chatgpt-twitch-bot)
- [Continuous Conversation](https://github.com/DanielTerletzkiy/chat-gtp-assistant)
2022-12-20 04:20:06 +00:00
- [Figma plugin](https://github.com/frederickk/chatgpt-figma-plugin)
2023-01-02 01:25:27 +00:00
- [NestJS server](https://github.com/RusDyn/chatgpt_nestjs_server)
- [NestJS ChatGPT Starter Boilerplate](https://github.com/mitkodkn/nestjs-chatgpt-starter)
2023-01-05 21:18:17 +00:00
- [Wordsmith: Add-in for Microsoft Word](https://github.com/xtremehpx/Wordsmith)
2023-01-12 14:08:37 +00:00
- [QuizGPT: Create Kahoot quizzes with ChatGPT](https://github.com/Kladdy/quizgpt)
2023-01-05 21:18:17 +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-07 04:29:10 +00:00
## Compatibility
2023-02-01 10:58:25 +00:00
- This package is ESM-only.
- This package supports `node >= 14`.
- This module assumes that `fetch` is installed.
- In `node >= 18`, it's installed by default.
- In `node < 18`, you need to install a polyfill like `unfetch/polyfill`
2022-12-12 17:41:26 +00:00
- If you want to build a website using `chatgpt`, we recommend using it only from your backend API
2022-12-07 04:29:10 +00:00
## Credits
2022-12-04 10:09:35 +00:00
2022-12-18 06:17:57 +00:00
- Huge thanks to [@waylaidwanderer](https://github.com/waylaidwanderer), [@abacaj](https://github.com/abacaj), [@wong2](https://github.com/wong2), [@simon300000](https://github.com/simon300000), [@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-07 19:21:38 +00:00
- [OpenAI](https://openai.com) for creating [ChatGPT](https://openai.com/blog/chatgpt/) 🔥
2022-12-02 23:43:59 +00:00
## License
MIT © [Travis Fischer](https://transitivebullsh.it)
2022-12-07 04:29:10 +00:00
If you found this project interesting, please consider [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>