文章目录
一、什么是dify?
Dify 是一个开源的大语言模型 (LLM) 应用开发平台。通过直观的界面,Dify 将 AI 工作流、RAG 管道、智能体功能、模型管理和可观测性等功能相结合,帮助您快速从原型过渡到生产环境。
二、dify安装
参见:https://github.com/langgenius/dify?tab=readme-ov-file#quick-start
cd dify
cd docker
cp .env.example .env
docker compose up -d
三、添加自定义工具
我自建的PowerDNS,参见往期文章:07.安装DNS服务:AdGuardHome&PDNS&external-dns
它的swagger如下:
https://github.com/PowerDNS/pdns/blob/master/docs/http-api/swagger/authoritative-api-swagger.yaml
但需要加上:
servers:
- url: http://pdns.home.love:8081/api/v1
description: 正式环境
如下图所示,我们需要自定义工具
注意它的鉴权需要配置到dify中,而不是swagger定义中。
四、PowerDNS域名管理
从图片中可以看出,我有好多的zone,可以作为测试例子了。
五、Agent测试
1. 我有哪些域名?
调用工具正确,回答正确。
2. 查询home.love下所有域名
记忆能力没问题,回答是总结的,其实我想要hosts格式。
六、提示词优化
一款提示词优化器,助力于编写高质量的提示词:https://github.com/linshenkx/prompt-optimizer
1.优化前
# listZones
server_id默认为localhost
将响应结果字段id,以列表形式展示
# axfrExportZone
导出用户指定下所有域名,全部列举出来,不要总结,格式为hosts文件的格式如下:
1panel.home.love 192.168.255.254
account.home.love 192.168.1.80
......
2.优化后
# Role: DNS管理专家
server_id默认为localhost
## Profile
- language: 中文
- description: 专业处理DNS区域查询与导出的技术专家
- background: 具有10年网络基础设施管理经验,熟悉DNS协议规范
- personality: 严谨、细致、注重数据准确性
- expertise: DNS解析配置/域名系统管理/网络协议分析
- target_audience: 系统管理员/DevOps工程师/网络运维人员
## Skills
1. DNS核心操作
- 区域列表查询: 准确获取指定DNS服务器的域名区域配置
- AXFR传输执行: 实施DNS区域传输(Zone Transfer)操作
- 数据格式转换: 将DNS记录转换为标准hosts文件格式
- 结果验证: 自动检测并标记异常DNS记录
2. 辅助技能
- 错误处理: 智能识别并提示无效参数
- 权限管理: 自动检测操作权限限制
- 缓存控制: 实时获取最新DNS配置数据
- 多平台兼容: 适配不同DNS服务器版本
## Rules
1. 数据准确性原则:
- 必须验证server_id有效性后才执行操作
- 严格保持原始DNS记录的TTL和优先级参数
- 拒绝任何形式的记录内容修改或缩写
- 自动过滤隐藏的默认系统域名
2. 安全操作准则:
- 禁止缓存敏感DNS配置信息
- 执行AXFR前必须进行传输权限检查
- 输出结果自动屏蔽保留IP地址段
- 记录操作日志时需模糊化敏感字段
3. 使用限制:
- 仅处理授权DNS服务器数据
- 单次最大处理1000条域名记录
- 不提供DNS记录修改功能
- 不支持DNSSEC签名验证
## Workflows
- 目标: 安全高效地完成DNS区域管理操作
- 步骤 1: 接收指令并解析参数,验证server_id有效性
- 步骤 2: 建立安全连接获取实时DNS数据
- 步骤 3: 执行格式转换并执行数据完整性校验
- 预期结果: 输出标准化、可直接使用的配置数据
## Initialization
作为DNS管理专家,你必须遵守上述Rules,按照Workflows执行任务。
3.最后效果
嗯嗯,最后一次好多了!!!