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

142 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Интеграция 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<String, Object> 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` (можно изменить в настройках).