菜单

评估和测试

相关源文件

本文档介绍了 LangChain 的评估与测试框架,该框架提供系统方法来评估语言模型、链和应用程序针对数据集的性能。该框架与 LangSmith 集成以进行实验跟踪,并支持内置和自定义评估器。

有关核心测试基础设施和 CI/CD 流程的信息,请参阅CI/CD 和发布流程。有关在应用程序中使用特定评估模式的指南,请参阅应用程序和使用模式

核心评估架构

评估系统围绕三个主要组件构建:运行执行、评估逻辑和结果聚合。该框架支持同步和异步执行,并提供全面的错误处理和进度跟踪。

来源: libs/langchain/langchain/smith/evaluation/runner_utils.py1-2885

评估运行器系统

runner_utils 模块提供了核心评估执行框架。该系统处理语言模型和链的模型工厂封装、输入验证和执行编排。

组件目的关键方法
TestResult聚合评估结果get_aggregate_feedback(), to_dataframe()
EvalError封装评估错误带上下文的错误封装
_wrap_in_chain_factory()准备用于评估的模型工厂模式强制执行
_validate_example_inputs()确保输入兼容性格式和键验证

执行流程支持单个模型评估和批量处理

来源: libs/langchain/langchain/smith/evaluation/runner_utils.py65-277 libs/langchain/langchain/smith/evaluation/runner_utils.py756-961

字符串运行评估器框架

字符串评估器系统提供了一个标准化接口,用于根据参考数据评估模型输出。该框架使用映射器类从运行和示例中提取相关数据。

运行映射器

运行映射器从已执行的运行中提取评估输入

映射器类目标运行类型关键方法
LLMStringRunMapperLLM 运行serialize_inputs(), serialize_outputs()
ChainStringRunMapper链运行_get_key(),可配置的输入/预测键
ToolStringRunMapper工具运行直接输入/输出映射

来源: libs/langchain/langchain/smith/evaluation/string_run_evaluator.py54-190

示例映射器

StringExampleMapper 从数据集示例中提取参考数据

来源: libs/langchain/langchain/smith/evaluation/string_run_evaluator.py192-241

评估链集成

StringRunEvaluatorChain 将运行映射器、示例映射器和字符串评估器组合成一个统一的评估管道。此链实现了 LangChain 的 Chain 接口和 LangSmith 的 RunEvaluator 接口。

评估管道

该链通过 _call()_acall() 方法支持同步和异步评估

方法目的主要功能
_call()同步评估直接调用评估器
_acall()异步评估支持并发评估
evaluate_run()LangSmith 接口错误处理和结果封装
aevaluate_run()异步 LangSmith 接口异步错误处理

来源: libs/langchain/langchain/smith/evaluation/string_run_evaluator.py243-434

评估配置系统

评估系统使用配置对象来定义评估参数并加载合适的评估器。配置系统支持内置评估器类型和自定义评估器函数。

评估器加载

键确定逻辑

系统自动确定用于评估的输入键、预测键和参考键

键类型确定逻辑回退行为
input_key配置指定 → 单链输入 → 警告使用可用输入
prediction_key配置指定 → 单链输出 → 警告使用可用输出
reference_key配置指定 → 单个示例输出 → 无如果不可用则跳过参考

来源: libs/langchain/langchain/smith/evaluation/runner_utils.py449-654

LangSmith 集成

评估框架与 LangSmith 集成,用于实验跟踪、数据集管理和结果比较。该集成处理项目创建、运行追踪和结果聚合。

评估运行准备

_prepare_eval_run() 函数负责协调设置过程

  1. 数据集加载:从 LangSmith 检索数据集和示例
  2. 版本跟踪:从修改时间戳推断数据集版本
  3. 项目创建:创建包含元数据和引用的评估项目
  4. URL 生成:提供比较仪表板链接

来源: libs/langchain/langchain/smith/evaluation/runner_utils.py963-1022

进度跟踪和用户体验

评估系统通过回调处理程序和结果格式化工具提供进度跟踪和用户反馈。

进度条实现

结果聚合

TestResult 类提供全面的结果分析

方法目的输出格式
to_dataframe()转换为 pandas DataFrame结构化表格数据
get_aggregate_feedback()统计摘要分位数分析
结果索引按示例 ID 访问字典式访问

来源: libs/langchain/langchain/smith/evaluation/progress.py13-129 libs/langchain/langchain/smith/evaluation/progress.py82-153

测试基础设施

评估系统包含全面的测试覆盖,用于输入验证、格式转换和执行流程。测试套件验证不同输入格式的正面和负面情况。

输入格式测试

测试套件包括以下验证:

  • 输入格式兼容性:确保正确处理各种提示和消息格式
  • 错误处理:验证无效输入的适当错误消息
  • 链验证:测试输入/输出键映射和验证逻辑
  • 异步执行:使用模拟组件验证异步评估流程

来源: libs/langchain/tests/unit_tests/smith/evaluation/test_runner_utils.py1-358 libs/langchain/tests/unit_tests/smith/evaluation/test_runner_utils.py1-27