题目
如何把 Java 方法注册为工具,生成参数 Schema,并处理执行结果与异常?
答案
可在业务包装方法上使用 `@Tool` 描述用途,用 `@ToolParam` 说明参数语义,再将工具对象注册到 ChatClient。下面是方法形态示例,orderService 为已有业务服务: ```java @Tool(description = "查询当前用户的订单状态,只读") public OrderView getOrder( @ToolParam(description = "订单编号,例如 A123") String orderId) { return orderService.getOwnedOrder(orderId); } ``` 框架根据方法签名和注解生成参数 Schema,但订单归属、状态限制和参数业务规则仍需服务端检查。当前用户由可信执行上下文获取,不交给模型指定。 返回结构清楚的 DTO,包含业务状态和必要字段。将可修正的参数错误、业务拒绝和暂时故障转成受控结果,内部堆栈留在脱敏日志。写操作还需幂等和审批;注册方法不会自动获得这些保障。 参考:[Spring AI 工具调用](https://docs.spring.io/spring-ai/reference/api/tools.html)。