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

LangChain Tool.from_function()定义工具时参数调用报错的问题咨询

LangChain Tool.from_function()定义工具时参数调用报错的问题咨询

嘿,我来帮你排查这个报错的原因!你遇到的这个ToolException,核心问题出在调用工具时的参数传递方式不对。

你已经通过args_schema=Input_structure把工具定义成了需要结构化输入的类型,但调用的时候却传了一个位置参数元组('x^2 + 10', 'x'),这就导致工具无法正确解析你的输入,误以为你传了多个独立参数,所以抛出了“参数过多”的错误。

给你两种可行的解决办法:

方法一:改用字典格式传递参数

保持当前的derivative_tool定义不变,调用时把参数包装成字典,对应Input_structure里的字段名:

result = derivative_tool.invoke({"expression": "x^2 + 10", "variable": "x"})

方法二:显式使用StructuredTool(更直观)

虽然Tool.from_function配合args_schema已经是结构化工具,但显式使用StructuredTool可以让代码意图更清晰,调用方式和上面一致:

from langchain.tools import StructuredTool

derivative_tool = StructuredTool.from_function(
    func=compute_derivative,
    name="derivative",
    description="Compute derivative",
    args_schema=Input_structure
)

# 用字典格式传递参数
result = derivative_tool.invoke({"expression": "x^2 + 10", "variable": "x"})

另外补充一点:如果你的工具不需要严格的结构化输入校验,也可以去掉args_schema参数,直接传位置参数元组,但这样就失去了Pydantic模型的参数校验能力,一般不推荐这种做法哦。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 10:18:04