Skip to main content
要评估代理的性能,您可以使用 LangSmith 评估。 对于评估,您必须首先定义一个评估器函数来判断代理的结果,例如最终输出或轨迹。根据您的评估技术,这可能涉及或不涉及参考输出。
在 LangSmith 中使用数据集和 LLM-as-judge 评估器运行评估。请参阅 评估快速入门 以开始。
def evaluator(*, outputs: dict, reference_outputs: dict):
    # 比较代理输出与参考输出
    output_messages = outputs["messages"]
    reference_messages = reference_outputs["messages"]
    score = compare_messages(output_messages, reference_messages)
    return {"key": "evaluator_score", "score": score}
要开始,您可以使用 AgentEvals 包中的预构建评估器:
pip install -U agentevals

创建评估器

一种常见的评估代理性能的方法是比较其轨迹(调用工具的顺序)与参考轨迹:
import json
from agentevals.trajectory.match import create_trajectory_match_evaluator  

outputs = [
    {
        "role": "assistant",
        "tool_calls": [
            {
                "function": {
                    "name": "get_weather",
                    "arguments": json.dumps({"city": "san francisco"}),
                }
            },
            {
                "function": {
                    "name": "get_directions",
                    "arguments": json.dumps({"destination": "presidio"}),
                }
            }
        ],
    }
]
reference_outputs = [
    {
        "role": "assistant",
        "tool_calls": [
            {
                "function": {
                    "name": "get_weather",
                    "arguments": json.dumps({"city": "san francisco"}),
                }
            },
        ],
    }
]

# Create the evaluator
evaluator = create_trajectory_match_evaluator(
    trajectory_match_mode="superset",
)

# Run the evaluator
result = evaluator(
    outputs=outputs, reference_outputs=reference_outputs
)
  1. 指定如何比较轨迹。superset 将接受输出轨迹作为有效,如果它是参考轨迹的超集。其他选项包括:strict, unorderedsubset
作为下一步,学习如何 自定义轨迹匹配评估器

LLM-as-a-judge

您可以使用 LLM-as-a-judge 评估器,该评估器使用 LLM 来比较轨迹与参考输出,并输出一个分数:
import json
from agentevals.trajectory.llm import (
    create_trajectory_llm_as_judge,
    TRAJECTORY_ACCURACY_PROMPT_WITH_REFERENCE
)

evaluator = create_trajectory_llm_as_judge(
    prompt=TRAJECTORY_ACCURACY_PROMPT_WITH_REFERENCE,
    model="openai:o3-mini"
)

运行评估器

要运行一个评估器,您首先需要创建一个 LangSmith 数据集。要使用预构建的 AgentEvals 评估器,您必须有一个具有以下模式的数据集:
  • input: {"messages": [...]} 输入消息,用于调用代理。
  • output: {"messages": [...]} 期望的消息历史,代理输出。对于轨迹评估,您可以选择仅保留助手消息。
from langsmith import Client
from langchain.agents import create_agent
from agentevals.trajectory.match import create_trajectory_match_evaluator


client = Client()
agent = create_agent(...)
evaluator = create_trajectory_match_evaluator(...)

experiment_results = client.evaluate(
    lambda inputs: agent.invoke(inputs),
    # replace with your dataset name
    data="<Name of your dataset>",
    evaluators=[evaluator]
)