如何使用 LangChain 工具
工具是代理、链或 LLM 用于与世界交互的接口。它们结合了一些东西
- 工具的名称
- 工具的描述
- 工具输入的 JSON 架构
- 要调用的函数
- 工具结果是否应直接返回给用户
拥有所有这些信息非常有用,因为这些信息可以用于构建行动系统!名称、描述和架构可用于提示 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": "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()
方法,该方法返回工具列表。
您通常应该以这种方式使用它们
// Initialize a toolkit
const toolkit = new ExampleTookit(...);
// Get list of tools
const tools = toolkit.getTools();
更多主题
这是一个关于 LangChain 中工具的简要介绍,但还有很多东西要学习