01 选出基座模型
模块 01 的讲师笔记,时间安排、讲解脚本、常见故障和重置步骤。
学员课程 01 选出基座模型 的讲师配套材料。
时间安排
用推荐的子集约 20 分钟;如果现场跑完整网格则需 45–60 分钟。
- 8 分钟:配置 Langfuse 评估器(LLM Connection、
correctness代码评估器, 以及名为llm_judge、会写出agent-arena-llm-judge分数的 LLM-as-a-judge evaluator)。请在你自己的投屏上现场走一遍, 而不是只丢一个 README 链接,这是整场课里最琐碎的一步。 - 8 分钟:运行一个包含两个模型和一种提示词的子集(等待时讲解;这是引入 "为什么用每个正确答案的成本"这个框架的好时机)。完整网格通常需要 35–45 分钟,应该提前跑好,或留给学员自行安排。
- 4 分钟:打开排行榜,确认最佳方案并说出它的
config_id。
讲解脚本
- 把这一步定位为整门课程那个最基础的决策:由哪个模型驱动 agent,靠证据决定,而不是别人在另一种工作负载上跑出来的公开 榜单。
- 强调打分发生在哪里:在 Langfuse 内部,而不是在 harness 内部。 harness 负责编排网格并记录完整的 Experiment Item;leaderboard 通过 Langfuse Public API 读取它们。这就是模块 00 里接好的同一个 Langfuse 项目,这里没有引入新工具或第二个结果存储。
- 明确点出首要指标以及它为什么不是原始准确率:每个正确
答案的成本,针对这项具体任务的每美元质量。指出成本是根据
OpenRouter 的实时价格计算的,每次运行开始时都会刷新,而不是写死在
config.yaml里的过期数字。 - 在屏幕上展示网格的术语:六个模型分为闭源与开放权重
(
claude-sonnet-5、gpt-5.6-luna、gemini-flash-lite/deepseek-v4-flash、qwen3.7-flash、glm-4.7-flash)× prompt(P1_zeroshot…P3_dialect),以及一个config_id就是<model>__<prompt>。 - 明确数据集的来历:仓库提供 20 个 YAML 问题;
q019和q020只用作 few-shot 保留样例,因此一个干净项目中的arena-goldenExperiment 数据集从 18 个条目开始。 - 现场从 Leaderboard 的一行点进逐题结果,再点进它背后的 Langfuse trace,这就是模块 02 会深入展开的下钻习惯。
- 落到冠军上,把它的
config_id大声念出来,从这里开始的每个模块 都会回指它。
常见故障
- Langfuse evaluators 没配好:harness 只等到
--eval-timeout(默认 180s),然后以非零退出码结束并指出缺失的agent-arena-llm-judgescore;这个 score 由名为llm_judge的 evaluator 定义写出。 跑python -m scripts.provision_langfuse_evaluators来配好由 OpenRouter 支撑的 judge, 修好 correctness evaluator 的 target/filter,然后用一个新的--run-id跑一个小的两模型、 一 prompt 网格;这里刻意没有本地结果兜底路径,因为 Langfuse 就是评测存储。 - 占位的
OPENROUTER_API_KEY:网格里每次调用都以401失败。 这一点应该在模块 00 就确认过,但如果漏掉了,就会在这里 暴露:整整一次运行、所有配置都是零个正确答案。 - 某个模型 slug 与 OpenRouter 的目录脱节:
config.yaml里的模型id(例如anthropic/claude-sonnet-5)是按撰写时 OpenRouter 上在线的名字固定下来的; OpenRouter 会弃用/重命名 slug。如果某个配置立刻以 "model not found" 这类失败报错,就查https://openrouter.ai/api/v1/models上当前的 slug,并与config.yaml比对。dashboard 的/api/models端点反映实时目录,所以 在那里发现不一致,是在跑 harness 之前快速发现脱节的办法。 - ClickHouse 没初始化:如果模块 00 没有干净地跑完,harness 对
v_*视图的查询会返回空结果或报错;每个配置回来的outcome都一样。重跑scripts/arena.sh up。 - 运行看起来卡住了:网格是
models × prompts(默认 6 × 3 = 18 个配置); 端到端可能要好几分钟。用--models/--prompts把它缩小以便 现场演示(见重置步骤)。
重置步骤
- 确认 ClickHouse 已初始化:
scripts/arena.sh up(幂等;可安全重跑)。 - 跑一个便宜的子集而不是完整网格:
python -m eval.harness --run-id demo2 --models qwen3.7-flash,gpt-5.6-luna --prompts P1_zeroshot,P3_dialect - 每次新的运行都给一个新的
--run-id(例如demo2、demo3),这样它在 Leaderboard 上会是自己的一组行、在 Langfuse 里是自己的 Experiment,而不是 混进上一次运行里。 - 如果卡点是 Langfuse evaluators,确认两者的 target 都是 Experiments、数据集
过滤条件是
arena-golden,然后用一个新的--run-id重跑上面那个便宜的子集。 - 如果是 dashboard 本身卡住了(不是 harness),
scripts/arena.sh stop然后scripts/arena.sh serve只重启本地服务,不会动已初始化的 数据。