graph TB %% 表示层 subgraph "表示层" StreamlitUI[Streamlit Web界面] ChatInterface[聊天界面] SettingsPage[设置页面] HelpPage[帮助页面] SessionManager[会话管理] end
%% LangGraph智能体框架
subgraph "LangGraph智能体框架"
StateGraph[StateGraph工作流]
LLMNode[llm_call节点]
ToolNode[tool_node节点]
TitleNode[title_generator节点]
%% 路由逻辑
ShouldContinueRouter[should_continue路由器]
RecursionRouter[recursion_limit_continue路由器]
%% 状态管理
MessagesState[MessagesState]
SQLiteCheckpoint[SQLite检查点]
end
%% 工具集成层
subgraph "工具集成层"
GNS3TemplateTool[GNS3模板工具]
GNS3TopologyTool[GNS3拓扑工具]
GNS3CreateNodeTool[GNS3创建节点工具]
GNS3LinkTool[GNS3连接工具]
GNS3StartNodeTool[GNS3启动节点工具]
ExecuteDisplayCommands[执行显示命令]
ExecuteConfigCommands[执行配置命令]
VPCSMultiCommands[VPCS多命令]
LinuxTelnetBatch[Linux Telnet批量]
end
%% 网络自动化框架
subgraph "网络自动化框架"
NornirEngine[Nornir并发引擎]
NetmikoConnector[Netmiko连接器]
Telnetlib3Client[Telnetlib3客户端]
DeviceInventory[设备清单]
ThreadPool[线程池执行器]
end
%% GNS3集成框架
subgraph "GNS3集成框架"
CustomGNS3Client[自定义GNS3客户端]
GNS3Connector[GNS3 API连接器]
ProjectManager[项目管理器]
NodeManager[节点管理器]
LinkManager[连接管理器]
TopologyReader[拓扑读取器]
end
%% 数据持久层
subgraph "数据持久层"
SQLiteDB[(SQLite数据库)]
LogFiles[日志文件]
ConfigFiles[配置文件]
CheckpointDB[检查点数据库]
end
%% 基础设施层
subgraph "基础设施层"
GNS3Server[GNS3服务器]
NetworkDevices[网络设备]
VirtualMachines[虚拟机]
NetworkTopology[网络拓扑]
end
%% 数据流连接
%% UI到智能体
StreamlitUI --> ChatInterface
ChatInterface --> StateGraph
SettingsPage --> ConfigFiles
SessionManager --> SQLiteCheckpoint
%% LangGraph内部流程
StateGraph --> LLMNode
LLMNode --> ShouldContinueRouter
ShouldContinueRouter --> ToolNode
ShouldContinueRouter --> TitleNode
ToolNode --> RecursionRouter
RecursionRouter --> LLMNode
TitleNode --> SQLiteCheckpoint
%% 状态管理
MessagesState --> StateGraph
SQLiteCheckpoint --> MessagesState
%% 工具集成
ToolNode --> GNS3TemplateTool
ToolNode --> GNS3TopologyTool
ToolNode --> GNS3CreateNodeTool
ToolNode --> GNS3LinkTool
ToolNode --> GNS3StartNodeTool
ToolNode --> ExecuteDisplayCommands
ToolNode --> ExecuteConfigCommands
ToolNode --> VPCSMultiCommands
ToolNode --> LinuxTelnetBatch
%% 工具到自动化框架
ExecuteDisplayCommands --> NornirEngine
ExecuteConfigCommands --> NornirEngine
VPCSMultiCommands --> Telnetlib3Client
LinuxTelnetBatch
Telnetlib3Client
%% 自动化框架内部
NornirEngine --> NetmikoConnector
NornirEngine --> DeviceInventory
NornirEngine
ThreadPool
Telnetlib3Client --> DeviceInventory
%% 工具到GNS3框架
GNS3TemplateTool --> CustomGNS3Client
GNS3TopologyTool --> CustomGNS3Client
GNS3CreateNodeTool --> CustomGNS3Client
GNS3LinkTool --> CustomGNS3Client
GNS3StartNodeTool --> CustomGNS3Client
%% GNS3框架内部
CustomGNS3Client --> GNS3Connector
CustomGNS3Client --> ProjectManager
CustomGNS3Client --> NodeManager
CustomGNS3Client --> LinkManager
CustomGNS3Client --> TopologyReader
%% 持久化连接
SQLiteCheckpoint --> CheckpointDB
StateGraph --> LogFiles
StreamlitUI --> ConfigFiles
%% 基础设施连接
GNS3Connector --> GNS3Server
NetmikoConnector --> NetworkDevices
Telnetlib3Client
NetworkDevices
TopologyReader --> NetworkTopology
NodeManager --> VirtualMachines
%% 样式定义
classDef presentation fill:#e3f2fd,stroke:#1565c0,stroke-width:3px
classDef agent fill:#f3e5f5,stroke:#7b1fa2,stroke-width:3px
classDef tools fill:#e8f5e8,stroke:#2e7d32,stroke-width:2px
classDef automation fill:#fff3e0,stroke:#ef6c00,stroke-width:2px
classDef gns3 fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef persistence fill:#f1f8e9,stroke:#689f38,stroke-width:2px
classDef infrastructure fill:#e0f2f1,stroke:#00695c,stroke-width:2px
class StreamlitUI,ChatInterface,SettingsPage,HelpPage,SessionManager presentation
class StateGraph,LLMNode,ToolNode,TitleNode,ShouldContinueRouter,RecursionRouter,MessagesState,SQLiteCheckpoint agent
class GNS3TemplateTool,GNS3TopologyTool,GNS3CreateNodeTool,GNS3LinkTool,GNS3StartNodeTool,ExecuteDisplayCommands,ExecuteConfigCommands,VPCSMultiCommands,LinuxTelnetBatch tools
class NornirEngine,NetmikoConnector,Telnetlib3Client,DeviceInventory,ThreadPool automation
class CustomGNS3Client,GNS3Connector,ProjectManager,NodeManager,LinkManager,TopologyReader gns3
class SQLiteDB,LogFiles,ConfigFiles,CheckpointDB persistence
class GNS3Server,NetworkDevices,VirtualMachines,NetworkTopology infrastructure
LinuxTelnetBatch --- NornirEngine
ProjectManager --- GNS3Server
LinkManager --- NetworkTopology
Telnetlib3Client --- ThreadPool
ThreadPool --- NetworkDevices
DeviceInventory
TopologyReader
CheckpointDB --- SQLiteDB
subGraph2
LogFiles
```
GNS3 Copilot 系统架构
概述
GNS3 Copilot是一个基于AI的网络自动化助手,与GNS3网络模拟器集成,提供智能化的网络管理和自动化能力。系统采用多层架构,具有清晰的职责分离,能够实现可扩展和可维护的网络自动化解决方案。
架构层次
1. 表示层
Streamlit Web界面:提供直观交互的现代基于Web的UI - 聊天界面:用于自然语言交互的实时对话界面 - 设置页面:LLM提供商、GNS3连接和系统参数的配置管理 - 帮助页面:文档和用户指导 - 会话管理:支持多会话,包括对话历史和持久化
2. LangGraph智能体框架
StateGraph工作流:使用LangGraph的核心AI智能体编排
- llm_call节点:处理LLM推理和决策
- tool_node节点:基于LLM决策执行工具调用
- title_generator节点:生成对话标题用于会话标识
- 路由逻辑:
- should_continue:确定是否需要工具执行或对话继续
- recursion_limit_continue:通过步骤限制防止无限循环
- 状态管理:
- MessagesState:维护对话历史和上下文
- SQLite检查点:对话连续性的持久化状态存储
3. 工具集成层
8个专用工具,实现全面的网络自动化:
GNS3管理工具: - GNS3模板工具:从GNS3服务器获取可用节点模板 - GNS3拓扑工具:读取和分析网络拓扑信息 - GNS3创建节点工具:在GNS3项目中创建新的网络节点 - GNS3连接工具:在网络节点之间建立连接 - GNS3启动节点工具:管理节点生命周期(启动/停止/重启)
网络自动化工具: - 执行显示命令:同时在多个设备上运行显示/查看命令 - 执行配置命令:在多个设备上应用配置更改 - VPCS多命令:管理虚拟PC模拟器实例 - Linux Telnet批量:通过Telnet在Linux设备上执行批量命令
4. 网络自动化框架
Nornir并发引擎:高性能自动化框架 - Netmiko连接器:网络设备的SSH/Telnet连接 - Telnetlib3客户端:用于VPCS和Linux设备的异步Telnet客户端 - 设备清单:动态设备发现和管理 - 线程池执行器:并发执行以提高性能
5. GNS3集成框架
自定义GNS3客户端:基于gns3fy的增强型GNS3 API客户端 - GNS3 API连接器:与GNS3服务器的RESTful API通信 - 项目管理器:GNS3项目生命周期管理 - 节点管理器:节点配置和控制操作 - 连接管理器:网络连接管理 - 拓扑读取器:网络拓扑分析和可视化
6. 数据持久层
SQLite数据库:轻量级、可靠的数据存储 - 检查点数据库:LangGraph对话状态持久化 - 日志文件:全面的系统活动日志记录 - 配置文件:系统和用户首选项管理
7. 基础设施层
网络基础设施:物理和虚拟网络组件 - GNS3服务器:网络模拟和仿真平台 - 网络设备:路由器、交换机、防火墙和其他网络设备 - 虚拟机:用于网络测试的来宾操作系统实例 - 网络拓扑:逻辑和物理网络布局
数据流和交互
对话流程
- 用户输入通过Streamlit聊天界面进入
- LangGraph StateGraph通过llm_call节点处理输入
- 路由逻辑确定是否需要工具执行
- 工具执行适当的网络操作
- 结果通过智能体流回用户界面
- 对话状态通过SQLite检查点持久化
工具执行流程
- LLM分析用户意图并选择适当的工具
- 工具节点使用提供的参数执行选定的工具
- 网络自动化框架处理设备连接
- GNS3集成框架管理模拟器操作
- 结果被格式化并返回到对话中
会话管理
- 每个对话会话获得唯一的线程ID
- SQLite检查点维护跨会话的对话状态
- 会话历史允许对话继续
- 标题生成提供有意义的会话标识
技术规格
支持的LLM提供商
- OpenAI(GPT模型)
- Anthropic(Claude模型)
- Google(Gemini模型)
- AWS(Bedrock模型)
- Ollama(本地模型)
- DeepSeek
- XAI(Grok模型)
网络设备支持
- Cisco IOS/IOS-XE/NX-OS
- Juniper Junos
- Arista EOS
- Linux系统
- VPCS(虚拟PC模拟器)
- 通过Netmiko支持自定义设备类型
GNS3集成
- GNS3 Server 2.2+
- 所有节点类型(路由器、交换机、主机等)
- 项目和拓扑管理
- 实时节点控制
- 连接管理
性能特性
- 通过Nornir实现并发设备执行
- 异步Telnet操作
- 线程池优化
- 高效的状态管理
- 用于实时交互的流式响应
安全性和可靠性
安全措施
- 通过环境变量管理API密钥
- 安全的凭据存储
- 网络隔离选项
- 通过GNS3权限进行访问控制
可靠性特性
- 健壮的错误处理和恢复
- 连接超时管理
- 状态持久化和恢复
- 用于故障排除的综合日志记录
- 服务故障时的优雅降级
可扩展性考虑
水平扩展
- 无状态智能体设计
- 分布式检查点存储
- 负载均衡器兼容性
- 微服务架构潜力
垂直扩展
- 可配置的线程池
- 内存高效的状态管理
- 优化的数据库操作
- 资源监控能力
此架构为基于AI的网络自动化提供了坚实的基础,同时保持了对未来增强和集成的灵活性。