PanWatch AI 服务商 Failover 机制:DeepSeek 挂了自动切 Ollama 本地模型
【免费下载链接】PanWatchPanWatch — AI stock monitoring for A-shares, HK & US markets, powered by TradingAgents. Portfolio insights, real-time alerts & automated reports.|盯盘侠:覆盖 A股/港股/美股的 AI 盯盘、持仓分析、实时提醒与自动报告。项目地址: https://gitcode.com/GitHub_Trending/pa/PanWatch
做 AI 盯盘最怕什么?行情不等人,而 AI 服务商可能随时限流、超时甚至宕机。PanWatch(盯盘侠)针对 A 股 / 港股 / 美股的 AI 盯盘、持仓分析与自动报告,内置了一套模型级 Failover 机制:主模型(如 DeepSeek)调用失败时,系统按错误类别自动摘参重试或降级到下一个候选模型(例如本地 Ollama),并记录冷却窗口,让盯盘提醒、盘前分析、盘后日报这些关键链路"少停一秒是一秒"。
为什么要给 AI 调用做 Failover?
PanWatch 里几乎每个核心功能都要调用大模型:盘前分析、盘中监测、盘后日报、TradingAgents 深度分析、价格提醒的 AI 解读……它们都走同一条 AI 调用链路。一旦服务商故障:
- 超时 / 5xx:行情时段模型响应变慢,调用超时;
- 限流 / 配额耗尽:高频盯盘场景下 429 并不罕见;
- 鉴权失效 / 服务挂:Key 过期或服务端直接宕机。
没有降级能力时,这些失败会直接传导到用户:报告不生成、提醒不推送。PanWatch 的方案是借鉴数据源侧久经考验的负缓存冷却模式(kline_collector 的_FAIL_UNTIL),给 AI 调用补齐"主模型失败自动切备选"的运行时能力,核心实现就在 src/platform/ai/ai_failover.py。
三步看懂 Failover 的候选链
- 候选链构建:主模型排第一,其余按库里
is_default优先、id 顺序补齐(最多 3 个备选),全部复用"设置 → AI 服务商"里已配置的 OpenAI 兼容服务(OpenAI / 智谱 / DeepSeek / Ollama 均可),无需新增全局配置。 - 按错误类别分流:这是 Failover 的关键——不是所有失败都换模型。
- 冷却 + 恢复探测:失败候选进入 60 秒冷却窗口,窗口内直接跳过不再联网;窗口过期后自然再试,成功即清除冷却标记。
错误分类:三种处理策略
| 错误类别 | 典型场景 | 处理方式 |
|---|---|---|
| 参数不兼容 | 模型不接受temperature参数 | 摘掉参数重试同一模型一次 |
| 可降级 | 超时、5xx、限流(429)、鉴权失效(401)、服务挂 | 切到下一候选模型并记入冷却 |
| 致命错误 | prompt / 内容策略类错误 | 直接抛出(换模型也会同样失败) |
这套分流逻辑在 ai_failover.py 的classify_ai_error中实现;一个容易忽略的细节是401 鉴权失效也会触发切换——因为备用服务商(比如本地 Ollama)的 Key 可能依然有效,直接失败反而是浪费机会。
流式输出的特殊处理
AI 对话是流式输出的,这里有个安全边界:一旦已经向前端产出过 token,再失败就无法回滚,此时 Failover 不能"偷偷换模型"(否则回答会从一半开始变"口音")。因此流式路径只覆盖"首个 token 之前"的失败——首包之后异常直接透出给用户,这也是 ai_failover.py 中chat_stream的设计取舍。
怎么验证它生效了?
PanWatch 把 Failover 做成了可观测的:
used_model_label:实际跑通的模型标签会记入运行记录(agent_runs 落库),你在运行历史里看到的模型就是"真正干活的那个";- 切换告警日志:发生降级时打印带
trace_id的 warning 日志,排查时能直接串起整条链路; - 全量单测覆盖:tests/test_ai_failover.py 用 mock 覆盖了错误分流、冷却与恢复探测、流式切换边界、候选链构建等全部关键路径。
也就是说,当某天 DeepSeek 大面积限流,你看到的不是一堆报错,而是运行记录里的模型悄悄变成了Ollama/qwen2.5之类的本地模型——盯盘不停机,这就是 Failover 的意义。
快速上手:配置多服务商让 Failover 生效
- 设置 → AI 服务商:添加至少一个主服务商(如 DeepSeek)和一个备服务商(如本地 Ollama 的
http://localhost:11434/v1),均为 OpenAI 兼容 API; - 给备模型配置好 Key 与模型名,系统会自动按默认模型优先的顺序挂入候选链;
- 无需任何额外开关,Failover 随每次 AI 调用自动生效。
更多架构细节可阅读 src/ARCHITECTURE.md 与 README.zh-CN.md。
小结
PanWatch 的 AI Failover 机制用"错误分类 + 负缓存冷却 + 候选链降级"三板斧,把单点依赖某一家模型服务商的风险降到最低:参数问题就地修复,服务问题自动切换,内容问题快速失败不空转。对新手来说只需把两个服务商配好,剩下的交给它——行情不停,你的 AI 盯盘也不该停。
【免费下载链接】PanWatchPanWatch — AI stock monitoring for A-shares, HK & US markets, powered by TradingAgents. Portfolio insights, real-time alerts & automated reports.|盯盘侠:覆盖 A股/港股/美股的 AI 盯盘、持仓分析、实时提醒与自动报告。项目地址: https://gitcode.com/GitHub_Trending/pa/PanWatch
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考