在现代AI开发中,LangChain是一个非常强大的框架,它允许开发者通过工具调用聊天模型、检索器以及其他可运行对象(runnables)。这些工具本身也是可运行的,可以通过invoke()
、batch()
和stream()
等方法调用。在开发自定义工具时,你可能需要调用其他可运行对象,并适当地追踪和配置这些子调用。为此,我们可以通过访问当前工具的RunnableConfig
对象来实现目标。下面我们将深入探讨如何手动传递参数以正确配置这些调用。
技术背景介绍
LangChain工具是一种可运行对象,可以像其他可运行对象一样进行调用。为了能够正确追踪和配置子调用,需要访问并传递当前工具的RunnableConfig
对象。
核心原理解析
要访问自定义工具中的活动配置对象,您需要在工具的签名中添加一个类型为RunnableConfig
的参数。LangChain会检查工具的签名,寻找一个类型为RunnableConfig
的参数,并在调用时自动填充该参数。
代码实现演示
下面是如何定义一个自定义工具,并通过它访问RunnableConfig
对象的示例代码:
# 确保安装最新版本的langchain-core
%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:
"""一个测试工具,结合输入文本和配置参数"""
# 从配置中获取额外字段并与文本结合
return (text + special_config_param["configurable"]["additional_field"])[::-1]
# 调用工具并传入配置
await reverse_tool.ainvoke(
{"text": "abc"}, config={"configurable": {"additional_field": "123"}}
)
# 输出: '321cba'
在这个示例中,我们定义了一个名为reverse_tool
的工具,它接受文本和一个类型为RunnableConfig
的参数。工具将文本与配置中的额外字段组合后反转输出。
应用场景分析
这种配置方法适用于需要精细控制和跟踪子运行的场景。例如,在构建复杂的链式调用或代理时,可以使用这种方式来确保每个子部分的行为都可控和可追踪。
实践建议
- 确保工具的参数类型正确,以便LangChain可以自动填充配置对象。
- 在设计工具的时候,尽量考虑可配置性,以增加工具的灵活性和重用性。
- 使用注解和文档来增强可读性和维护性。
结束语:如果遇到问题欢迎在评论区交流。
—END—