跳到主要内容

如何使用 LangChain 工具

工具是代理、链或 LLM 可以用来与世界交互的接口。它们结合了一些东西

  1. 工具的名称
  2. 工具用途的描述
  3. 工具输入的 JSON 模式
  4. 要调用的函数
  5. 工具的结果是否应直接返回给用户

拥有所有这些信息非常有用,因为这些信息可用于构建行动系统!名称、描述和模式可用于提示 LLM,使其知道如何指定要采取的操作,然后要调用的函数等同于采取该操作。

工具的输入越简单,LLM 就越容易使用它。许多代理只适用于具有单个字符串输入的工具。

重要的是,名称、描述和模式(如果使用)都用于提示中。因此,至关重要的是它们清晰地描述了工具应如何使用。

默认工具

让我们看看如何使用工具。为此,我们将使用内置工具。

import { WikipediaQueryRun } from "@langchain/community/tools/wikipedia_query_run";

const tool = new WikipediaQueryRun({
topKResults: 1,
maxDocContentLength: 100,
});

这是默认名称

tool.name;
"wikipedia-api"

这是默认描述

tool.description;
"A tool for interacting with and fetching data from the Wikipedia API."

这是输入的默认模式。这是一个工具类上的 Zod 模式。我们将其转换为 JSON 模式以供显示

import { zodToJsonSchema } from "zod-to-json-schema";

zodToJsonSchema(tool.schema);
{
type: "object",
properties: { input: { type: "string" } },
additionalProperties: false,
"$schema": "https://json-schema.fullstack.org.cn/draft-07/schema#"
}

我们可以查看工具是否应直接返回给用户

tool.returnDirect;
false

我们可以使用对象输入调用此工具

await tool.invoke({ input: "langchain" });
"Page: LangChain\n" +
"Summary: LangChain is a framework designed to simplify the creation of applications "

我们还可以使用单个字符串输入调用此工具。我们可以这样做是因为此工具仅需要单个输入。如果它需要多个输入,我们将无法这样做。

await tool.invoke("langchain");
"Page: LangChain\n" +
"Summary: LangChain is a framework designed to simplify the creation of applications "

如何使用内置工具包

工具包是工具的集合,旨在共同用于特定任务。它们具有方便的加载方法。

有关可用现成工具包的完整列表,请访问 集成

所有工具包都公开了一个 getTools() 方法,该方法返回工具列表。

您通常应该以这种方式使用它们

// Initialize a toolkit
const toolkit = new ExampleTookit(...);

// Get list of tools
const tools = toolkit.getTools();

更多主题

这只是 LangChain 中工具的快速介绍,但还有很多东西要学习

内置工具:有关所有内置工具的列表,请参阅此页面

自定义工具:虽然内置工具很有用,但您很可能需要定义自己的工具。有关如何执行此操作的说明,请参阅本指南


此页对您有帮助吗?


您也可以留下详细的反馈 在 GitHub 上.