node-chatgpt-api
node-chatgpt-api 是一个功能强大的 Node.js 客户端库,旨在帮助开发者轻松集成 ChatGPT 和必应 AI(Bing AI)的能力。它解决了直接调用大模型 API 时面临的复杂性,提供了三种灵活的使用方式:作为代码模块嵌入项目、搭建独立的 REST API 服务器,或直接通过命令行工具进行交互。
对于需要在应用中添加智能对话功能的开发人员而言,这是一个理想的选择。它不仅支持官方 OpenAI API 中性价比极高的 gpt-3.5-turbo 模型,还实验性地接入了必应 GPT-4 后端,让用户能以更低的成本体验顶尖的对话能力。其独特的技术亮点在于内置了反向代理支持,能够绕过部分浏览器自动化限制,直接通过访问令牌与 ChatGPT 后端通信,从而避免了繁琐的浏览器模拟操作。此外,项目更新频繁,紧跟官方模型迭代,确保用户能第一时间使用最新技术。无论是构建聊天机器人、开发辅助工具,还是进行 AI 应用原型验证,node-chatgpt-api 都能提供稳定且高效的底层支持。
使用场景
某初创公司的后端团队希望将智能客服对话功能集成到现有的 Node.js 订单系统中,以自动处理用户关于物流状态的咨询。
没有 node-chatgpt-api 时
- 开发人员必须手动编写复杂的浏览器自动化脚本(如 Puppeteer)来模拟网页操作,代码维护成本极高且容易因官网界面微调而崩溃。
- 无法直接调用最新的
gpt-3.5-turbo模型,只能依赖昂贵且响应较慢的旧版text-davinci-003,导致单次查询成本高出 10 倍。 - 缺乏统一的接口封装,团队需要在 REST API 服务、命令行工具和内部模块之间重复造轮子,开发效率低下。
- 面对官方接口的频繁变动和封号风险,缺乏灵活的逆向代理或 Token 管理机制,系统稳定性难以保障。
使用 node-chatgpt-api 后
- 直接通过简单的 Node.js 模块导入即可集成对话能力,无需维护脆弱的浏览器自动化流程,系统稳定性显著提升。
- 默认支持高性价比的
gpt-3.5-turbo模型,在保持高质量回答的同时,将 API 调用成本降低了 90%。 - 利用其内置的 REST API 服务器和 CLI 应用特性,团队可快速在不同微服务和调试场景中复用同一套逻辑,大幅缩短开发周期。
- 灵活切换官方 API 或配置逆向代理服务器,有效规避了直接自动化网页带来的账号封禁风险,确保持续可用。
node-chatgpt-api 通过提供统一、低成本且稳定的接入方案,让开发者能专注于业务逻辑而非底层对接细节,迅速实现智能对话功能的落地。
运行环境要求
- Linux
- macOS
- Windows
未说明
未说明

快速开始
更新日志
2023-03-01
现已支持官方的 ChatGPT 模型! 您现在可以使用 ChatGPTClient 和官方 OpenAI API 来调用 gpt-3.5-turbo 模型。该模型正是 ChatGPT 所使用的版本,也是目前功能最为强大的模型。不过,使用此模型并非免费,但其价格仅为 text-davinci-003 的 十分之一(每 1,000 个 token 收费 $0.002)。
更多信息请参阅 OpenAI 的文章:Introducing ChatGPT and Whisper APIs。
要使用它,只需将
modelOptions.model 设置为 gpt-3.5-turbo,剩下的工作将由 ChatGPTClient 自动完成。ChatGPTClient 中默认使用的模型现已更新为 gpt-3.5-turbo。
您仍然可以像往常一样设置 userLabel、chatGptLabel 和 promptPrefix(系统指令)。
如果您继续自动化操作 chat.openai.com,您的账号被封禁的风险可能会更高。 请自行承担风险继续使用。
以往更新
2023-02-19
我新增了一个实验性的 ChatGPTBrowserClient,它依赖于一个利用 Cloudflare 绕过技术的反向代理服务器,使您无需浏览器自动化即可与 ChatGPT(chat.openai.com)进行对话。您只需要从 https://chat.openai.com/api/auth/session 获取您的访问令牌即可。
一如既往,请注意,如果您选择这种方式,您的访问令牌将会暴露给一个闭源的第三方服务器。如果您对此感到担忧,可以选择使用免费的 ChatGPT 账号以降低风险,或者继续使用 ChatGPTClient 并搭配 text-davinci-003 模型。
2023-02-15
遗憾的是,我们之前用来访问 ChatGPT 底层模型的方法已经被修复了。目前您的选择是:要么使用官方 OpenAI API 并搭配 text-davinci-003 模型(需要付费),要么采用基于浏览器的解决方案来对接 ChatGPT 的后端服务(这种方式性能较弱、速率限制较多,且本库目前尚不支持)。
2023-02-11
在 @PawanOsman 的帮助下,我们找到了一种继续使用 ChatGPT 底层模型的方法。为了尽量避免再次失去访问权限,我们决定提供与 OpenAI API 兼容的反向代理服务器。我已经更新了 ChatGPTClient,使其支持使用反向代理服务器而非 OpenAI API 服务器。有关可用代理服务器及其工作原理的更多信息,请参阅 使用反向代理。
请注意,如果您选择这种方式,您的访问令牌将会暴露给一个闭源的第三方服务器。如果您对此有所顾虑,可以选择使用免费的 ChatGPT 账号以降低风险,或者继续使用官方 OpenAI API 并搭配 text-davinci-003 模型。
2023-02-10
我发现了一个新的可用模型 text-chat-davinci-002, 名称为 text-chat-davinci-002-sh-alpha-aoruigiofdj83。这正是 ChatGPT Plus “Turbo” 版本所使用的底层模型。响应速度极快。我已经更新了库以使用该模型。
可惜好景不长,text-chat-davinci-002-sh-alpha-aoruigiofdj83 很快就被移除了,可能是因为 OpenAI 已经推出了新的模型吧?
2023-02-09
借助 BingAIClient,体验必应版 GPT-4 的 ChatGPT 功能(实验性)。
API 服务器和 CLI 仍需更新以支持此功能,但您现在就可以直接使用该客户端。
请注意,如果您的账号仍在等待名单中,将无法使用此客户端。
2023-02-08
尽管 text-chat-davinci-002-20221122 又恢复了运行,但它似乎总是处于过载状态,频繁返回 429 错误。很可能是 OpenAI 只为该模型分配了少量资源,以防止其被大众广泛使用。此外,我还听说更新的版本现在已被锁定,仅供 OpenAI 员工和合作伙伴使用,因此在该模型正式发布之前,我们很难找到绕过限制的方法。
您可以改用 text-davinci-003 模型作为替代方案。需要注意的是,text-davinci-003 的表现不如通过 RHLF 训练并专门优化为对话式 AI 的 text-chat-davinci-002,不过在大多数情况下,其效果仍然相当不错。请注意,使用 text-davinci-003 需要消耗积分(付费)。
我将重新为基于浏览器的 ChatGPT 提供 API 服务器和 CLI 的支持。请为本仓库点赞并关注后续更新。
2023-02-07
过山车来到了下一站。text-chat-davinci-002-20221122 再次上线了。
现在尝试使用 text-chat-davinci-002-20221122 与 OpenAI API 对接会返回 404 错误。
您可以改用 text-davinci-003 模型作为替代品。需要注意的是,text-davinci-003 的表现不如通过 RHLF 训练并优化为对话式 AI 的 text-chat-davinci-002,不过其效果依然非常出色。**请注意,使用 text-davinci-003 需要消耗积分(付费)。
请耐心等待进一步更新,我们将继续探索其他绕过方法。
2023-02-02
现在尝试使用 text-chat-davinci-002-20230126 与 OpenAI API 对接会返回 404 错误。已经有人发现了新模型的名字,但他们目前不愿公开。一旦我找到新模型,就会更新本仓库。如果您有任何线索,请提交 issue 或 pull request。
在此期间,我增加了对 text-davinci-003 等模型的支持,您可以将其作为替代品使用。需要注意的是,text-davinci-003 的表现不如通过 RHLF 训练并优化为对话式 AI 的 text-chat-davinci-002,不过其效果仍然非常不错。**请注意,使用 text-davinci-003 需要消耗积分(付费)。
Discord 用户 @pig#8932 发现了一个可用的 text-chat-davinci-002 模型,名为 text-chat-davinci-002-20221122。我已经更新了库以使用该模型。
ChatGPT API
一个用于 ChatGPT 和 Bing AI 的客户端实现。提供 Node.js 模块、REST API 服务器和命令行工具三种形式。
目录
功能特性
- 包含一个 API 服务器(支持 Docker),您可以在非 Node.js 应用中运行它来使用 ChatGPT。
- 提供一个命令行界面,您可以直接与 ChatGPT 对话。
- 提供可在您自己的 Node.js 应用中使用的客户端。
ChatGPTClient:通过 OpenAI 的 API 支持官方 ChatGPT 的底层模型gpt-3.5-turbo。- 可复现官方 ChatGPT 网站上的聊天线程(包括对话 ID 和消息 ID),并利用 Keyv 实现持久化会话。
- 默认情况下,会话存储在内存中,但您也可以选择安装 存储适配器 将会话持久化到数据库。
- 此包还包含
keyv-file适配器,可用于将会话存储为 JSON 文件,尤其适用于 API 服务器或命令行工具(参见settings.example.js)。
- 支持可配置的提示前缀,以及自定义用户和 ChatGPT 的名称。
- 这使得您可以创建具有任意个性特征的聊天机器人。
- 目前此功能仅支持全局配置,但我计划未来增加按会话定制的功能。
- 同时保留对
text-davinci-003等模型的支持。
- 可复现官方 ChatGPT 网站上的聊天线程(包括对话 ID 和消息 ID),并利用 Keyv 实现持久化会话。
BingAIClient:支持由 GPT-4 驱动的 Bing 版 ChatGPT。- 内置了一个“越狱”模式,开启后可实现每轮对话无限消息、每日无限消息,并让 Sydney 回归。😊
ChatGPTBrowserClient:支持官方 ChatGPT 网站,通过反向代理服务器绕过 Cloudflare 限制。- 如果您继续自动化操作 chat.openai.com,您的账户很可能被封禁。 请自行承担风险。
快速上手
先决条件
- Node.js >= 16.0.0
- npm
- Docker(可选,用于 API 服务器)
- OpenAI API 密钥
使用方法
模块
npm i @waylaidwanderer/chatgpt-api
BingAIClient
ChatGPTClient
ChatGPTBrowserClient
API 服务器
设置
您可以使用以下命令安装该包:
npm i -g @waylaidwanderer/chatgpt-api
然后通过运行 chatgpt-api 来启动服务。该命令接受一个可选参数 --settings=<path_to_settings.js>,若未指定,则会在当前目录下查找名为 settings.js 的配置文件,其内容如下:
settings.js
module.exports = {
// Keyv 缓存的选项,详见 https://www.npmjs.com/package/keyv。
// 用于存储对话,默认存储在内存中,但支持其他驱动程序。
// 仅在使用 `ChatGPTClient` 或 jailbreak 模式下的 `BingAIClient` 时需要。
cacheOptions: {},
// 如果设置,`ChatGPTClient` 和 `BingAIClient` 将使用 `keyv-file` 将对话存储到此 JSON 文件中,而不是存储在内存中。
// 但如果设置了 `cacheOptions.store`,则会覆盖此设置。
storageFilePath: process.env.STORAGE_FILE_PATH || './cache.json',
chatGptClient: {
// 您的 OpenAI API 密钥(用于 `ChatGPTClient`)
openaiApiKey: process.env.OPENAI_API_KEY || '',
// (可选)支持补全端点的反向代理(私有 API 服务器)。
// 警告:这会将您的 `openaiApiKey` 公开给第三方。请在使用前考虑相关风险。
// reverseProxyUrl: 'https://chatgpt.hato.ai/completions',
// (可选)按照 https://platform.openai.com/docs/api-reference/completions 的描述设置参数。
modelOptions: {
// 您可以在此处覆盖模型名称及其他参数。
// 默认模型是 `gpt-3.5-turbo`。
model: 'gpt-3.5-turbo',
// 在此处设置 `max_tokens` 可以覆盖默认的 1000 个 token 的上限。
// max_tokens: 1000,
},
// (可选)Davinci 模型的最大上下文长度为 4097 个 token,但对于其他模型可能需要调整。
// maxContextTokens: 4097,
// (可选)如果您使用的是付费模型(如 `text-davinci-003`),可以降低此值以节省费用。
// 系统会丢弃较早的消息,直到提示符符合限制。
// maxPromptTokens: 3097,
// (可选)设置自定义指令,而非默认的“您是 ChatGPT…”。
// (可选)为用户设置自定义名称。
// userLabel: 'User',
// (可选)为 ChatGPT 设置自定义名称(默认为“ChatGPT”)。
// chatGptLabel: 'Bob',
// promptPrefix: 'You are Bob, a cowboy in Western times...',
// 代理字符串,例如 "http://<ip>:<port>"
proxy: '',
// (可选)设置为 true 以启用 `console.debug()` 日志记录。
debug: false,
},
// Bing 客户端的选项
bingAiClient: {
// 对某些国家/地区的用户有必要,例如中国(https://cn.bing.com)
host: '',
// 来自 bing.com 的 `_U` cookie 值
userToken: '',
// 如果上述方法无效,也可以直接提供所有 cookies 的字符串。
cookies: '',
// 代理字符串,例如 "http://<ip>:<port>"
proxy: '',
// (可选)设置为 true 以启用 `console.debug()` 日志记录。
debug: false,
},
chatGptBrowserClient: {
// (可选)支持对话端点的反向代理(私有 API 服务器)。
// 警告:这会将您的访问令牌公开给第三方。请在使用前考虑相关风险。
reverseProxyUrl: 'https://bypass.churchless.tech/api/conversation',
// 来自 https://chat.openai.com/api/auth/session 的访问令牌
accessToken: '',
// 来自 chat.openai.com 的 cookies(如果使用反向代理服务器,可能不需要)。
cookies: '',
// 代理字符串,例如 "http://<ip>:<port>"
proxy: '',
// (可选)设置为 true 以启用 `console.debug()` 日志记录。
debug: false,
},
// API 服务器的选项
apiOptions: {
port: process.env.API_PORT || 3000,
host: process.env.API_HOST || 'localhost',
// (可选)设置为 true 以启用 `console.debug()` 日志记录。
debug: false,
// (可选)可能的选项:`chatgpt`、`chatgpt-browser`、`bing`。(默认:`chatgpt`)
clientToUse: 'chatgpt',
// (可选)为每个对话生成标题(目前仅支持 ChatGPTClient)。
// 标题将以 `title` 属性的形式返回在对话的第一条响应中。
generateTitles: false,
// (可选)设置此项以允许在 POST /conversation 中更改客户端或客户端选项。
// 若要禁用,请设置为 `null`。
perMessageClientOptionsWhitelist: {
// 如果未设置 `validClientsToUse`,则无法通过 `clientOptions.clientToUse` 切换客户端。
// 若要允许每条消息切换客户端,必须将 `validClientsToUse` 设置为非空数组。
validClientsToUse: ['bing', 'chatgpt', 'chatgpt-browser'], // 上述可能的 `clientToUse` 选项中的值
// 对象键,例如 `chatgpt`,是 `validClientsToUse` 中的一个值。
// 如果未设置,则允许更改所有选项。例如,上述 `perMessageClientOptionsWhitelist` 中未定义 `bing`,
// 因此 `bingAiClient` 的所有选项都可以被更改。
// 如果设置了,则仅允许更改此处列出的选项。
// 在此示例中,每个数组元素代表 `chatGptClient` 中的一个属性。
chatgpt: [
'promptPrefix',
'userLabel',
'chatGptLabel',
// 如果在此处设置 `modelOptions.temperature`,则只能更改温度。
// 其他选项,如 `modelOptions.model`,将不允许更改。
// 如果希望允许更改所有 `modelOptions`,则应在此处定义 `modelOptions`,而非仅 `modelOptions.temperature`。
'modelOptions.temperature',
],
},
},
// CLI 应用程序的选项
cliOptions: {
// (可选)可能的选项:`chatgpt`、`bing`。
// clientToUse: 'bing',
},
};
或者,您也可以直接安装并运行该包。
- 克隆此仓库:
git clone https://github.com/waylaidwanderer/node-chatgpt-api - 使用
npm install安装依赖项(如果不使用 Docker)。 - 将根目录下的
settings.example.js重命名为settings.js,并根据需要修改设置。 - 启动服务器:
- 使用
npm start或npm run server(如果不使用 Docker)。 - 使用
docker-compose up(需要 Docker)。
- 使用
端点
POST /conversation
开始或继续一次对话。 可选参数仅在跨多个请求的对话中才需要。
| 字段 | 描述 |
|---|---|
| message | 要显示给用户的讯息。 |
| conversationId | (可选)您想要继续的对话的 ID。 |
| jailbreakConversationId | (可选,仅适用于 BingAIClient)设置为 true 以在越狱模式下开始对话。此后,这应是越狱对话的 ID(在响应中也以名为 jailbreakConversationId 的参数给出)。 |
| parentMessageId | (可选,适用于 ChatGPTClient 和越狱模式下的 BingAIClient)继续对话时,父消息的 ID(即 response.messageId)。 |
| conversationSignature | (可选,仅适用于 BingAIClient)对话签名(在响应中也以名为 conversationSignature 的参数给出)。除非处于越狱模式,否则继续对话时需要此参数。 |
| clientId | (可选,仅适用于 BingAIClient)客户端 ID。除非处于越狱模式,否则继续对话时需要此参数。 |
| invocationId | (可选,仅适用于 BingAIClient)调用 ID。除非处于越狱模式,否则继续对话时需要此参数。 |
| clientOptions | (可选)包含客户端选项的对象。 |
| clientOptions.clientToUse | (可选)用于此消息的客户端。可能的值:chatgpt、chatgpt-browser、bing。 |
| clientOptions.* | (可选)任何适用于该客户端的有效选项。例如,对于 ChatGPTClient,您可以设置 clientOptions.openaiApiKey 来仅为该消息设置 API 密钥,或设置 clientOptions.promptPrefix 以仅为此消息向 AI 提供自定义指令等。 |
要配置哪些选项可以按消息更改(默认:全部),请参阅 settings.example.js 中关于 perMessageClientOptionsWhitelist 的注释。
要允许切换客户端,必须按照示例设置文件中的说明将 perMessageClientOptionsWhitelist.validClientsToUse 设置为非空数组。
使用方法
方法 1(POST)
要与 ChatGPT 开始对话,请向服务器的 /conversation 端点发送 POST 请求,请求体为 JSON 格式,参数参照上方“端点”部分的“POST /conversation”。
{
"message": "你好,你今天过得怎么样?",
"conversationId": "您的对话 ID(可选)",
"parentMessageId": "您的父消息 ID(可选,仅适用于 `ChatGPTClient`)",
"conversationSignature": "您的对话签名(可选,仅适用于 `BingAIClient`)",
"clientId": "您的客户端 ID(可选,仅适用于 `BingAIClient`)",
"invocationId": "您的调用 ID(可选,仅适用于 `BingAIClient`)"
}
服务器将返回一个包含 ChatGPT 回答的 JSON 对象:
// HTTP/1.1 200 OK
{
"response": "我很好,谢谢!你呢?",
"conversationId": "您的对话 ID",
"messageId": "响应消息 ID(仅适用于 `ChatGPTClient`)",
"conversationSignature": "您的对话签名(仅适用于 `BingAIClient`)",
"clientId": "您的客户端 ID(仅适用于 `BingAIClient`)",
"invocationId": "您的调用 ID(仅适用于 `BingAIClient`——请将此新值原样传递回后续请求中)",
"details": "包含来自客户端原始响应的对象"
}
如果请求失败,服务器将返回带有错误信息的 JSON 对象。
如果请求对象缺少必填字段(例如 message):
// HTTP/1.1 400 Bad Request
{
"error": "必须提供 message 参数。"
}
如果向 ChatGPT 发送消息时出现错误:
// HTTP/1.1 503 Service Unavailable
{
"error": "与 ChatGPT 通信时发生错误。"
}
方法 2(SSE)
您可以在请求体中设置 "stream": true,以在标记生成时接收流式输出。
import { fetchEventSource } from '@waylaidwanderer/fetch-event-source'; // 如果在浏览器环境中,请改用 `@microsoft/fetch-event-source`
const opts = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
"message": "写一首关于猫的诗。",
"conversationId": "您的对话 ID(可选)",
"parentMessageId": "您的父消息 ID(可选)",
"stream": true,
// 其他所有参数均参照上方“端点 > POST /conversation”
}),
};
有关如何在响应生成时接收响应的示例,请参阅 demos/use-api-server-streaming.js。您将一次收到一个标记,因此需要自行将其拼接起来。
成功输出:
{ data: '', event: '', id: '', retry: 3000 }
{ data: 'Hello', event: '', id: '', retry: undefined }
{ data: '!', event: '', id: '', retry: undefined }
{ data: ' How', event: '', id: '', retry: undefined }
{ data: ' can', event: '', id: '', retry: undefined }
{ data: ' I', event: '', id: '', retry: undefined }
{ data: ' help', event: '', id: '', retry: undefined }
{ data: ' you', event: '', id: '', retry: undefined }
{ data: ' today', event: '', id: '', retry: undefined }
{ data: '?', event: '', id: '', retry: undefined }
{ data: '<result JSON here, see Method 1>', event: 'result', id: '', retry: undefined }
{ data: '[DONE]', event: '', id: '', retry: undefined }
// Hello! How can I help you today?
错误输出:
const message = {
data: '{"code":503,"error":"There was an error communicating with ChatGPT."}',
event: 'error',
id: '',
retry: undefined
};
if (message.event === 'error') {
console.error(JSON.parse(message.data).error); // There was an error communicating with ChatGPT.
}
注意事项
- 方法一简单易行,但首字节时间(TTFB)较长。
- 方法二使用了非标准的 服务器发送事件 API 实现;你需要先导入
fetch-event-source库,并使用POST方法。
命令行工具
设置
请按照 API 服务器的设置说明进行操作,创建 settings.js 文件。
使用
如果已全局安装:
chatgpt-cli
如果仅在本地安装:
npm run cli
ChatGPT 的回复会自动复制到剪贴板,方便你将其粘贴到其他应用程序中。
使用反向代理
如上文示例所示,你可以在 ChatGPTClient 的选项中设置 reverseProxyUrl,以使用反向代理服务器代替官方的 ChatGPT API。
目前,这是唯一可以使用 ChatGPT 底层模型的方式。 此方法已被修复,以下说明已不再适用,但你仍可能出于其他原因选择使用反向代理。
目前,反向代理服务器仍然被用于为 ChatGPTBrowserClient 进行 Cloudflare 绕过。
说明
它是如何工作的呢?简单来说:ChatGPTClient > 反向代理 > OpenAI 服务器。反向代理服务器会在后台执行一些特殊操作,直接通过 OpenAI 的服务器访问底层模型,然后将响应返回给 ChatGPTClient。
以下是具体步骤。
https://chatgpt.hato.ai/completions(我的服务,目前已离线)
指导步骤
- 从 https://chat.openai.com/api/auth/session 获取你的 ChatGPT 访问令牌(查找
accessToken属性)。- 这与 会话令牌 不同。
- 目前该库尚不支持自动获取或刷新 ChatGPT 访问令牌,请暂时由你自己处理。
- 在
settings.js > chatGPTClient或ChatGPTClient的选项中,将reverseProxyUrl设置为https://chatgpt.hato.ai/completions。 - 将“OpenAI API 密钥”参数(例如
settings.chatGPTClient.openaiApiKey)设置为你在第 1 步中获得的 ChatGPT 访问令牌。 - 根据你的账户可访问的 ChatGPT 模型,将
model设置为text-davinci-002-render、text-davinci-002-render-paid或text-davinci-002-render-sha。模型名称必须是 ChatGPT 的正式名称,而非底层模型名称,且不能选择你账户无权使用的模型。- 你可以通过打开开发者工具并进入网络标签页来确认自己拥有哪些模型权限。刷新页面后,查看 https://chat.openai.com/backend-api/models 的响应体。
注意事项
- 由于这是我的服务器,我可以保证不会进行任何日志记录或跟踪。我只能看到总体的使用统计数据,而无法查看你的任何请求内容。至于是否信任我,则取决于你自己。
- 不支持超过 60 秒的非流式响应。可使用
stream: true(API)或onProgress(客户端)作为替代方案。 - 请求频率限制为每秒 10 次。
https://chatgpt.pawan.krd/api/completions (@PawanOsmon,目前已离线)
指导步骤
- 从 https://chat.openai.com/api/auth/session 获取你的 ChatGPT 访问令牌(查找
accessToken属性)。- 这与 会话令牌 不同。
- 目前该库尚不支持自动获取或刷新 ChatGPT 访问令牌,请暂时由你自己处理。
- 在
settings.js > chatGPTClient或ChatGPTClient的选项中,将reverseProxyUrl设置为https://chatgpt.pawan.krd/api/completions。 - 将“OpenAI API 密钥”参数(例如
settings.chatGPTClient.openaiApiKey)设置为你在第 1 步中获得的 ChatGPT 访问令牌。 - 根据你的账户可访问的 ChatGPT 模型,将
model设置为text-davinci-002-render、text-davinci-002-render-paid或text-davinci-002-render-sha。模型名称必须是 ChatGPT 的正式名称,而非底层模型名称,且不能选择你账户无权使用的模型。- 你可以通过打开开发者工具并进入网络标签页来确认自己拥有哪些模型权限。刷新页面后,查看 https://chat.openai.com/backend-api/models 的响应体。
注意事项
- 不支持超过 60 秒的非流式响应。可使用
stream: true(API)或onProgress(客户端)作为替代方案。 - 请求频率限制为每 15 秒 50 次。
项目
🚀 使用 @waylaidwanderer/chatgpt-api 的精彩项目列表:
- PandoraAI:由 node-chatgpt-api 驱动的我的网页聊天客户端,允许用户轻松与多个 AI 系统对话,同时支持自定义预设。凭借其流畅便捷的设计,PandoraAI 提供了引人入胜的对话式 AI 体验。
- LibreChat:集成了 ChatGPT 技术,支持多种 AI 模型、对话功能、消息搜索和插件。它提供免费/按调用付费的 API,无需订阅 ChatGPT Plus,并支持个性化定制。
- ChatGPT WebApp:一个具有移动端兼容界面的全栈聊天 Web 应用,后端使用 node-chatgpt-api。任何人都可以部署属于自己的聊天服务。
- halbot:又一个基于 ChatGPT/Bing Chat 的 Telegram 机器人,设计简洁、易于使用、可扩展且充满乐趣。
- ChatGPTBox:将 ChatGPT 深度集成到你的浏览器中,你所需的一切尽在这里。
- llm-bot:一款用于 LLM 聊天的 Discord 机器人。附带一个 GPT-4 的自定义反向代理,使其能够免费访问(感谢“generic”!)。
- WhatsAppSydney:基于 Bing 的 WhatsApp 个人助理。轻松简化你的日常生活。
通过 编辑此 README 并创建拉取请求,将你的项目加入列表吧!
网页客户端
本项目的网页客户端也可在 waylaidwanderer/PandoraAI 上找到。
注意事项
关于 ChatGPTClient
由于 gpt-3.5-turbo 是 ChatGPT 的底层模型,我尽力复现了官方 ChatGPT 网站对其的使用方式。
这意味着我的实现或底层模型在某些方面可能表现不完全一致:
- 对话不会绑定到任何用户 ID,因此如果你对此有要求,建议自行实现用户 ID 系统。
- ChatGPT 的模型参数(温度、频率惩罚等)未知,所以我设置了一些我认为合理的默认值。
- 对话仅保留最近约 3000 个 token 的内容,因此在长时间对话中,较早的消息可能会被遗忘。
- 这种机制与 ChatGPT 类似,不过我确信 ChatGPT 在需要时会有其他方式来检索早期上下文信息(这通常可以通过嵌入技术实现,但我暂时认为这超出了当前范围)。
贡献
如果你想为本项目做出贡献,请提交包含详细变更说明的拉取请求。
许可证
本项目采用 MIT 许可证授权。
版本历史
v1.37.02023/05/31v1.36.02023/05/16v1.35.02023/04/12v1.33.02023/03/27v1.32.02023/03/21v1.31.02023/03/18v1.29.02023/03/13v1.28.02023/03/08v1.27.02023/03/07v1.26.02023/03/06v1.25.02023/03/04v1.23.02023/03/03v1.22.02023/03/01v1.21.02023/02/27v1.20.02023/02/20v1.19.02023/02/18v1.17.22023/02/16v1.16.52023/02/15v1.16.02023/02/14v1.15.32023/02/14常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器