项目介绍:反向工程的ChatGPT API
项目概述
反向工程的ChatGPT API项目允许用户在Python代码中无须API密钥就能使用OpenAI的ChatGPT服务。这意味着,即使用户没有ChatGPT Plus账户,也可以免费将ChatGPT的功能集成到他们的代码中。
项目灵感
ChatGPT有一个官方API,用于将Python代码与其连接,但需要使用一个API密钥。而这个API密钥只有ChatGPT Plus账户的用户才能获得,每月费用为20美元(截至2023年5月11日)。然而,通过ChatGPT的网页版可以免费使用。这个项目正是为了能够让用户在Python代码中使用ChatGPT而不需要API密钥。
工作原理
项目通过反向工程ChatGPT网页版请求,将其直接集成到Python请求中。这样,使用该脚本发起的请求就像是用户直接在网站上进行的一样,因此是免费的,并且不需要API密钥。
使用技术
这个项目是基于Python语言构建的。
快速开始
先决条件
- Python版本需大于或等于3.9
安装步骤
用户可以通过以下命令安装所需的包:
pip install re-gpt
使用方法
简单示例
以下是一个简单的代码示例,展示如何使用这个项目:
from re_gpt import SyncChatGPT
session_token = "__Secure-next-auth.session-token here"
conversation_id = None # 这里填写会话ID
with SyncChatGPT(session_token=session_token) as chatgpt:
prompt = input("Enter your prompt: ")
if conversation_id:
conversation = chatgpt.get_conversation(conversation_id)
else:
conversation = chatgpt.create_new_conversation()
for message in conversation.chat(prompt):
print(message["content"], flush=True, end="")
异步示例
还可以使用异步的方法来对接ChatGPT:
import asyncio
import sys
from re_gpt import AsyncChatGPT
session_token = "__Secure-next-auth.session-token here"
conversation_id = None # 这里填写会话ID
if sys.version_info >= (3, 8) and sys.platform.lower().startswith("win"):
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
async def main():
async with AsyncChatGPT(session_token=session_token) as chatgpt:
prompt = input("Enter your prompt: ")
if conversation_id:
conversation = chatgpt.get_conversation(conversation_id)
else:
conversation = chatgpt.create_new_conversation()
async for message in conversation.chat(prompt):
print(message["content"], flush=True, end="")
if __name__ == "__main__":
asyncio.run(main())
如何获取Session Token
- 访问ChatGPT官网并登录或注册。
- 打开浏览器的开发者工具。
- 进入
Application
标签,打开Cookies
部分。 - 复制
__Secure-next-auth.session-token
的值并保存。
项目未来计划
- 增加更多使用示例
- 提高错误处理能力
- 实现一个函数以获取所有ChatGPT聊天
- 改进文档
贡献指南
开源社区因大家的贡献而变得如此生机勃勃。任何形式的贡献都非常欢迎!如果有改进建议,请先fork项目并创建一个pull request,记得给项目点个星哦!
- 分叉项目
- 创建自己的功能分支 (
git checkout -b feature/AmazingFeature
) - 提交更改 (
git commit -m 'Add some AmazingFeature'
) - 推送到分支 (
git push origin feature/AmazingFeature
) - 打开一个 Pull Request
许可证
本项目根据Apache许可协议2.0分发。
联系
项目作者:Zai-Kun
项目网址:访问GitHub仓库进行反馈和查看源码。
鸣谢
特别感谢以下开发者及团队对项目的间接贡献:
- sudoAlphaX
- yifeikong
- acheong08
- pyca
- Legrandin
- othneildrew