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调用工具后返回的结果

相关推荐
PESS ABIN10 小时前
JavaWeb项目打包、部署至Tomcat并启动的全程指南(图文详解)
java·tomcat
AI进化营-智能译站10 小时前
ROS2 C++开发系列15-模板实现通用算法|宏定义ROS2调试开关|一次编码适配多平台
java·c++·算法·ai
刀法如飞10 小时前
Java数组去重的20种实现方式——指导AI解决不同问题的思路
java·算法·面试
phltxy10 小时前
告别繁琐URL!Spring Cloud OpenFeign 优雅实现微服务远程调用
spring·spring cloud·微服务
薪火铺子10 小时前
SpringMVC请求处理流程源码解析(第1篇):请求入口与处理器映射
java·后端·spring
ch.ju10 小时前
Java程序设计(第3版)第二章——参数(实参 形参)
java
椰猫子10 小时前
SpringMVC(SpringMVC简介、请求与响应(请求映射路径、请求参数、日期类型参数传递、响应json数据))
java·前端·数据库
海兰10 小时前
【开篇】Spring AI、OpenClaw 和Hermes
java·人工智能·spring·spring ai
bzmK1DTbd10 小时前
微服务架构设计:Spring Cloud Gateway与Nacos集成
java·spring·微服务
上弦月-编程10 小时前
指针编程:高效内存管理核心
java·数据结构·算法