整体架构
我们先给出整体的服务架构图,简单来说我们的智能OnCall系统有三大Agent:知识库Agent,对话Agent、运维Agent。
这个的架构图可能一时半会还不能完全看懂,没关系,先有个印象就行,后续章节会进行抽丝剥茧的讲解,后面的实战章节也会层层递进更详细的分析。
📷 [图片 token=QKQEbFTjyo4JH5xQLYCcCvW6nUg(未能下载,见飞书原文)]
层次结构
一个服务通常可以分为几层来看,对于智能OnCall Agent系统而言,同样如此,系统可以分为如下几层:
接入层:对外提供api接口
业务层:利用服务层的组件进行编排,负责向接入层提供编排完成可使用的Agent
服务层:核心组件实现层,如加载文件,切分文件,提供工具等。负责向业务层提供原子能力,支撑Agent的编排
存储层:文档信息我们存储到向量数据库中
编排流程
下面介绍最核心的三个Agent的编排流程,这三个Agent贯穿整个项目。
注意:初览下面的流程图,或许会觉其逻辑脉络稍显繁复——不必急于一时。待你通读完《架构设计》篇章,再折返审视,其内在关联便会豁然开朗。
注意:有些术语看不懂没关系,后续篇幅会详细介绍,先有个概念即可!!!
知识库RAG
整体流程分为两部分:
提问前链路(数据准备)
分片:将原始文档(如业务告警处理手册)切割为多个语义完整的片段。
索引:
- 用Embedding模型将每个片段转为向量。
- 将片段文本和向量存入向量数据库。
- 完成后,知识库即构建完毕,等待用户提问。
提问后链路(回答生成)
召回:将用户问题向量化,去向量数据库里面进行相似度匹配,查询最相似的10个片段(快但准度低)。
重排:使用专门计算文本对相似度的模型,逐对计算用户问题与每个召回片段的语义相关性(慢但准度高)。
生成:选出最相似的3个片段+用户问题,交给大模型,让大模型根据提供的3个片段进行回答。
📷 [图片 token=FxcdbnrjboDxkExZLJlc0FHInCh(未能下载,见飞书原文)]
对话Agent
对话Agent的核心目标是结合外部知识(RAG召回)与工具调用能力(ReAct模式),解决复杂问题。
整体流程可概括为:
从向量数据库中获取与用户问题相关的上下文信息
构建带上下文(召回的内容)的system prompt
使用ReAct模式进行多轮交互
最终输出答案
举一个技术场景的例子,问题:地球和火星的质量加起来是多少?(AI 不知道具体数值,需要调用工具)
第1次循环:思考->行动->观察
- 思考:我需要地球和火星的质量,得先查地球质量。
- 行动:调用查星球质量工具,输入地球
- 观察:工具返回地球质量≈5.97×10²⁴ kg
第2次循环:再思考->行动->观察
- 思考:有了地球质量,还缺火星的,继续查火星。
- 行动:调用查星球质量工具,输入火星
- 观察:工具返回火星质量≈6.42×10²³ kg
第3次循环:再思考->行动->观察
- 思考:现在有两个数了,需要相加,得用计算器。
- 行动:调用计算器工具,输入5.97e24 + 6.42e23
- 观察:工具返回≈6.61×10²⁴ kg
结束循环:结果够了,可以回答用户了,地球和火星的质量加起来是6.61×10²⁴ kg。
flowchart TD
Start([开始]) --> Input[/接收用户问题
地球和火星质量总和?/]
Input --> Reason{思考}
Reason -->|1. 制定计划: 需地球质量| R1[思考
需要地球质量,先查询地球]
R1 --> A1[行动
调用工具查询地球质量]
A1 --> O1[观察
返回: 5.97×10²⁴ kg]
O1 --> Reason
Reason -->|2. 继续执行: 需火星质量| R2[思考
已有地球质量,还需火星质量]
R2 --> A2[行动
调用工具查询火星质量]
A2 --> O2[观察
返回: 6.42×10²³ kg]
O2 --> Reason
Reason -->|3. 继续执行: 需计算总和| R3[思考
数据齐全,需要计算总和]
R3 --> A3[行动
调用计算器工具]
A3 --> O3[观察
返回总和: 6.61×10²⁴ kg]
O3 --> Reason
Reason -->|4. 拥有足够信息| Answer[生成最终答案]
Answer --> End([结束])
ReAct = Reasoning(推理)+ Acting(行动),核心是让 AI 像人一样 边想边做、边做边调整,通过 思考->行动->观察->再思考的闭环 解决问题。
ReAct 就是让 AI 模仿这个过程:遇到问题不直接瞎猜答案,而是先想该查什么,再调用工具(比如计算器、数据库、搜索引擎),拿到结果后判断够不够,不够就继续查,直到能给出最终答案。
📷 [图片 token=Qa7WbrNlpoYHMxxyiGYcFFnsnNd(未能下载,见飞书原文)]
运维Agent
运维Agent的核心目标是将运维人员的告警处理经验转化为自动化流程,通过计划生成->工具执行->动态调整的闭环,替代人工完成重复性告警排查工作。
整体架构可概括为:
从向量数据库中获取与告警相关的上下文信息
构建带上下文(召回的内容和工具信息)的system prompt
使用Plan-Execute-Replan模式进行多轮交互
Planner生成结构化排查计划
Executor调用监控/日志工具执行步骤
Replanner评估结果,决定继续执行/调整计划/输出结论
最终输出答案
用大白话举个例子:想象你要装修一套新房,完全没经验的话,你会怎么避免手忙脚乱?
Plan(规划):先找设计师出详细方案,拆改哪里、水电怎么走、用什么材料、分几个阶段施工,形成清晰的步骤清单。
Execute(执行):施工队按计划开工,先拆旧、再布水电,一步一步推进当前阶段的任务。
Replan(重规划):施工中发现原计划的承重墙不能拆,则设计师重新调整布局(比如把书房门改到另一侧),更新计划后继续施工,直到最终完工。
📷 [图片 token=F387bGybOoq8gxx16aicmwqlnBr(未能下载,见飞书原文)]
Plan-Execute-Replan 就是让 Agent 模仿这个过程:遇到复杂任务不盲目动手,而是先设计方案,再按图施工,遇到问题时灵活调整方案,确保最终达成目标。
📷 [图片 token=LQLAbT2aIodUbJxqJEdcgtqVnJd(未能下载,见飞书原文)]