Warp-GPT
由于需要准备毕业论文而没有时间修复问题,项目已归档。
作为一个刚开始学习Go语言的练手项目,仅供个人使用
- 对ChatGPT前端进行逆向工程,实现绕过Cloudflare
- 代理官方API
- 将前端接口转换为标准API(通过access_token实现标准API的访问) 端口列表
/backend-api/* (前端逆向接口)
/backend-api/conversation/ws (前端WS逆向为原数据流格式)
/api/* (前端逆向接口)
/public-api/* (前端逆向接口)
/v1/* (官方api代理)
/r/v1/chat/completions (前端接口转标准api,支持流式)
/r/v1/chat/completions/ws (前端WS转标准api,支持流式)
/r/ws/v1/chat/completions (功能相同,提供兼容)
/r/v1/images/generations (前端接口转标准api,不支持流式,仅支持gpt-4的账户)
/getsession (实现__Secure-next-auth.session-token刷新session,返回session,或输入用户名和密码输出session)
/token (获取ArkoseToken)
目前ws逆向仅支持3.5,4存在一些问题,取决于ip纯度,纯度高就能输出
/r/v1/chat/completions 方法:["GET", "POST", "OPTIONS"]
输入:
{
"model": "gpt-3.5-turbo-16k",
"messages": [
{
"role": "user",
"content": "你能做什么"
}
]
}
输出:
{
"id": "chatcmpl-m3mYrjKTZuoNARfQerON95UJlA9XSWBi",
"object": "chat.completion",
"created": 1701011706,
"model": "gpt-3.5-turbo-16k",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "我可以执行各种任务并提供各种主题的信息。以下是我能做的一些事情:\n\n1. 回答问题:我可以提供各种主题的信息,包括科学、历史、技术、数学等。\n\n2. 生成文本:我可以为各种目的生成文本,如写文章、创作故事、撰写邮件等。\n\n3. 语言翻译:我可以将文本从一种语言翻译成另一种语言。\n\n4. 数学辅导:我可以帮助进行数学计算、解方程以及提供解释。\n\n5. 编程帮助:我可以协助解答编码和编程相关的问题。\n\n6. 写作辅助:我可以帮助改进语法和提供写作建议,包括编辑和校对。\n\n7. 通用知识:我可以提供各种主题的一般知识和事实。\n\n8. 推荐:我可以为书籍、电影、音乐、旅游目的地等提供推荐。\n\n9. 对话和聊天:我可以就各种话题进行日常对话和聊天。\n\n10. 学习和教育:我可以协助学习并为学术科目提供解释。\n\n11. 解决问题:我可以帮助你头脑风暴想法、解决问题和做决定。\n\n12. 琐事和测验:我可以创建并参与琐事测验,回答琐事问题。\n\n请注意,我没有实时信息访问权限,我的知识更新截止到2022年1月,所以一些信息可能已过时,我无法提供当前新闻或事件。如果你有特定的任务或问题,请随时询问,我会尽力协助你!"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 0,
"completion_tokens": 0,
"total_tokens": 0
}
}
/r/v1/images/generations 方法:["GET", "POST", "OPTIONS"]
输入:
{
"model": "dall-e-3",
"prompt": "一只可爱的小海獭",
"n": 1,
"size": "1024x1024"
}
输出:
{
"created": 1701014049,
"data": [
{
"revised_prompt": "一只可爱的小海獭,看起来毛茸茸且惹人喜爱,有着大大的好奇眼睛,正仰躺在平静的蓝色海洋中。海獭的小爪子里握着一个小贝壳,它湿润的皮毛在阳光下闪闪发光。背景是一片宁静的海景,有着轻柔的波浪和晴朗的天空。",
"url": "https://files.oaiusercontent.com/file-fqEmsHBijHGkBKo0CnYIAfCJ?se=2023-11-26T16%3A54%3A09Z&sp=r&sv=2021-08-06&sr=b&rscc=max-age%3D31536000%2C%20immutable&rscd=attachment%3B%20filename%3Daa87dac2-8142-419d-9fe1-afa90c0a376e.webp&sig=xjwmZhzC3fZSF7V6TJ5hTWkmxBOMiVQKs0v/wTJRvAM%3D"
}
]
}
/getsession 方法:["POST"]
输入:
{
"refreshCookie":""
}
或
{
"username":"",
"password":""
}
输出:
{
"user": {
"id": "",
"name": "",
"email": "",
"image": "",
"picture": "",
"idp": "auth0",
"iat": 1701014297,
"mfa": false,
"groups": [],
"intercom_hash": ""
},
"expires": "2024-02-24T15:58:17.821Z",
"accessToken": "",
"authProvider": "auth0",
"models": [
{
"slug": "text-davinci-002-render-sha",
"max_tokens": 8191,
"title": "默认(GPT-3.5)",
"description": "我们最快的模型,适合大多数日常任务。",
"tags": [
"gpt3.5"
],
"capabilities": {},
"product_features": {}
}
],
"refreshCookie": ""
}
/token/:id 方法:["GET"]
例如:/token/0A1D34FC-659D-4E23-B17B-694DCFCF6A6C
输出:
{
"token": ""
}
代码部署
配置文件
- 在harPool目录中添加har文件,实现登录验证和gpt4对话验证(获取har教程)
- 复制一份.env.temp文件,并将其重命名为.env,修改配置项后保存
proxy = "http://127.0.0.1:10809" #代理地址(可选)
port = 5000 #程序运行端口
host = '127.0.0.1' #可访问IP,0.0.0.0允许所有IP
verify = false #是否对访问进行验证
auth_key = "" #若开启访问验证,则需要在Header中添加AuthKey字段,且值为auth_key的值才能访问(可选)
arkose_must = false #是否强制gpt3.5进行验证
OpenAI_HOST = "chat.openai.com" #openai网页api接口地址(可选)
openai_api_host = "api.openai.com" #openai官方api接口(可选)
proxy_pool_url="" #ipidea代理池链接(可选)
#示例http://api.proxy.ipidea.io/getProxyIp?num=10&return_type=json&lb=1&sb=0&flow=1®ions=us&protocol=http,根据访问频次设置num值
log_level = "debug" #日志等级
redis_address = "127.0.0.1:6379" #redis地址(若不开启代理池可选)
redis_passwd = "" #redis密码
redis_db = 0 #选择的redis数据库
其中proxy_pool_url使用的是ipidea的代理池,注册赠送100M流量,无限IP,有效期一个月,足够用于测试 使用代理池后需要填写redis信息,redis版本需要7或以上
运行
go build && ./WarpGPT
Docker部署
首先克隆代码
git clone https://github.com/oliverkirk-sudo/WarpGPT.git
cd WarpGPT
正确配置.env文件,在harPool中放入har文件 (其中host应该设置为0.0.0.0)
docker build -t warpgpt .
docker run -d -p 5000:5000 warpgpt
许可证
Apache-2.0