5.6 KiB
Интеграция 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:
ReportSynthesisServiceReportGenerationServiceKursivParserServiceKapitalParserServiceLsmParserServiceRbcParserServiceVedomostiParserService
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
- Высокое качество: GPT-4o-mini обеспечивает более качественный анализ и генерацию текста
- Надежность: Стабильная работа API без необходимости локального сервера
- Масштабируемость: Легко масштабируется под нагрузку
- Многоязычность: Отличная поддержка русского и английского языков
- Консистентность: Более предсказуемые результаты
Миграция
Все существующие вызовы OllamaAnalyticsService автоматически заменены на OpenAIAnalyticsService. API остается совместимым, поэтому дополнительных изменений в коде не требуется.
Тестирование
Для тестирования нового сервиса:
- Запустите приложение
- Откройте
GET /api/openai/testдля проверки подключения - Используйте
POST /api/openai/analyzeдля анализа текста - Используйте
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 (можно изменить в настройках).