聊天GPT API

官方 ChatGPT API 的 Node.js 客户端。

NPM Build Status MIT License Prettier Code Formatting

介绍

该包是 OpenAI 围绕 ChatGPT 的 Node.js 包装器。含 TS 电池。

Example usage

更新

npx chatgpt@latest --model gpt-4 “你好世界”
import { ChatGPTAPI } from 'chatgpt' const api = new ChatGPTAPI({ apiKey: process.env.OPENAI_API_KEY }) const res = wait api.sendMessage('Hello World!') console.log(res.text)

如果您遇到任何问题,我们确实有一个非常活跃的 ChatGPT Hackers Discord,其中包含来自 Node.js 和 Python 社区的超过 8000 名开发人员。

最后,请考虑为这个仓库加注星标并在 Twitter 上关注我 twitter 帮助支持该项目。

谢谢&&干杯,特拉维斯

命令行界面

要运行 CLI,您需要一个 OpenAI API 密钥:

导出 OPENAI_API_KEY="sk-TODO" npx chatgpt "此处提示"
-c--无流
用法:$ chatgpt  命令: 向 ChatGPT 询问问题 rm-cache 清除本地消息缓存 ls-cache 打印本地消息缓存路径 有关详细信息,请运行带有“--help”标志的任何命令:$ chatgpt --help $ chatgpt rm-cache --help $ chatgpt ls-cache --help 选项: -c, --continue 继续上次对话(默认值: false) -d, --debug 启用调试日志记录(默认值: false) -s, --stream 流式传输响应(默认值:true) -s, --store 启用本地消息缓存(默认值:true) -t, --timeout 超时(以毫秒为单位) -k, --apiKey OpenAI API 密钥 -o , --apiOrg OpenAI API 组织 -n, --conversationName 对话的唯一名称 -h, --help 显示此消息 -v, --version 显示版本号
GPT-4

Using the chatgpt CLI with gpt-4

安装

npm 安装 chatgpt
节点 >= 18fetchnode >= 14

用法

要从 Node.js 使用此模块,您需要在两种方法之间进行选择:

ChatGPTAPIChatGPTUnofficialProxyAPI
ChatGPTAPIgpt-3.5-turboChatGPTUnofficialProxyAPI

两种方法都有非常相似的 API,因此它们之间的切换应该很简单。

ChatGPTAPIgpt-4ChatGPTUnofficialProxyAPI

用法 - ChatGPTAPI

注册 OpenAI API 密钥并将其存储在您的环境中。

import { ChatGPTAPI } from 'chatgpt' 异步函数 example() { const api = new ChatGPTAPI({ apiKey: process.env.OPENAI_API_KEY }) const res = wait api.sendMessage('Hello World!') console.log(res.文本) }
型号gpt-3.5-turbocompletionParams
const api = new ChatGPTAPI({ apiKey: process.env.OPENAI_API_KEY, finishParams: { model: 'gpt-4', 温度: 0.5, top_p: 0.8 } })
父消息ID
const api = new ChatGPTAPI({ apiKey: process.env.OPENAI_API_KEY }) // 发送消息并等待响应 let res = wait api.sendMessage('What is OpenAI?') console.log(res.text) / / 发送后续消息 res = wait api.sendMessage('Can you Expand on that?', {parentMessageId: res.id }) console.log(res.text) // 发送另一个后续消息 res = wait api. sendMessage('我们在说什么?', {parentMessageId: res.id }) console.log(res.text)
进度
const res = wait api.sendMessage('写一篇关于青蛙的 500 字文章。', { // 当 AI “打字”时打印部分响应 onProgress: (partialResponse) => console.log(partialResponse.text) }) // 在末尾打印全文 console.log(res.text)
超时时间
// 2 分钟后超时(这也会中止底层 HTTP 请求) const response = wait api.sendMessage( 'write me a very real long essay on frogs', { timeoutMs: 2 * 60 * 1000 } )
调试:trueChatGPTAPI
const api = new ChatGPTAPI({ apiKey: process.env.OPENAI_API_KEY, debug: true })
系统消息聊天GPTAPI发送消息
const res = wait api.sendMessage('宇宙的答案是什么?', { systemMessage: `您是 ChatGPT,一个由 OpenAI 训练的大型语言模型。您对每个响应的回答尽可能简洁如果您正在生成一个列表,项目不要太多。当前日期:${new Date().toISOString()}\n\n` })
4096
async function example() { // 要在 CommonJS 中使用 ESM,您可以使用如下动态导入: const { ChatGPTAPI } = wait import('chatgpt') // 您也可以尝试如下动态导入: // const importDynamic = new Function('modulePath', 'return import(modulePath)') // const { ChatGPTAPI } = wait importDynamic('chatgpt') const api = new ChatGPTAPI({ apiKey: process.env.OPENAI_API_KEY }) const res = wait api.sendMessage('Hello World!') console.log(res.text) }

用法 - ChatGPTUnofficialProxyAPI

聊天GPTUnofficialProxyAPIaccessToken
import { ChatGPTUnofficialProxyAPI } from 'chatgpt' 异步函数 example() { const api = new ChatGPTUnofficialProxyAPI({ accessToken: process.env.OPENAI_ACCESS_TOKEN }) const res = wait api.sendMessage('Hello World!') console.log(res.文本) }

有关完整示例,请参阅 demos/demo-reverse-proxy:

npx tsx 演示/demo-reverse-proxy.ts
ChatGPTUnofficialProxyAPIconversationidparentMessageId

反向代理

apiReverseProxyUrl
const api = new ChatGPTUnofficialProxyAPI({ accessToken: process.env.OPENAI_ACCESS_TOKEN, apiReverseProxyUrl: 'https://your-example-server.com/api/conversation' })

由社区成员运行的已知反向代理包括:

https://ai.fakeopen.com/api/conversation https://api.pawan.krd/backend-api/conversation

注意:目前尚未发布有关反向代理如何工作的信息,以防止 OpenAI 禁用访问。

访问令牌

聊天GPTUnofficialProxyAPI电子邮件密码
  • Node.js 库
  • Python 库

这些库使用电子邮件+密码帐户(例如,它们不支持您通过 Microsoft / Google 进行身份验证的帐户)。

accessTokenhttps://chat.openai.com/api/auth/sessionaccessToken

访问令牌可持续数天。

笔记:使用反向代理会将您的访问令牌暴露给第三方。这应该不会产生任何不利影响,但在使用此方法之前请考虑风险。

文档

有关方法和参数的更多信息,请参阅自动生成的文档。

演示

ChatGPTAPIChatGPTUnofficialProxyAPIaccessTokenapiKey

要运行包含的演示:

OPENAI_API_KEY

包含一个用于测试目的的基本演示:

npx tsx 演示/demo.ts
npx tsx 演示/demo-on-progress.ts
onProgress发送消息
npx tsx 演示/demo-conversation.ts

持久化演示展示了如何在 Redis 中存储消息以实现持久化:

npx tsx 演示/demo-persistence.ts

任何 keyv 适配器都支持持久性,如果您想使用不同的方式存储/检索消息,则可以进行覆盖。

请注意,需要持久化消息来记住当前 Node.js 进程范围之外的先前对话的上下文,因为默认情况下,我们仅将消息存储在内存中。这是使用完全自定义的数据库解决方案来保存消息的外部演示。

聊天GPT非官方ProxyAPI

项目

聊天室

如果您创建了一个很酷的集成,请随时打开 PR 并将其添加到列表中。

兼容性

节点 >= 14fetchchatgpt

制作人员

执照

如果您发现这个项目有趣,请考虑赞助我或在 Twitter 上关注我 twitter