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

文章目录


一、调用流程

二、代码

tool包下的TimeTools.java类

java 复制代码
package org.example.tool;

import org.springframework.ai.tool.annotation.Tool;
import org.springframework.ai.tool.annotation.ToolParam;

import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

public class TimeTools {

    @Tool(description = "通过时间id获取当前时间")
    public String getTimeByZoneId(@ToolParam(description = "时区id,比如 Asia/Shanghai") String zoneId) {
        ZoneId zid = ZoneId.of(zoneId);
        ZonedDateTime zoneDateTime = ZonedDateTime.now(zid);
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z");
        return zoneDateTime.format(formatter);
    }
}

controller.ZhipuChatClientController.java

java 复制代码
@RestController
@RequestMapping("/chatClient")
public class ZhipuChatClientController {

    private final ChatClient chatClient;

    public ZhipuChatClientController(ChatClient.Builder builder) {
        this.chatClient = builder
                .defaultTools(new TimeTools())
                .build();
    }



    @GetMapping("/simple")
    public String simple(@RequestParam(name = "query") String query) {
        ZhiPuAiChatOptions chatOptions = new ZhiPuAiChatOptions();
        chatOptions.setModel("glm-4-flash");
        chatOptions.setTemperature(0.0);
        chatOptions.setMaxTokens(15536);
        return chatClient.prompt()
                .system("你是一个有用的AI助手")
                .user(query)
                .options(chatOptions)
                .call().content();
    }
 }

三、效果

加了Tool Calling前

加了Tool Calling后

四、底层调用情况

Spring AI会在发送给大模型的请求体中添加所有tool的工具信息

大模型返回给Spring AI的信息中,指出调用具体的工具名称及参数

SpringAI调用工具后返回的结果

相关推荐
就叫_这个吧19 小时前
Java实现线程间的通讯--使用synchronized关键字和JUC方式实现
java·开发语言
爱上语文19 小时前
2026在线会议软件推荐:8款工具对比评测与多人协作选型指南
后端
学习中.........19 小时前
JVM 垃圾回收核心技术、演进全景与生产调优规范
java·jvm·测试工具
小小编程路19 小时前
C++类作用域
java·jvm·c++
小江的记录本19 小时前
【Java并发编程】锁机制:volatile:JMM内存模型、可见性/禁止指令重排、内存屏障、单例模式中的应用(附《思维导图》+《面试高频考点清单》)
java·后端·python·mysql·单例模式·面试·职场和发展
zandy101119 小时前
2026嵌入式BI PaaS平台技术剖析与实现指南
java·运维·paas
这是谁的博客?19 小时前
Python 异步编程核心原理与实践深度解析
java·网络·python·协程·asyncio·异步编程
奋斗的老史19 小时前
LibreOffice封装文档转 PDF 工具类
java·pdf
AllData公司负责人19 小时前
亲测丝滑,体验跃迁|AllData通过集成开源项目StreamPark,实时流任务调度更省心!
java·大数据·数据库·人工智能·算法·实时计算·实时开发平台
用户3983461612019 小时前
Go-Spring 实战第 9 课 —— IoC 容器:复杂 Go 应用如何统一对象装配
spring·go