跳到主要内容
LLM 应用程序的评估可能具有挑战性,因为它们通常会生成对话文本,而且没有单一的正确答案。 本指南向您展示如何使用 LangSmith SDK 或 UI 定义 LLM 评判器以进行离线评估。注意:要在生产跟踪中实时运行评估,请参阅设置在线评估

SDK

预构建的评估器

预构建的评估器是设置评估的有用起点。请参阅预构建的评估器,了解如何将预构建的评估器与 LangSmith 结合使用。

创建您自己的 LLM 评判器

为了完全控制评估器逻辑,请创建您自己的 LLM 评判器并使用 LangSmith SDK(Python / TypeScript)运行它。 需要 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 the 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]
)
有关如何编写自定义评估器的更多信息,请参阅此处

UI

预构建的评估器

预构建的评估器是设置评估时有用的起点。LangSmith UI 支持以下预构建的评估器:
  • 幻觉:检测事实不正确的输出。需要一个参考输出。
  • 正确性:检查与参考的语义相似性。
  • 简洁性:评估答案是否是对问题的简洁回应。
  • 代码检查器:验证代码答案的正确性。
您可以配置这些评估器:

自定义您的 LLM 评判器

为您的 LLM 评判器提示添加特定说明,并配置输入/输出/参考输出的哪些部分应传递给评估器。

选择/创建评估器

  • 在游乐场或数据集中:选择+评估器按钮
  • 从跟踪项目:选择添加规则,配置您的规则并选择应用评估器
选择创建您自己的评估器选项。或者,您可以先选择一个预构建的评估器并进行编辑。

配置评估器

提示

创建新提示,或从提示中心选择现有提示。
  • 创建您自己的提示:以内联方式创建自定义提示。
  • 从提示中心拉取提示:使用选择提示下拉菜单从现有提示中进行选择。您无法直接在提示编辑器中编辑这些提示,但可以查看提示及其使用的架构。要进行更改,请在游乐场中编辑提示并提交版本,然后将新提示拉入评估器中。

模型

从提供的选项中选择所需的模型。

变量映射

使用变量映射来指示从您的运行或示例传递到您的评估器提示中的变量。为了帮助进行变量映射,提供了一个示例(或运行)供参考。点击您提示中的变量,并使用下拉菜单将它们映射到输入、输出或参考输出的相关部分。 要添加提示变量,如果您使用 mustache 格式(默认),请键入带有双大括号 {{prompt_var}} 的变量,如果您使用 f-string 格式,请键入带有单大括号 {prompt_var} 的变量。 您可以根据需要删除变量。例如,如果您要评估简洁性等指标,通常不需要参考输出,因此可以删除该变量。

预览

预览提示将向您展示使用右侧显示的参考运行和数据集示例格式化的提示的外观。

用少样本示例改进你的评估器

为了更好地将 LLM 评判器与人类偏好对齐,LangSmith 允许您收集评估器分数上的人类修正。启用此选择后,修正将自动作为少量示例插入到您的提示中。 了解如何设置少量示例并进行修正

反馈配置

反馈配置是您的 LLM 评判器将使用的评分标准。将其视为您的评估器将据此评分的规则。分数将作为反馈添加到运行或示例中。为您的评估器定义反馈
  1. 命名反馈键:这是查看评估结果时将显示的名称。名称在实验中应是唯一的。
  2. 添加描述:描述反馈代表什么。
  3. 选择反馈类型:
  • 布尔值:真/假反馈。
  • 分类:从预定义类别中选择。
  • 连续:在指定范围内进行数值评分。
在幕后,反馈配置作为结构化输出添加到 LLM 评判器提示中。如果您正在使用中心中的现有提示,则必须在配置评估器使用它之前向提示添加输出架构。输出架构中的每个顶级键都将被视为单独的反馈。

保存评估器

配置完成后,保存您的更改。
以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。
© . This site is unofficial and not affiliated with LangChain, Inc.