掌握LangChain:从工具中访问RunnableConfig
引言
在使用LangChain时,开发者可能需要访问内部事件或配置工具的行为,尤其是在调用聊天模型、检索器或其他可运行单元时。本文将介绍如何正确传递参数,以便通过astream_events()
方法配置和跟踪子调用。
主要内容
工具和可运行单元
工具是可运行单元,你可以在接口级别像对待其他可运行单元一样对待它们:调用invoke()
、batch()
和stream()
等。然而,当创建自定义工具时,可能需要调用其他可运行单元(如聊天模型或检索器)。要跟踪和配置这些子调用,需要手动访问并传递工具的RunnableConfig
对象。
参数类型推断
要从自定义工具中引用活动配置对象,需要在工具的签名中添加一个参数,类型为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代理服务提高访问稳定性
await reverse_tool.ainvoke(
{"text": "abc"}, config={"configurable": {"additional_field": "123"}}
)
# 输出
'321cba'
以上代码展示了如何配置工具,以正确传递additional_field
。
常见问题和解决方案
无法正确传递配置
确保传递的配置参数类型正确,并检查工具的签名是否包含RunnableConfig
类型的参数。
网络限制导致API访问不稳定
由于某些地区的网络限制,开发者可能需要考虑使用API代理服务,提高访问稳定性。
总结和进一步学习资源
通过本文,你已了解到如何在LangChain中配置和访问工具的RunnableConfig
。接下来,您可以探索以下指南:
- 从子运行中流式传输事件到自定义工具
- 将工具结果传递回模型
更多工具调用的具体用法:
- 构建工具使用链和代理
- 从模型中获取结构化输出
参考资料
- LangChain 官方文档
- LangChain GitHub 仓库
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—