TT Lab
开始
学习 学习路径 课程

LLM 服务

凭感觉换模型会发生什么

在 TT Lab 中继续学习

一句话总结

没有评价约束,随意更换模型或提示,这与在没有测试的情况下进行重构是一样的。 一样。感觉变好了和实际变好了是不同的。

为什么需要这个?

新型号出来了。问了几个,答案更好。换了。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中自动循环 如果回归的话,如果时间被堵住的话,就没有必要让人们记住。提示就像代码一样 要处理的东西的实际意义就是这个。

评估集必须是活着的。通过用户咨询发现的失败案例添加到评估集中。 创建循环后,不会出现两次相同的失败。这就像回归测试的原则一样。

但是有一个陷阱。如果按照评价集继续修改提示的话,就会出现在评价集中。 非常适合。在实际流量中会变差,但分数只会上升。为了阻止这种情况, 将评价集分成两部分,将开发用(反复观看)和验证用(偶尔观看)分开。 如果验证用的分数开始落后于开发用的分数,那就是过度匹配的信号。

要放在评价集里放什么呢?

制作评价集时最常见的错误是只收集做得好的。那样的话分数 总是很高,而且无法控制回归。故意混合了五种类型。

  1. 代表案例 — 在实际流量中出现最多的类型。大约占总数的一半左右。
  2. 边界案例—输入为空时、输入非常长时、输入中混合了其他语言时。
  3. 已知的失败——过去通过咨询收到的。这里是回归感知的核心。
  4. 必须拒绝的事情——不应该回答的问题。确认模特是否变得乖巧了。
  5. 陷阱——前提错误的问题(“是2026年获得诺贝尔奖的那个人的话”)。模型是 看看是重新提出前提,还是编造出来的。

写预期结果时,请写成不是一个正确答案,而是允许集合。

{"id": "refund-01",
 "input": "환불 언제까지 돼요?",
 "must_include": ["7일", "영업일"],
 "must_not_include": ["환불 불가", "죄송"],
 "max_tokens": 200}

must_not_include意外地很有用。质量思考的大部分都是“不应该说的话 不是“说出来的东西”是“应该说的话”没有说出来。

下次实验要做的事情

调用评价集创建跑者,分别实现准确一致和部分分数评分器,延迟 设定SLO违规,以同样的设置重复三次,重新测量噪声幅度,保存基准线后 判断回归,最后用CI门禁脚本制作。