循序渐进 · AIP 教学 · AIP Evals(五)
评估 Ontology 编辑
测一个会写 Ontology 的函数,难道每次都要真改数据?不用 —— 每个测试用例在 Ontology 模拟环境里跑,真实数据毫发无损。
本文来源 · Source
内容整理自 Palantir Foundry 官方文档:
https://www.palantir.com/docs/foundry/aip-evals/ontology-edits/
原始标题:AIP Evals • Evaluate Ontology edits • Palantir · 所属:AIP Evals(给 AI 做测试)
https://www.palantir.com/docs/foundry/aip-evals/ontology-edits/
原始标题:AIP Evals • Evaluate Ontology edits • Palantir · 所属:AIP Evals(给 AI 做测试)
★
先记住这几条
① 写入也能安全地测
不用怕污染生产数据。
② 用模拟环境隔离
每个用例跑在自己的沙盒里。
③ 真实 Ontology 保持不变
这点至关重要。
0
写在前面
运行评估套件时,会为每个测试用例执行其 Logic 函数。对于涉及本体(Ontology)编辑的函数(例如创建、编辑或删除对象),每个测试用例都在一个本体模拟环境中执行。这确保了实际本体在测试和评估期间保持不变。
1
针对 Ontology 编辑的自定义评估函数
要点:怎么判定写入是否正确。
对于会产生本体编辑结果的 AIP Logic 函数,用户必须用 TypeScript 配置自定义评估函数,或使用中间参数。自定义评估函数必须返回布尔型或数值型。一个评估函数也可以通过返回由布尔型或数值型组成的 struct 来返回多个指标。
在 Evaluations 应用中添加评估函数时,系统会提示你在代码仓库中编写函数,或选择现有的已发布函数。借助下文提供的指南,探索各种类型的本体编辑,并学习如何有效地使用 TypeScript 函数对其进行评估。
Created objects
在涉及创建对象的本体编辑情形中,所创建的对象仅存在于模拟本体中。因此,这些创建的对象无法直接配置为测试用例参数进行传入。相反,应使用一个可标识的属性来搜索它,并检查其属性。
@Function()
public async checkTicketWasCreated(
expectedRequester: string,
expectedDate: LocalDate,
expectedClassification: string,
): Promise<boolean> {
const matches = Objects.search().supportTicket()
.filter(ticket => ticket.ticketRequester.exactMatch(expectedRequester))
.filter(ticket => ticket.ticketCreationDate.exactMatch(expectedDate))
.all();
if (matches.length !== 1) {
return false;
}
return matches[0].classification === expectedClassification;
}Edited objects
对于对象编辑的输出类型,被编辑的对象已经存在于真实本体中。在模拟本体中,你可以直接将它传入函数并检查其属性,如下所示:
@Function()
public checkTicketClassification(
ticket: SupportTicket,
expectedClassification: string,
): boolean {
return ticket.classification === expectedClassification;
}Deleted objects
在涉及删除对象的本体编辑情形中,该对象预期已在模拟本体中被删除,因此它无法被传入评估函数。要验证对象确实已被删除,请传入该对象的一个可标识属性并搜索它,以确保没有结果。
@Function()
public async checkTicketWasDeleted(ticketId: string): Promise<boolean> {
const count = await Objects.search().supportTicket()
.filter(ticket => ticket.ticketId.exactMatch(ticketId))
.count();
return count === 0;
}延伸阅读 · 相关页面
按主题横向跳转,不必顺着目录一篇篇读。
本组其他页面 · AIP Evals(给 AI 做测试)
同一主题下的相邻内容。
- AIP Evals 总览:给 AI 函数做测试LLM 的输出是不确定的(non-deterministic),传统单元测试不够用。AIP Evals 是专门为此设计的
- 为 Logic 函数建立评估套件Logic 的 Preview 面板适合一次性试跑;但要建立真正的信心,必须拿大量输入去测。这篇是入门路径。
- 创建评估套件评估套件 = 测试用例 + 目标函数 + 评估函数。这篇讲怎么把它搭起来,包括同时测多个目标函数的做法。
- 用中间参数评估 block 输出LLM 函数往往包含多个步骤,只看最终结果可能看不出是哪一步出了问题。这篇讲怎么评测中间 block 的输出。
- 运行评估套件套件可以从多个地方运行:AIP Logic 的 Evals 侧边栏、AIP Evals 应用。可以整跑,也可以只跑单个用
- 运行实验:系统对比参数组合想知道哪个模型性价比最高、哪版提示词效果最好?用实验系统性地跑多个参数组合,而不是靠猜。
- 把运行结果写入数据集Evals 界面不是给所有人用的。把结果写进数据集,就能在 Workshop 等应用里跟其他信息一起展示,让领域专家也能
- 分析运行结果结果视图告诉你:函数在各测试用例与评估标准上的表现具体如何。可以在 Evals 应用里看,也能在 Logic / Cha
- 在指标仪表盘查看结果把多次运行的结果收拢到一处,用图表和统计呈现,还能比较聚合结果或单个测试用例的表现。