官方获取地址
https://platform.openai.com/overview登录后访问:https://chat.openai.com/api/auth/session
更新
**10 四月 2023**
这个包现在完全支持 GPT-4!🔥
我们还刚刚发布了一个 TypeScript chatgpt-plugin 包,其中包含帮助程序和示例,可以尽可能轻松地开始在 JS/TS 中构建自己的 ChatGPT 插件。即使您还没有 ChatGPT 插件的开发人员访问权限,您仍然可以使用 chatgpt-plugin 存储库在本地构建自己的插件。
如果您有权访问该模型,则可以运行以下命令来使用 GPT-4 测试 CLI:gpt-4
npx chatgpt@latest --model gpt-4 "Hello world"
我们仍然支持官方 ChatGPT API 和非官方代理 API,但我们现在建议使用官方 API,因为它明显更强大并支持 GPT-4。
方法 | 自由? | 强大的? | 质量? |
---|---|---|---|
ChatGPTAPI |
❌ 不 | ✅ 是的 | ✅️ 真正的 ChatGPT 模型 + GPT-4 |
ChatGPTUnofficialProxyAPI |
✅ 是的 | ❌ No️ | ✅ ChatGPT 网络应用程序 |
注意:我们强烈建议使用,因为它使用 OpenAI 官方支持的 API。我们可能会在将来的版本中删除对 的支持。ChatGPTAPI``ChatGPTUnofficialProxyAPI
ChatGPTAPI``gpt-3.5-turbo
- 将该模型与官方 OpenAI 聊天完成 API 一起使用(官方的、强大的方法,但它不是免费的)
ChatGPTUnofficialProxyAPI
- 使用非官方代理服务器以规避 Cloudflare 的方式访问 ChatGPT 的后端 API(使用真正的 ChatGPT,非常轻量级,但依赖于第三方服务器并且有速率限制)
命令行界面
要运行 CLI,您需要一个 OpenAI API 密钥:
export OPENAI_API_KEY="sk-TODO"
npx chatgpt "your prompt here"
默认情况下,响应将流式传输到 stdout,结果存储在本地配置文件中,并且每次调用都会启动一个新会话。您可以使用继续上一个对话并禁用流式传输。-c``--no-stream
Usage:
$ chatgpt <prompt>
Commands:
<prompt> Ask ChatGPT a question
rm-cache Clears the local message cache
ls-cache Prints the local message cache path
For more info, run any command with the `--help` flag:
$ chatgpt --help
$ chatgpt rm-cache --help
$ chatgpt ls-cache --help
Options:
-c, --continue Continue last conversation (default: false)
-d, --debug Enables debug logging (default: false)
-s, --stream Streams the response (default: true)
-s, --store Enables the local message cache (default: true)
-t, --timeout Timeout in milliseconds
-k, --apiKey OpenAI API key
-o, --apiOrg OpenAI API organization
-n, --conversationName Unique name for the conversation
-h, --help Display this message
-v, --version Display version number
如果您有权访问该模型,则可以运行以下命令来使用 GPT-4 测试 CLI:gpt-4
安装
npm install chatgpt
确保您正在使用 so is available(或者如果您安装了 fetch polyfill)。node >= 18``fetch``node >= 14
用法
要从 Node.js 使用此模块,您需要在两种方法之间进行选择:
方法 | 自由? | 强大的? | 质量? |
---|---|---|---|
ChatGPTAPI |
❌ 不 | ✅ 是的 | ✅️ 真正的 ChatGPT 模型 + GPT-4 |
ChatGPTUnofficialProxyAPI |
✅ 是的 | ❌ No️ | ✅ 真正的 ChatGPT 网络应用程序 |
ChatGPTAPI
将该模型与官方 OpenAI 聊天完成 API(官方的、强大的方法,但它不是免费的)一起使用。您可以覆盖模型、完成参数和系统消息,以完全自定义您的助手。gpt-3.5-turbo
ChatGPTUnofficialProxyAPI
使用非官方代理服务器以规避 Cloudflare 的方式访问 ChatGPT 的后端 API(使用真正的 ChatGPT,非常轻量级,但依赖于第三方服务器并且有速率限制)
这两种方法都具有非常相似的 API,因此在它们之间切换应该很简单。
注意:我们强烈建议使用,因为它使用 OpenAI 官方支持的 API,并且还支持 .我们可能会在将来的版本中删除对 的支持。ChatGPTAPI``gpt-4``ChatGPTUnofficialProxyAPI
用法 - ChatGPTAPI
注册 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)
}
您可以使用以下命令覆盖默认 () 和任何 OpenAI 聊天完成参数:model``gpt-3.5-turbo``completionParams
const api = new ChatGPTAPI({
apiKey: process.env.OPENAI_API_KEY,
completionParams: {
model: 'gpt-4',
temperature: 0.5,
top_p: 0.8
}
})
如果要跟踪对话,则需要传递如下内容:parentMessageId
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?', {
parentMessageId: res.id
})
console.log(res.text)
// send another follow-up
res = await api.sendMessage('What were we talking about?', {
parentMessageId: res.id
})
console.log(res.text)
您可以通过处理程序添加流式处理:onProgress
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
})
我们默认为基本的 .您可以在构造函数中覆盖它,或者:systemMessage``ChatGPTAPI``sendMessage
const res = await api.sendMessage('what is the answer to the universe?', {
systemMessage: `You are ChatGPT, a large language model trained by OpenAI. You answer as concisely as possible for each responseIf you are generating a list, do not have too many items.
Current date: ${new Date().toISOString()}\n\n`
})
请注意,我们会自动处理将以前的消息附加到提示符中,并尝试针对可用令牌进行优化(默认为 )。4096
用法 - ChatGPTUnofficialProxyAPI
的 API 几乎完全相同。您只需要提供 ChatGPT 而不是 OpenAI API 密钥。ChatGPTUnofficialProxyAPI``accessToken
import { ChatGPTUnofficialProxyAPI } from 'chatgpt'
async function example() {
const api = new ChatGPTUnofficialProxyAPI({
accessToken: process.env.OPENAI_ACCESS_TOKEN
})
const res = await api.sendMessage('Hello World!')
console.log(res.text)
}
有关完整示例,请参阅 demos/demo-reverse-proxy:
npx tsx demos/demo-reverse-proxy.ts
ChatGPTUnofficialProxyAPI
消息还包含 ,因为 ChatGPT 网络应用程序无法跨不同帐户和对话引用消息。conversationid``parentMessageId
反向代理
您可以通过传递以下命令来覆盖反向代理:apiReverseProxyUrl
const api = new ChatGPTUnofficialProxyAPI({
accessToken: process.env.OPENAI_ACCESS_TOKEN,
apiReverseProxyUrl: 'https://your-example-server.com/api/conversation'
})
由社区成员运行的已知反向代理包括:
反向代理 URL | 作者 | 速率限制 | 上次检查 |
---|---|---|---|
https://ai.fakeopen.com/api/conversation (失效) |
@pengzhile | 5 个请求 / 10 秒 IP | 4/18/2023 |
https://api.pawan.krd/backend-api/conversation (失效) |
@PawanOsman | 50 要求 / 15 秒 (~3 r/s) | 3/23/2023 |
注意:目前尚未发布有关反向代理如何工作的信息,以防止 OpenAI 禁用访问。
访问令牌
要使用 ,您需要来自 ChatGPT 网络应用程序的 OpenAI 访问令牌。为此,您可以使用以下任一方法,这些方法采用 and 并返回访问令牌:ChatGPTUnofficialProxyAPI``email``password
- Node.js 库
- Python 库
这些库适用于电子邮件+密码帐户(例如,它们不支持您通过Microsoft / Google进行身份验证的帐户)。
或者,您可以通过登录 ChatGPT Web 应用程序然后打开 来手动获取 ,这将返回一个包含您的字符串的 JSON 对象。accessToken``https://chat.openai.com/api/auth/session``accessToken
访问令牌将持续数天。
注意:使用反向代理会将您的访问令牌暴露给第三方。这应该不会产生任何不良影响,但在使用此方法之前请考虑风险。
文档
有关方法和参数的详细信息,请参阅自动生成的文档。
演示
大多数演示都使用 .如果您更愿意使用这种方法,将它们转换为使用应该很容易。唯一需要更改的是如何使用 而不是 .ChatGPTAPI``ChatGPTUnofficialProxyAPI``accessToken``apiKey
要运行包含的演示,请执行以下操作:
- 克隆存储库
- 安装节点 deps
- 在 .env 中设置
OPENAI_API_KEY
包含一个基本演示,用于测试目的:
npx tsx demos/demo.ts
npx tsx demos/demo-on-progress.ts
on progress 演示使用可选参数来接收中间结果,因为 ChatGPT 正在“打字”。onProgress``sendMessage
对话演示:
npx tsx demos/demo-conversation.ts
持久性演示展示了如何在 Redis 中存储消息以实现持久性:
npx tsx demos/demo-persistence.ts
任何 keyv 适配器都支持持久性,如果您想使用不同的方式来存储/检索消息,则可以覆盖。
请注意,持久化消息对于记住当前 Node.js 进程范围之外的先前对话的上下文是必需的,因为默认情况下,我们只将消息存储在内存中。下面是一个使用完全自定义的数据库解决方案来持久保存消息的外部演示。
注意:持久性在使用时会自动处理,因为它间接连接到 ChatGPT。ChatGPTUnofficialProxyAPI
欢迎指出任何有错误或不够清晰的表达,可以在下面评论区评论。