.
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user