让模型查询现有业务数据时,先开放一个已经有权限检查的只读服务。模型选择工具和参数,后端决定是否允许执行,业务结果仍来自真实服务。
最小接入链
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 猜测表名、软删除或状态编码。
工具适配方法需要完成:
- 从服务端登录上下文取得用户身份,不接受模型或请求体指定的 userId 作为授权依据。
- 校验分组可见范围、状态枚举和数量上限;缺失与非法值分别处理。
- 调用已经授权的业务服务,使用绑定参数,排序字段从白名单选择。
- 返回必要的结构化字段,脱敏地址与身份信息;图片链接仍需鉴权。
- 为工具调用设置超时和次数上限,记录工具名、耗时及错误分类。
工具注解里的参数描述、JSON Schema 和提示词不能代替运行时校验。模型输出能解析为 JSON,也不代表参数满足范围或用户有权查询。
结果怎样展示
数量、状态和时间直接展示工具字段;需要自然语言说明时再让模型重述。模型回答没有调用记录时,不能当作实时业务数据。空结果、查询失败和未授权要有不同的返回,不使用“全部正常”统一代替。
第一阶段不需要自建 Router、反射注册表、灰度发布数据库和多种 UI Block 协议。先核对一个查询能否稳定返回,再根据实际消费者增加能力。
验证顺序
先直接调用原业务服务,确认权限和结果;再从聊天请求触发工具,对比两次返回。补测未登录、越权分组、非法状态、超大 limit、查询超时,以及模型没有选择工具的情况。
写入、删除和发布属于另外的工具范围,需要明确授权、幂等及结果确认,不能因“模型理解了需求”就自动执行。
评论