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
相关产品推荐
相关产品推荐

