news 2026/9/2 12:38:24

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/9/3 0:56:48

探索现代永磁同步电机控制原理:从理论到Matlab仿真实践

现代永磁同步电机控制原理,包含书和matlab 仿真程序,包含直接转矩控制,滑膜观测器,高频注入等仿真模型。在电机控制领域,永磁同步电机(PMSM)凭借其高效、节能、功率密度大等优势,在工…

作者头像 李华
网站建设 2026/9/2 18:48:11

53、Linux 系统优化与命令行操作指南

Linux 系统优化与命令行操作指南 1. MySQL 优化建议 在处理 MySQL 数据库时,为了提升性能和效率,有一些实用的优化建议: - 字段声明 :创建表时,将字段声明为 NOT NULL ,这样可以节省空间并提高查询速度。 - 默认值设置 :为字段提供默认值,并在合适的地方使用…

作者头像 李华
网站建设 2026/9/3 1:11:31

54、Linux命令行与软件管理全攻略

Linux命令行与软件管理全攻略 在Linux系统中,命令行操作和软件管理是非常重要的技能。下面我们将详细介绍一些实用的命令操作和软件管理方法。 命令行操作技巧 在进行命令行操作时,有许多实用的快捷键和命令可以提高效率。 排序与加粗设置 :当你做出选择后,再次按下En…

作者头像 李华
网站建设 2026/9/3 0:23:42

63、技术综合指南:系统配置、数据库管理与网络应用

技术综合指南:系统配置、数据库管理与网络应用 在技术领域中,系统配置、数据库管理和网络应用是至关重要的方面。下面将详细介绍相关的技术要点和操作方法。 系统配置与管理 桌面环境定制 :Ubuntu系统的桌面环境可以进行多方面的定制。在GNOME环境下,可通过特定操作改变…

作者头像 李华
网站建设 2026/9/2 22:26:14

Kubernetes RBAC 权限控制实战指南:从零开始掌握每个细节

引言 本文将通过逐步操作、详细解释、实战验证的方式,确保你完全掌握 Kubernetes RBAC 的每一个概念和操作。每个例子都包含完整的命令、YAML 文件和验证步骤。 第一部分:基础环境准备 1.1 创建测试命名空间 首先,我们创建三个命名空间来模拟不同的环境: # 创建命名空间…

作者头像 李华