如何从工具访问RunnableConfig
Prerequisites
本指南假设您熟悉以下概念:
如果你有一个调用工具的聊天模型、检索器或其他可运行对象,你可能希望访问这些可运行对象的内部事件或使用附加属性配置它们。本指南向你展示如何正确手动传递参数,以便你可以使用astream_events()
方法实现这一点。
工具是可运行对象,你可以在接口级别将它们视为与其他可运行对象相同的方式 - 你可以正常调用invoke()
、batch()
和stream()
。然而,在编写自定义工具时,你可能希望调用其他可运行对象,如聊天模型或检索器。为了正确跟踪和配置这些子调用,你需要手动访问并传入工具的当前RunnableConfig
对象。本指南向你展示了一些如何做到这一点的示例。
Compatibility
本指南需要 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 Reference:RunnableConfig | tool
然后,如果我们使用包含configurable
字段的config
调用工具,我们可以看到additional_field
被正确传递:
await reverse_tool.ainvoke(
{"text": "abc"}, config={"configurable": {"additional_field": "123"}}
)
'321cba'
下一步
你现在已经了解了如何从工具内部配置和流式传输事件。接下来,查看以下指南以获取更多关于使用工具的信息:
你也可以查看一些更具体的工具调用用途: