Fix AI filter and suggest
This commit is contained in:
@@ -11,6 +11,11 @@ import ru.cathub.telegabot.repository.BookRepository;
|
||||
import ru.cathub.telegabot.service.BookAiService;
|
||||
import ru.cathub.telegabot.service.TelegramClientService;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static ru.cathub.telegabot.model.BotUser.WorkingMode.*;
|
||||
import static ru.cathub.telegabot.utils.BookFormatUtils.escapeNonMarkdown;
|
||||
|
||||
@@ -29,7 +34,13 @@ public class BookAiServiceImpl implements BookAiService {
|
||||
try {
|
||||
String response = null;
|
||||
List<Map<String, String>> context = new ArrayList<>();
|
||||
|
||||
TextRole role;
|
||||
switch (workingMode) {
|
||||
case AI_FILTER -> role = TextRole.FILTERER;
|
||||
case AI_SUGGEST -> role = TextRole.SUGGESTER;
|
||||
default -> throw new RuntimeException("Invalid working mode");
|
||||
}
|
||||
context.add(Map.of("role", "system", "content", role.getPrompt()));
|
||||
// Добавляем книги пользователя в контекст
|
||||
bookRepository.findByBotUser(user).forEach(book -> {
|
||||
Map<String, String> bookMap = new HashMap<>();
|
||||
@@ -38,10 +49,8 @@ public class BookAiServiceImpl implements BookAiService {
|
||||
book.getTitle(), book.getAuthor(), book.getRating()));
|
||||
context.add(bookMap);
|
||||
});
|
||||
switch (workingMode) {
|
||||
case AI_FILTER -> response = openRouterServiceImpl.getChatResponseWithContext(text, context);
|
||||
case AI_SUGGEST -> response = openRouterServiceImpl.getChatResponseWithContext(text, context);
|
||||
}
|
||||
response = openRouterServiceImpl.getChatResponseWithContext(text, context);
|
||||
log.info("AI response generated: {}", response);
|
||||
telegramClientService.sendMessageWithMarkdown(user, escapeNonMarkdown(response));
|
||||
}
|
||||
catch (Exception e) {
|
||||
|
||||
@@ -31,7 +31,7 @@ public class BookFormatUtils {
|
||||
}
|
||||
|
||||
public static String escapeNonMarkdown(String text) {
|
||||
return text.replaceAll("([().!-])", "\\\\$1");
|
||||
return text.replaceAll("([\\[\\]()~`>#+=|{}.!-])", "\\\\$1");
|
||||
}
|
||||
|
||||
public static String formatDate(Date date) {
|
||||
|
||||
Reference in New Issue
Block a user