poe-openai-proxy
将 Poe.com 免费 AI 模型转换为 OpenAI API 格式的轻量代理,无需付费即可让现有应用接入 ChatGPT/GPT-4
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
将 Poe.com 免费 AI 模型转换为 OpenAI API 格式的轻量代理,无需付费即可让现有应用接入 ChatGPT/GPT-4
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你在本地跑着一个 AI 写作助手应用,底层调用的是 OpenAI ChatGPT API,响应流畅、功能完善——唯一的遗憾是,每千 Token 都要收费,高频使用时账单让人肉疼。
而 Poe.com(Quora 旗下的 AI 对话平台)提供了 ChatGPT、GPT-4、Claude 等多个模型,免费使用,无需付费订阅。你手里有一个 Poe 账号,但你的应用只认 OpenAI API 格式,无法直接接入。
poe-openai-proxy 正是为解决这个问题而生:它是一个轻量级的 HTTP 代理服务器,将「逆向工程版 poe-api」封装成「OpenAI ChatGPT API」的调用格式,让你已有的应用零改动接入 Poe,免费使用各大模型。只需把 API 地址从 https://api.openai.com 换成 http://localhost:3700,一切照旧,费用归零。
poe-openai-proxy 由独立开发者 juzeon 创建,仓库地址为 juzeon/poe-openai-proxy。它依赖的核心库是 ading2210/poe-api,后者是社区对 Quora Poe 平台通信协议进行逆向工程的 Python 成果。
这类逆向工程项目的存在,折射出开源社区对"平台锁定"的一贯态度:API 应当开放,数据应当可迁移,工具应当可以被自由组合。juzeon 在项目中明确致谢了 poe-api 的作者,体现了对上游工作的尊重。
从技术角度看,项目的设计哲学非常务实——不做过度封装,只做协议转换。proxy 本身不承担任何 AI 推理计算,只负责把 OpenAI 格式的请求翻译成 Poe 协议格式,将响应再翻译回 OpenAI 格式后返回。这种"翻译层"架构让代码量极小(Go 源码不到 300 行),维护成本低,稳定性高。
项目的架构设计值得细细拆解。整体由两个服务进程组成,通过 docker-compose 协同工作:
Python 网关进程(external):运行修改版的 poe-api,封装了与 Poe.com 的 WebSocket 通信协议。在 external/api.py 中,通过 Flask + Flask-Sock 提供 WebSocket 端点。Poe 平台通过 WebSocket 推送流式响应,网关进程负责维持 WebSocket 连接、处理 token 注册和消息下发。
Go API 代理进程(主服务):使用 Gin 框架提供 HTTP REST 接口,接收 OpenAI 格式的请求(POST /v1/chat/completions),通过 WebSocket 与 Python 网关通信获取模型响应,最终以 OpenAI 兼容的 SSE(Server-Sent Events)流式格式返回给客户端。
两者之间通过 config.toml 中的 gateway 配置项协同:Go 进程通过 HTTP POST 到 http://external:5100/add_token 注册 token,通过 WebSocket 连接到 ws://external:5100/stream 获取流式响应。
这种双进程设计并非过度复杂化,而是 PoE 协议本身的复杂性决定的——Poe 使用 WebSocket 双向通信,而 Go 程序直接处理 WebSocket 与 HTTP 协议转换会带来不必要的耦合,Python 层专注协议,Go 层专注 API 呈现,分工清晰。
poe-openai-proxy 并不是简单的请求转发,它提供了几个实用的配置能力:
模型映射:通过 config.toml 的 [bot] 节,可以将 OpenAI 模型名称映射到 Poe 的机器人昵称。例如:
gpt-3.5-turbo → chinchilla(ChatGPT 3.5)gpt-4 → beaver(GPT-4)gpt-3.5-turbo-0301 → a2(Claude-instant)gpt-4-0314 → a2_2(Claude+)这意味着即使你使用的应用硬编码了 gpt-4 模型名,proxy 也会自动将其转换为 Poe 上的 beaver 机器人,几乎实现了对所有主流模型的兼容。
速率限制与冷却:每个 token 每分钟默认最多 10 次调用,同一 token 3 秒内不得重复使用。这些参数完全可配置,在 config.toml 中调整 rate-limit 和 cool-down 即可。
流式响应:支持标准的 SSE 格式,与 OpenAI ChatGPT API 完全兼容。这意味着 Cursor、Warp、Open Interpreter 等已经接入 OpenAI API 的第三方工具,可以无缝使用本代理。
角色模拟开关:simulate-roles 配置控制消息格式。单轮对话(纯 user 消息)可以不加角色前缀,多轮对话时自动加上 ||>User: / ||>Assistant: 格式,兼容那些依赖角色信息的工具(如 shell_gpt)。
poe-openai-proxy 对部署体验的打磨非常用心。只需三步:
cp config.example.toml config.toml,填入 Poe tokendocker-compose up -dhttp://localhost:3700/v1/chat/completions无需安装 Go、Python、pip 依赖,docker-compose 自动构建两个镜像(Go 1.20-alpine + Python),整个过程全自动。
虽然没有 Web UI,但这是一个纯 API 服务,API 服务本来就不需要 UI。项目明确标注了支持的路由:/models、/chat/completions、/v1/models、/v1/chat/completions,以及支持的参数:model、messages、stream,与 OpenAI 官方文档完全一致。
必须正视这个项目的几个问题:
Poe 账号限制:使用代理的前提是你拥有 Poe 账号。每个账号的可用模型和调用频率受 Poe 平台政策限制,Poe 可以随时调整免费额度甚至封禁账号。项目作者在 README 中也明确指出这是"reverse-engineered"(逆向工程)的项目,存在被 Poe 反制的风险。
Token 获取门槛:Poe token 不能直接注册获得,需要从浏览器 cookie 中提取(p-b=xxx 格式)。这个过程涉及手动操作浏览器,对非技术用户有一定门槛。
长期可用性问题:逆向工程 API 的最大隐患是不可持续性。Poe 每次更新网站架构,poe-api 就可能失效,进而影响整个代理的可用性。项目最近一次提交是 2025 年 6 月,需关注是否仍在维护。
非官方用途风险:使用逆向工程 API 访问 Poe 可能违反平台服务条款,用于商业场景需自行评估法律风险。
poe-openai-proxy 的出现,反映了 AI 领域一个持续存在的矛盾:OpenAI 的 API 能力最强,但价格让个人开发者和爱好者望而却步;而免费使用的平台(如 Poe)却将能力锁在专有客户端里,不开放标准 API。
这个项目用最小成本弥合了这个鸿沟。它的成功也说明了 API 兼容性(OpenAI API 格式成为"事实标准")在 AI 生态中的主导地位——只要你能模拟 OpenAI 的 API 格式,就能无缝接入整个工具生态。
从 Stars 增长曲线看,该项目获得 457 个 GitHub Stars,属于小而美的工具型项目。它的存在价值不在于替代官方 API,而在于为 AI 爱好者提供一个零成本的实验场,以及为开发者提供一个快速验证 AI 集成方案的轻量工具。
总结:poe-openai-proxy 是一个精巧的协议桥梁,用 Go + Python 双进程架构将逆向工程的 Poe API 转换为标准 OpenAI ChatGPT 接口。优点是部署极简(docker-compose 一键启动)、兼容性强(模型映射覆盖主流)、代码轻量(Go 核心 < 300 行);缺点是依赖逆向工程(存在账号封禁风险)和非官方(法律风险自担)。适合技术爱好者免费体验 AI 模型,不建议用于生产环境和商业项目。