Files
marketing-parser/OPENAI_INTEGRATION.md
T
2025-10-14 01:55:42 +05:00

5.6 KiB
Raw Blame History

Интеграция OpenAI API

Обзор

Создан новый сервис OpenAIAnalyticsService для замены OllamaAnalyticsService. Новый сервис использует OpenAI API для анализа текста и генерации контента.

Основные изменения

1. Новый сервис OpenAIAnalyticsService

  • Файл: src/main/java/kz/konturai/parser/service/OpenAIAnalyticsService.java
  • Функциональность: Аналогична OllamaAnalyticsService, но использует OpenAI API
  • Методы:
    • analyzeText(String text) - анализ текста с извлечением саммари, тегов, тональности и сущностей
    • analyzeText(String text, String language) - анализ с указанием языка
    • generateWithInstruction(String text, String instruction) - генерация текста по инструкции
    • generateWithInstruction(String text, String instruction, String language) - генерация с указанием языка

2. Обновленные сервисы

Все сервисы, которые использовали OllamaAnalyticsService, теперь используют OpenAIAnalyticsService:

  • ReportSynthesisService
  • ReportGenerationService
  • KursivParserService
  • KapitalParserService
  • LsmParserService
  • RbcParserService
  • VedomostiParserService

3. Конфигурация

В application.properties уже настроены параметры для OpenAI:

# OpenAI Configuration
openai.api.key=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
openai.api.url=https://api.openai.com/v1/chat/completions
openai.model.name=gpt-4o-mini
openai.timeoutMs=90000

4. Тестовый контроллер

Создан OpenAITestController для тестирования функциональности:

  • POST /api/openai/analyze - анализ текста
  • POST /api/openai/generate - генерация по инструкции
  • GET /api/openai/test - тест подключения

Использование

Анализ текста

@Autowired
private OpenAIAnalyticsService openAIAnalyticsService;

// Анализ текста на русском языке
MarketItem.Analytics analytics = openAIAnalyticsService.analyzeText(text, "ru");

// Получение саммари
String summary = analytics.getSummary();

// Получение тегов
String[] tags = analytics.getTags();

// Получение тональности
String sentiment = analytics.getSentiment();

// Получение сущностей
Map<String, Object> entities = analytics.getEntities();

Генерация текста

// Генерация отчета
String instruction = "Напиши краткий отчет на основе следующих данных:";
String generatedText = openAIAnalyticsService.generateWithInstruction(data, instruction, "ru");

Преимущества OpenAI API

  1. Высокое качество: GPT-4o-mini обеспечивает более качественный анализ и генерацию текста
  2. Надежность: Стабильная работа API без необходимости локального сервера
  3. Масштабируемость: Легко масштабируется под нагрузку
  4. Многоязычность: Отличная поддержка русского и английского языков
  5. Консистентность: Более предсказуемые результаты

Миграция

Все существующие вызовы OllamaAnalyticsService автоматически заменены на OpenAIAnalyticsService. API остается совместимым, поэтому дополнительных изменений в коде не требуется.

Тестирование

Для тестирования нового сервиса:

  1. Запустите приложение
  2. Откройте GET /api/openai/test для проверки подключения
  3. Используйте POST /api/openai/analyze для анализа текста
  4. Используйте POST /api/openai/generate для генерации контента

Настройка

Настройка API ключа

Убедитесь, что в application.properties указан корректный API ключ OpenAI:

openai.api.key=${OPENAI_API_KEY:your-openai-api-key-here}

Рекомендуется использовать переменную окружения:

export OPENAI_API_KEY=sk-your-actual-api-key-here

Тестирование API ключа

Используйте скрипт для проверки API ключа:

./test-openai-api.sh

Решение проблем

Ошибка 401 Unauthorized:

  • Проверьте правильность API ключа
  • Убедитесь, что ключ не истек
  • Проверьте, что ключ начинается с sk-

Ошибка 429 Rate Limit:

  • Превышен лимит запросов
  • Подождите некоторое время перед повторной попыткой

Модель по умолчанию: gpt-4o-mini (можно изменить в настройках).