本地运行#

LangChain 基准测试包最适合与 LangSmith 一起使用。您可以创建一个免费帐户 在这里 并阅读 文档在这里

如果您无法创建帐户,仍然可以在没有帐户的情况下本地运行这些基准测试。

以下是一个示例。

# Prove that we can run without LangSmith
import os

_ = [
    os.environ.pop(key)
    for key in list(os.environ.keys())
    if key.startswith("LANGCHAIN_")
]
from langchain_benchmarks import registry

task = registry["Multiverse Math"]
task
名称多元宇宙数学
类型ToolUsageTask
数据集 ID594f9f60-30a0-49bf-b075-f44beabf546a
描述一个包含一些基本数学运算的环境,但结果被改变。例如,5*3 的乘法将被重新解释为 5*3*1.1。基本运算保留了一些基本性质,如交换律、结合律和分配律;然而,结果与预期不同。此任务的目标是评估使用提供的工具解决简单数学问题的能力,并忽略有关数学的任何固有知识。

评估#

现在让我们评估一个代理。不会保存任何内容到 langsmith,因此请确保将测试结果保存到您的文件系统,如果您以后要使用它们。

import uuid

from langchain_benchmarks.tool_usage import agents, get_eval_config
from langchain_benchmarks.utils import run_without_langsmith

experiment_uuid = uuid.uuid4().hex[:4]


models = ["gpt-3.5-turbo-1106"]

for model in models:
    print()
    eval_config = get_eval_config(output_evaluation="qa_math")
    agent_factory = agents.OpenAIAgentFactory(task, model=model)
    test_run = run_without_langsmith(
        # This will clone the dataset locally if not already there
        path_or_token_id=task.dataset_id,
        llm_or_chain_factory=agent_factory,
        evaluation=eval_config,
        verbose=True,
    )

实验结果

inputs.question outputs.input outputs.output outputs.intermediate_steps feedback.Intermediate steps correctness feedback.# steps / # expected steps feedback.correctness error execution_time
count 10 10 10 10 10.0 10.0 10.0 0 10.000000
unique 10 10 1 1 NaN NaN NaN 0 NaN
top 将 (以 10 为底的对数 100) 的结果乘以... 将 (以 10 为底的对数 100) 的结果乘以... [] NaN NaN NaN NaN NaN
freq 1 1 10 10 NaN NaN NaN NaN NaN
mean NaN NaN NaN NaN 0.0 0.0 0.0 NaN 1.453172
std NaN NaN NaN NaN 0.0 0.0 0.0 NaN 0.496547
min NaN NaN NaN NaN 0.0 0.0 0.0 NaN 0.763208
25% NaN NaN NaN NaN 0.0 0.0 0.0 NaN 0.963885
50% NaN NaN NaN NaN 0.0 0.0 0.0 NaN 1.593439
75% NaN NaN NaN NaN 0.0 0.0 0.0 NaN 1.870549
max NaN NaN NaN NaN 0.0 0.0 0.0 NaN 1.957470
# You can interact with the object directly or as a flattened dataframe
df = test_run.to_dataframe()
df.head()
inputs.question outputs.input outputs.output outputs.intermediate_steps feedback.Intermediate steps correctness feedback.# steps / # expected steps feedback.correctness error execution_time
27c44572-6c67-4129-a95a-fe1509c350be 将 (以 10 为底的对数 100) 的结果乘以... 将 (以 10 为底的对数 100) 的结果乘以... [] 0 0.0 0 None 0.763208
2a20a13d-050e-4a16-84ff-22d9582f1449 计算 1.5 弧度的正弦值后,将其除以... 计算 1.5 弧度的正弦值后,将其除以... [] 0 0.0 0 None 1.413695
67867526-791a-452f-b534-ef2c1f5efd20 大肠杆菌每 20 分钟分裂一次。有多少个细胞...? 大肠杆菌每 20 分钟分裂一次。有多少个细胞...? [] 0 0.0 0 None 1.773183
4ac33c1a-62f0-4da4-9455-07b582f6ff52 计算 101 的 0.5 次方,保留 4 位小数... 计算 101 的 0.5 次方,保留 4 位小数... [] 0 0.0 0 None 1.819677
2e82a924-8382-425e-8738-daa2d912e9fe 将 15 度转换为弧度 将 15 度转换为弧度 [] 0 0.0 0 None 1.957470
df.to_csv("output.csv", index=False)