31. Inspect Core:Task、Dataset、Sample、Solver 与 Scorer
Inspect AI · 4~6 小时
学习目标
- 掌握 Inspect Task 核心对象
- 把 EvalCase 映射到 Sample
- 实现自定义 Solver 与 Scorer
前置知识
- 第 30 章
- Python async 基础
本章产物: 创建一个包含 20 Samples 的自定义 Inspect Task。
31.1 Task
Inspect Task 把:
Dataset
Solver
Scorer组合成可执行评测单元。
这与我们的 Methodology 映射:
EvalCase → Sample
Agent Runner → Solver/Agent
Evaluator → Scorer31.2 Dataset / Sample
一个 Sample 应包含足以执行和评分的信息:
Sample(
id="case-001",
input="...",
target="...",
metadata={...}
)对于 State-based Eval,target 不一定是文本答案;可以把 fixture / expected state 放 metadata,再由 custom scorer 读取。
31.3 Solver
Solver 可以:
- 添加 system message;
- 调模型;
- 自我批评;
- 多轮;
- 调 Agent。
不要把所有业务逻辑都塞进一个 Solver。复用组件更容易做实验对照。
31.4 Scorer
Scorer 是把执行结果转为分数/解释的关键。
推荐分开:
state_scorer
tool_scorer
answer_scorer
safety_scorer然后由平台聚合,而不是一个超大 Judge 一次输出所有维度。
31.5 Metadata
Metadata 应保存:
category
difficulty
risk
fixture
expected effects
forbidden effects
policy version让同一 Task 可以按 slice 分析。
31.6 一个最小结构
@task
def customer_service():
return Task(
dataset=...,
solver=...,
scorer=[state_scorer(), policy_scorer()]
)31.7 设计原则
Inspect Task 是“可执行 Eval 定义”,不是企业平台的全部领域对象。
平台中的:
EvalSuite
Experiment
ReleaseGate仍应由上层管理。
31.8 验收问题
- Sample 如何对应 EvalCase?
- 为什么 Scorer 应尽量拆分?
- Metadata 对 Slice Analysis 有什么价值?