pplx代理
反向代理 困惑.ai --使用您现有的 Pro/Max订阅cookie 通过标准API访问所有模型。
显示三个接口:
- 与OpenAI兼容的REST API (
/v1/chat/completions)--流媒体、工具调用、思考 - MCP服务器 (流式HTTP+SSE)——5个内置工具
- 调试聊天界面 (
/chat)--使用实时OpenAI格式验证测试所有内容
运作原理
Perplexity的web前端通过内部SSE端点与后端通信(/rest/sse/perplexity_ask).此代理通过以下方式使用您的会话cookie进行身份验证 curl-cffi (Chrome TLS指纹识别),将请求/响应转换为OpenAI和MCP格式,并自动保持会话活动。
无需API官方密钥,只需订阅即可。
所有查询都使用 search_focus: "internet" --困惑的内置网络搜索始终处于活动状态,因此模型直接在答案中返回实时数据(股票价格、天气、新闻)。
特性
- 完全符合OpenAI格式 —
system_fingerprint,logprobs,适当usage算术,所有字段均符合规范 - 工具调用 --通过三层假阳性防御的提示注入进行OpenAI风格的函数调用
- 思考/推理 —
thinking: true或reasoning_effortparam,推理流式传输reasoning_content - 帐户层支持 --free/pro/max——只公开您的层可以访问的模型
- 自动发现 --后台任务每24小时检查一次模型运行状况,版本更改时自动升级
- 响应清洗 --strips困惑引文
[1][2], `标签,声明,` 标签 - 速率限制跟踪 --跟踪Pro Search配额,耗尽时自动回退到空闲模式,每5次递减时通知一次
- 会话连续性 --轨道困惑
backend_uuid因此,后续操作将完全跳过历史记录/指令,只发送新的查询 - 会话保持活动状态 --定期ping可防止cookie过期
- 提醒推送 — ntfy.sh cookie过期或型号升级警报
- 调试聊天界面 —
/chat带有工具切换、思维切换、流媒体切换和 OpenAI格式验证器 - 动态模型管理 -在运行时通过管理员API添加/删除模型
- 完整输入验证 --为每个格式错误的请求发送正确的错误消息
快速开始
git clone https://github.com/jamie950315/pplx-proxy.git
cd pplx-proxy
python3 -m venv venv
venv/bin/pip install -r requirements.txt
cp .env.example .env
# Edit .env — set PPLX_COOKIE and ACCOUNT_TYPE
venv/bin/uvicorn server:app --host 0.0.0.0 --port 8892然后打开 http://localhost:8892/chat 使用调试UI进行测试。
获取您的Cookie
- 登录 困惑.ai
- F12 → 应用 → Cookie →
www.perplexity.ai - 复制
__Secure-next-auth.session-token - 集
PPLX_COOKIE=在.env
模型
| 模型ID | 后端 | 层 | 思维变体 |
|---|---|---|---|
auto | 困惑最佳 | 免费+ | -- |
sonar | 声纳 | pro+ | -- |
gpt | GPT-5.4 | 专业版+ | gpt54_thinking |
sonnet | 克劳德·十四行诗4.6 | 专业版+ | claude46sonnetthinking |
gemini | Gemini 3.1 Pro | Pro+ | 始终开启 |
nemotron | Nemotron 3超级版 | 专业版+ | 始终开启 |
opus | 克劳德作品4.6 | 最大 | claude46opusthinking |
思维变体通过以下方式激活 thinking: true 或 reasoning_effort 参数--不需要单独的模型名称。
API终点
| 方法 | 路径 | 身份验证 | 描述 |
|---|---|---|---|
GET | /health | 否 | 健康检查 |
GET | /chat | 没有 | 使用OpenAI格式验证器调试聊天UI |
GET | /v1/models | 是 | 列出可用型号 |
POST | /v1/chat/completions | 是 | 聊天(流媒体+非流媒体+工具+思考) |
POST | /v1/responses | 是 | OpenAI响应API兼容性(由LobeHub网络搜索使用) |
POST | //mcp | 键入URL | MCP可流式HTTP |
GET | //sse | 键入URL | MCP SSE |
GET | /admin/models | 是 | 完整模型地图 |
POST | /admin/update-models | 是 | 添加/替换模型 |
POST | /admin/refresh-cookie | 是 | 注入新的会话令牌 |
POST | /admin/discover-models | 是 | 运行模型发现 |
用法
OpenAI API
# Basic chat
curl -X POST http://localhost:8892/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "sonnet", "messages": [{"role": "user", "content": "Hello"}], "stream": true}'
# With thinking
curl -X POST http://localhost:8892/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "gpt", "messages": [{"role": "user", "content": "Analyze X"}], "thinking": true}'
# With tool calling
curl -X POST http://localhost:8892/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "sonnet",
"messages": [{"role": "user", "content": "Weather in Tokyo"}],
"tools": [{"type": "function", "function": {"name": "get_weather", "description": "Get weather", "parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]}}}]
}'调试聊天界面
打开 http://localhost:8892/chat (或 https://your-domain/chat)在浏览器中:
- 切换 工具开/关 测试工具调用
- 切换 思考 测试推理模式
- 切换 流 流媒体与非流媒体
- 原始选项卡:显示完整的请求/响应JSON
- 格式✓ tab:使用PASS/FAIL徽章根据OpenAI规范验证每个响应字段
主控程序
API密钥是MCP身份验证的URL路径的一部分:
# Claude Code
claude mcp add pplx-proxy --transport http http://localhost:8892/YOUR_API_KEY/mcp
# SSE transport
# Connect to http://localhost:8892/YOUR_API_KEY/sse没有 PPLX_PROXY_API_KEY 设置后,MCP将回退到未经身份验证 /mcp/mcp 和 /sse/sse.
MCP工具:
| 工具 | 说明 |
|---|---|
perplexity_search | 通过型号/来源选择进行专业搜索 |
perplexity_ask | 快速自动模式问答 |
perplexity_reason | 模型选择推理 |
perplexity_research | 深入研究 |
perplexity_models | 列出您所在层的可用型号 |
OpenAI格式合规性
所有回复都严格匹配 OpenAI聊天完成API规范:
id(chatcmpl-\*),object,created,model,system_fingerprint(空)choices[].index,choices[].logprobs(null),choices[].finish_reasonusage.total_tokens=prompt_tokens+completion_tokens- 流媒体:一致
id,system_fingerprint在每一块,适当[DONE]终止 - 工具调用:
id(call\_\*),type(功能),function.name,function.arguments(有效的JSON字符串)
使用 /chat 进行目视验证 --格式✓ 选项卡对每个响应运行20多次检查。
自动发现
每 PROBE_INTERVAL_HOURS (默认24小时),pplx代理检查模型是否仍然有效。如果一个死亡。, gpt54 → gpt55 → ... 高达+1.0)和自动升级。思维变体是自动衍生出来的 _THINKING_MAP.
手动触发: POST /admin/discover-models
配置
| 变量 | 默认值 | 描述 |
|---|---|---|
PPLX_COOKIE | -- | 会话令牌(必需的) |
PPLX_PROXY_API_KEY | -- | 承载身份验证(空=无身份验证) |
ACCOUNT_TYPE | pro | free, pro,或 max |
DEFAULT_MODEL | gpt | 未指定时为默认值 |
PPLX_PROXY_PORT | 8892 | 监听端口 |
CUSTOM_PROMPTS | file | 每个LobeHub请求前都会添加本地提示块 |
KEEPALIVE_HOURS | 6 | 会话ping间隔 |
PROBE_INTERVAL_HOURS | 24 | 自动发现间隔 |
NTFY_TOPIC | pplx-proxy | ntfy.sh主题 |
NTFY_URL | https://ntfy.sh | ntfy服务器URL |
NTFY_COOLDOWN_SECS | 3600 | 警报之间的最小间隔 |
PUBLIC_URL | http://localhost:8892 | ntfy消息中的URL |
PPLX_API_VERSION | 2.18 | 困惑内部API版本 |
PPLX_IMPERSONATE | chrome | curl_cffi TLS指纹 |
USER_AGENT | Chrome/130 | HTTP用户代理 |
COOKIE_MAX_AGE_HOURS | 168 | Cookie缓存的最大期限 |
LOG_LEVEL | INFO | 日志记录级别 |
部署(systemd)
sudo cp pplx-proxy.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now pplx-proxyCookie生命周期
Manual inject → keep-alive every 6h → session stays alive indefinitely
↓ (if Perplexity force-revokes)
ntfy alert → manual re-inject不使用SSH重新注入:
curl -X POST https://your-domain/admin/refresh-cookie \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"session_token": "NEW_TOKEN"}'关键实施说明
为什么模型说“我无法访问实时数据”: 此代理必须处理导致困惑模型忽略自己的搜索结果的三个问题:
search_focus: "internet"必须在每个请求中设置。没有它,困惑默认为"writing"模型不包含搜索结果的模式。这是唯一最重要的参数。
- 必须删除或替换系统提示 在发送到困惑之前。困惑会搜索所有查询文本——如果系统提示说“你是一名人工智能助手”,困惑会找到聊天机器人教程页面,模型会感到困惑。通用客户端只保留白名单批准的行;LobeHub请求完全丢弃上游提示内容。
- LobeHub请求总是预置本地
CUSTOM_PROMPTS. 代理仍然检测到role: developer以及类似系统提示的用户消息,因此它可以对请求源进行分类,但这些上游提示块永远不会被转发。每次LobeHub转弯都会发送instructions=[CUSTOM_PROMPTS]加上保存history和电流query.
- 速率限制跟踪 使用FlareSolverr(localhost:8191)轮询Perplexity的
/rest/rate-limit/all带有会话cookie的端点。需要FlareSolverr在本地运行。当remaining_pro达到0时,所有非汽车型号都将回退到auto(免费套餐)。
有关完整的技术故障,请参阅CLAUDE.md,有关诊断步骤,请参阅MANUAL.md故障排除部分。
免责声明
个人使用的非官方反向代理。依赖于Perplexity的内部web API,该API可能会在不另行通知的情况下更改。负责任地使用。
许可证
麻省理工学院
