Skip to content

Latest commit

 

History

History
212 lines (149 loc) · 7.16 KB

zh-README.md

File metadata and controls

212 lines (149 loc) · 7.16 KB

Reverse Engineered ChatGPT API

无需API密钥在Python代码中使用OpenAI ChatGPT

Stargazers Forks Discussions Issues MIT许可证

English | 简体中文

报告Bug | 请求新功能

目录
  1. 关于本项目
  2. 开始使用
  3. 使用方法
  4. 路线图
  5. 贡献
  6. 许可证
  7. 联系方式
  8. 致谢

关于本项目

该项目可用于将OpenAI的ChatGPT服务集成到您的Python代码中。您可以使用这个项目直接从python中提示ChatGPT响应,而无需使用官方API密钥。

如果你想不通过ChatGPT Plus账户使用ChatGPT API,这将非常有用。

灵感来源

ChatGPT有一个官方API,可以用于将您的Python代码与之接口,但它需要使用API密钥。这个API密钥只能通过拥有ChatGPT Plus账户获得,这需要20美元/月(截至2023年5月11日)。但是,您可以通过使用ChatGPT网页界面免费使用ChatGPT。本项目旨在将您的代码与ChatGPT网页版本接口,这样您就可以在不使用API密钥的情况下在Python代码中使用ChatGPT。

工作原理

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("输入你的提示:")

    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="")

简单异步示例

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("输入你的提示:")

        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())

更多示例

要查看更复杂的示例,请查看存储库中的examples文件夹。

获取会话令牌

  1. 访问https://chat.openai.com/chat并登录或注册。
  2. 打开浏览器的开发者工具。
  3. 转到Application标签页并打开Cookies部分。
  4. 复制__Secure-next-auth.session-token的值并保存。

待办事项

  • 添加更多示例
  • 添加更好的错误处理
  • 实现检索所有ChatGPT聊天的功能
  • 改进文档

贡献

贡献是开源社区成为学习、启发和创造的绝佳场所的原因之一。您所做的任何贡献都非常感激

如果您有一个好的建议,可以使这个项目变得更好,请fork本仓库并创建一个拉取请求。 不要忘了给项目加星!再次感谢!

  1. Fork项目
  2. 创建您的功能分支(git checkout -b feature/AmazingFeature
  3. 提交您的更改(git commit -m 'Add some AmazingFeature'
  4. 推送到分支(git push origin feature/AmazingFeature
  5. 提交拉取请求

许可证

根据Apache许可证2.0分发。更多信息请参见LICENSE

联系/报告Bug

Zai-Kun - Discord Server

仓库链接: https://github.com/Zai-Kun/reverse-engineered-chatgpt

致谢