让模型查询现有业务数据时,先开放一个已经有权限检查的只读服务。模型选择工具和参数,后端决定是否允许执行,业务结果仍来自真实服务。

最小接入链

flowchart LR
Q[用户提问] --> M[模型选择工具和参数]
M --> V[服务端校验权限与参数]
V --> S[已有业务查询]
S --> R[真实结果]
R --> A[结果展示或模型重述]

先按 Spring AI Tools 跑通工具调用。Spring AI 1.1.x 面向 Java 17 以上、Spring Boot 3;不能把依赖直接加入 Java 8 / Boot 2 项目。旧项目可以使用独立适配服务或现有 HTTP 客户端,但要单独确认认证与协议。

选一个已有查询

例如后台已提供“查离线相机”服务,输入为分组和数量上限,输出为名称、状态和最近在线时间。业务规则按自己的项目确定,不能从示例 SQL 猜测表名、软删除或状态编码。

工具适配方法需要完成:

  1. 从服务端登录上下文取得用户身份,不接受模型或请求体指定的 userId 作为授权依据。
  2. 校验分组可见范围、状态枚举和数量上限;缺失与非法值分别处理。
  3. 调用已经授权的业务服务,使用绑定参数,排序字段从白名单选择。
  4. 返回必要的结构化字段,脱敏地址与身份信息;图片链接仍需鉴权。
  5. 为工具调用设置超时和次数上限,记录工具名、耗时及错误分类。

工具注解里的参数描述、JSON Schema 和提示词不能代替运行时校验。模型输出能解析为 JSON,也不代表参数满足范围或用户有权查询。

结果怎样展示

数量、状态和时间直接展示工具字段;需要自然语言说明时再让模型重述。模型回答没有调用记录时,不能当作实时业务数据。空结果、查询失败和未授权要有不同的返回,不使用“全部正常”统一代替。

第一阶段不需要自建 Router、反射注册表、灰度发布数据库和多种 UI Block 协议。先核对一个查询能否稳定返回,再根据实际消费者增加能力。

验证顺序

先直接调用原业务服务,确认权限和结果;再从聊天请求触发工具,对比两次返回。补测未登录、越权分组、非法状态、超大 limit、查询超时,以及模型没有选择工具的情况。

写入、删除和发布属于另外的工具范围,需要明确授权、幂等及结果确认,不能因“模型理解了需求”就自动执行。