Skip to main content

如何使用 LangChain 工具

工具是代理、链或语言模型(LLM)用来与世界交互的接口。 它们包含以下几个部分:

  1. 工具的名称
  2. 对工具功能的描述
  3. 工具输入参数的 JSON schema
  4. 要调用的函数
  5. 是否应将工具的结果直接返回给用户

包含所有这些信息非常有用,因为这些信息可以用来构建执行操作的系统!名称、描述和 schema 可用于提示语言模型(LLM),使其知道如何指定要执行的操作,而要调用的函数则等同于执行该操作。

工具的输入越简单,语言模型(LLM)就越容易使用它。 许多代理仅能使用那些接受单个字符串输入的工具。

重要的是,名称、描述以及(如果使用)schema 都会用于提示词中。因此,它们必须清晰明了,准确描述工具的使用方式。

默认工具

让我们看看如何使用工具。为此,我们将使用一个内置工具进行演示。

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": "http://json-schema.org/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() 方法,该方法返回工具列表。

通常你应按照如下方式使用它们:

// 初始化工具包
const toolkit = new ExampleTookit(...);

// 获取工具列表
const tools = toolkit.getTools();

更多主题

这是对 LangChain 中工具的快速介绍,但还有更多内容需要学习

内置工具:要查看所有内置工具的列表,请访问此页面

自定义工具:尽管内置工具很有用,但你很可能需要定义自己的工具。请参阅此指南以了解如何操作。


Was this page helpful?


You can also leave detailed feedback on GitHub.