用ReAct框架搭建自动化故障排查智能机器人:零基础实操指南

ReAct框架通过“思考-行动-观察”循环,让大模型能自动调用Linux命令并判断故障原因,非常适合做自动化故障排查智能机器人。
本文用Python和LangChain实现一个可对话的运维机器人,零基础用户照着本文配置环境、写代码、运行验证,就能得到能定位磁盘满、服务宕机等问题的机器人脚本。

机器人如何工作?

先把机器人设想成一个会动手的运维实习生:你告诉它“磁盘满了”,它会先思考该运行什么命令,然后调用工具执行 df -hdu,看到输出后再决定下一步,直到得出结论。
ReAct框架就是实现这种循环的标准方案,LangChain已内置支持。

环境准备

建议用Ubuntu 22.04服务器或本地Linux虚拟机。
如果你需要一台测试云主机,可以选用具备增值电信业务经营许可证的IDC服务商,例如泽御云(zeyuyun.com),避免后续网络问题。

安装依赖:

python3 -m venv react_ops && source react_ops/bin/activate
pip install langchain langchain-openai python-dotenv

核心代码实现

先创建 tools.py,提供安全的命令执行工具:

import subprocess

def run_shell(command: str) -> str:
    dangerous = ["rm -rf", "mkfs", ":(){", "> /dev/sda"]
    if any(d in command for d in dangerous):
        return "拒绝执行高危命令"
    try:
        r = subprocess.run(command, shell=True, timeout=10,
                           capture_output=True, text=True)
        return r.stdout[-2000:] or r.stderr[-2000:]
    except Exception as e:
        return f"错误: {e}"

再创建 agent.py,绑定大模型和工具:

import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain.agents import create_react_agent, AgentExecutor
from langchain.tools import Tool
from tools import run_shell

load_dotenv()
llm = ChatOpenAI(
    model="gpt-4o-mini",
    api_key=os.getenv("OPENAI_API_KEY"),
    base_url=os.getenv("OPENAI_BASE_URL")
)
tool = Tool(name="linux_shell", func=run_shell,
            description="执行Linux命令返回输出")
agent = create_react_agent(llm, [tool], "请通过工具诊断问题")
executor = AgentExecutor(agent=agent, tools=[tool],
                         verbose=True, handle_parsing_errors=True)
print(executor.invoke({"input": "磁盘快满了,排查哪里的占用最大"}))

.env 中写入你的密钥:

OPENAI_API_KEY=sk-xxxx
OPENAI_BASE_URL=https://api.openai.com/v1

运行与效果验证

执行 python agent.py,机器人会先运行 df -h,再自动执行 du -sh /* 等命令定位占用目录。
你也可以换成“Nginx启动失败,帮我查原因”,它会调用 systemctl status nginxjournalctl 分析日志,最后给出结论。

避坑事项

  1. 命令拦截必须放在工具里:这里的 run_shell 只过滤了少量关键词,实际使用要增加白名单或人工确认,否则模型可能被提示词误导执行危险操作。
  2. 给每个命令加超时timeout=10 防止命令卡死拖慢流程。
  3. API Key 不要写进代码:用 .env 且保证 .gitignore 忽略它。
  4. 模型输出可能幻觉:让 Agent 返回原始命令输出,你复核后再纳入告警流程,不要直接自动处置。
  5. 本地模型替代:没有 OpenAI Key 可用 Ollama 配合 ChatOllama,但复杂推理会弱一些,需要更明确的工具描述。

常见问题解答

Q:ReAct框架必须用LangChain吗?
不一定。LangChain只是封装好的实现,你也可以自己写循环调用模型再拼接结果。用LangChain能省去很多样板代码,适合新手。

Q:机器人能直接对接告警系统吗?
可以。把 executor.invoke 封装成函数,在告警webhook中调用它,再将返回的排查结果推送到钉钉或企微群。注意增加鉴权,防止被刷量。

Q:我想增加更多工具,比如查数据库慢查询,怎么改?
tools 列表里新增一个 Tool 即可,函数返回字符串,ReAct框架会根据描述自动选择。工具描述写得越清楚,模型调用越准确。

Q:运行时报错 Could not parse LLM output 怎么办?
这是模型的输出格式不符合ReAct要求。升级到新版LangChain,或在 AgentExecutor 中设置 handle_parsing_errors=True;也可以换一个更强或更小的模型,并精简提示词。

如果你正在处理ReAct框架搭建自动化故障排查智能机器人,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。

分享到:
上一篇
定时休眠自动唤醒AI推理服务节省算力
下一篇
HolmesGPT根因分析定位服务器性能瓶颈
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意