Skip to content

工具

许多 AI 应用程序直接与人类交互。在这些情况下,模型以自然语言进行响应是合适的。 但如果我们要让模型也直接与系统(如数据库或 API)交互呢? 这些系统通常有特定的输入模式;例如,API 通常需要特定的负载结构。你可以使用 工具调用 来请求符合特定模式的模型响应。

工具 是一种封装函数及其输入模式的方法,可以传递给支持工具调用的聊天模型。这允许模型请求使用特定输入执行此函数。

工具 可以传递给支持 工具调用聊天模型,允许模型使用特定输入请求执行特定函数。

你可以 创建自定义工具 或使用 预构建工具

工具调用

模型工具调用的示意图

工具调用的一个关键原则是,模型根据输入的相关性决定是否使用工具。模型并不总是需要调用工具。 例如,对于与工具*无关*的输入,模型将不会调用工具:

result = llm_with_tools.invoke("Hello world!")

结果将是一个包含模型以自然语言回复的 AIMessage(例如,“Hello!”)。 然而,如果我们传递一个与工具*相关*的输入,模型应该选择调用它:

result = llm_with_tools.invoke("What is 2 multiplied by 3?")

和之前一样,输出 result 将是一个 AIMessage。 但如果调用了工具,result 将具有一个 tool_calls 属性。 此属性包含执行工具所需的一切信息,包括工具名称和输入参数:

result.tool_calls
{'name': 'multiply', 'args': {'a': 2, 'b': 3}, 'id': 'xxx', 'type': 'tool_call'}

有关更多使用细节,请参阅如何操作指南

执行工具

LangGraph 提供了预构建组件 —— ToolNodecreate_react_agent —— 代表用户调用工具。

请参阅此 操作指南 了解如何调用工具。

预构建工具

LangChain 支持与 API、数据库、文件系统、网络数据等交互的广泛预构建工具集成。这些工具扩展了代理的功能,并实现了快速开发。

您可以在 LangChain 集成目录 中浏览所有可用集成的完整列表。

一些常用的工具类别包括:

  • 搜索:Bing、SerpAPI、Tavily
  • 代码解释器:Python REPL、Node.js REPL
  • 数据库:SQL、MongoDB、Redis
  • 网络数据:网页抓取和浏览
  • API:OpenWeatherMap、NewsAPI 等其他 API

这些集成可以通过上述示例中展示的相同的 tools 参数配置并添加到您的代理中。