凭感觉换模型会发生什么
一句话总结
没有评价约束,随意更换模型或提示,这与在没有测试的情况下进行重构是一样的。 一样。感觉变好了和实际变好了是不同的。
为什么需要这个?
新型号出来了。问了几个,答案更好。换了。2周后特定 在类型的问题中收到了关于质量下降的咨询。需要判断是否要退货, 没有依据。
这种情况反复发生的理由是,LLM输出不是决定性的,评价标准是主观的。 这就是原因。就像单位测试一样,很多情况下无法期待“精确的这个值”。 而且人的记忆很容易被最近几件事情所左右。印象深刻的失败一个就占了全部。 颠覆对质量的判断。
但是也可以做。即使不完美,也足以抓住回归。
评价哈内斯的四个部分
评价集。是从实际流量中抽取的代表性问题和预期结果。30~100件的话回归 可以充分开始感应。重要的是反映实际分布—— 只收集成功案例的话,就无法捕捉回归。调整每个流量类型的比例,说很难 至少加入20%已知的案例。
评分仪。根据类型而不同。
| 输出类型 | 评分方法 | 注意事项 |
|---|---|---|
| JSON·分类·提取 | 准确匹配 | 规范化和比较字段顺序·空格 |
| 短事实回答 | 包含关键词,正则表达式 | 允许用列表形式表示同义词 |
| 长述 | LLM 评判 | 评判模型和提示 固定版本 |
| 代码 | 执行后通过测试 | 最可靠 |
LLM评判存在偏见。给长答案比给短答案更高的分数,对自己的类别模型的 喜欢文体,喜欢首先展示给我的候选人。所以让进行A/B比较。 时间是随机改变顺序,问两次结果倒转的话,就宣告平局。
基准线。保存当前运营中的组合的分数。没有这个就没有可比较的对象。 没有。模型、提示、温度、评价集版本必须一起记录,才能以后再现。
门。新组合的分数低于基准线一定幅度以上时,将判定为失败。
确定临界值的方法——先测量噪音
不能用感度来设定临界值。以相同的设置旋转三次,先摇晃晃动幅度。 库存,大于库存的值作为临界值。
# 같은 모델·프롬프트로 3회
run 1: 0.847 run 2: 0.861 run 3: 0.839
→ 노이즈 폭 약 2.2%p → 임계는 3~4%p 로 잡는다
评估集越小,噪音就越大。在50件的评估集中,如果1件被翻转,2%p 移动。从统计上讲,在50个案例中观测到的0.85的95%置信区间大约是 是0.75–0.92。不能在小评估集中以1–2%p的差异来判断。
即使把温度设为0也不完全决定性。布局大小和浮点数累积 根据顺序,结果可能会有所不同,有时相同的输入会产生不同的输出。
只要质量再检查一半就好了。
质量和延误、费用要同时在同一合同中进行。
| 轴 | 重量的价值 | 门示例 |
|---|---|---|
| 质量 | 评价集分数 | 低于基准线-3%p视为失败 |
| 延迟 | p50, p95, 直到第一个令牌 | p95超过基准线的1.5倍时失败 |
| 费用 | 每1,000件的令牌费用 | 超过基准线的2倍时,人会批准 |
不是平均值,而是要看p95。平均延迟很好,但p95是三倍的 确实有变更。用户不会经历平均值,而是会经历自己请求的延迟。
到第一个令牌的时间(TTFT)也单独计算。在流媒体UI中,比起整个完成时间 TTFT决定了实际质量。
在现场相遇的样子
将哈尼塞放入CI是决定性的。在提示变更PR中自动循环 如果回归的话,如果时间被堵住的话,就没有必要让人们记住。提示就像代码一样 要处理的东西的实际意义就是这个。
评估集必须是活着的。通过用户咨询发现的失败案例添加到评估集中。 创建循环后,不会出现两次相同的失败。这就像回归测试的原则一样。
但是有一个陷阱。如果按照评价集继续修改提示的话,就会出现在评价集中。 非常适合。在实际流量中会变差,但分数只会上升。为了阻止这种情况, 将评价集分成两部分,将开发用(反复观看)和验证用(偶尔观看)分开。 如果验证用的分数开始落后于开发用的分数,那就是过度匹配的信号。
要放在评价集里放什么呢?
制作评价集时最常见的错误是只收集做得好的。那样的话分数 总是很高,而且无法控制回归。故意混合了五种类型。
- 代表案例 — 在实际流量中出现最多的类型。大约占总数的一半左右。
- 边界案例—输入为空时、输入非常长时、输入中混合了其他语言时。
- 已知的失败——过去通过咨询收到的。这里是回归感知的核心。
- 必须拒绝的事情——不应该回答的问题。确认模特是否变得乖巧了。
- 陷阱——前提错误的问题(“是2026年获得诺贝尔奖的那个人的话”)。模型是 看看是重新提出前提,还是编造出来的。
写预期结果时,请写成不是一个正确答案,而是允许集合。
{"id": "refund-01",
"input": "환불 언제까지 돼요?",
"must_include": ["7일", "영업일"],
"must_not_include": ["환불 불가", "죄송"],
"max_tokens": 200}
must_not_include意外地很有用。质量思考的大部分都是“不应该说的话
不是“说出来的东西”是“应该说的话”没有说出来。
下次实验要做的事情
调用评价集创建跑者,分别实现准确一致和部分分数评分器,延迟 设定SLO违规,以同样的设置重复三次,重新测量噪声幅度,保存基准线后 判断回归,最后用CI门禁脚本制作。