文章目录
- 一、调用流程
- 二、代码
- tool包下的TimeTools.java类
- controller.ZhipuChatClientController.java
- 三、效果
- 四、底层调用情况
一、调用流程
二、代码
tool包下的TimeTools.java类
packageorg.example.tool;importorg.springframework.ai.tool.annotation.Tool;importorg.springframework.ai.tool.annotation.ToolParam;importjava.time.ZoneId;importjava.time.ZonedDateTime;importjava.time.format.DateTimeFormatter;publicclassTimeTools{@Tool(description="通过时间id获取当前时间")publicStringgetTimeByZoneId(@ToolParam(description="时区id,比如 Asia/Shanghai")StringzoneId){ZoneIdzid=ZoneId.of(zoneId);ZonedDateTimezoneDateTime=ZonedDateTime.now(zid);DateTimeFormatterformatter=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z");returnzoneDateTime.format(formatter);}}controller.ZhipuChatClientController.java
@RestController@RequestMapping("/chatClient")publicclassZhipuChatClientController{privatefinalChatClientchatClient;publicZhipuChatClientController(ChatClient.Builderbuilder){this.chatClient=builder.defaultTools(newTimeTools()).build();}@GetMapping("/simple")publicStringsimple(@RequestParam(name="query")Stringquery){ZhiPuAiChatOptionschatOptions=newZhiPuAiChatOptions();chatOptions.setModel("glm-4-flash");chatOptions.setTemperature(0.0);chatOptions.setMaxTokens(15536);returnchatClient.prompt().system("你是一个有用的AI助手").user(query).options(chatOptions).call().content();}}三、效果
加了Tool Calling前
加了Tool Calling后
四、底层调用情况
Spring AI会在发送给大模型的请求体中添加所有tool的工具信息
大模型返回给Spring AI的信息中,指出调用具体的工具名称及参数
SpringAI调用工具后返回的结果