如何定义一个将大语言模型作为评判者的评估器
大型语言模型(LLM)应用的评估可能颇具挑战性,因为它们通常生成的是对话式文本,而这类文本往往没有唯一正确的答案。
本指南将向您介绍如何使用 LangSmith SDK 或用户界面为离线评估定义一个“大语言模型作为评判者”(LLM-as-a-judge)的评估器。注意:如需在生产环境的追踪数据上实时运行评估,请参阅配置在线评估。
- SDK
- UI
预构建的评估器
预构建的评估器是设置评估工作的理想起点。有关如何在 LangSmith 中使用预构建评估器,请参阅 预构建评估器。
创建您自己的大语言模型(LLM)裁判评估器
如需完全掌控评估器逻辑,请创建您自己的“大语言模型作为裁判”评估器,并使用 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 用户界面支持以下预构建的评估器:
- 幻觉:检测事实性错误的输出。需要提供参考输出。
- 准确性:检查与参考文本的语义相似性。
- 简洁性:评估回答是否简洁地回应了问题。
- 代码检查器:验证代码答案的正确性。
您可以配置这些评估器:
自定义您的“大语言模型作为评判者”评估器
为您的大语言模型(LLM)作为裁判的评估提示添加具体指令,并配置应传递给评估器的输入/输出/参考输出的各个部分。

选择/创建评估器
- 在 Playground 中或从数据集:点击 +评估器 按钮
- 来自追踪项目:选择 添加规则,配置您的规则,然后选择 应用评估器
选择 创建您自己的评估器 选项。或者,您也可以先选择一个预构建的评估器并对其进行编辑。
配置评估器
提示词
创建一个新提示词,或从提示词中心中选择一个现有提示词。
-
创建您自己的提示词:在行内创建自定义提示词。
-
从提示词中心拉取提示词:使用选择提示词下拉菜单,从现有提示词中进行选择。您无法在提示词编辑器中直接编辑这些提示词,但可以查看提示词内容及其所使用的模式(schema)。如需修改,请在 Playground 中编辑提示词并提交新版本,然后在评估器中拉取您的新提示词。
模型
从提供的选项中选择所需的模型。
映射变量
使用变量映射来指明从您的运行(run)或示例(example)中传递到评估器提示词(evaluator prompt)中的变量。为便于进行变量映射,系统会提供一个示例(或运行)作为参考。请单击提示词中的变量,并通过下拉菜单将其映射至输入、输出或参考输出中的相应部分。
要添加提示词变量,请使用双大括号 {{prompt_var}} 输入变量(默认采用 Mustache 格式),或使用单大括号 {prompt_var} 输入变量(采用 f-string 格式)。
您可以根据需要移除变量。例如,如果您正在评估简洁性等指标,通常不需要参考输出,因此可以移除该变量。
预览
预览提示将显示使用右侧所示的参考运行和数据集示例所生成的格式化提示。
通过少量示例改进您的评估器
为使“大语言模型作为评判者”(LLM-as-a-judge)评估器更好地契合人类偏好,LangSmith 允许您收集人工修正后的评估器评分。启用此选项后,这些修正将自动作为少样本示例插入到您的提示词中。
反馈配置
反馈配置是您的“大语言模型作为裁判”评估器所采用的评分标准。您可以将其理解为评估器进行打分所依据的评分细则。评分结果将作为反馈添加到某次运行或示例中。为您的评估器定义反馈:
-
命名反馈键:此名称将在查看评估结果时显示。名称在各实验中必须唯一。
-
添加描述:描述该反馈所代表的含义。
-
选择反馈类型:
- 布尔值:真/假反馈。
- 分类式:从预定义的类别中选择。
- 连续型:在指定范围内进行数值评分。
在后台,反馈配置作为结构化输出添加到“大语言模型作为评判者”的提示词中。如果您正在使用中心库(Hub)中已有的提示词,则必须先为该提示词添加输出模式(output schema),然后才能配置评估器来使用它。输出模式中的每个顶层键都将被视为一项独立的反馈。
保存评估器
完成配置后,请保存您的更改。