背景:为什么要做这个项目
我觉得就是说,要投递那些需要善用AI的岗位,这个就是一个很好的项目,除非就是说,要求善用AI只是写着玩,并没有真正的需求,只是这个时代如此,他也写一个这个上去了
整体架构
三大Agent:知识库Agent,对话agent,运维agent
一个服务通常可以分为几层来看,对于该系统而言,也是如此,分为如下几层
1.接入层:对外提供API接口
2.业务层:利用服务层的组件进行编排,负责向接入层提供编排完成可使用的agent
3.服务层:核心组件实现层,如加载文件,切分文件,提供工具等。负责向业务层提供原子能力,支撑Agent的编排
4.存储层:文档信息我们存储到向量数据库中
知识库RAG
大概就是把原始文档(如业务告警处理手册)切割为多个语义完整的片段
提问后,将用户问题向量化,去向量数据库里面进行相似度匹配,查询最相似的10个片段
使用专门计算文本相似度的模型,逐个对计算用户问题与每个召回片段的语义相关性
生成:选出最相似的3个片段+用户问题,交给大模型,让大模型根据提供的3个片段进行回答
对话agent
对话Agent的核心目标是结合外部知识(RAG召回)与工具调用能力(ReAct模式),解决复杂问题。
整体流程可概括为:
1.从向量数据库中获取与用户问题相关的上下文信息
2.构建带上下文(召回的内容)的systemprompt
3.使用ReAct模式进行多轮交互
4.最终输出答案
第1次循环:思考->行动->观察
举一个技术场景的例子,问题:地球和火星的质量加起来是多少?(AI不知道具体数值,需要调用工具)
思考:我需要地球和火星的质量,得先查地球质量。行动:调用查星球质量工具,输入地球
观察:工具返回地球质量≈5.97x1024kg
第2次循环:再思考->行动->观察
思考:有了地球质量,还缺火星的,继续查火星。
行动:调用查星球质量工具,输入火星
观察:工具返回火星质量≈6.42x1023kg
第3次循环:再思考->行动->观察
思考:现在有两个数了,需要相加,得用计算器。
行动:调用计算器工具,输入5.97e24+6.42e23
观察:工具返回≈6.61x1024kg
结束循环:结果够了,可以回答用户了,地球和火星的质量加起来是6.61x1024kg
运维agent
运维agent的核心目标是将运维人员的告警处理经验转换为自动化流程,通过计划生成->工具执行->动态调整的闭环,替代人工完成重复性告警排查工作
整体架构可概括为:
- 从向量数据库中获取与告警相关的上下文信息
- 构建带上下文(召回的内容和工具信息)的system prompt
- 使用Plan-Execute-Replan模式进行多轮交互
a. Planner生成结构化排查计划
c. Executor调用监控/日志工具执行步骤
d. Replanner评估结果,决定继续执行/调整计划/输出结论 - 最终输出答案
选型分析:大模型应用开发框架
大模型应用开发框架选型
我这里选择Python生态框架(如:LangChain、LangGraph、LlamaIndex)