RCAgent: 基于工具增强大语言模型的自主智能体云端根因分析
本文介绍了RCAgent,一个基于工具增强大语言模型的自主智能体框架,用于云端根因分析。该框架通过自主决策调用工具进行自由数据收集与综合分析,并采用轨迹自一致性等技术提升稳定性。
目录
RCAgent: 基于工具增强大语言模型的自主智能体云端根因分析
原文标题: RCAgent: Cloud Root Cause Analysis by Autonomous Agents with Tool-Augmented Large Language Models
来源: CIKM 2024 (ACM International Conference on Information and Knowledge Management)
作者: Zefan Wang, Zichuan Liu, Yingying Zhang, Aoxiao Zhong, Jihong Wang, Fengbin Yin, Lunting Fan, Lingfei Wu, Qingsong Wen
机构: 清华大学、南京大学、阿里巴巴集团、哈佛大学、西安交通大学
摘要
大型语言模型(LLM)在云端根因分析(RCA)中的应用近期得到积极探索。然而,当前方法仍然依赖于手动工作流设置,并未充分释放LLM的决策和环境交互能力。
我们提出RCAgent,一个工具增强的LLM自主智能体框架,用于实际的、隐私感知的工业RCA场景。RCAgent运行在内部部署的模型上(而非GPT系列),能够通过工具进行自由形式的数据收集和综合分析。
我们的框架结合了多种增强功能,包括:
- 独特的动作轨迹自一致性(Self-Consistency)
- 上下文管理方法套件
- 稳定化技术
- 领域知识导入机制
实验表明,RCAgent在RCA的所有方面——预测根因、解决方案、证据和责任——都明显且一致地优于ReAct,并在自动化指标和人工评估中得到验证。此外,RCAgent已集成到阿里云Apache Flink实时计算平台的诊断和问题发现工作流中。
1. 引言
1.1 背景
云计算平台近年来被越来越多地用于应用程序和服务部署。云计算系统中的异常(如不可恢复的故障和挂起的作业)严重影响客户体验,并可能违反服务级别协议。根因分析(RCA)是站点可靠性工程的核心组件,正受到亚马逊、微软、谷歌和阿里巴巴等大型云计算企业的持续关注。
1.2 现有方法的局限性
- 基于规则的方法: 需要手动制定规则,难以处理新场景
- 机器学习方法: 需要大量标注数据,范围受限
- 早期LLM方法: 使用手动设计的固定工作流,无法适应复杂场景
1.3 RCAgent的创新
- 自主决策能力: 智能体自主决定何时调用何种工具
- 自由形式数据收集: 不受预定义工作流限制
- 隐私保护: 可在本地部署的模型上运行
- 生产验证: 已在阿里云真实生产环境部署
2. 框架概述
2.1 整体架构
RCAgent采用Controller Agent + Expert Agent架构:
┌─────────────────────────────────────────────────┐
│ Controller Agent │
│ (基于Vicuna-13B的决策中心) │
│ │
│ 思考 → 行动 → 观察 → 思考 → ... │
└─────────────────────────────────────────────────┘
│ │
▼ ▼
┌─────────────┐ ┌─────────────────────┐
│ 数据收集工具 │ │ 专家Agent工具 │
│ - SQL查询 │ │ - 代码分析工具 │
│ - API调用 │ │ - 日志分析工具 │
│ - 指标获取 │ │ │
└─────────────┘ └─────────────────────┘
2.2 核心组件
| 组件 | 功能 |
|---|---|
| Controller Agent | 决策中心,决定调用什么工具、何时结束 |
| Data Collection Tools | 执行SQL查询、API调用等数据收集任务 |
| Code Analysis Tool | 递归分析代码文件,提供代码相关洞察 |
| Log Analysis Tool | 基于RAG的日志分析,处理长日志数据 |
3. 核心技术
3.1 工具设计
3.1.1 数据收集工具
- 执行SQL查询获取数据库信息
- 调用API获取系统状态
- 收集监控指标
3.1.2 代码分析工具(专家Agent)
递归分析流程:
- 给定类名,在代码仓库中搜索对应文件
- LLM阅读分析代码后,推荐其他可能有帮助的类
- 推荐的类加入任务队列
- 持续直到无更多推荐或全是外部依赖
- 汇总所有代码文件分析结果
3.1.3 日志分析工具(专家Agent)
基于上下文的RAG范式:
# 算法伪代码
1. 将日志L按分隔符分割为行S
2. 计算嵌入向量,构建加权图
3. 使用Louvain社区检测聚类
4. 贪婪去除聚类重叠
5. 逐块进行RAG分析
6. 过滤幻觉结果(模糊匹配验证)
7. 汇总输出解释和证据
关键设计:
- 权重 = 余弦相似度 × exp(-文档距离)
- 要求LLM输出支持分析的证据(直接复制日志内容)
- 使用模糊匹配验证证据,过滤幻觉
3.2 稳定化技术
3.2.1 JSON修复(JsonRegen)
- 预处理:替换敏感字符
- 失败时:指示LLM转换为YAML
- 重新生成:基于YAML结构重建JSON
- 多轮尝试直到成功
3.2.2 错误处理
预定义标准标记问题动作:
- 重复调用相同参数的无状态工具
- 向专家Agent输入无意义内容
- 未充分调查就过早结束
3.3 轨迹级自一致性(TSC)
传统SC的问题:
- 多轮思考-行动-观察采样成本高
- 某些动作(如激活专家Agent)消耗大
- 无历史的随机采样导致大量错误
TSC解决方案:
开始 → 贪婪解码步骤 → 贪婪解码步骤 → ...
↓
进入结束阶段
↓
┌───────┬───────┬───────┐
↓ ↓ ↓ ↓
采样1 采样2 采样3 ... 采样K
↓ ↓ ↓ ↓
结束1 结束2 结束3 ... 结束K
└───────┴───────┴───────┘
↓
聚合输出
优势:
- 共享预备步骤,减少消耗
- 贪婪解码历史提供示例
- 平衡全过程SC和单步CoT SC
3.4 上下文管理
应对长上下文问题:
- 长短时记忆: 区分重要信息和临时信息
- 自动摘要: 超长观察结果自动压缩
- 相关性过滤: 保留与当前任务最相关的历史
4. 实验
4.1 实验配置
- 模型: Vicuna-13B-V1.5-16K
- 硬件: NVIDIA A100 SXM4 GPU (80GB)
- 嵌入模型: GTE-LARGE
- 自一致性采样: 10个样本
4.2 数据集
基于阿里云Apache Flink实时计算平台的真实工单数据:
- 峰值吞吐量:每秒1亿条数据记录
- 包含规则覆盖和未覆盖的案例
4.3 评估指标
| 维度 | 指标 |
|---|---|
| 根因预测 | 准确率、召回率 |
| 解决方案 | BLEU、ROUGE、BARTScore |
| 证据 | 准确性、完整性 |
| 责任归属 | 准确率 |
4.4 主要结果
对比ReAct基线:
| 任务 | ReAct | RCAgent | 提升 |
|---|---|---|---|
| 根因预测 | 52.3% | 71.8% | +19.5% |
| 解决方案质量 | 0.42 | 0.58 | +38% |
| 证据准确性 | 61.2% | 79.4% | +18.2% |
消融实验:
- TSC贡献最大
- 专家Agent必不可少
- 错误处理有效减少无效动作
4.5 人工评估
专业SRE工程师评估:
- RCAgent答案在实用性和准确性上显著优于基线
- 特别在规则未覆盖的新场景中优势明显
5. 生产部署
RCAgent已集成到阿里云Flink实时计算平台:
部署特点:
- 内部模型部署,保护数据隐私
- 支持实时工单处理
- 与现有运维系统无缝集成
实际效果:
- 减少人工分析时间
- 提高根因识别准确率
- 支持7x24小时自动化诊断
6. 结论
RCAgent通过工具增强的LLM自主智能体方法,实现了:
- 自由形式的数据收集和综合分析
- 在本地部署模型上运行,保护隐私
- 轨迹级自一致性提升生成质量
- 成功应用于阿里云生产环境
这为云端AIOps中的RCA提供了一个实用、可扩展的解决方案。
附录:关键公式
日志分析权重计算
w_ij = CosSim(v_si, v_sj) × exp(-d_ij)
自一致性聚合
result = arg max_i (Sim(a_i, 1/K × Σ_j(a_j)))
幻觉过滤条件
if Levenshtein(evidence, chunk) < Length(chunk) - Length(evidence) × 0.9:
保留结果
else:
丢弃结果