Spring Ai_ToolCalling

Posted by ni on April 14, 2025
本文共1197 字 | 大约需要3.99 分钟阅读

前言

  • 前面完成了调用AI的基本操作
  • 当前学习使用SpringAi的ToolCalling使用
  • 当用户提出特定问题时,可以执行方法,可以通过方法返回相关内容,也可以执行其他操作

ToolCalling

  • 该方法的使用学习非常简单

  • 主要为@Tool注解和@ToolParam注解

  • 官方文档给的示例

    class DateTimeTools {
      
        @Tool(description = "Set a user alarm for the given time")
        void setAlarm(@ToolParam(description = "Time in ISO-8601 format") String time) {
            LocalDateTime alarmTime = LocalDateTime.parse(time, DateTimeFormatter.ISO_DATE_TIME);
            System.out.println("Alarm set for " + alarmTime);
        }
      
    }
    
  • 很明显的能知道当用户提及到@Tool注解的描述时就会执行该方法

  • 注释@ToolParam允许您提供有关工具参数的关键信息:

    • description:参数的描述,模型可以通过它来更好地理解如何使用参数。例如,参数应采用什么格式、允许使用哪些值等等。
    • required:参数是必需的还是可选的。默认情况下,所有参数都被视为必需的。
  • 如果不添加Tool方法获取当前时间

  • 添加Tool方法

    public class MyTool {
        @Tool(description = "当前时间是多少")
        String getCurrentTime(){
            return LocalDateTime.now().toString();
        }
    }
    public ...{
    return client.prompt()
                    .user(message)
                    .tools(new MyTool())
                    .system("你是一个架构师,帮助用户回答各类编程难题")
                    .advisors(memoryAdvisor)
                    .call()
                    .content();
    }
    
  • 结果:

  • 后续可以在方法里添加多种实用的方法例如定时任务什么的
  • 有了ToolCalling的支持,可以提供AI的能动性