poe-api-wrapper
一个账号调用全网大模型:Poe.com 非官方 Python API 封装,支持 GPT-4/Claude/Llama 等
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
一个账号调用全网大模型:Poe.com 非官方 Python API 封装,支持 GPT-4/Claude/Llama 等
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下,Poe.com 是一个游乐场,里面住着各种 AI 机器人——GPT-4、Claude、Gemini、Llama、Code Llama……大多数需要付费订阅才能畅玩。但 Poe 同时也开放了部分免费机器人的访问接口,代价是你得自己动手"逆向"出这个接口在哪里、怎么调用。
poe-api-wrapper 就是这个"钥匙工厂"。
它由独立开发者 snowby666 构建,通过抓取 Poe.com 前端与后端之间的 GraphQL 通信协议,将这些非公开接口封装成一套完整的 Python SDK。有了它,你可以在本地 Python 代码里直接调用 GPT-3.5-Turbo、Claude-3.5-Sonnet(免费版)、Gemini 等模型——无需付费订阅,只要有一个 Poe 账号即可。
图1:poe-api-wrapper 项目封面图
Poe.com 是 Quora(美国知乎)于 2023 年初推出的 AI 聊天平台,背后有 OpenAI 和 Anthropic 的支持。它一次性聚合了主流大模型,并提供了统一的聊天界面。但 Poe 的官方 API 于 2023 年底才姗姗来迟,且初期只向部分开发者开放内测。
在官方 API 缺失的那段时间,大量开发者社区对"如何程序化调用 Poe 模型"有着强烈需求。poe-api-wrapper 正是在这一空白期诞生的——它的核心原理是模拟浏览器登录 Poe、获取 p-b 和 p-lat 等 Cookie Token,然后通过 GraphQL 请求与 Poe 后端通信。
项目于 2023 年 8 月首次提交,到 2025 年 8 月仍有活跃更新。虽然作者在 README 顶部明确标注了"不再积极维护(no longer actively maintained)",并建议改用 Poe 官方 API,但该项目依然获得了 1105 Stars 和 141 Forks 的社区认可——说明这个需求从未消失。
poe-api-wrapper 的功能矩阵相当完整,涵盖消息自动化、对话管理和 Bot 管理三大块:
消息层(Message Automation)
这是项目的核心能力。支持创建新对话线程、发送消息、流式接收回复(Streaming)、发送并发消息、重试上一条消息、发送附件(文本/图片/媒体文件)、获取推荐回复、停止生成、删除对话线程、清除上下文、清除单 Bot 历史、清除全部历史、获取历史消息、分享和导入消息、获取引用来源(Citations)。这一套操作几乎覆盖了与 AI 对话的全生命周期管理。
Bot 层(Bot Management)
可以查询 Bot 信息、可用模型列表、创建自定义 Bot、编辑 Bot、删除 Bot。这使得开发者可以在 Poe 平台上构建自己的 AI 助手,并通过 API 自动化管理它们。
知识库层(Knowledge Base)
为自定义 Bot 上传和管理知识库文档。这是企业级 RAG(检索增强生成)场景的基础能力——你可以让 Bot 基于私有文档回答问题。
探索层(Discovery)
查询可用 Bot 列表、用户 Bot 列表、分类目录、第三方 Bot 和用户信息。这使得 poe-api-wrapper 不只是个人工具,也可以用来构建 Bot 聚合平台。
群组聊天(Bots Group Chat)
创建多 Bot 群聊,让 GPT-4、Claude、Llama 在同一个对话中协作回答问题。这是一种有趣的"模型Ensemble"实验方式。
该项目最实用的功能之一是 OpenAI Proxy Server。通过 pip install 'poe-api-wrapper[llm]' 安装扩展依赖后,可以启动一个兼容 OpenAI API 格式的本地代理服务器:
from poe_api_wrapper import PoeServer
tokens = [{"p-b": "...", "p-lat": "..."}]
PoeServer(tokens=tokens, address="0.0.0.0", port=8080)
启动后,代码可以用标准的 OpenAI SDK 调用 Poe 上的模型:
import openai
client = openai.OpenAI(api_key="anything", base_url="http://127.0.0.1:8080/v1/")
response = client.chat.completions.create(model="gpt-3.5-turbo", messages=[...])
支持的端点包括 /v1/models、/v1/chat/completions(流式/非流式)、/v1/images/generations、/v1/images/edits,基本上覆盖了主流使用场景。这意味着大量已有的 OpenAI 应用(如 LangChain、AutoGen、各种开源 Agent 框架)可以通过简单地改 base_url 来无缝切换到 Poe 模型。
代码结构清晰地分为同步客户端(api.py,88KB)和异步客户端(async_api.py,92KB)两套实现:
| 模块 | 用途 |
|---|---|
api.py | 同步客户端,基于 httpx 的同步 HTTP 调用 |
async_api.py | 异步客户端,基于 httpx[http2] 的异步 HTTP 调用,支持高并发 |
queries.py | GraphQL 查询构建,封装所有 Poe API 请求格式 |
bundles.py | Bot 绑定逻辑 |
utils.py | 工具函数 |
proxies.py | 代理配置 |
cli.py | 命令行入口,提供 poe -b ... -lat ... -f ... 接口 |
openai/ | OpenAI 兼容代理服务器实现(FastAPI + Twisted) |
核心依赖中,httpx[http2] 负责 HTTP/2 多路复用请求,websocket-client 处理流式响应的 WebSocket 通道,quickjs 用于执行 JavaScript 获取 formkey(绕过 Poe 的反爬机制),loguru 和 rich 负责日志和终端美化,nest-asyncio 解决异步嵌套问题,aiofiles 支持异步文件操作。
并发安全考量:README 提到可以传入多个 Token 账户实现负载均衡,但 GraphQL 会话状态依赖 Cookie,多账户并发时需要小心 Token 管理——这也是官方 API 更可靠的原因之一。
免费部分:GPT-3.5-Turbo(chinchilla)、Claude-3.5-Sonnet(4K版本)、Claude-instant、Claude-3-Haiku、GPT-4o、GPT-4o-Mini、Code Llama 等均可免费使用(受限额度)。
付费部分:GPT-4-Turbo、Claude-3-Opus、GPT-4o-128k、Gemini-1.5-Pro-2M 等需要 Poe 订阅用户权限。
前提条件:需要手动从浏览器 DevTools 提取 p-b 和 p-lat Cookie,流程略繁琐但文档说明详细。作者还提供了自动获取 formkey 的机制,减少了用户配置负担。
1. 法律灰色地带:项目本质是对 Poe.com 私有 API 的逆向工程,依赖非公开接口。Poe 的服务条款可能对此有限制,项目作者也明确标注"不再维护"、推荐使用官方 API——这本身就是一种风险提示。
2. 稳定性风险:非官方 API 没有 SLA 保证,Poe 任何一次前端更新都可能导致接口失效。Issues 区已有部分"接口不工作"的反馈。
3. 安全顾虑:Cookie Token 等同于账号凭证,如果代码中硬编码或泄露 Token,有账号被盗风险。
4. 维护状态:作者已声明不再积极维护,长期使用者需要自己 fork 并维护。
poe-api-wrapper 的存在折射出一个更大的命题:当大模型的访问权被少数平台垄断时,开发者社区总会有人尝试"降本增效"。类似的逆向封装项目在 GPT-4 API 早期高价时代屡见不鲜。
它也证明了 OpenAI 兼容层的重要性——正是这种接口标准化,使得应用层代码不需要因为后端切换而重写。从这个角度看,poe-api-wrapper 的 OpenAI Proxy Server 功能是它最有长期价值的部分:即使 Poe 未来彻底封堵非官方接口,这套代理模式可以迁移到其他提供 OpenAI 兼容接口的平台。
# 安装
pip install -U poe-api-wrapper
# 异步调用示例
from poe_api_wrapper import AsyncPoeApi
import asyncio
tokens = {'p-b': 'YOUR_TOKEN', 'p-lat': 'YOUR_TOKEN'}
async def main():
client = await AsyncPoeApi(tokens=tokens).create()
async for chunk in client.send_message(bot="gpt4_o", message="Hello!"):
print(chunk["response"], end='', flush=True)
asyncio.run(main())
CLI 模式:
poe -b YOUR_P_B -lat YOUR_P_LAT
本报告由 PIFS 自动分析生成,分析时间:2026-06-15