Spring AI学习:工具调用实践(基于和风天气api) 📅 2026/6/30 22:24:27 工具调用总体实现设计工具类Component public class WeatherInquiryTools { Autowired private WeatherService weatherService; Tool(description 根据城市名称查询城市LocationID) public String getLocationId(ToolParam(description 城市名称) String cityName){ return weatherService.getLocationId(cityName).getLocation().get(0).getId(); } Tool(description 根据城市LocationID查询实时温度) public String getWeather(ToolParam(description 城市LocationID) String locationId){ return weatherService.getWeather(locationId).getNow().getTemp(); } }将工具交给ai客户端对话测试具体实现实体类NoArgsConstructor AllArgsConstructor Data public class WeatherResponse { JsonProperty(code) private String code; JsonProperty(updateTime) private String updateTime; JsonProperty(fxLink) private String fxLink; JsonProperty(now) private NowData now; JsonProperty(refer) private Refer refer; }Data AllArgsConstructor NoArgsConstructor public class NowData { // 观测时间 JsonProperty(obsTime) private String obsTime; // 温度单位摄氏度 JsonProperty(temp) private String temp; // 体感温度单位摄氏度 JsonProperty(feelsLike) private String feelsLike; // 天气图标代码 JsonProperty(icon) private String icon; // 天气描述 JsonProperty(text) private String text; // 风向360角度 JsonProperty(wind360) private String wind360; // 风向 JsonProperty(windDir) private String windDir; // 风力等级 JsonProperty(windScale) private String windScale; // 风速单位公里/小时 JsonProperty(windSpeed) private String windSpeed; // 相对湿度单位% JsonProperty(humidity) private String humidity; // 降水量单位毫米 JsonProperty(precip) private String precip; // 大气压强单位百帕 JsonProperty(pressure) private String pressure; // 能见度单位公里 JsonProperty(vis) private String vis; // 云量单位% JsonProperty(cloud) private String cloud; //露点温度单位摄氏度 JsonProperty(dew) private String dew; }NoArgsConstructor AllArgsConstructor Data public class LocationResponse { JsonProperty(code) private String code; JsonProperty(location) private ListLocation location; JsonProperty(refer) private Refer refer; }AllArgsConstructor NoArgsConstructor Data public class Location { JsonProperty(name) private String name; JsonProperty(id) private String id; JsonProperty(lat) private String lat; JsonProperty(lon) private String lon; JsonProperty(adm2) private String adm2; JsonProperty(adm1) private String adm1; JsonProperty(country) private String country; JsonProperty(tz) private String timezone; JsonProperty(utcOffset) private String utcOffset; JsonProperty(isDst) private String isDst; JsonProperty(type) private String type; JsonProperty(rank) private String rank; JsonProperty(fxLink) private String fxLink; }NoArgsConstructor AllArgsConstructor Data public class Refer { JsonProperty(sources) private ListString sources; JsonProperty(license) private ListString license; }