JOBEBOLDER/aiOps_pilot

GitHub: JOBEBOLDER/aiOps_pilot

智能事件响应AIOps代理框架,自动化IT运营。

Stars: 0 | Forks: 0

# AIOps—试点 **智能事件响应** — 一个自主的AIOps代理框架,使用**计划-执行-重新计划**循环和**LangGraph**来自动化IT运营。代理不仅回答问题:它还像一个数字SRE,可以使用结构化推理和工具来诊断和排除故障。 ## 系统架构(概述) *端到端堆栈(从下到上):**知识来源**和**向量数据库**为**核心层**(文档加载/索引、检索、聊天模型、提示、工具、MCP)提供数据。**代理式应用程序**(对话聊天、AIOps诊断、RAG支持的知識使用)位于核心之上,并通过**API层**公开。 此存储库中典型的HTTP入口点包括**`POST /chat`**、**`POST /chat_stream`**、**`POST /upload`**(以及用于批量索引的**`POST /index_directory`**),以及用于诊断工作流程的**`POST /aiops`**。 ![AIOps—Pilot宏观系统架构](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/d087ecfe7b033513.png) ## 关键架构特性 ### 1. 认知架构:计划-执行-重新计划 与仅使用RAG的线性管道不同,此项目使用**有状态的循环图**。 - **战略规划** — `Planner`将模糊警报转换为可执行步骤的有序列表(一个结构化计划而不是单个自由形式的回复)。 - **自主执行** — `Executor`调用本地工具和**MCP(模型上下文协议)**客户端,以获取您的堆栈公开的实时信号(日志、指标、跟踪)。 - **自我纠正** — `Replanner`评估结果。如果步骤失败或观察结果不符合预期,则图可以**重新计划**而不是在第一个错误处停止。 *计划-执行-重新计划流程(Planner → Executor → 工具 → Replanner → 评估 → 循环或END):* ![计划-执行-重新计划架构](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/d49a9903af033514.png) ### 2. 知识检索(RAG) - **向量存储** — **Milvus**支持SOP、运行手册和事后分析的语义搜索。 - **摄取** — 上传区域下的文档被分割和索引;典型来源包括`.md`和`.txt`操作手册。 *RAG概述:摄取(块 → 嵌入 → 存储)和查询时检索(嵌入问题 → 搜索向量存储 → 增强LLM):* ![RAG摄取和检索](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/358b459e6b033515.png) ### 3. 对话式代理、可观察性和流 该产品公开**两个互补的表面**:一个**由警报驱动的AIOps**工作流程(计划-执行-重新计划,见上文)和一个**对话式RAG代理**用于交互式Q&A。本节重点介绍**聊天代理**以及它是如何通过线进行观察的。 #### 对话式RAG代理 — 角色和功能 - **目的** — 一个**工具增强的聊天代理**(`RagAgentService`)在上下文中回答问题:它可以**检索**索引知识,调用**MCP支持**的功能,并保持每个客户端会话的**多轮**对话。 - **运行时** — 使用LangChain **`create_agent`**、**ChatQwen**和LangGraph **`MemorySaver`**检查点器构建。模型决定何时调用工具;答案通过**`retrieve_knowledge`**(Milvus)得到巩固,并通过在启动时加载的MCP工具扩展,以及如**`get_current_time`**之类的实用程序。 - **会话语义** — 客户端提供**`session_id`**;它映射到LangGraph的**`thread_id`**,因此每个会话都有**隔离**的检查点状态。助手在相同的检查点器之上公开**会话历史**和**clear-session**行为。 - **交付模式** — **`POST /chat`**返回一个包含完整回复的JSON有效负载。**`POST /chat_stream`**流式传输SSE,以便UI可以渲染**令牌级**输出和结构化事件类型(例如**内容**、**完成**、**错误**;API层还可以在流中转发**tool_call** / **search_results**-style事件,如果存在)。 #### 产品中的流 - **聊天** — SSE为长答案提供**低延迟**反馈,并保持通道开启以进行结构化事件和原始文本。 - **AIOps** — **`POST /aiops`**使用SSE推送**诊断生命周期**更新(例如状态、计划、步骤完成、最终摘要),在精神上类似于聊天流,但与诊断图相关联,而不是自由形式的对话。 #### 架构(对话路径) *高级流程:用户输入和**RAG检索**(向量存储)为**提示构建**提供数据;LLM在**ReAct**循环中运行—**推理**,可选**调用工具**(本地 + MCP),将**工具结果**反馈到模型,并在不需要进一步工具调用时**退出**,然后返回最终消息。 ![对话式代理 — ReAct和RAG](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/0f95c2b104033516.png) *服务连接(FastAPI会话 → 代理 → 检查点器 → 工具 → Milvus): ``` flowchart LR Client[Client · session_id] API[FastAPI · /chat · /chat_stream] Agent[create_agent + ChatQwen] CP[(MemorySaver · thread_id)] Tools[retrieve_knowledge · MCP · get_current_time] DB[(Milvus)] Client --> API --> Agent Agent --> CP Agent --> Tools Tools --> DB ``` ## 技术堆栈 | 区域 | 技术 | | :--- | :--- | | **LLM编排** | LangGraph, LangChain | | **LLM** | Qwen(通过阿里巴巴云DashScope / `langchain-qwq`) | | **向量存储** | Milvus | | **API** | FastAPI, SSE-Starlette | | **工具协议** | MCP(模型上下文协议) | | **日志** | Loguru | ## 项目布局 ``` ├── app/ │ ├── agent/ │ │ ├── aiops/ # LangGraph nodes: planner, executor, replanner, state │ │ └── mcp_client.py # MCP integration │ ├── services/ # Orchestration, RAG agent, embeddings, indexing pipeline │ ├── api/ # REST and SSE endpoints │ ├── core/ # Shared infrastructure (e.g. Milvus client) │ ├── models/ # Pydantic request/response models │ ├── vector_index_service.py # Manual / directory indexing entrypoints │ ├── vector_search_service.py │ └── rag_agent_service.py ├── uploads/ # Ops manuals and docs for RAG ingestion └── main.py # Application entrypoint (if present in your deployment) ``` 根据您的分支将服务移动到不同的包布局时,请调整路径。 ## 入门 ### 先决条件 - Python 3.10+ - Docker(推荐用于Milvus独立) ### 安装 1. **克隆存储库** git clone https://github.com/your-username/aiops-pilot.git cd aiops-pilot 2. **环境** 创建一个`.env`文件(名称可能不同;与您的树中的`app.config`对齐): DASHSCOPE_API_KEY=your_key_here MILVUS_HOST=localhost MILVUS_PORT=19530 3. **安装依赖项并运行** pip install -r requirements.txt python main.py 如果您直接使用Uvicorn,请将其指向您的FastAPI应用程序模块,如您的项目中所定义。 ## 示例场景 1. **触发器** — 一个警报到达:*DB-01的CPU使用率过高*。 2. **检索** — 代理查询向量索引以查找匹配“高CPU数据库”的运行手册。 3. **计划** — 规划器发出以下步骤:检查顶级进程 → 检查慢查询 → 检查连接池。 4. **执行** — 执行器运行工具(例如,通过MCP或本地适配器进行日志或指标查询)。 5. **重新计划** — 如果出现新证据(例如,死锁),重新规划器会更新计划(例如,针对特定进程或会话的操作)。 6. **报告** — 为操作员生成一个简洁的根本原因和修复摘要。 ## 系统设计注意事项 这些选择是有意为之的权衡,而不是偶然的默认值。 ### 为什么在Milvus中使用L2(欧几里得)距离? 搜索配置为在嵌入向量上使用**L2**。对于使用余弦式几何训练的密集嵌入,**标准化**向量的L2与角度距离密切相关;Milvus优化了包括L2在内的常见度量类型的ANN搜索。返回的分数是距离——**越低越相似**——这保持了排名语义的简单性,便于调试以及在操作工作流程中进行阈值设置。 ### 为什么规划器使用结构化输出(Pydantic)? 规划器的计划被建模为**类型化模式**(例如步骤列表)而不是无约束的散文。这会产生: - **确定性下游行为** — 执行器消费步骤列表,而不是必须重新解析的文本blob。 - **边界验证** — 无效或空的计划快速失败,而不是损坏图状态。 - **更容易测试** — 您可以在单元和集成测试中断言结构化计划。 固定检索指标和结构化规划输出使代理在生产中比完全自由形式的“感觉-only”链更容易推理。 ## 许可证 在MIT许可证下分发。请参阅存储库中的`LICENSE`文件以获取全文。
标签:AIOps, API, HTTP接口, IT运营, LangGraph, Milvus, Plan-Execute-Replan, SOP, SRE, 事后分析, 偏差过滤, 向量数据库, 工具使用, 恶意软件库, 故障诊断, 智能运维, 知识检索, 结构化推理, 自动化运维, 诊断工作流, 语义搜索, 运行手册, 逆向工具, 问题解决