1.摘要:使用trace基于python3开发一套交互式的配置生成工具
2.背景:作为一名近10年的老网工,面对批量的设备配置工作时,因需要手动编写大量的命令配置,但由于人为的手动复制粘贴,会经常出现失误且费时费力。现在用了AI编程工具后,可以对trace说出需求,让trace来优化提示词,充分了解我们的需求后,编写出一份半自动化的配置生成器。
3.实践过程:
- 需求定位:在使用编程工具之前,明确了自己的痛点,以及需要的目标效果
- 工具选择:从B站上看到众多博主对trace的评测后,并且考虑字节的一大背景,选择了trace这个工具
- 项目框架:一开始使用一份自己编写的详细需求文档,先丢给AI,参考下图
- 框架搭建:根据具体的需求文档,让不同AI给出一份项目框架,最终整合到最优方案
project/
├── data/ # 原始输入数据(配置来源)
│ ├── services.yaml # 这个文件定义所有配置相关的关键字,和厂商无关,变量内容会被builder-.py调用并修改变量内容
│
├── models/ # 数据处理 / 调用service.yaml各子段赋值,传递给子模板生成配置
│ ├── normalize.py #
│ ├── validator.py #校验数据模块
│ └── builder-I.py # config.py会调用本模块生成对应I类型的配置文件
│
├── templates/ # Jinja2模板层,模板中j2文件用if根据不同厂商生成不同子配置
│ ├── Cisco
│ │ ├── vrf.j2
│ │ ├── interface.j2
│ │ ├── limit.j2
│ │ └── bgp.j2
│ │ └── route-map.j2
│ ├── Huawei
│ │ ├── vrf.j2
│ │ ├── interface.j2
│ │ ├── limit.j2
│ │ └── bgp.j2
│ │ └── route-map.j2
│ ├── Juniper
│ │ ├── vrf.j2
│ │ ├── interface.j2
│ │ ├── limit.j2
│ │ └── bgp.j2
│ │ └── route-map.j2
├── config.py # 全局配置(路径/开关),根据--参数来,交互式/非交互式输入参数,调用builder-I.py
└── requirements.txt #采用虚拟化环境部署,及项目相关模块
-
项目实现以及调优:使用trace读取项目框架,并附带上需求文档
4.成果展示:
- 执行脚本后,命令会输出提示词
- 执行具体的输入
- 输出结果
5.效果与总结:
总体效果还是非常满意的,至少比人工编程搜问题来的快,并且在功能实现上,比传统的编程效率高很多,质量也更好。但是也有不足的地方,比如某些函数中不支持的参数,有时候AI会存在错误使用非法参数情况,也要多注意测试和甄别,当然SOLO也可以自己完成测试和修复。




