ChatGPT API 接入简介
ChatGPT API 接入简介

ChatGPT API 接入简介

Status
Publish
Tags
ChatGPT
Property
Column
Feb 10, 2023 09:52 AM
⚠️ 请千万不要在公司内和上班时间做这些事情

接入方式

ChatGPT 暂时没有提供公开的 API 目前主要的接入方式有三种
  1. 使用浏览器 + Puppeteer + 注入 JS 模拟接入.
    1. 免费, 资源消耗高
        • 由于 CloudFlare 的 AntiBot 能力 需要运行 有头浏览器
        • 偶发遇到 CAPTCHA , 之前必现, 现状已经不出现了, 我没有遇到过
    2. 使用体验最好, 但是单条消息返回慢
    3. 具备 (50/60)/Hour 的 RateLimit , 且同时只能处理一条消息.
  1. 使用泄漏的模型
    1. API Key 方式
    2. 已经收费
    3. 目前体验最接近 ChatGPT 的模型 优于 GPT3
    4. 没有官网公开, 被一群人穷举出来的模型名
    5. 使用 text-chat-davinci-002-20221122 模型
        • 但是目前已经收费 而且容易过载 (503)
  1. 使用 GPT3 模型 收费,效果一般,最常用
    1. 目前最常见的方式 使用 text-davinci-003
  1. Proxy 方案
      • 采用前置一个 browser 作为 Proxy 来跳过 CF 的检测
      • Server 部分使用 Session Token 进行直接交互
       
  1. 冷门思路
    1. 通过浏览器插件的形式来和 ChatGPT 进行交互, 太冷门了 就不做描述了

基础库

Node:
  • 4.* 版本使用 APIkey 方案接入
  • 3.* 版本使用 Browser 方案接入
Python
  • ChatGPT
    acheong08Updated Dec 5, 2023
    • 最新版也采用了 APIKey 的方式接入
    • V1 版本 Browser 方案
    • 目前支持了 Proxy 方案的接入, 可以在不启动 Browser 的情况下提供 Browser 方案的接入,性能占用很少。
    •  
其他语言:
  • 目前都是 APIKEY 方案, 不列举了

上层解决方案

目前似乎只有我做了一个 🤔 欢迎补充,:)
  • 支持多个 Account 并提供 API
https://github.com/bytemate/chatapi

实现细节

APIKEY:

APIKEY 版本通过模型的自动补全能力来构造 promote
构造一个类似这样的数据, 然后让 OpenAI 的模型进行补全
You are ASSISTANT, a large language model trained by OpenAI. You answer as concisely as possible for each response (e.g. don't be verbose). It is very important that you answer as concisely as possible, so please remember this. If you are generating a list, do not have too many items. Keep the number of items short. Current date: 2022-02-08 USER:帮我看看这个...<1 im_endl> ASSISTANT: 你应该....<1im_ endl> USER: 然后呢?<1im_end > ASSISTANG:
  • 上下文需要自己进行保存, 每次调用的时候带上, 由于 OpenAI 使用 Token 计费, 很贵.

Browser

Browser 方案是使用前端的具备交互能力的 API 接口, 每条 Conversation 具备一个 Conversation id, 每个 message 具备 message id, 如果需要进行交互, 需要每次调用的时候带上对应的 ID, 第一次可以随机生成 UUID 使用.
参考数据结构如下
{ "action": "next", "messages": [ { "id": str(uuid.uuid4()), "role": "user", "content": {"content_type": "text", "parts": [prompt]}, }, ], "conversation_id": conversation_id, "parent_message_id":uuid.uuid4(), "model": "text-davinci-002-render", }
  • Conversation 无限制
  • 官方的 Conversation 删除逻辑本质就是给 Conversation 设置可见性
  • 由于 CloudFlare 的限制, 你无法获取 Cookie 后直接调用这个接口
    • 其实不是不行, 但是你需要注意 SSL 握手的时候指纹保持一致, 同时也需要不断刷新 Token
    • Cloudflare 的跳过难度一般, 有兴趣可以研究, 但是代价是更新比较快....
  • Plus 版本可能没有 50/60/h RateLimit

一些小提示

  • 对于 ChatGPT Overload 的时候 无法登录, 可以不断刷新来挤进去
  • 已经登录的 ChatGPT 账号, 在保持浏览器连接的情况下 不会收到 Overload 影响
  • 频繁更换 IP 会导致 CF 触发 Antibot 页面
  • 单 IP 多 APIKEY 很大概率会导致封号
  • 每个 APIKEY 注册以后都包含 18 刀
  • 使用 Browser 方案应该是违反用户协议的, 我只是测试, 没有这么用过.
  • 已知 Browser 登录会 Ban 掉一部分地区的 IP, 其中包含香港 , 所以在选择 VPN 的时候请注意不要使用香港的节点.
    • 台湾/香港/印度 都不太行
  • Provide by @
    • apikey 的限流是按照账号所属的 org 来限制的,即 org 级别的限流,同一个 org 下多个 apikey 不解决限流问题
    • 账号注册需要🪜和国外的手机号,🪜自备,手机号可以在 https://sms-activate.org/# 里用支付宝解决
  • Notion 的 AI 也是 ChatGPT 的模型提供服务, 可以曲线救国体验
  • 其他是一些不太方便提示的🛝
感谢其他不方便提及名字的同学对内容的一些贡献