avira-nithinmudunuri/enterprise-incident-langgraph

GitHub: avira-nithinmudunuri/enterprise-incident-langgraph

基于 LangGraph 和 Google Gemini 构建的六智能体企业 IT 事件响应流水线,将工单、日志和指标自动转化为结构化的高管事件报告。

Stars: 0 | Forks: 0

# 企业事件智能与响应系统 — LangGraph 版本 一个基于 **LangGraph** 和 **Google Gemini** 构建的多智能体 IT 事件响应流水线。六个专门的 AI 智能体协同工作 —— 就像一个企业 事件作战室 —— 将原始的工单、日志和指标数据转化为一份精致的、 适合高管阅读的事件报告。 这是最初使用 CrewAI 构建的系统的 LangGraph 重新实现, 旨在探索相同的多智能体工作流如何映射到一个显式的 图上,并手动管理状态、工具和结构化输出。 ## 架构 六个智能体(图节点)以并行和顺序依赖相混合的方式运行: ``` START ──▶ triage ─────────▶ knowledge ─┐ └────▶ log_analysis ──────────────────┼─▶ rca ─▶ remediation ─▶ report ─▶ END │ (triage + log run in parallel) (rca fans in from log + knowledge) ``` | # | 智能体 (节点) | 角色 | 读取 | 工具 / 记忆 | |---|--------------|------|-------|----------------| | 1 | `triage` | 严重程度 + 类别分类 | inputs | 事件快照检索器 | | 2 | `log_analysis` | 错误模式、异常、时间线 | inputs | 日志 + 指标检索器 | | 3 | `knowledge` | 相似事件、操作手册、变通方法 | triage | KB 检索器 | | 4 | `rca` | 排序的根因假设 + 因果链 | triage, log, knowledge | 仅工作记忆 | | 5 | `remediation` | 三阶段修复计划 + 回滚 | rca | 仅工作记忆 | | 6 | `report` | 高管 Markdown 报告 + 仪表板 payload | 所有内容 | 仅工作记忆 | ## 项目布局 | 文件 | 职责 | |------|----------------| | `config.py` | 共享 Gemini 聊天模型 + embedding;加载 `.env`;可选 LangSmith | | `retrievers.py` | RAG 检索器 (加载 → 拆分 → embedding → 存储 → 检索) = 长期记忆 | | `state.py` | `IncidentState` TypedDict = 跨节点共享的短期工作记忆 | | `schemas.py` | 用于结构化 (已验证) 智能体输出的 Pydantic 模型 | | `nodes.py` | 六个智能体节点函数 | | `graph.py` | 将节点和边组装成编译后的 LangGraph | | `main.py` | 入口点:预热检索器,运行图,保存 `report.md` | | `demo_inputs.py` | 演示事件场景 (Northwind Financial P1) | | `data/` | `incident_snapshot.json`, `application_logs.txt`, `error_metrics.csv` | ## 设置 ``` python -m venv .venv .venv\Scripts\activate # Windows PowerShell pip install -r requirements.txt ``` 从模板创建一个 `.env` 并添加你的 Gemini 密钥: ``` cp .env.example .env # then edit GOOGLE_API_KEY / GEMINI_API_KEY ``` ## 运行 ``` python main.py ``` 这将对数据源进行 embedding,运行所有六个智能体,打印报告, 并将其写入 `report.md`。 ### 可选:LangSmith 追踪 在 `.env` 中设置 `LANGSMITH_TRACING=true` 和 `LANGSMITH_API_KEY`,即可在 [smith.langchain.com](https://smith.langchain.com) 上将每个节点查看为嵌套追踪。 ## 注意事项与设计决策 - **确定性的 RAG,而非代理式工具调用。** 每个节点使用检索器获取其 上下文,然后调用 LLM。这比让模型决定何时调用工具 更可预测且成本更低。 - **结构化输出** (`with_structured_output`) 提供了类型化、经过验证的 节点间交接,而不是脆弱的自由文本解析。 - **不均匀的扇入** (fan-in) 到 `rca` 使用 `defer=True` 处理,因此它会等待 较慢的 `knowledge` 分支。 - **Chroma 客户端以单线程构建** (`warm_retrievers()`),在并行 节点运行之前,避免了客户端构建时的竞态条件。 ## 环境要求 - Python 3.11+ - 一个 Google Gemini API 密钥
标签:AI智能体, IT运维, LangGraph, PyRIT, Socks5代理, 多智能体系统, 故障响应, 自动化报告, 逆向工具