feat: Add book context to AI request processing
This commit is contained in:
@@ -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));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user