Skip to main content

如何配置和使用 AI 助手

项目出处

GNS3 AI Assistant(GNS3 Copilot)最初作为独立项目开发,详见 github.com/yueguobin/gns3-copilot。该项目由社区开发者 YueGuobin 创建,是一个基于大语言模型的网络自动化助手,支持通过自然语言管理网络设备、诊断故障和自动化配置,已合入 GNS3 3.1 版本。

AI 助手(GNS3 Copilot)是 GNS3 3.1 的智能助手功能,通过大语言模型(LLM)提供智能化的网络拓扑管理、故障诊断和自动化配置功能。

测试范围说明

目前主要针对未设置 console 登录密码的 Cisco IOS 镜像进行了充分的测试验证。

配置 AI 模型接入​

开发测试说明: 本功能在开发测试验证阶段主要使用 DeepSeek 的模型进行测试验证,原 deepseek-chat 现已更名为 deepseek-v4-flash 或 deepseek-v4-pro。

普通用户配置​

在项目首页点击右上角的三个点,选择 AI Profile,进入配置页面。

AI配置入口

管理员配置​

管理员可以通过 Controller Management 页面为用户或用户组配置 AI Profile。

为用户配置​

在项目首页点击右上角的三个点,选择 Management 选项,进入 Controller Management 页面。

Controller Management入口

如下图所示,点击 Users 标签,管理员可以为不同的用户进行 AI Profile 配置。

Users标签配置

为用户组配置​

如下图所示,点击 Groups 标签,管理员可以为不同的用户组配置 AI Profile。

用户组配置后,普通用户加入用户组后,可以选择使用用户组配置的 AI Profile(目前只能选择用户组配置的默认 AI Profile),也可以选择自己配置的 AI Profile。

Groups标签配置

配置参数​

  • 在 AI Profile 界面,为用户添加 AI 配置,点击 New Configuration 按钮。

新建配置

在 Create LLM Model Configuration 页面,选择 Base Models 标签页,按照步骤输入:

  1. Configuration Name — 配置名称
  2. Select LLM provider — 选择 LLM 提供商(提供 OpenRouter 和 DeepSeek 两个选项)
  3. Model Name — 模型名称
    • OpenRouter 支持 x-ai / z-ai / openai / google / anthropic 的快速选择
    • DeepSeek 支持 deepseek-v4-flash / deepseek-v4-pro 的快速选择
兼容性说明

支持兼容 OpenAI API 接口格式的大语言模型。如果你使用的模型服务商兼容 OpenAI API 格式(如 vLLM、Ollama 等),可以在 Custom Mode 中填入对应的 API 端点即可使用。

  1. API Key — 输入你的 API Key
  2. Copilot Mode — AI 助手模式
    • Teaching Assistant(教学助手)
    • Lab Automation Assistant(实验自动化)
note

Custom Mode 有更多的配置选项可以定义,适合有一定基础的用户操作,该页面有 field documentation 帮助。

填选后,点击 Create 按钮。

API Key 安全说明
  • 使用 Python 的 cryptography.fernet 模块(AES-128-CBC 算法)加密,密钥文件与配置文件在同一目录下
  • API Key 加密后存入数据库,所有 API 查询接口都返回 api_key: null
  • 只有 AI 助手需要调用时,系统内部才用密钥解密使用

创建配置

创建完成后,如下图所示。

配置完成

在项目拓扑中使用 AI 助手​

  • 在项目拓扑页面,点击左侧的 AI 按钮,打开 AI 助手。在 AI 助手页面的输入框旁边,可以点击选择配置的模型和助手模式。

AI助手面板

  • AI 助手的侧边栏显示历史会话消息。

历史会话

模拟器配置​

需要为模拟器配置 Tags。AI 助手通过 device_type 标签来区分设备类型并调用相应的配置技能。

note

目前主要针对以下设备类型进行测试:

  • Cisco IOS — device_type:cisco_ios_telnet — 配置命令生成最为成熟流畅
  • Huawei CE — device_type:gns3_huawei_telnet_ce — 需要准确配置 skills
  • 锐捷 Ruijie — device_type:gns3_ruijie_telnet — 需要准确配置 skills
  • VPCS — device_type:gns3_vpcs_telnet — 需要准确配置 skills

更多支持的 Telnet 设备类型请参考:GNS3 Server - Netmiko Supported Devices

设备Tags配置

使用场景​

AI 助手提供两种核心模式,分别适用于不同的网络运维和学习场景。

技术指导模式(Teaching Assistant)​

技术指导模式适合学习和故障诊断场景。您可以通过自然语言与 AI 助手交互,获得网络技术问题的解答和指导。

使用示例:

  1. 在项目拓扑中打开 AI 助手面板,选择 Select AI Mode 为 Teaching Assistant。

  2. 在输入框中描述您的需求,例如:

    • "解释这个拓扑中 OSPF 的邻居建立过程"
    • "检查设备 R1 的路由表"
    • "为什么 PC1 无法 ping 通 PC2?"
  3. AI 助手会自动分析拓扑,连接设备执行诊断命令,并给出详细解释。

视频教程

📺 观看视频教程 - 跟随视频了解技术指导模式的使用方法

自动化模式(Lab Automation Assistant)​

自动化模式适合批量配置和实验自动化场景。您可以用自然语言描述配置目标,AI 助手自动生成并执行设备配置命令。

使用示例:

  1. 在 AI 助手面板中,切换 Select AI Mode 为 Lab Automation Assistant。

  2. 输入自动化任务描述,例如:

    • "在所有交换机上创建 VLAN 10、20、30"
    • "配置 R1-R3 之间的 OSPF 区域 0"
    • "将 PC1 到 PC5 的接口全部划入 VLAN 10"
  3. AI 助手会解析您的需求,生成对应的设备配置命令自动下发到设备。

note

目前未实现人机交互确认(HITL,Human-in-the-Loop),AI在执行配置变更操作时不会进行二次确认。

架构概览​

整体架构​

API 端点​

端点功能
POST /v3/projects/{pid}/chat/stream流式对话(SSE),支持三种 copilot 模式
POST /v3/projects/{pid}/chat/inject故障注入入口,自动切换为 troubleshooting_injection 模式
GET /v3/projects/{pid}/chat/sessions列出会话(支持过滤、分页)
DELETE /v3/projects/{pid}/chat/sessions/{sid}删除会话
PATCH /v3/projects/{pid}/chat/sessions/{sid}更新会话(重命名、置顶)
POST /v3/projects/{pid}/chat/sessions/{sid}/abort终止正在进行的会话

LangGraph Agent 工作流​

三种 Copilot 模式​

模式对照

模式工具范围适用场景
teaching_assistant(默认)诊断只读 + 数据包分析 + 节点管理教学演示、故障排查指导
lab_automation_assistant全部工具(含配置变更)实验自动化、设备配置
troubleshooting_injection故障注入工具集排错练习、故障模拟

工具绑定明细

工具teaching_assistantlab_automation_assistanttroubleshooting_injection
GNS3TemplateTool 获取模板✓✓
GNS3CreateNodeTool 创建节点✓✓
GNS3LinkTool 创建链路✓✓
GNS3StartNodeTool 启动节点✓✓
GNS3UpdateNodeNameTool 更新名称✓✓
GNS3StopNodeTool 停止节点✓
GNS3SuspendNodeTool 挂起节点✓
ExecuteMultipleDeviceCommands 只读命令✓✓✓
ExecuteMultipleDeviceConfigCommands 配置命令✓✓
VPCSCommands VPCS命令✓
PacketAnalysisTool 实时抓包分析✓✓
PacketAnalysisSkillsTool 协议知识查询✓✓
DeviceSkillsTool 设备技能查询✓✓
GNS3PacketFilterTool 链路滤波器✓
InjectionSkillsTool 故障注入技能✓
GNS3TopologyTool 拓扑信息✓

模式通过 llm_call 节点中的 copilot_mode 选择对应工具列表,调用 create_base_model_with_tools(mode_tools, llm_config) 将工具绑定到 LLM 模型实例。

上下文窗口管理​

  • 使用 tiktoken(cl100k_base)精确计数
  • 三层裁剪策略:conservative / balanced / aggressive
  • 自动注入 {{topology_info}} 到 System Prompt

会话管理​

  • 每个项目独立的 SQLite 数据库(gns3-copilot/copilot_checkpoints.db)
  • 支持置顶、重命名、删除、历史查询
  • 自动记录 token 用量、消息数、LLM 调用次数(目前未提取到WEB UI界面显示)

LLM 配置系统​

特性说明
用户级配置每个用户可独立配置 provider / model / api_key
用户组继承用户未配置时自动继承所属组配置
API 密钥加密数据库存储时自动加密
乐观锁version 字段防止并发修改冲突

关键设计要点​

  1. 项目级隔离 — 每个 GNS3 项目拥有独立的 Agent 实例和 SQLite 存储
  2. ContextVars 安全传递 — JWT token、API key 仅存于内存,随请求结束自动清除
  3. LangGraph StateGraph — 自定义节点 + 条件边,支持 ReAct 循环和递归限制
  4. 流式 SSE — 实时推送 content / tool_call / tool_start / tool_end / error / done 事件
  5. 热重载 — System Prompt、Skills、Protocols 均支持运行时重载
  6. 模式化工具集 — 三种 copilot 模式绑定不同工具组合,按场景安全隔离

功能贡献者​

AI 助手功能由 YueGuobin 开发和贡献。

License​

本文档采用 CC BY-NC-ND 4.0 许可协议(署名-非商业性使用-禁止演绎)。 作者: 岳国宾