如何从工具访问 RunnableConfig
先决条件
本指南假定您熟悉以下概念:
如果你有一个调用聊天模型、检索器或其他可运行对象的工具,你可能希望从这些可运行对象访问内部事件或使用其他属性配置它们。本指南介绍如何正确手动传递参数,以便您可以使用astream_events()方法。
工具是可运行项,你可以像在接口级别处理任何其他可运行项一样对待它们 - 你可以调用invoke(),batch()和stream()照常对他们。但是,在编写自定义工具时,您可能希望调用其他可运行对象,例如聊天模型或检索器。为了正确跟踪和配置这些子调用,您需要手动访问并传入工具的当前RunnableConfig对象。本指南将向您展示一些如何执行此作的示例。
兼容性
本指南要求langchain-core>=0.2.16.
按参数类型推断
要从自定义工具中访问对活动 config 对象的引用,您需要在工具的签名中添加一个参数,键入为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 | 工具
然后,如果我们使用config包含一个configurable字段中,我们可以看到additional_field正确传递:
await reverse_tool.ainvoke(
{"text": "abc"}, config={"configurable": {"additional_field": "123"}}
)
'321cba'
后续步骤
您现在已经了解了如何从工具中配置和流式传输事件。接下来,查看以下指南以了解有关使用工具的更多信息:
您还可以查看工具调用的一些更具体的用途: