Skip to main content
Open In ColabOpen on GitHub

如何从工具中访问 RunnableConfig

先决条件

如果您有一个调用 工具聊天模型检索器 或其他 可运行对象 的程序,您可能希望从这些可运行对象中访问内部事件,或通过附加属性对其进行配置。本指南将向您展示如何手动正确传递参数,以便使用 astream_events() 方法实现此操作。

工具是 可运行的,您可以在接口层以与其他任何可运行对象相同的方式使用它们——可以像平常一样对它们调用 invoke()batch()stream()。然而,在编写自定义工具时,您可能希望调用其他可运行对象,如聊天模型或检索器。为了正确追踪和配置这些子调用,您需要手动访问并传入工具当前的 RunnableConfig 对象。本指南将向您展示一些实现方法的示例。

兼容性

本指南需要 langchain-core>=0.2.16

根据参数类型进行推断

要从自定义工具中访问活动的配置对象,请需要在工具的签名中添加一个类型为 RunnableConfig 的参数。当调用您的工具时,LangChain 会检查工具的签名,查找类型为 RunnableConfig 的参数,如果存在,则会将正确的值填充到该参数中。

注意: 参数的实际名称并不重要,重要的是类型。

为了说明这一点,请定义一个自定义工具,该工具接受两个参数——一个类型为字符串,另一个类型为RunnableConfig

%pip install -qU langchain_core
from langchain_core.runnables import RunnableConfig
from langchain_core.tools import tool


@tool
async def reverse_tool(text: str, special_config_param: RunnableConfig) -> str:
"""A test tool that combines input text with a configurable parameter."""
return (text + special_config_param["configurable"]["additional_field"])[::-1]
API 参考:RunnableConfig | 工具

然后,如果我们使用包含 configurable 字段的 config 调用工具,我们可以看到 additional_field 被正确传递:

await reverse_tool.ainvoke(
{"text": "abc"}, config={"configurable": {"additional_field": "123"}}
)
'321cba'

下一步

你现在已经了解了如何在工具内部配置和流式传输事件。接下来,请查看以下指南,了解更多关于使用工具的内容:

你也可以查看一些更具体的工具调用用法: