• This repository has been archived on 20/Jul/2023
  • Stars
    star
    350
  • Rank 121,229 (Top 3 %)
  • Language
    JavaScript
  • Created over 1 year ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

封装 OpenAI 网页版最新 ChatGPT 接口, 不需要使用 API Key, 完全免费

chatgpt-api

封装 OpenAI 网页版最新 ChatGPT 接口, 不需要使用 API Key, 完全免费


最近没有精力维护, 请移步以下项目


方式一

docker run -d -p 3000:3000 zhuweiyou/chatgpt-api:20230424

方式二

安装 nodejs 18.x 环境

npm install --production
npm start

程序会打印 Listening on http://localhost:3000 表示启动成功

方式三

Fork 本项目, 在 vercel.com 添加你自己的仓库, 创建一个 Node.js 应用, 即可一键完成部署

vercel 的云函数免费版限制 10 秒超时, 回答很长的内容不一定好用, 还是建议部署到你自己机器

想要快速测试? 可以将文档中的 BASE_URL 更换成我部署在 vercel 的地址

https://zhuweiyou-chatgpt-api.vercel.app

使用文档

BASE_URL http://localhost:3000

POST Body 格式为 x-www-form-urlencoded

第一步: 获取网页版 access_token

方式一: POST /get_access_token 登录获取

  • email OpenAI 帐号 (不支持谷歌/微软授权登录)
  • password OpenAI 密码

成功响应

{
    "access_token": "token内容"
}

get_access_token截图

获取成功之后建议缓存本地, 不用每次都调用获取

如果出现 fetch failed 大概率是墙了, 你也可以 Fork zhuweiyou/chatgpt-auth 自建 auth 服务

方式二: 如果方式一获取失败, 或者你是谷歌/微软帐号注册的 OpenAI, 可以手动登录获取

访问 https://chat.openai.com/chat 成功登录之后, 打开浏览器开发者工具 (F12) -> 刷新页面- > Network 找到 /api/auth/session 请求, 复制 accessToken 存到你本地配置

截图

方式三: 如果方式二你上不去官网, 可以尝试以下方式更简单获取

点击这里获取 token

第二步: 向 ChatGPT 提问

POST /send_message

不消耗免费额度, 也不需要花钱

  • access_token 在 [第一步] 中获取的 access_token
  • prompt 提问内容
  • model 可选. 默认 gpt-3.5-turbo, 如果你是 ChatGPT Plus 账号可以传入 gpt-4 来切换模型
  • timeout 可选. 超时时间(毫秒), 默认无限等待
  • conversation_id 可选. 前一次 /send_message 的结果中返回, 用于上下文连续会话
  • parent_message_id 可选. 前一次 /send_message 的结果中返回, 用于上下文连续会话
  • reverse_proxy 可选. 反向代理服务器, 用于绕过 cloudflare 人机验证
    1. https://ai.fakeopen.com/api/conversation (当前默认)
    2. https://api.pawan.krd/backend-api/conversation

成功响应

{
    "text": "ChatGPT的回答",
    "conversation_id": "xxx",
    "parent_message_id": "yyy"
}

send_message截图

以上所有 API 失败响应

HTTP Status Code: 500

{
    "message": "错误消息"
}