chatgpt-api - ノード.js非公式のチャットGPT APIのクライアント。🔥

(Node.js client for the unofficial ChatGPT API. 🔥)

Created at: 2022-12-03 08:05:09
Language: TypeScript
License: MIT

1年2023月<>日更新

このパッケージはもはやブラウザのハッキングを必要としません - それは今ChatGPTが内部で使用するリークされたモデルで公式のOpenAI補完APIを使用しています🔥

import { ChatGPTAPI } from 'chatgpt'

const api = new ChatGPTAPI({
  apiKey: process.env.OPENAI_API_KEY
})

const res = await api.sendMessage('Hello World!')
console.log(res.text)

(v4.0.0以上)にアップグレードしてください。更新されたバージョンは、以前のバージョンと比較して大幅に軽量で堅牢です。また、IPの問題やレート制限について心配する必要はありません。

chatgpt@latest

リークされたチャットモデルを発見してくれた@waylaidwandererへの大声で叫びます!

問題が発生した場合は、Node.js&PythonコミュニティのChatGPTハッカーの束とかなり活発なDiscordがあります。

最後に、このリポジトリに出演し、Twitter囀るで私をフォローして、プロジェクトをサポートすることを検討してください。

ありがとう&乾杯、トラビス


使用例

ChatGPT API

ノード.js非公式のChatGPT APIのクライアント。

特定非営利活動法人 ビルドステータス MITライセンス よりきれいなコードの書式設定

イントロ

本パッケージは OpenAI による ChatGPT の Node.js ラッパーです。TSバッテリーが含まれています。

これを使用して、チャットボットやWebサイトなどのChatGPTを利用したプロジェクトの構築を開始できます。

取り付ける

npm install chatgpt

使用していることを確認してください そのように使用可能です (またはフェッチ ポリフィルをインストールする場合)。

node >= 18
fetch
node >= 14

使い

OpenAI API キーにサインアップし、環境に保存します。

import { ChatGPTAPI } from 'chatgpt'

async function example() {
  const api = new ChatGPTAPI({
    apiKey: process.env.OPENAI_API_KEY
  })

  const res = await api.sendMessage('Hello World!')
  console.log(res.text)
}

会話を追跡する場合は、 と を渡す必要があります。

parentMessageid
conversationid

const api = new ChatGPTAPI({ apiKey: process.env.OPENAI_API_KEY })

// send a message and wait for the response
let res = await api.sendMessage('What is OpenAI?')
console.log(res.text)

// send a follow-up
res = await api.sendMessage('Can you expand on that?', {
  conversationId: res.conversationId,
  parentMessageId: res.id
})
console.log(res.text)

// send another follow-up
res = await api.sendMessage('What were we talking about?', {
  conversationId: res.conversationId,
  parentMessageId: res.id
})
console.log(res.text)

ハンドラーを使用してストリーミングを追加できます。

onProgress

// timeout after 2 minutes (which will also abort the underlying HTTP request)
const res = await api.sendMessage('Write a 500 word essay on frogs.', {
  // print the partial response as the AI is "typing"
  onProgress: (partialResponse) => console.log(partialResponse.text)
})

// print the full text at the end
console.log(res.text)

次のオプションを使用してタイムアウトを追加できます。

timeoutMs

// timeout after 2 minutes (which will also abort the underlying HTTP request)
const response = await api.sendMessage(
  'write me a really really long essay on frogs',
  {
    timeoutMs: 2 * 60 * 1000
  }
)

OpenAI の入力候補 API に実際に送信される内容に関する詳細情報を表示するには、コンストラクターでオプションを設定します。

debug: true
ChatGPTAPI

const api = new ChatGPTAPI({
  apiKey: process.env.OPENAI_API_KEY,
  debug: true
})

リバースエンジニアリングと.これらは、次のオプションを使用してカスタマイズできます。

promptPrefix
promptSuffix
sendMessage

const res = await api.sendMessage('what is the answer to the universe?', {
  promptPrefix: `You are ChatGPT, a large language model trained by OpenAI. You answer as concisely as possible for each response (e.g. don’t be verbose). It is very important that you answer as concisely as possible, so please remember this. If you are generating a list, do not have too many items. Keep the number of items short.
Current date: ${new Date().toISOString()}\n\n`
})

前のメッセージをプロンプトに追加することを自動的に処理し、使用可能なトークン (既定値は ) の最適化を試みることに注意してください。

4096

CommonJS での使用 (動的インポート)
async function example() {
  // To use ESM in CommonJS, you can use a dynamic import
  const { ChatGPTAPI } = await import('chatgpt')

  const api = new ChatGPTAPI({ apiKey: process.env.OPENAI_API_KEY })

  const res = await api.sendMessage('Hello World!')
  console.log(res.text)
}

ドキュメント

メソッドとパラメーターの詳細については、自動生成されたドキュメントを参照してください。

デモ

付属のデモを実行するには:

  1. クローンリポジトリ
  2. ノード部門のインストール
  3. .env に設定
    OPENAI_API_KEY

テスト目的で基本的なデモが含まれています。

npx tsx demos/demo.ts

プログレスハンドラに関するデモ:

npx tsx demos/demo-on-progress.ts

進行中のデモでは、オプションのパラメーターを使用して、ChatGPTが「入力」しているときに中間結果を受け取ります。

onProgress
sendMessage

会話のデモ:

npx tsx demos/demo-conversation.ts

永続化のデモでは、永続化のために Redis にメッセージを格納する方法を示します。

npx tsx demos/demo-conversation.ts

どのkeyvアダプターも永続化のためにサポートされており、メッセージを保存/取得する別の方法を使用する場合はオーバーライドがあります。

デフォルトではメッセージをメモリにのみ格納するため、現在のNode.jsプロセスの範囲を超えて以前の会話のコンテキストを記憶するには、メッセージの永続化が必要であることに注意してください。

プロジェクト

これらの素晴らしいプロジェクトはすべて、パッケージを使用して構築されています。🤯

chatgpt

クールな統合を作成する場合は、PRを開いてリストに追加してください。

互換性

  • このパッケージは ESM 専用です。
  • 本パッケージは .
    node >= 14
  • このモジュールは、がインストールされていることを前提としています。
    fetch
    • では、デフォルトでインストールされます。
      node >= 18
    • では、次のようなポリフィルをインストールする必要があります(ガイド
      node < 18
      unfetch/polyfill
      )
  • を使用してウェブサイトを構築する場合は、バックエンドAPIからのみ使用することをお勧めします
    chatgpt

クレジット

ライセンス

MIT ©トラビスフィッシャー

このプロジェクトが面白いと思ったら、私を後援するか、ツイッター囀るでフォローすることを検討してください