feat: Add book context to AI request processing

This commit is contained in:
2025-02-19 20:18:40 +03:00
parent 1ca8f506a9
commit 6c7839e477
@@ -7,6 +7,7 @@ import ru.cathub.telegabot.bot.KeyboardHelper;
import ru.cathub.telegabot.model.BotUser;
import ru.cathub.telegabot.model.TextRole;
import ru.cathub.telegabot.repository.UserRepository;
import ru.cathub.telegabot.repository.BookRepository;
import ru.cathub.telegabot.service.BookAiService;
import ru.cathub.telegabot.service.TelegramClientService;
@@ -19,6 +20,7 @@ import static ru.cathub.telegabot.utils.BookFormatUtils.escapeNonMarkdown;
public class BookAiServiceImpl implements BookAiService {
private final UserRepository userRepository;
private final BookRepository bookRepository;
private final TelegramClientService telegramClientService;
private final OpenRouterServiceImpl openRouterServiceImpl;
@@ -26,9 +28,19 @@ public class BookAiServiceImpl implements BookAiService {
public void processAiRequest(BotUser user, String text, BotUser.WorkingMode workingMode) {
try {
String response = null;
List<Map<String, String>> context = new ArrayList<>();
// Добавляем книги пользователя в контекст
bookRepository.findByBotUser(user).forEach(book -> {
Map<String, String> bookMap = new HashMap<>();
bookMap.put("role", "system");
bookMap.put("content", String.format("Книга: %s, Автор: %s, Рейтинг: %d",
book.getTitle(), book.getAuthor(), book.getRating()));
context.add(bookMap);
});
switch (workingMode) {
case AI_FILTER -> {response = openRouterServiceImpl.getChatResponse(text, TextRole.FILTERER);}
case AI_SUGGEST -> {response =openRouterServiceImpl.getChatResponse(text, TextRole.SUGGESTER);}
case AI_FILTER -> response = openRouterServiceImpl.getChatResponseWithContext(text, context);
case AI_SUGGEST -> response = openRouterServiceImpl.getChatResponseWithContext(text, context);
}
telegramClientService.sendMessageWithMarkdown(user, escapeNonMarkdown(response));
}