返回市场
AI网络助手

AI网络助手

作者:satyam-thakur4 星标更新:2025-10-29

项目介绍

AI网络助手

🤖 一个基于MCP的AI驱动网络自动化助手,可以安全地调用pyATS工具对Containerlab环境中设置的Arista cEOS设备进行操作。通过自然对话运行show命令、推送配置、验证状态,并可选地使用Terraform在EC2主机上部署实验室环境。


演示

AI网络助手演示


架构图

              ╔════════════════════════════════════╗
              ║  AI网络助手流程                     ║
              ╚════════════════════════════════════╝

                        ┌──────────┐
                        │   用户   │  
                        └─────┬────┘
                              │ 聊天查询
                              ▼
                   ┌──────────────────────┐
                   │   agent.py (Gemini)  │ ◄─ Gemini API
                   └──────────┬───────────┘
                              │ MCP标准输入输出
                              │ (列出设备、运行show、配置)
                              ▼
                   ┌──────────────────────┐
                   │  server.py (FastMCP) │ ◄─ pyATS
                   └──────────┬───────────┘
                              │ SSH (测试床.yaml)
                              ▼
                  ┌────────────────────────┐
                  │  Containerlab拓扑       │
                  │  ┌────┐  ┌────┐ ┌────┐ │
                  │  │ceos│──│ceos│─│ceos│ │
                  │  │ 1  │  │ 2  │ │ 3  │ │
                  │  └────┘  └────┘ └────┘ │
                  └────────────────────────┘

  可选:Terraform → EC2 → Containerlab → cEOS

工作原理(机制)

  • 以MCP为中心的设计:服务器通过MCP公开安全、明确的网络自动化工具(列出设备、运行show、推送配置、ping等)。
  • AI代理(Gemini)src/agent.py使用Gemini并在需要时调用MCP工具。模型从未有原始设备访问权限;它仅通过MCP工具操作。
  • pyATS集成src/server.py加载pyATS测试床(PYATS_TESTBED_PATH),并使用健壮的发送/期望流在设备上执行命令。
  • Containerlab拓扑:在containerlab/下提供了一个Arista cEOS实验室样本,包括topology.clab.yaml和一个现成的pyATS测试床。
  • 可选云配置terraform/可以启动一个EC2主机来运行Containerlab,如果你希望在一个云实验室环境中工作。

关键特性:

  • 通过工具确保安全性:AI只能执行MCP工具允许的操作。破坏性命令被设计阻止。
  • 可重复的实验室:Containerlab拓扑+测试床YAML=快速、可重现的演示。
  • 云选项:本地或EC2。使用适合您环境的方式。

设置

1) Python虚拟环境

使用venv避免依赖冲突。

cd AI-Network-Assistant
python3 -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install -r requirements.txt

2) 环境变量(.env)

在项目根目录创建一个.env文件(它已经在.gitignore中以防止泄露秘密信息)。

cat > .env << 'EOF'
GEMINI_API_KEY=在这里填写你的gemini api key
PYATS_TESTBED_PATH=./containerlab/testbed_containerlab.yaml
EOF

注意事项:

  • GEMINI_API_KEY由代理所需。
  • PYATS_TESTBED_PATH必须指向您的pyATS测试床YAML。现成的文件位于containerlab/testbed_containerlab.yaml

3) Containerlab(本地实验室)

此仓库包含一个简单的3节点Arista cEOS拓扑。

使用辅助脚本安装Containerlab及其依赖项:

./clab.sh

部署实验室:

sudo containerlab deploy -t containerlab/topology.clab.yaml

您将拥有:

  • 3个cEOS节点(ceos1ceos2ceos3),带有启动配置在containerlab/backup_configs/
  • containerlab/topology.clab.yaml定义的链接
  • containerlab/testbed_containerlab.yaml下的现成pyATS测试床,具有SSH访问和默认凭证(演示中的admin/admin

完成时销毁:

sudo containerlab destroy -t containerlab/topology.clab.yaml

4) 可选:使用Terraform配置EC2主机

如果您想在AWS而不是本地运行实验室,您可以配置一个实例,然后在那里安装Containerlab。如果您不使用云,可以跳过这一节。

安装AWS CLI和Terraform:

./terraform.sh

配置AWS凭证(一次):

aws configure

根据需要查看/调整terraform/terraform.tfvars,然后进行配置:

cd terraform
terraform init
terraform plan
terraform apply -auto-approve

有用的输出将包括实例详情和SSH命令。配置后,SSH到实例,克隆此仓库,重复步骤1-3,并在云VM中部署Containerlab拓扑。

完成时销毁:

terraform destroy -auto-approve

运行AI网络助手

激活venv并配置.env后:

python3 src/agent.py

会发生什么:

  • 代理启动并通过标准输入输出连接到MCP服务器(src/server.py)。
  • 服务器从PYATS_TESTBED_PATH加载pyATS测试床,并公开工具。
  • 您与代理聊天;当需要时,它会调用MCP工具对设备进行操作。

可以询问的一些示例:

  • "列出设备"
  • "在clab-test_network-ceos1上运行show ip route"
  • "在clab-test_network-ceos2上的Ethernet1上配置描述"
  • "从clab-test_network-ceos1 ping 10.0.12.2"

架构细节

  • 服务器(src/server.py

    • 使用fastmcp通过MCP(标准输入输出传输)公开工具。
    • 通过PYATS_TESTBED_PATH加载pyATS测试床,并按需连接到设备。
    • 实现安全助手来运行show命令、推送配置、获取日志和运行ping。
    • 清理CLI输出(移除ANSI代码)、阻止危险输入并干净断开连接。
  • 代理(src/agent.py

    • 加载.env并初始化Gemini(google-generativeai)。
    • 作为标准输入输出客户端连接到MCP服务器,并将服务器工具反映给Gemini作为函数。
    • 将用户提示发送给Gemini,处理函数调用,执行MCP工具,返回结果。
    • 提供一个简单的聊天循环用于交互式使用。
  • Containerlab和pyATS

    • containerlab/topology.clab.yaml定义了cEOS节点和链接。
    • 启动配置位于containerlab/backup_configs/下。
    • containerlab/testbed_containerlab.yaml下的pyATS测试床指向实验室设备IP地址和SSH凭证。
  • Terraform(可选)

    • terraform/定义了一个EC2实例、安全组和实例状态控制。
    • terraform.sh在运行terraform命令之前在机器上安装AWS CLI和Terraform。

故障排除

  • 确保.venv已激活且pip install -r requirements.txt成功。
  • 验证.env存在且具有有效的GEMINI_API_KEYPYATS_TESTBED_PATH
  • 确认可以通过测试床YAML中的IP地址通过SSH访问Containerlab设备。
  • 如果在AWS中运行,请确认安全组允许从您的IP地址进行SSH访问。

安全性和范围

  • MCP服务器限制操作到定义的工具;危险命令被拒绝。
  • 示例:擦除/删除/重定向在命令过滤器和配置应用中被阻止。您可以检查@mcp.tools的实现。
  • 始终审查并适应生产使用的启动配置、凭证和安全组。

贡献

欢迎贡献!请遵循以下步骤:

  • 分叉仓库
  • 创建一个功能分支
git checkout -b feature-branch-name
  • 提交更改
git commit -m "添加新功能"
  • 推送到您的分叉
git push origin feature-branch-name
  • 打开Pull Request

许可

Apache 2.0