-
Notifications
You must be signed in to change notification settings - Fork 134
UsePromptRange
NCF 模板已经默认集成了 Senparc.Xncf.PromptRange 的模块,只需直接运行即可使用。
运行零代码即开即用 NCF 框架。请看初始化 NCF
由于 NCF 采用高度模块化的架构设计,因此获取新功能只需安装“模块(XNCF)“即可。
点击【模块管理】,找到 Senparc.Xncf.PromptRange
模块,点击【安装】:
安装完成后可在左侧菜单中看到已经完成了模块安装,但此时还是”关闭“状态:
点击左侧【启用】按钮:
进入 PromptRange 管理页面:
初次进入,需要配置模型,点击【管理模型】,进入模型管理列表:
设置完成后回到 PromptRange 页面,点击【刷新】即可查看到最新添加的模型,
点击【新建靶场】,给靶场取一个名字:
完成添加:
输入提示词,并点击【打靶】按钮,测试提示词运行结果
每次测试结果都会生成一条不可修改的“靶道”,使用 Tx-Ax
格式表示,Tx
表示一个战术(Tactics)的版本,Ax
表示同一个靶道内的一个小修改的测试(瞄准,Aim):
在已经打靶过的靶道,再次“打靶”,会提供几个选项:
PromptRange 提供自动和手动打分功能
第一步:设置打分标准:
第二步:设置打分标准:
第三步:打靶后自动打分
设置完成后,重新进行“打靶”,即可看到 AI 自动打分:
可以看到,当前的结果并不符合预期,但是包含了正确的结果名词,所以 AI 给到的 5.0 评分属于合理区间。
无论 AI 是否已经打分,你都可以使用手动打分来修改最终评分:
调整后,趋势图也会对应更新:
手动打分可以多次执行,如果手动打分后再进行 AI 评分,则 AI 评分为最终评分
我们可以多次修改 Prompt,并让 AI 评选最佳的结果:
【一次尝试】
【再次用不同战术尝试】
根据 Prompt 和参数、模型策略的差异,我们可以指定新的“战术(T)”
一次成绩并不能代表这个 Prompt 的好坏,我们还需要对他进行多次测试,来确定其稳定性(当然有时我们也会通过调整参数增加输出的不确定性)。
此时对已经打靶过的记录,进行【连发操作】,选择连发数量:
点击【连发】按钮,进行自动测试:
全部获得了满分,说明这个成绩还不错
如果你需要特别标记一下这个靶道,可以设置其名称:
目前 Prompt 框内的内容已经可以被使用到各种工具中,如 Senparc.AI、Semantic Kernel、LangChain 等等。
点击顶部【导出 plugins】按钮,选择需要导出的 Prompt:
导出后将保存为兼容 Semantic Kernel Plugins 的标准文件,打包成 .zip 文件自动下载:
你可以在 NCF 系统内静态或动态引用 Prompt。
点击顶部【复制】图标,完成 PromptRangeCode
复制。
PromptRangeCode
是系统内每个 Prompt 的唯一编号,即使有任何模型参数、Prompt 文字、Prompt 参数的修改,都必定会重新生成一个编号。
在任意位置都可以使用 PromptRangeCode
获取到对应的 Prompt 文本:
var promptRangeCode = "2024.02.06.1-T3-A1"; // PromptRangeCode
var promptItemService = ServiceProvider.GetService<PromptItemService>(); // 获取 PromptItemService,建议使用构造函数自动载入
var promptResult = await promptItemService.GetWithVersionAsync(promptRangeCode, isAvg: true); // 调用接口获取 Prompt 对象
var prompt = promptResult.PromptItem.Content; // 获得 Prompt
高级用法:
- 除了从上述完整的
PromptRangeCode
获得精准的 Prompt 以外,您还可以从某个靶道中获取当前最佳 Prompt,只需要提供"2024.02.06.1-T3"
字符串即可。
- 同理,使用
"2024.02.06.1"
作为PromptRangeCode
进行搜索,可以获得整个靶场中的最佳结果。
- 通过设置
isAvg
参数为true
或false
,可以要求系统返回在搜索范围内平均分的最高的 Prompt,或最高分最高的 Prompt(精准搜索只会返回精准记录,因此无效)。