From 709e3f3867f87a12220f99a546aca4ab7b7608a3 Mon Sep 17 00:00:00 2001 From: L_DelOff Date: Sun, 18 Jan 2026 17:54:34 +0300 Subject: [PATCH] tools --- .../telegrambot/service/LlmService.java | 12 ++++++++-- .../telegrambot/tool/DateTimeTool.java | 22 +++++++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 aitools/src/main/java/ru/ldeloff/aitools/telegrambot/tool/DateTimeTool.java diff --git a/aitools/src/main/java/ru/ldeloff/aitools/telegrambot/service/LlmService.java b/aitools/src/main/java/ru/ldeloff/aitools/telegrambot/service/LlmService.java index 33abd9d..7607044 100644 --- a/aitools/src/main/java/ru/ldeloff/aitools/telegrambot/service/LlmService.java +++ b/aitools/src/main/java/ru/ldeloff/aitools/telegrambot/service/LlmService.java @@ -6,8 +6,12 @@ import org.springframework.ai.chat.messages.Message; import org.springframework.ai.chat.prompt.Prompt; import org.springframework.ai.openai.OpenAiChatModel; import org.springframework.ai.openai.OpenAiChatOptions; +import org.springframework.ai.openai.api.OpenAiApi; import org.springframework.ai.openai.api.ResponseFormat; +import org.springframework.ai.support.ToolCallbacks; +import org.springframework.ai.tool.ToolCallback; import org.springframework.stereotype.Service; +import ru.ldeloff.aitools.telegrambot.tool.DateTimeTool; import java.util.List; @@ -18,12 +22,16 @@ public class LlmService { private final OpenAiChatModel model; public List sendMessages(List messages) { - return model.call( + return model + .call( new Prompt( messages, OpenAiChatOptions.builder() .temperature(0.1) - .responseFormat(ResponseFormat.builder().type(ResponseFormat.Type.TEXT).build()) + .toolCallbacks(ToolCallbacks.from(new DateTimeTool())) + .responseFormat( + ResponseFormat.builder().type(ResponseFormat.Type.TEXT).build() + ) .build() ) diff --git a/aitools/src/main/java/ru/ldeloff/aitools/telegrambot/tool/DateTimeTool.java b/aitools/src/main/java/ru/ldeloff/aitools/telegrambot/tool/DateTimeTool.java new file mode 100644 index 0000000..3ed5526 --- /dev/null +++ b/aitools/src/main/java/ru/ldeloff/aitools/telegrambot/tool/DateTimeTool.java @@ -0,0 +1,22 @@ +package ru.ldeloff.aitools.telegrambot.tool; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.ai.tool.annotation.Tool; +import org.springframework.ai.tool.annotation.ToolParam; + +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; + +@Slf4j +public class DateTimeTool { + + @Tool(description = "Returns current date and time in the given timezone. Default: Europe/Moscow. Use IANA timezone IDs (e.g., America/New_York, Asia/Tokyo).") + String getCurrentDateTime(@ToolParam(description = "IANA timezone ID (e.g., Europe/Moscow, America/New_York). Default: Europe/Moscow") String timezone) { + log.info("getTime called for timezone: {}", timezone); + ZoneId zoneId = ZoneId.of(timezone==null ? "Europe/Moscow" : timezone); + LocalDateTime now = LocalDateTime.now(zoneId); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + return now.format(formatter); + } +}