Skip to content
NanGao's Blog
Go back

什么是观测系统?

最近花了很多精力在deer-flow观测系统的设计上,老实说作为一个在前AI时代非架构师的程序员,很少会有机会像现在这样花如此之多的时间去打磨设计,我很享受这个过程,所以想在blog上开一个系列记录下我觉得值得记录的一些东西。

今天在deer-flow的周会上,发现社区内的很多人都对Agent系统的观测和Eval非常感兴趣,但我从交流的过程中发现了观测和数据收集这两个概念在被提及的时候,我没有办法本能地去区分这两个概念,所以我打算用这个系列的第一篇理一理最基础的概念——什么是观测系统?人们在使用观测系统的时候到底在做什么?

观测这个动作所得到的结果是证据(Evidence)而不是事实(Fact),作为一个观测系统它永远不可能直接得到事实。怎么理解这句话?想象人们使用天文望远镜看火星,永远只能通过火星反射的光来观测,作为观测器本身——望远镜永远无法越过光这个媒介直接观测火星本身,在人们收集到光的成像后,基于成像(对应第一句话中的证据)对火星做出一些声明,而这些声明会被后续的分析视为事实。

到这里可能会收到质疑:“观测软件又不是观星,我们可以在被测系统内插桩来获取最原始的数据”,这里我想引用操作系统中的observer effect概念,探针会消耗cpu、改变时序,甚至还会帮助一些bug隐藏(著名的Heisenbug),而且在AI Agent System中 observer effect 会更加的明显,如果你的”插桩”是往 prompt 里加输出要求(“请同时报告你的推理步骤”)、或在循环里插入自我评估调用,你就修改了模型看到的上下文,而 LLM 的行为对上下文敏感。你测到的是”被要求自我报告的 Agent”的行为,不是原 Agent 的行为。(这也是为什么被动观测在 Agent 观测里格外珍贵:它是少数几乎零 observer effect 的手段)

带着observer effect这个视角再回来看这句话——“观测系统它永远不可能直接得到事实”,它其实也没有那么糟了,因为它至少不会改变被观测的系统,它要做的只是使用那些收集到的数据进行推理得到一个带有置信度(Confidence)的声明(Claim)。

“证据到声明“这个过程就是观测系统区别于数据收集器的一个重大的差异,数据收集器只是很客观地在反应系统的在某个时间点的状态,Langsmith和Langfuse已经把这件事做的不错了,但之所以我不认为它们可以被为观测系统的原因是,他们并不能做到从证据到声明这一步,而这一步正是观测系统的核心功能。

所以观测系统更像是从大量的采集数据中剥离出所需的数据,并使用数据逼近系统事实的一个系统行为解释模型。



Next Post
我们应该观测什么?