当 Loop 遇到 AI:用 LLM 做闭环决策层
前两篇聊的闭环,决策层都是硬编码规则——错误率超 50% 就降级,burn rate 超 14 倍就告警。规则的好处是确定性,坏处是死板。生产环境的故障千奇百怪,规则永远覆盖不全。
那能不能让 LLM 来做决策?能,但不是让 LLM 替代规则,而是让 LLM 和规则搭档。
规则的边界
硬编码规则处理不了的场景:
1. 多信号冲突。 CPU 高但错误率正常,该不该降级?规则说不该,但也许 CPU 高是因为某个慢查询在堆积,马上就要爆。规则看不到这种”即将爆”的信号。
2. 未知故障模式。 你只能为已知的故障写规则。新的故障模式出现时,规则是瞎的。
3. 上下文依赖。 大促期间 5% 错误率可能正常,平时 5% 就是灾难。规则可以加时间条件,但条件组合爆炸后比没有规则还难维护。
这些场景有一个共同点:需要理解上下文,而不仅仅是比较数值。LLM 擅长这个。
混合决策架构
核心思路:规则处理确定性逻辑,LLM 处理模糊判断,LLM 的输出必须经过规则校验。
1 | [指标数据] |
规则引擎走快速路径——毫秒级响应,处理明确的情况。LLM 走慢速路径——秒级响应,处理规则覆盖不了的情况。最后都过安全校验,防止 LLM 产出危险操作。
实现
规则引擎(快速路径)
1 | # rule_engine.py |
LLM 决策(慢速路径)
1 | # llm_decision.py |
安全校验层
LLM 可能输出任何东西,包括危险操作。校验层是最后防线:
1 | # safety_guard.py |
串起来
1 | # hybrid_loop.py |
Prompt as Rule:用 prompt 补充规则
硬编码规则的维护成本高,每次加规则要改代码、发版。另一种做法是把规则写成 prompt:
1 | ## 降级规则 |
这些规则用代码写要一堆 if-else,用 prompt 写一目了然。LLM 天然能理解这种自然语言规则。
但要注意:prompt 规则不能替代安全校验层。 prompt 可以被 LLM 误解、忽略,代码级的安全校验不能省。
降级策略:LLM 挂了怎么办
LLM 是外部依赖,它自己也会挂。闭环依赖 LLM 做决策,那 LLM 挂了闭环也挂了——这不行。
降级策略:
1 | def decide_with_fallback(metrics: dict) -> Decision: |
核心原则:LLM 是锦上添花,不是生死攸关。 没有 LLM,规则引擎也能跑,只是覆盖不了模糊场景。不能让 LLM 成为单点故障。
成本控制
LLM 调用不是免费的。每秒调一次 GPT-4,一个月下来账单好看不了。
控制成本的几个做法:
只在规则 escalate 时才调 LLM。大部分请求规则就能处理,LLM 只处理少数模糊场景。实际生产中大概 5-10% 的决策需要 LLM。
用快模型。决策不需要 GPT-4 级别的推理,用 GPT-4o-mini 或 GLM-4-Flash 就够。响应快,便宜。
缓存相似决策。同样的指标组合,LLM 的判断大概率一样。用指标特征的哈希做缓存 key:
1 | import hashlib, json |
- 设置每日调用上限。超了就回退纯规则模式。
什么时候适合用 LLM 做决策
不是所有闭环都需要 LLM。适合的场景:
- 多指标联合判断,规则写不全
- 有时间/业务上下文(大促、新版本上线、故障恢复中)
- 故障模式多样化,没法穷举规则
不适合的场景:
- 单指标阈值判断(规则就够了)
- 对延迟极度敏感(LLM 再快也要几百ms)
- 动作不可逆(LLM 可能误判,不可逆操作要人确认)
简单说:规则是主力,LLM 是替补。 替补上场时,安全校验必须在线。
相关阅读:
- Google SRE Book Chapter 6 - Handling Overload
- Amazon Build On - “Using ML for automated remediation”
-《Designing Data-Intensive Applications》第12章(数据系统的可靠性)