- CI/CD 流水线:实现质量门禁,如果评估分数低于阈值则构建失败。
- 本地调试:无需 API 调用即可检查和分析结果。
- 自定义聚合:使用您自己的逻辑计算指标和统计数据。
- 集成测试:使用评估结果来控制合并或部署。
Client.evaluate() 返回的 ExperimentResults 对象中的实验结果。
本页重点介绍如何以编程方式处理结果,同时仍将它们上传到 LangSmith。如果您想在本地运行评估而不向 LangSmith 记录任何内容(用于快速测试或验证),请参阅在本地运行评估,其中使用了
upload_results=False。遍历评估结果
evaluate() 函数返回一个 ExperimentResults 对象,您可以对其进行遍历。blocking 参数控制结果何时可用:
blocking=False:立即返回一个迭代器,该迭代器在结果生成时产出结果。这允许您在评估运行时实时处理结果。blocking=True(默认):阻塞直到所有评估完成才返回。当您遍历结果时,所有数据都已可用。
ExperimentResults 类型;区别在于函数是否在返回前等待完成。对于流式处理和实时调试,使用 blocking=False;对于需要完整数据集的批处理,使用 blocking=True。
以下示例演示了 blocking=False。它遍历流式传入的结果,将它们收集到一个列表中,然后在单独的循环中处理它们:
理解结果结构
迭代器中的每个结果包含:-
result["run"]:您的目标函数的执行。result["run"].inputs:来自您数据集示例的输入。result["run"].outputs:您的目标函数产生的输出。result["run"].id:此运行的唯一 ID。
-
result["evaluation_results"]["results"]:一个EvaluationResult对象列表,每个评估器一个。key:指标名称(来自您的评估器的返回值)。score:数值分数(通常为 0-1 或布尔值)。comment:可选的解释性文本。source_run_id:评估器运行的 ID。
-
result["example"]:被评估的数据集示例。result["example"].inputs:输入值。result["example"].outputs:参考输出(如果有)。
示例
实现质量门禁
此示例使用评估结果根据质量阈值自动使 CI/CD 构建通过或失败。脚本遍历结果,计算平均准确率分数,如果准确率低于 85%,则以非零状态码退出。这确保您可以部署符合质量标准的代码更改。使用 blocking=True 进行批处理
当您需要执行需要完整数据集的操作(如计算百分位数、按分数排序或生成摘要报告)时,使用blocking=True 等待所有评估完成后再处理:
blocking=True,您的处理代码仅在所有评估完成后运行,避免了与评估日志混合输出。
有关在不上传结果的情况下运行评估的更多信息,请参阅在本地运行评估。
相关内容
将这些文档连接到 Claude、VSCode 等,通过 MCP 获取实时答案。

