142 lines
5.6 KiB
Markdown
142 lines
5.6 KiB
Markdown
# Интеграция 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` (можно изменить в настройках).
|