如何定义 LLM-as-a-judge 评估器
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 评估器提示添加特定说明,并配置输入/输出/参考输出的哪些部分应传递给评估器。
选择/创建评估器
- 在演练场或数据集中:选择+评估器按钮
- 从跟踪项目中:选择添加规则,配置您的规则并选择应用评估器
选择创建您自己的评估器选项。或者,您可以从选择一个预构建评估器并对其进行编辑开始。
配置评估器
提示词
创建新提示词,或从提示词中心选择现有提示词。
-
创建您自己的提示词:内联创建自定义提示词。
-
从提示词中心拉取提示词:使用选择提示词下拉菜单从现有提示词中进行选择。您不能直接在提示词编辑器中编辑这些提示词,但可以查看提示词及其使用的 schema。要进行更改,请在演练场中编辑提示词并提交版本,然后将新提示词拉入评估器中。
模型
从提供的选项中选择所需的模型。
映射变量
使用变量映射来指示从您的运行或示例传递到评估器提示词中的变量。为了辅助变量映射,提供了一个示例(或运行)供参考。点击提示词中的变量,并使用下拉菜单将它们映射到输入、输出或参考输出的相关部分。
如果要添加提示词变量,如果使用 mustache 格式(默认),请使用双花括号 {{prompt_var}}
输入变量;如果使用 f-string 格式,则使用单花括号 {prompt_var}
。
您可以根据需要删除变量。例如,如果您正在评估诸如简洁性之类的指标,通常不需要参考输出,因此可以删除该变量。
预览
预览提示词将向您展示使用右侧显示的参考运行和数据集示例时,格式化后的提示词将是什么样子。
使用少样本示例改进您的评估器
为了更好地将 LLM-as-a-judge 评估器与人类偏好对齐,LangSmith 允许您收集评估器分数上的人工校正。启用此选项后,校正将自动作为少样本示例插入到您的提示词中。
反馈配置
反馈配置是您的 LLM-as-a-judge 评估器将使用的评分标准。可以将其视为评估器将基于其进行评分的评估细则。分数将作为反馈添加到运行或示例中。为评估器定义反馈
-
命名反馈键:这是在查看评估结果时将出现的名称。名称在不同实验中应保持唯一。
-
添加描述:描述反馈代表什么。
-
选择反馈类型:
- 布尔型:真/假反馈。
- 分类型:从预定义类别中选择。
- 连续型:在指定范围内进行数值评分。
在幕后,反馈配置作为结构化输出添加到 LLM-as-a-judge 提示词中。如果您正在使用中心已有的提示词,则必须在配置评估器使用它之前向提示词添加输出 schema。输出 schema 中的每个顶级键都将被视为单独的反馈项。
保存评估器
配置完成后,请保存您的更改。