news 2026/10/15 20:06:54

Spring-AI系列——Tool Calling获取当前时间

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Spring-AI系列——Tool Calling获取当前时间

文章目录

  • 一、调用流程
  • 二、代码
    • 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调用工具后返回的结果

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/15 15:59:45

网页前端如何通过JSP实现大文件秒传功能?

大文件上传系统开发指南(基于原生JSSpringBoot) 项目背景 老哥我最近接了个"硬骨头"项目,客户要求实现20G大文件上传下载,还要支持文件夹结构保留、加密传输、断点续传,还要兼容IE9这种古董浏览器。预算只…

作者头像 李华
网站建设 2026/10/14 21:40:05

59、Ubuntu系统全解析:版本、应用与安装指南

Ubuntu系统全解析:版本、应用与安装指南 1. Ubuntu版本介绍 自2004年10月首次发布以来,Ubuntu为其版本选择了独特的命名方式。它摒弃了常见的版本编号,而是采用发布的月份和年份并颠倒顺序来命名。例如,2004年10月的首次发布版本为4.10,随后迅速推出了5.04(2005年4月)…

作者头像 李华
网站建设 2026/10/15 20:06:24

34、Bash脚本中的循环控制与故障排查

Bash脚本中的循环控制与故障排查 1. 循环控制 在Bash脚本中,循环是一种强大的工具,可用于重复执行特定的代码块。下面将介绍 while 、 until 循环以及如何在循环中控制程序流程。 1.1 while 循环 while 循环会在条件为真时持续执行代码块。以下是一个简单菜单程序…

作者头像 李华
网站建设 2026/10/15 18:34:57

直接撸起袖子开干!今天咱们聊聊怎么用LabVIEW整一个带报警记录的上位机监控系统。这玩意儿在工业现场特别实用,尤其是需要24小时盯着设备状态的时候

labview上位机监测报警记录,状态显示。 报警记录存储,存储格式txt。 csv保存文件。先看状态显示部分。LabVIEW的前面板放几个指示灯控件就能实时反映设备状态,比如用绿色圆形表示正常,红色三角表示报警。背后用个While循环不断读取…

作者头像 李华
网站建设 2026/10/15 1:28:29

基于A*算法的无人机三维动态避障路径规划设计,MATLAB编程实现

基于A* 算法的无人机三维路径规划算法,可以动态避障,自己可以规定设计障碍物位置,MATLAB编程实现。 无人机在三维空间耍杂技这事儿,靠的就是路径规划的真功夫。今天咱们来聊个硬核玩法——基于MATLAB实现的A*算法三维动态避障系统…

作者头像 李华
网站建设 2026/10/15 8:18:46

基于vue的宠物寄养机构管理系统_96zn64i1_springboot php python nodejs

目录具体实现截图项目介绍论文大纲核心代码部分展示项目运行指导结论源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作具体实现截图 本系统(程序源码数据库调试部署讲解)同时还支持java、ThinkPHP、Node.js、Spring B…

作者头像 李华