# Интеграция 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: ```properties # 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` - тест подключения ## Использование ### Анализ текста ```java @Autowired private OpenAIAnalyticsService openAIAnalyticsService; // Анализ текста на русском языке MarketItem.Analytics analytics = openAIAnalyticsService.analyzeText(text, "ru"); // Получение саммари String summary = analytics.getSummary(); // Получение тегов String[] tags = analytics.getTags(); // Получение тональности String sentiment = analytics.getSentiment(); // Получение сущностей Map entities = analytics.getEntities(); ``` ### Генерация текста ```java // Генерация отчета 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: ```properties openai.api.key=${OPENAI_API_KEY:your-openai-api-key-here} ``` **Рекомендуется использовать переменную окружения:** ```bash export OPENAI_API_KEY=sk-your-actual-api-key-here ``` ### Тестирование API ключа Используйте скрипт для проверки API ключа: ```bash ./test-openai-api.sh ``` ### Решение проблем **Ошибка 401 Unauthorized:** - Проверьте правильность API ключа - Убедитесь, что ключ не истек - Проверьте, что ключ начинается с `sk-` **Ошибка 429 Rate Limit:** - Превышен лимит запросов - Подождите некоторое время перед повторной попыткой Модель по умолчанию: `gpt-4o-mini` (можно изменить в настройках).