入门#

LLM 非常强大,但在部署时难以操控,并且容易出错。与此同时,新的模型和技术不断涌现。我们希望让您能够轻松地试验不同的技术,了解它们的权衡,并为您的特定用例做出明智的决策。

该软件包的组织结构使其易于测试围绕更高层次“功能”的架构。这包括

  • 检索增强生成

  • 代理工具使用

  • 提取

它们都共享相同的“Task”接口,以提供一些抽象来在上下文中创建和评估不同的模型,包括不同的“环境”和共享评估器。

此笔记本展示了如何开始使用该软件包。对于任何给定的任务,主要步骤是

  1. 安装软件包

  2. 选择任务

  3. 下载数据集

  4. 定义您的架构

  5. 运行评估

设置#

评估使用 LangSmith(参见:文档)来托管基准数据集并跟踪您的架构的跟踪和评估指标。

创建一个 LangSmith 帐户,并在下面设置您的 API 密钥

import os

# Get from https://smith.langchain.com/settings
os.environ["LANGCHAIN_API_KEY"] = "sk-..."

安装#

接下来,安装所需的软件包。

# %pip install -U --quiet langchain_benchmarks langchain langsmith

选择任务#

每个基准测试都对应一个描述、数据集和其他“环境”信息。您可以通过检查注册表查看可用的任务。

from langchain_benchmarks import registry

registry
名称类型数据集 ID描述
工具使用 - 打字机(1 个工具)ToolUsageTask59577193-8938-4ccf-92a7-e8a96bcf4f86环境包含一个单一工具,该工具接受一个字母作为输入,并在虚拟纸张上打印。此任务的目的是评估模型使用提供的工具重复给定输入字符串的能力。例如,如果字符串是“abc”,则必须按此顺序调用工具“a”、“b”和“c”。数据集包含不同难度的示例。难度由字符串的长度决定。
工具使用 - 打字机(26 个工具)ToolUsageTask128af05e-aa00-4e3b-a958-d166dd450581环境包含 26 个工具,每个工具代表字母表中的一个字母。此任务的目的是评估模型使用工具执行简单重复任务的能力。例如,如果字符串是“abc”,则必须按此顺序调用工具“a”、“b”和“c”。数据集包含不同难度的示例。难度由字符串的长度决定。这是打字机任务的变体,其中给出了 26 个无参数工具,而不是一个接受字母作为参数的单一工具。
工具使用 - 关系数据ToolUsageTask1d89f4b3-5f73-48cf-a127-2fdeb22f6d84环境包含关于用户及其位置和喜欢的食物的虚假数据。环境提供了一组可用于查询数据的工具。此任务的目的是评估使用提供的工具来回答有关关系数据的问题的能力。数据集包含 21 个不同难度的示例。难度由需要用于回答问题的工具数量决定。每个示例都包含一个问题、一个参考答案以及有关按何种顺序使用工具来回答问题的的信息。成功是通过回答问题是否正确以及是否有效来衡量的。
多元宇宙数学ToolUsageTask47ed57bc-e852-4f84-a23e-cce4793864e9一个包含一些基本数学运算的环境,但结果被更改。例如,5 * 3 的乘法将被重新解释为 5 * 3 * 1.1。基本运算保留了一些基本属性,例如交换律、结合律和分配律;但是,结果与预期不同。此任务的目的是评估使用提供的工具来解决简单的数学问题,并忽略任何关于数学的先验知识的能力。此任务与 20 个测试示例相关联。
多元宇宙数学(微型)ToolUsageTask594f9f60-30a0-49bf-b075-f44beabf546a一个包含一些基本数学运算的环境,但结果被更改。例如,5 * 3 的乘法将被重新解释为 5 * 3 * 1.1。基本运算保留了一些基本属性,例如交换律、结合律和分配律;但是,结果与预期不同。此任务的目的是评估使用提供的工具来解决简单的数学问题,并忽略任何关于数学的先验知识的能力。这是多元宇宙数学任务的微型版本,仅包含 10 个示例。
电子邮件提取ExtractionTaska1742786-bde5-4f51-a1d8-e148e5251ddb一个包含 42 个从垃圾邮件文件夹中去重的真实电子邮件的数据集,其中去除了语义 HTML 标签,以及用于从任意 .mbox 文件(如 Gmail 导出的文件)初始提取和格式化其他电子邮件的脚本。在初始处理之后,对数据进行了额外的手动清理。请参阅 https://github.com/jacoblee93/oss-model-extraction-evals。
聊天提取ExtractionTask00f4444c-9460-4a82-b87a-f50096f1cfef一个旨在测试 LLM 从对话中提取和推断结构化信息的能力的数据集。对话发生在用户和支持工程师之间。输出应结构化为 JSON 对象,并测试 LLM 正确构造信息的能力及其执行简单分类任务的能力。
LangChain 文档问答RetrievalTask452ccafc-18e1-4314-885b-edd735f17b9d基于 LangChain python 文档快照的问答。环境提供文档和检索器信息。每个示例都包含一个问题和参考答案。成功是根据答案相对于参考答案的准确性来衡量的。我们还衡量模型的响应相对于检索到的文档(如果有)的忠实度。
半结构化报告RetrievalTaskc47d9617-ab99-4d6e-a6e6-92b8daf85a7d基于包含表格和图表的内容的 PDF 文件的问答。任务提供原始文档以及工厂方法,以轻松地对其进行索引并创建检索器。每个示例都包含一个问题和参考答案。成功是根据答案相对于参考答案的准确性来衡量的。我们还衡量模型的响应相对于检索到的文档(如果有)的忠实度。
多模态幻灯片RetrievalTask40afc8e7-9d7e-44ed-8971-2cae1eb59731此公共数据集正在开发中,并将随着时间的推移而扩展。基于包含视觉表格和图表的内容的幻灯片的问答。每个示例都包含一个问题和参考答案。成功是根据答案相对于参考答案的准确性来衡量的。
姓名纠正ExtractionTask 一个包含 23 个拼写错误的完整姓名及其正确拼写的数据集。

下载数据集#

每个基准测试任务都有一个对应的数据集。要运行指定基准测试的评估,您可以使用我们的下载功能。有关在 LangChain 基准测试软件包中使用数据集的更多详细信息,请查看 数据集 笔记本。

from langchain_benchmarks import clone_public_dataset

task = registry["Tool Usage - Relational Data"]

clone_public_dataset(task.dataset_id)

定义架构并评估#

获取数据集后,您可以创建您的架构并使用任务的评估参数对其进行评估。这因任务而异。有关更多信息,请查看您任务的示例。