LangChain 开箱即用评估器
LangChain 的评估模块提供了开箱即用的评估器,可用于常见的评估场景。要了解如何使用这些评估器,请参阅以下指南。
注意
目前,LangChain 仅支持 Python 的开箱即用评估器。
注意
这些评估器大多有用,但并不完美!我们建议不要盲目相信任何单一的自动化指标,而应始终将其作为整体测试和评估策略的一部分。许多基于 LLM 的评估器为给定数据点返回一个二元分数,因此在更大的数据集上汇总衡量提示或模型性能差异最为可靠。
下表列举了 LangSmith 中可用的开箱即用评估器,以及它们的输出键和简单的代码示例。
| 评估器名称 | 输出键 | 简单代码示例 |
|---|---|---|
| 问答 | 正确性 | LangChainStringEvaluator("qa") |
| 上下文问答 | 上下文准确性 | LangChainStringEvaluator("context_qa") |
| 思维链问答 | 思维链上下文准确性 | LangChainStringEvaluator("cot_qa") |
| 标准 | 取决于标准键 | LangChainStringEvaluator("criteria", config={ "criteria": <criterion> })criterion 可以是以下默认实现的标准之一:conciseness(简洁性)、relevance(相关性)、correctness(正确性)、coherence(连贯性)、harmfulness(有害性)、maliciousness(恶意性)、helpfulness(有用性)、controversiality(争议性)、misogyny(厌女症)和 criminality(犯罪性)。或者,您可以在自定义字典中定义自己的标准,如下所示 { "criterion_key": "criterion description" } |
| 标注标准 | 取决于标准键 | LangChainStringEvaluator("labeled_criteria", config={ "criteria": <criterion> })criterion 可以是以下默认实现的标准之一:conciseness(简洁性)、relevance(相关性)、correctness(正确性)、coherence(连贯性)、harmfulness(有害性)、maliciousness(恶意性)、helpfulness(有用性)、controversiality(争议性)、misogyny(厌女症)和 criminality(犯罪性)。或者,您可以在自定义字典中定义自己的标准,如下所示 { "criterion_key": "criterion description" } |
| 分数 | 取决于标准键 | LangChainStringEvaluator("score_string", config={ "criteria": <criterion>, "normalize_by": 10 })criterion 可以是以下默认实现的标准之一:conciseness(简洁性)、relevance(相关性)、correctness(正确性)、coherence(连贯性)、harmfulness(有害性)、maliciousness(恶意性)、helpfulness(有用性)、controversiality(争议性)、misogyny(厌女症)和 criminality(犯罪性)。或者,您可以在自定义字典中定义自己的标准,如下所示 { "criterion_key": "criterion description" }。分数满分为 10 分,因此 normalize_by 会将其转换为 0 到 1 之间的分数。 |
| 标注分数 | 取决于标准键 | LangChainStringEvaluator("labeled_score_string", config={ "criteria": <criterion>, "normalize_by": 10 })criterion 可以是以下默认实现的标准之一:conciseness(简洁性)、relevance(相关性)、correctness(正确性)、coherence(连贯性)、harmfulness(有害性)、maliciousness(恶意性)、helpfulness(有用性)、controversiality(争议性)、misogyny(厌女症)和 criminality(犯罪性)。或者,您可以在自定义字典中定义自己的标准,如下所示 { "criterion_key": "criterion description" }。分数满分为 10 分,因此 normalize_by 会将其转换为 0 到 1 之间的分数。 |
| 嵌入距离 | 嵌入余弦距离 | LangChainStringEvaluator("embedding_distance") |
| 字符串距离 | 字符串距离 | LangChainStringEvaluator("string_distance", config={"distance": "damerau_levenshtein" }) distance 定义了要应用的字符串差异度量,例如 levenshtein 或 jaro_winkler。 |
| 精确匹配 | 精确匹配 | LangChainStringEvaluator("exact_match") |
| 正则表达式匹配 | 正则表达式匹配 | LangChainStringEvaluator("regex_match") |
| JSON 有效性 | json_validity | LangChainStringEvaluator("json_validity") |
| JSON 等价性 | json_equality | LangChainStringEvaluator("json_equality") |
| JSON 编辑距离 | json_edit_distance | LangChainStringEvaluator("json_edit_distance") |
| JSON 架构 | json_schema | LangChainStringEvaluator("json_schema") |