This commit is contained in:
root
2025-12-18 20:03:08 +05:00
parent c3f123aded
commit 501a651ced
3 changed files with 24 additions and 2 deletions
@@ -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");
@@ -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<String, Object> message = new HashMap<>();
@@ -261,6 +275,7 @@ public class OpenAIAnalyticsService {
}
try {
logger.debug("Calling OpenAI API with model: {}", modelName);
Map<String, Object> response = this.webClient.post()
.contentType(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON)
@@ -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