工具调用失败常因Schema校验不通过:必填字段缺失或类型不匹配(如字符串传入float字段)会静默拒绝;需检查Pydantic Model类型标注,打印实际输入对比;超时需工具内加timeout或配置retry_policy;兜底响应链需设置fallback_tool并实现无依赖的handle_tool_failure工具。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

确认工具调用失败是否由Schema校验触发
打开你注册工具时定义的Pydantic Model类,检查每个字段是否标注了类型和Field(...)或Field(default=None)。AgentKit在调用前会强制校验输入字典是否完全匹配该Schema,【缺少任一必填字段或类型不匹配都会静默拒绝调用,且不抛出Python异常,只返回空结果】。
在工具函数内部第一行插入print(f"Received input: {input_dict}"),运行一次触发失败的请求,对比打印出的实际参数与Model定义——常见坑是前端传了"threshold": "0.5"(字符串),而Schema要求float。
捕获并重试超时类工具调用
AgentKit默认不内置网络超时控制,若你的工具封装了HTTP请求或数据库查询,需手动加装timeout逻辑。
方法一:用requests.get(url, timeout=8)替代裸调用,捕获requests.exceptions.Timeout后返回结构化错误字典{"error": "timeout", "detail": "API响应超时"};
自我反思 + 自我批评 + 自我学习 + 自我组织记忆。代理评估自身工作,发现错误并持续改进。
方法二:在AgentKit配置中启用retry_policy,设置max_retries=2和backoff_factor=1.5,但注意这仅对框架层可识别的ToolExecutionError生效,原始网络异常仍需工具内处理。
构建工具调用失败的兜底响应链
第一步:在AgentKit的AgentRunner初始化时,传入fallback_tool="handle_tool_failure"参数;
第二步:定义handle_tool_failure工具,它接收原始失败工具名、输入参数、错误消息三字段,返回自然语言解释(如“查设备状态失败,请稍后重试”);
第三步:确保该工具本身无外部依赖、无IO操作、执行耗时

















