-
网络故障诊断 Agent 项目逻辑
本文档详细介绍了 network_diagnosis_agent的项目逻辑,它是一个使用 LangChain 框架和大型语言模型(LLM)构建的网络故障诊断智能系统。
1. 项目概述
该项目创建了一个智能 Agent,能够根据用户描述的网络问题,通过逻辑分析和工具调用,一步步诊断网络故障,最终给出可能的问题原因和解决方案。
关键特点:
- 使用 通义千问(Tongyi)作为底层大模型
- 采用 ReAct(Reasoning and Acting)推理模式
- 提供多种模拟的网络诊断工具
- 实现了工具之间的串联调用,其中一个工具的输出可以成为另一个工具的输入
- 具备会话记忆功能
2. 系统架构
系统架构由以下核心组件构成:
用户问题 → Agent(LLM + 推理框架)→ 工具集 → 诊断结果2.1 核心组件
- 诊断工具集:封装了不同的网络诊断功能
- LLM:通义千问模型,负责理解问题、决策和推理
- ReAct 推理框架:引导 LLM 思考-行动-观察的循环过程
- Agent Executor:协调 LLM 和工具的交互,管理工作流
- 会话记忆:保存对话上下文,支持多轮交互
3. 诊断工具详解
该系统实现了多个模拟的网络诊断工具:
3.1 网络连通性检查工具 (PingTool)
- 功能:检查从本机到指定主机名或 IP 的网络连通性
- 输入:目标主机名或 IP 地址
- 输出:连通性状态(成功/失败)和网络延迟
- 使用场景:验证网络连接是否通畅,检测网络延迟
3.2 DNS 解析查询工具 (DNSTool)
- 功能:将主机名解析为 IP 地址
- 输入:需要解析的主机名
- 输出:解析后的 IP 地址或解析失败信息
- 使用场景:诊断 DNS 解析问题,为后续的连通性测试提供 IP 地址
3.3 本地网络接口检查工具 (InterfaceCheckTool)
- 功能:检查本地网络接口的状态
- 输入:(可选)接口名称
- 输出:接口状态信息(是否启用、IP 地址、子网掩码等)
- 使用场景:检查本地网络配置是否正确
3.4 网络日志分析工具 (LogAnalysisTool)
- 功能:在系统或应用日志中搜索网络相关问题
- 输入:关键词和可选的时间范围
- 输出:匹配的日志条目
- 使用场景:查找历史网络错误记录,发现非实时故障的线索
4. 工作流程
系统的工作流程遵循 ReAct 模式,主要步骤如下:
- 问题输入:用户描述网络问题
- 思考:Agent 分析问题,确定需要检查的方向
- 行动选择:Agent 选择合适的工具
- 行动执行:提供适当的输入参数,执行所选工具
- 观察:分析工具返回的结果
- 循环:基于结果进行下一步思考,可能继续选择其他工具
- 诊断结论:收集足够信息后,给出诊断结论和解决建议
4.1 工具链接示例
系统能够实现工具间的串联调用,例如:
问题:无法访问网站 www.example.com ↓ DNS解析查询(www.example.com) → 返回 IP: 93.184.216.34 ↓ 网络连通性检查(93.184.216.34) → 返回连接超时 ↓ 本地网络接口检查() → 返回接口正常 ↓ 网络日志分析("timeout") → 发现相关错误日志 ↓ 诊断结论:可能是网络路由问题或目标服务器不可用5. 实现细节
5.1 ReAct 提示模板
Agent 的行为由精心设计的提示模板引导,包含:
- 角色定义(网络故障诊断助手)
- 可用工具列表及描述
- 详细的思考-行动-观察格式指导
- 步骤示例和预期输出格式
5.2 Agent 配置
AgentExecutor 配置了以下特性:
memory:ConversationBufferMemory 实现会话记忆verbose=True:显示详细的思考过程(便于调试)handle_parsing_errors=True:处理 LLM 输出解析错误max_iterations=10:防止无限循环
6. 使用示例
脚本包含了两个主要的诊断示例:
- 网站访问问题:无法访问 www.example.com,浏览器显示连接超时
- 内部服务连接问题:连接到内部数据库服务器失败,提示 ‘connection refused’
7. 扩展与定制
系统设计具有良好的可扩展性:
- 添加新工具:只需创建新的工具类并实现其
run方法 - 修改诊断策略:通过调整提示模板来改变 Agent 的推理方式
- 替换底层模型:可以用其他 LLM(如 OpenAI 的模型)替换通义千问
- 增强工具能力:可以将模拟的工具替换为真实的网络诊断命令执行
8. 总结
这个网络故障诊断 Agent 展示了如何使用大语言模型和工具链,创建一个能够进行复杂推理并执行专业任务的 AI 系统。它的核心优势在于:
- 逻辑性:能够按照网络故障诊断的专业逻辑进行工具选择和结果分析
- 灵活性:能够处理各种网络问题描述和不同的诊断路径
- 可扩展性:可以通过添加更多工具来增强系统能力
- 自然交互:用户只需用自然语言描述问题,不需要了解复杂的网络命令
最重要的是,这种基于 LLM 和工具链的架构可以应用于许多其他领域,创建各种专业的智能诊断和问题解决系统。
AI Agent对比:
工具 核心定位 架构特点 适用场景 LangChain 开源LLM应用开发框架 基于链(Chain)的线性或分支工作流,支持Agent模式 快速构建RAG、对话系统、工具调用等线性任务 LangGraph LangChain的扩展,专注于复杂工作流 基于图(Graph)的循环和条件逻辑,支持多Agent协作 需要循环、动态分支或状态管理的复杂任务(如自适应RAG、多Agent系统) Qwen-Agent 通义千问的AI Agent框架 基于阿里云大模型,支持多模态交互与工具调用 开源,集成多种工具,MCP调用 Coze 字节跳动的无代码AI Bot平台 可视化拖拽界面,内置知识库、多模态插件 快速部署社交平台机器人、轻量级工作流 Dify 开源LLM应用开发平台 API优先,支持Prompt工程与灵活编排 开发者定制化LLM应用,需深度集成或私有化部署 -
Langchain多任务处理
Langchain多任务工具链组合设计。用到的tools(serpApi,llm-math)。使用LCEL构建任务链。 ReAct框架:使用LangChain的ReAct框架,允许代理执行思考-行动-观察的循环:
- 思考:分析任务,确定下一步行动
- 行动:调用适当的工具
- 观察:分析工具返回的结果
- 重复:根据观察结果继续思考,直到任务完成
-
Prompt SQL
prompt = f"""-- language: SQL ### Question: {query} ### Input: {create_sql} ### Response: Here is the SQL query I have generated to answer the question `{query}`: ```sql """ -
RAG
R检索,A增强,G生成。 Embedding:对原文进行压缩(embedding_size=1024),方便后续进行数学计算,计算两个embedding之间像不像.通过embedding模型来完成.

-
AI相关工作
AI技术驱动:AI应用开发工程师、Agent开发工程师、AI运维、AI测试等(懂技术)
-
如何配置 Minima 主题
这是文章firsttwo 这里是文章正文内容(Markdown 格式)…
-
Welcome To Jekyll
You’ll find this post in your
_postsdirectory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to runjekyll serve, which launches a web server and auto-regenerates your site when a file is updated. -
This post demonstrates post content styles
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce bibendum neque eget nunc mattis eu sollicitudin enim tincidunt. Vestibulum lacus tortor, ultricies id dignissim ac, bibendum in velit.
-
Some articles are just so long they deserve a really long title to see if things will break well
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce bibendum neque eget nunc mattis eu sollicitudin enim tincidunt. Vestibulum lacus tortor, ultricies id dignissim ac, bibendum in velit. Proin convallis mi ac felis pharetra aliquam. Curabitur dignissim accumsan rutrum. In arcu magna, aliquet vel pretium et, molestie et arcu. Mauris lobortis nulla et felis ullamcorper bibendum. Phasellus et hendrerit mauris. Proin eget nibh a massa vestibulum pretium. Suspendisse eu nisl a ante aliquet bibendum quis a nunc. Praesent varius interdum vehicula. Aenean risus libero, placerat at vestibulum eget, ultricies eu enim. Praesent nulla tortor, malesuada adipiscing adipiscing sollicitudin, adipiscing eget est.
-
My Example Post
Eos eu docendi tractatos sapientem, brute option menandri in vix, quando vivendo accommodare te ius. Nec melius fastidii constituam id, viderer theophrastus ad sit, hinc semper periculis cum id. Noluisse postulant assentior est in, no choro sadipscing repudiandae vix. Vis in euismod delenit dignissim. Ex quod nostrum sit, suas decore animal id ius, nobis solet detracto quo te.
-
Some articles are just so short that we have to make the footer stick
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-
Codeblocks Ahoy
An article with various blocks of highlighted code snippets.
subscribe via RSS