diff --git a/src/main/java/kz/konturai/parser/service/MarketingAnalysisService.java b/src/main/java/kz/konturai/parser/service/MarketingAnalysisService.java index a7d7d03..acede18 100644 --- a/src/main/java/kz/konturai/parser/service/MarketingAnalysisService.java +++ b/src/main/java/kz/konturai/parser/service/MarketingAnalysisService.java @@ -9,6 +9,7 @@ import kz.konturai.parser.model.MarketingAnalysis; import kz.konturai.parser.repository.MarketingAnalysisRepository; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; import org.springframework.http.MediaType; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; @@ -36,6 +37,9 @@ public class MarketingAnalysisService { private final ResearchPdfService researchPdfService; private final ObjectMapper objectMapper = new ObjectMapper(); + @Value("${openai.model.name.text:gpt-4o}") + private String textModelName; + public MarketingAnalysisService( MarketingAnalysisRepository repository, OpenAIAnalyticsService openAIAnalyticsService, @@ -1467,9 +1471,11 @@ public class MarketingAnalysisService { promptBuilder.append(jsonString); String prompt = promptBuilder.toString(); - logger.info("generatePolishedTextReport: Calling AI for text report generation"); + logger.info("generatePolishedTextReport: Calling AI for text report generation with model: {}", + textModelName); - String result = openAIAnalyticsService.generateWithInstruction(jsonString, prompt, "ru"); + String result = openAIAnalyticsService.generateWithInstructionWithModel(jsonString, prompt, "ru", + textModelName); if (result == null || result.trim().isEmpty()) { logger.warn("generatePolishedTextReport: AI returned empty result"); diff --git a/src/main/java/kz/konturai/parser/service/OpenAIAnalyticsService.java b/src/main/java/kz/konturai/parser/service/OpenAIAnalyticsService.java index 0cac826..4581bfe 100644 --- a/src/main/java/kz/konturai/parser/service/OpenAIAnalyticsService.java +++ b/src/main/java/kz/konturai/parser/service/OpenAIAnalyticsService.java @@ -241,6 +241,20 @@ public class OpenAIAnalyticsService { } public String generateWithInstruction(String text, String instruction, String language) { + return generateWithInstructionWithModel(text, instruction, language, modelName); + } + + /** + * Генерирует текст с использованием указанной модели OpenAI + * + * @param text Текст для обработки + * @param instruction Инструкция для AI + * @param language Язык ответа + * @param modelName Название модели OpenAI (например, "gpt-4o-mini" или + * "gpt-4o") + * @return Сгенерированный текст + */ + public String generateWithInstructionWithModel(String text, String instruction, String language, String modelName) { String prompt = instruction + "\n\n" + text; Map message = new HashMap<>(); @@ -261,6 +275,7 @@ public class OpenAIAnalyticsService { } try { + logger.debug("Calling OpenAI API with model: {}", modelName); Map response = this.webClient.post() .contentType(MediaType.APPLICATION_JSON) .accept(MediaType.APPLICATION_JSON) diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 5574a83..9e79da5 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -62,6 +62,7 @@ logging.level.org.springframework.data.mongodb.core.convert=DEBUG openai.api.key=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 openai.api.url=https://api.openai.com/v1/chat/completions openai.model.name=gpt-4o-mini +openai.model.name.text=gpt-4o openai.timeoutMs=90000 openai.retry.maxAttempts=3 openai.retry.initialDelayMs=2000