让 Agent 的工具调用更稳:我在 QVeris 最近在做的事

QVeris · 产品动态
QVeris 已经把大量 API 和工具接入到 Agent 的执行链路中。对用户来说,理想体验很简单:提出一个问题,Agent 选择合适的工具,拿到结果,然后继续把任务完成。
但在真实世界里,工具调用并不会总是这么顺滑。很多失败并不是因为用户问错了,也不是因为 Agent 完全不懂,而是因为工具背后有各种细小但关键的约束:参数格式、示例值、鉴权方式、文档地址、接口签名、provider 自己的字段规则。
这些差异如果没有被系统理解,用户看到的就只是一次"工具调用失败"。
所以我最近主要在做的事情,是让 QVeris 的工具链从"能调用工具",进一步走向"能更稳定地完成工具调用"。

背景
工具调用的难点不只是把 API 接进来。
一个工具真正进入 Agent 的工作流之后,会经历很多真实请求。用户可能要查一家公司、一条视频、一组账号、一段时间范围,Agent 需要把这些自然语言意图转换成 provider 能执行的参数。
这中间任何一个细节没对齐,都可能失败:
-
多个值应该传数组,还是逗号分隔的字符串
-
文档里的 undefined、null、string 能不能当成真实样例
-
URL 参数到底应该是用户要查的业务链接,还是误用了文档站链接
-
API key、appid 这类鉴权字段该不该让用户手动传
-
某些专业 API 是否需要按请求体生成签名
-
文档页面里的接口示例是否真的对应当前工具
从用户角度看,这些都不应该变成负担。用户不关心 provider 的 schema 长什么样,只关心 Agent 能不能把事情办完。
我们做了什么
最近这组优化的核心,是给工具调用加上一层更可靠的"执行前检查、失败后修复、成功后沉淀"的闭环。
在执行前,系统会先检查工具定义和样例参数是不是可执行的。
比如,它会过滤掉明显不是业务参数的占位符,不再把 undefined、null、n/a、string 这类文档示例当成真实请求。
在执行中,如果发现已有样例参数和工具 schema 不一致,系统会尽量做轻量归一化。比如某些接口虽然描述为多个值,但实际需要的是一个逗号分隔字符串,系统会把用户意图保留下来,只调整表达方式。
在失败后,系统会结合错误信息、工具定义和文档内容判断问题来源。它不是简单地"再试一次",而是先判断这是参数问题、接口地址问题、鉴权问题,还是 provider 本身的权限或数据范围限制。
更重要的是,系统不会因为找到一个能跑通的样例就随便覆盖原来的工具经验。
对于已经稳定成功的工具,已有样例会被保护起来;
对于从文档里生成的新候选参数,也会先执行验证,确认成功后再沉淀。
这件事看起来细,但很关键:工具可靠性不能靠碰运气,也不能靠把用户原始问题替换成一个"常见样例"。
真正有价值的修复,是在尽量保留用户意图的前提下,把参数调整到 provider 能理解的格式。
一个更贴近用户的例子

假设用户想查询一组账号或标的。
在语义上,"A 和 B"很简单。但不同工具对"多个值"的表达可能完全不同。有的接口接受数组,有的接口只接受一个用英文逗号连接的字符串。
以前,这类差异很容易导致调用失败:用户意图是对的,Agent 选择的工具也是对的,但最后卡在了 provider 的格式细节上。
现在,系统会把这类问题识别为工具参数对齐问题。它会保留用户原本想查的对象,只把参数表达改成工具真正接受的形式。
类似地,如果文档里给出的样例是 undefined,系统不会把它当成真实查询值;如果示例 URL 指向文档站、支持页或 API host 本身,系统也不会把它误认为用户要查询的业务链接。
这些优化最终带来的不是某个单点功能,而是一种更稳的使用体验:用户不用理解这些细节,Agent 也更少因为这些细节中断任务。
支持更复杂的专业 API
除了参数修复,我们还补充了一块更偏产品底座的能力:让需要签名认证的专业 API 也能更自然地进入工具体系。
很多企业级、行业级数据接口并不是简单传一个 API key 就能调用。它们会要求每次请求都带上时间戳、接口名、版本号,并基于真实请求体生成签名。
这类能力如果缺失,Agent 即使知道该调用哪个工具,也可能在认证层面失败。
现在,QVeris 可以在执行时根据本次调用参数生成对应签名,把必要的认证信息自动补齐。对用户来说,这意味着更多专业数据源可以像普通工具一样被 Agent 使用,而不是停在"接口接入了,但实际调用不稳定"的阶段。
用户会感受到什么
第一,工具调用失败会更少变成死胡同。
当失败来自参数格式、样例错误、接口地址误判或鉴权缺口时,系统有机会先理解原因,再给出修复,而不是直接把错误抛给用户。
第二,Agent 会更尊重用户原始意图。
好的修复不是"换一个能成功的参数",而是在用户想查的对象、时间、范围不变的前提下,把表达方式对齐到工具要求。
第三,QVeris 的工具库会随着真实使用持续变好。
每一次执行、失败、修复和验证,都会帮助系统积累更可靠的工具经验。稳定可用的样例被保护,新的可用样例被验证后沉淀,整个工具生态会越来越稳。
为什么这件事重要
Agent 真正进入生产环境以后,难点不是演示一次成功调用,而是面对真实世界里不整齐的工具、文档和数据源时,仍然尽可能把任务完成。
QVeris 正在做的,就是把工具调用从"接上 API"推进到"可靠地使用 API"。
当系统能理解失败、修复参数、处理鉴权、保护已有经验,并把成功路径沉淀下来,Agent 的体验就会从"会调用工具"变成"更像一个能持续完成任务的助手"。
