如何定义一个 LLM 作为裁判的评估器
LLM 应用程序的评估可能具有挑战性,因为它们通常会生成没有单一正确答案的对话文本。
本指南将向您展示如何使用 LangSmith SDK 或 UI 为离线评估定义一个 LLM-as-a-judge 评估器。注意:若要针对生产环境中的追踪数据进行实时评估,请参阅设置在线评估。
- SDK
- UI
预构建评估器
预构建评估器是设置评估的有用起点。有关如何使用 LangSmith 中的预构建评估器,请参阅 预构建评估器。
创建您自己的 LLM-as-a-judge 评估器
为了完全掌控评估器逻辑,请创建您自己的\"LLM-as-a-judge\"评估器,并使用 LangSmith SDK 运行它(Python / TypeScript)。
- Python
需要 langsmith>=0.2.0
from langsmith import evaluate, traceable, wrappers, Client
from openai import OpenAI
# Assumes you've installed pydantic
from pydantic import BaseModel
# Optionally wrap the OpenAI client to trace all model calls.
oai_client = wrappers.wrap_openai(OpenAI())
def valid_reasoning(inputs: dict, outputs: dict) -> bool:
"""Use an LLM to judge if the reasoning and the answer are consistent."""
instructions = """\
Given the following question, answer, and reasoning, determine if the reasoning \
for the answer is logically valid and consistent with question and the answer.\
"""
class Response(BaseModel):
reasoning_is_valid: bool
msg = f"Question: {inputs['question']}\nAnswer: {outputs['answer']}\nReasoning: {outputs['reasoning']}"
response = oai_client.beta.chat.completions.parse(
model="gpt-4o",
messages=[{"role": "system", "content": instructions,}, {"role": "user", "content": msg}],
response_format=Response
)
return response.choices[0].message.parsed.reasoning_is_valid
# Optionally add the 'traceable' decorator to trace the inputs/outputs of this function.
@traceable
def dummy_app(inputs: dict) -> dict:
return {"answer": "hmm i'm not sure", "reasoning": "i didn't understand the question"}
ls_client = Client()
dataset = ls_client.create_dataset("big questions")
examples = [
{"inputs": {"question": "how will the universe end"}},
{"inputs": {"question": "are we alone"}},
]
ls_client.create_examples(dataset_id=dataset.id, examples=examples)
results = evaluate(
dummy_app,
data=dataset,
evaluators=[valid_reasoning]
)
有关如何编写自定义评估器的更多信息,请点击此处。
预构建评估器
预设评估器是在设置评估时的一个有用起点。LangSmith UI 支持以下预设评估器:
- 幻觉: 检测事实性错误的输出。需要参考输出。
- 正确性: 检查与参考内容的语义相似度。
- 简洁性: 评估回答是否是对问题的简洁回应。
- 代码检查器: 验证代码答案的正确性。
您可以配置这些评估器:
- 当使用 游乐场 运行评估时
- 作为数据集的一部分,用于在数据集上自动运行实验
- 当运行 在线评估 时
自定义您的LLM-as-a-judge评估器
为您的 LLM-as-a-judge 评估器提示添加具体指令,并配置应将输入/输出/参考输出的哪些部分传递给评估器。

选择/创建评估器
- 在游乐场或从数据集中:选择+评估器按钮
- 来自追踪项目:选择添加规则,配置您的规则并选择应用评估器
选择 创建您自己的评估器选项。或者,您也可以先选择一个预构建的评估器并进行编辑。
配置评估器
提示
创建新提示,或从 提示中心 选择现有提示。
-
创建您自己的提示: 内联创建自定义提示。
-
从提示中心获取提示: 使用 选择提示 下拉菜单从现有提示中进行选择。您无法在提示编辑器中直接编辑这些提示,但可以查看提示及其使用的模式。若要修改,请在游乐场中编辑提示并提交版本,然后在评估器中拉取您的新提示。
模型
从提供的选项中选择所需的模型。
映射变量
使用变量映射来指示从您的运行或示例传递到您的评估器提示中的变量。为了辅助变量映射,提供了一个示例(或运行)供参考。点击提示中的变量,并使用下拉菜单将它们映射到输入、输出或参考输出的相关部分。
要添加提示变量,请使用双大括号 {{prompt_var}}(如果使用 Mustache 格式(默认))或单大括号 {prompt_var}(如果使用 f-string 格式)输入变量名。
您可以根据需要移除变量。例如,如果您正在评估诸如简洁性等指标,通常不需要参考输出,因此您可以移除该变量。
预览
预览提示词将向您展示使用右侧显示的参考运行和数据集示例,格式化后的提示词将呈现的样子。
通过少量示例提升评估器质量
为了更好地使 LLM-as-a-judge 评估器与人类偏好保持一致,LangSmith 允许您收集 人工修正 以用于评估器评分。启用此选项后,修正内容将自动作为少样本示例插入到您的提示词中。
学习 如何设置少样本示例并进行修正。
反馈配置
反馈配置是您的LLM-as-a-judge评估器将使用的评分标准。可以将其视为评估器进行评分的依据(评分细则)。分数将作为反馈添加到运行或示例中。为您的评估器定义反馈:" }
-
命名反馈键: 这是在查看评估结果时显示的名称。名称在实验之间必须是唯一的。
-
添加描述: 描述此反馈所代表的内容。
-
选择反馈类型:
- 布尔值: 真/假反馈。
- 分类: 从预定义类别中选择。
- 连续型:在指定范围内的数值评分。
在幕后,反馈配置被添加为 结构化输出 到 LLM-as-a-judge 提示中。如果您使用的是来自 hub 的现有提示,则必须在配置评估器以使用它之前向提示添加输出模式。输出模式中的每个顶级键都将被视为单独的反馈项。
保存评估器
配置完成后,请保存您的更改。