聊天GPT API
官方 ChatGPT API 的 Node.js 客户端。
介绍
该包是 OpenAI 围绕 ChatGPT 的 Node.js 包装器。含 TS 电池。
更新
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 上关注我 帮助支持该项目。
谢谢&&干杯,特拉维斯
命令行界面
要运行 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
安装
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 上关注我