You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向LangChain Tools模块传递自定义完整输入参数?

解决LangChain Tools传递完整参数的方案

完全可以通过args schema实现将完整输入内容传递给工具函数,无需仅提取action_input。具体实现方式如下:

实现步骤

  • 定义一个Pydantic模型,描述你需要接收的完整参数结构(可以是固定字段或任意字典)
  • 创建自定义工具时,将该模型指定为args_schema参数
  • 工具函数即可直接接收完整参数,自行解析处理

代码示例

方式1:固定参数结构

如果你的参数字段是确定的,直接定义对应字段的Pydantic模型:

from langchain.tools import BaseTool
from pydantic import BaseModel, Field

# 定义完整参数的Pydantic模型
class FullParams(BaseModel):
    name: str = Field(description="名称")
    dt: int = Field(description="年份")
    id: int = Field(description="ID")

# 自定义工具
class MyCustomTool(BaseTool):
    name = "my_custom_tool"
    description = "接收完整参数的自定义工具"
    args_schema = FullParams  # 指定args_schema为自定义模型

    def _run(self, name: str, dt: int, id: int):
        # 直接获取所有参数并处理
        print(f"完整参数:name={name}, dt={dt}, id={id}")
        return "参数处理完成"

# 使用工具
tool = MyCustomTool()
tool.run({"name": "name", "dt": 2020, "id": 123})

方式2:任意参数字典

如果参数结构不确定,可定义接受字典类型的模型:

from langchain.tools import BaseTool
from pydantic import BaseModel, Field

class AnyParams(BaseModel):
    params: dict = Field(description="完整的参数字典")

class MyCustomTool(BaseTool):
    name = "my_custom_tool"
    description = "接收任意参数字典的工具"
    args_schema = AnyParams

    def _run(self, params: dict):
        # 自行解析参数字典内容
        print(f"完整参数字典:{params}")
        return "参数处理完成"

# 使用工具
tool = MyCustomTool()
tool.run({"params": {"name": "name", "dt": 2020, "id": 123}})

设置完成后,LangChain会自动将你传入的完整参数解析并传递给工具函数,不再仅提取单一的action_input。

内容的提问来源于stack exchange,提问作者bai you

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 00:32:17