SuperAPI AI 工具集

bootstrap

测试与质量

查看项目

更新于 10-25 08:46

技能介绍

Bootstrap 是 OpenJudge 项目中的一项冷启动评估技能,用于在用户“什么都没有”——没有 traces、没有标签、没有评估集——的情况下,从零构建一个 v0 评估系统。按照资料描述,大约 30 分钟可以得到一个可运行的 v0 评分器,并获得一条通往经过校准、可信评估的清晰路径。

【安装与依赖】 使用评分器生成器需要安装 OpenJudge:pip install py-openjudge。访谈、分层与校准路线图方法论本身与 SDK 无关。评分器生成使用 SimpleRubricsGenerator / IterativeRubricsGenerator。

【使用方式:五步清单】 资料要求为每一项创建任务并按顺序完成:

  1. 理解产品——一次性访谈,而非逐题追问。
  2. 生成 v0 评分器——使用 OpenJudge SimpleRubricsGenerator。
  3. 合成评估输入——30 条输入,按 60/30/10 分层。
  4. 运行 v0 评估——使用 GradingRunner 与生成的评分器。
  5. 输出路线图——如何达到 50 条标签并完成校准。

【第 1 步:产品访谈(一次性)】 让用户一次性描述系统,问题包括:系统做什么、谁使用;3 个完美输出的例子;系统绝对不能做的 3 件事;最担心的失败。不要逐题 drip-feed,一次提问、一次回答。如果用户提供规格文档或设计文档,直接阅读。

【第 2 步:生成 v0 评分器】 使用 OpenJudge 的 SimpleRubricsGenerator 从产品描述创建零样本评分器。资料给出的代码示例包括导入 OpenAIChatModel、SimpleRubricsGenerator、SimpleRubricsGeneratorConfig、GradingRunner;OpenAIChatModel 从环境变量读取 OPENAI_API_KEY / OPENAI_BASE_URL;对阿里云 DashScope(百炼)需将 OPENAI_BASE_URL 设为 https://dashscope.aliyuncs.com/compatible-mode/v1,OPENAI_API_KEY 设为你的 key;模型示例为 qwen-plus 或 gpt-4o 等。配置包括 grader_name、model、task_description(从访谈总结)、scenario(访谈中的使用场景)、min_score=0、max_score=1。调用 generator.generate(dataset=[], sample_queries=[...]) 生成 grader。资料解释选择零样本而非让用户写标准的原因:此阶段用户不知道“好”在操作上意味着什么,生成器给出合理起点,用户在看到 v0 结果后再细化。

【第 3 步:合成评估输入】 生成 30 条测试输入并分层,使用 3 种不同提示模板保证多样性:模板 1 生成典型的 {domain} 查询;模板 2 生成意图不明确的模糊查询;模板 3 生成不寻常但真实的边缘案例查询。目标分布:60% 常见/典型查询(18 条)、30% 边界/模糊查询(9 条)、10% 边缘/不寻常查询(3 条)。关键要求:只生成输入,绝不生成标签。标签来自运行实际系统并获得人工判断。资料给出 GradingRunner 所需的数据集格式:每条包含 query 和 response(response 由运行系统填充)。

【第 4 步:运行 v0 评估】 将生成的评分器接入 GradingRunner:runner = GradingRunner(grader_configs={"v0_quality": grader}, max_concurrency=8),调用 await runner.arun(dataset),从结果中分离 GraderScore 与 GraderError,计算平均分并打印错误数量。

【第 5 步:输出路线图】 v0 评分器尚未校准,TPR/TNR 未知。需给用户通往可信的精确路径:阶段 1(现在)在 30 条输入上运行 v0 评分器获得基线,评分器未校准,分数只作方向性参考;阶段 2(1-2 周)收集 50 条人工标注样本(25 通过 + 25 失败),人工按标准标记通过/失败,标签存于 labels/<grader_name>.jsonl;阶段 3 拿到 50 条标签后运行 03-align-human,测量 v0 评分器的 TPR/TNR、检测偏差(位置、冗长、自我增强),获得人工减少路线图;阶段 4 当 TPR >= 0.8 且 TNR >= 0.8 时,评分器已校准,可作为生产门禁使用。

【快速模式与深度模式】 快速模式(默认):上述步骤 1-5,30 分钟得到 v0,适用于风险低或探索阶段。深度模式:如果用户已有 20+ 条标注样本,改用 IterativeRubricsGenerator 而非 SimpleRubricsGenerator 进行数据驱动评分器创建。资料给出配置示例:IterativePointwiseRubricsGeneratorConfig,包含 grader_name、model、task_description、min_score=0、max_score=1、max_epochs=3、batch_size=10,调用 generator.generate(dataset=labeled_data)(20+ 条标注样本)。

【红旗警告——必须停下重新评估】 “我会让 LLM 同时生成输入和标签以节省时间” → 停止。LLM 生成标签会形成自洽循环,TPR 在真实数据测试前看起来很好,之后会崩塌。“v0 评分器看起来不错,部署为门禁吧” → 停止。未校准评分器的 TPR/TNR 未知,可能全部通过或全部失败。“跳过路线图,用户知道下一步” → 停止。路线图就是交付物,没有它 bootstrap 只产出一个不可信的评分器。

【常见错误】 过度访谈:一次提示含 4 个问题,除非答案确实不清楚,否则不要追问。v0 中原则太多:SimpleRubricsGenerator 在聚焦的任务描述下效果最好,不要试图在 v0 评估 10 个维度,从最重要的 2-3 个开始。合成输入跳过分层:如果 30 条输入全是典型查询,就永远看不到系统如何处理边缘情况。把 v0 分数当真相:始终在 v0 结果前加“UNVERIFIED——这些分数仅作方向性参考”。

【后续技能】 完成 08-bootstrap 后:03-align-human(收集到 50 条人工标签后校准评分器);01-eval-design(如需超出 v0 30 条输入的正确分层数据集);02-metric-design(如需要针对不同维度的多个评分器)。