如何进行全面的大规模-LLM-验证
如何进行全面的大规模 LLM 验证
towardsdatascience.com/how-to-perform-comprehensive-large-scale-llm-validation/
想象这个场景:当被提示时,您的 LLM 查询正确回复了 999/1000 次。然而,您必须对 150 万个项目进行回填以填充数据库。在这个(非常现实)的场景中,您将仅为此 LLM 提示体验到1500 个错误。现在将这个规模扩大到 10 个,如果不是 100 个不同的提示,您将面临一个真正的可扩展性问题。
解决方案是验证您的 LLM 输出并确保通过评估获得高性能,这两个主题我将在本文中讨论。

此信息图表突出了本文的主要内容。我将讨论 LLM 输出的验证和评估、定性 vs 定量评分,以及处理大规模 LLM 应用。图由 ChatGPT 提供。
目录
-
什么是 LLM 验证和评估?
- 定性 vs 定量评估
-
大规模 LLM 输出验证
-
简单的 if-else 语句
-
LLM 作为验证者
-
-
量化 LLM 评估
-
LLM 作为裁判
-
用户反馈
-
-
结论
您还可以阅读我的文章《如何使用 ARC AGI 3 基准测试 LLM》(How to Benchmark LLMs using ARC AGI 3)。
什么是 LLM 验证和评估?
我认为首先定义 LLM 验证和评估是什么,以及为什么它们对您的应用很重要,这是至关重要的。
LLM 验证是关于验证您输出的质量。一个常见的例子是运行一些代码来检查 LLM 的响应是否回答了用户的问题。验证很重要,因为它确保您提供高质量的响应,并且您的 LLM 按预期运行。验证可以看作是您在实时中对单个响应所做的事情。例如,在将响应返回给用户之前,您要验证该响应实际上是否高质量。
LLM 评估类似;然而,它通常不会实时发生。评估你的 LLM 输出可能包括查看过去 30 天内的所有用户查询,并定量评估你的 LLM 表现如何。
验证和评估你的 LLM 性能很重要,因为你将遇到 LLM 输出的问题。例如,它可能是
-
输入数据问题(数据缺失)
-
你提示的边缘情况无法处理
-
数据分布不均
-
等等。
因此,你需要一个强大的解决方案来处理 LLM 输出问题。你需要确保尽可能避免这些问题,并在剩余情况下处理它们。
适用于此场景的墨菲定律:
在大规模上,所有可能出错的事情都会出错
定性 vs 定量评估
在继续到执行验证和评估的各个部分之前,我还想对 LLM 的定性 vs 定量评估发表评论。当与 LLM 一起工作时,手动评估 LLM 对不同提示的性能往往很有诱惑力。然而,这种手动(定性)评估高度受主观偏见的影响。例如,你可能会将大部分注意力集中在 LLM 成功的情况上,从而高估你 LLM 的性能。在处理 LLM 时考虑到潜在的偏见对于减轻偏见影响你改进模型能力风险的重要性。
大规模 LLM 输出验证
在运行了数百万次 LLM 调用之后,我看到了很多不同的输出,例如 GPT-4o 返回…或 Qwen2.5 以意外的中文字符响应
这些错误用人工检查难以发现,因为它们通常发生在 LLM 的 1000 次 API 调用中的不到 1 次。然而,你需要一种机制来捕捉这些在实时、大规模情况下发生的问题。因此,我将讨论一些处理这些问题的方法。
简单的 if-else 语句
验证的最简单解决方案是编写一些使用简单 if 语句的代码,该语句检查 LLM 输出。例如,如果你想为文档生成摘要,你可能想确保 LLM 输出至少达到某个最小长度
# LLM summay validation
# first generate summary through an LLM client such as OpenAI, Anthropic, Mistral, etc.
summary = llm_client.chat(f"Make a summary of this document {document}")
# validate the summary
def validate_summary(summary: str) -> bool:
if len(summary) < 20:
return False
return True
然后你可以运行验证。
-
如果验证通过,你可以像往常一样继续
-
如果它失败,你可以选择忽略请求或利用重试机制
当然,你可以使 validate_summary 函数更加详细,例如:
-
利用正则表达式进行复杂的字符串匹配
-
使用如 Tiktoken之类的库来计算请求中的令牌数量
-
确保响应中包含/不包含特定单词
-
等等。
LLM 作为验证者

此图展示了使用 LLM 作为验证器的 LLM 应用程序的流程。你首先输入提示,这里是要创建一个文档的摘要。LLM 创建文档的摘要并将其发送给 LLM 验证器。如果摘要有效,我们返回请求。然而,如果摘要无效,我们可以忽略请求或重试。图片由作者提供。
更高级且成本更高的验证方法是使用一个大型语言模型(LLM)。在这种情况下,你利用另一个 LLM 来评估输出是否有效。这是因为验证正确性通常比生成正确响应的任务更直接。使用 LLM 验证器本质上是将 LLM 作为裁判使用,关于这个话题,我在这篇《Towards Data Science》的文章中进行了讨论。如何使用 LLM 进行强大的自动评估
我经常使用较小的 LLM 来执行此验证任务,因为它们有更快的响应时间,成本更低,而且考虑到验证的任务比生成正确响应的任务简单,它们仍然表现良好。例如,如果我使用GPT-4.1来生成摘要,我会考虑使用 GPT-4.1-mini 或 GPT-4.1-nano 来评估生成的摘要的有效性。
再次,如果验证成功,你继续应用程序流程;如果失败,你可以忽略请求或选择重试。
在验证摘要的情况下,我会提示验证 LLM 寻找以下摘要:
-
太短
-
不遵循预期的答案格式(例如,Markdown)
-
你可能还有其他针对生成摘要的规则
定量的 LLM 评估
对 LLM 输出进行大规模评估也非常重要。我建议持续运行或定期进行。当与数据样本的定性评估相结合时,定量的 LLM 评估也更为有效。例如,假设评估指标显示你生成的摘要比用户喜欢的要长。在这种情况下,你应该手动检查这些生成的摘要及其基于的文档。这有助于你理解潜在问题,再次使解决问题变得更容易。
LLM 作为裁判
与验证相同,你可以利用 LLM 作为裁判进行评估。区别在于,虽然验证使用 LLM 作为裁判进行二元预测(输出要么有效,要么无效),而评估则用于更详细的反馈。例如,你可以从 LLM 裁判那里获得关于摘要质量从 1 到 10 的反馈,这使得区分中等质量摘要(约 4-6)和高质量摘要(7+)变得更容易。
再次,使用 LLM 作为裁判时,你必须考虑成本。尽管你可能在使用较小的模型,但当你使用 LLM 作为裁判时,你实际上是将 LLM 调用的数量翻倍。因此,你可以考虑以下变更以节省成本:
-
样本数据点,这样你只需在数据点的子集上运行 LLM 作为评判者
-
将多个数据点组合成一个 LLM 评判者的提示,以节省输入和输出令牌
我建议详细说明评判标准给 LLM 评判者。例如,你应该说明 1 分、5 分和 10 分分别代表什么。使用例子通常是指导 LLM 的好方法,正如我在关于如何利用 LLM 作为评判者的文章中讨论的那样。我经常思考当有人解释一个主题时,例子对我有多有帮助,因此您可以想象这对 LLM 有多有帮助。
用户反馈
用户反馈是获取您 LLM 输出定量指标的好方法。例如,用户反馈可以是点赞或点踩按钮,表示生成的摘要是否令人满意。如果您结合数百或数千用户的此类反馈,您就有了一个可靠的反馈机制,可以用来极大地提高您 LLM 摘要生成器的性能!
这些用户可以是您的客户,因此您应该让他们容易提供反馈,并鼓励他们尽可能多地提供反馈。然而,这些用户实际上可以是任何不每天使用或开发您应用程序的人。重要的是要记住,任何此类反馈都将对提高您 LLM 的性能非常有价值,并且作为应用程序的开发者,您实际上收集此类反馈并不需要花费太多时间。
结论
在这篇文章中,我讨论了您如何在 LLM 应用程序中执行大规模验证和评估。这样做对于确保您的应用程序按预期运行以及根据用户反馈改进应用程序至关重要。鉴于确保本质上不可预测的 LLM 能够在您的应用程序中可靠地提供价值的重要性,我建议尽快在您的应用程序中实施此类验证和评估流程。
您还可以阅读我的关于如何使用 ARC AGI 3 基准测试 LLMs和如何轻松使用 OCR 和 GPT-4o mini 提取收据信息的文章。
👉 我的免费电子书和网络研讨会:
👉 在社交平台上找到我:
📩 订阅我的通讯
🧑💻 取得联系
✍️ Medium

浙公网安备 33010602011771号