SuperAPI AI 工具集

ag2-observers-and-alerts

智能体与模型

查看项目

更新于 10-15 19:49

技能介绍

用途:为 AG2 智能体提供可观测性与运行时安全。可记录模型响应、工具调用和 token 用量,拦截危险工具参数并中止智能体,按每 N 次响应或每 T 秒触发指标,检测无限工具调用循环,以及需要记忆历史事件的有状态监控。

两种观察者形态:无状态函数用 @observer(EventType) 做一次性事件钩子;有状态类继承 BaseObserver,用于计数器、窗口、阈值和组合触发器。两者都注册在 agent 上,而非直接注册到 stream。

用法:用 observers=[...] 传入 Agent,或用 @agent.observer(...) 事后附加,也支持按次调用 agent.ask("...", observers=[...])。回调支持依赖注入(Context、Inject、Variable、Depends),可按事件类型、多类型或字段值过滤,interrupt=True 可在常规订阅者之前修改或抑制事件。

内置有状态观察者:TokenMonitor 跟踪累计 token,跨阈值发出 WARNING/CRITICAL 告警,可用 monitor.total_tokens 读取状态;LoopDetector 用滑动窗口检测连续重复工具调用并发出 WARNING。

自定义 BaseObserver 将 Watch(何时触发)与 process()(做什么)配对。Watch 原语包括 EventWatch、CadenceWatch(n 或 max_wait)、DelayWatch、IntervalWatch、CronWatch,以及 AllOf、AnyOf、Sequence 组合。回调统一为 async def cb(events, ctx),时间驱动型 Watch 的 events 为空列表。

告警:ObserverAlert 含 source、severity(INFO/WARNING/CRITICAL/FATAL)和 message。默认 provider 映射不会把告警回传给 LLM,需在 assembly=[...] 中加入 AlertPolicy()。FATAL 会触发 HaltEvent 并短路下一次 LLM 调用。

限制与注意:AlertPolicy 的去重状态在实例上,每个 agent 应各用一个;没有 AlertPolicy 则 FATAL 不会中止;时间驱动 Watch 的 events 恒为空;BaseObserver.process 必须为 async;CadenceWatch 必须至少提供 n 或 max_wait,否则抛 ValueError。