# Настройка OpenAI API

## Проблема

Получена ошибка `401 Unauthorized` при обращении к OpenAI API. Это означает, что API ключ недействителен или истек.

## Решение

### 1. Получите новый API ключ OpenAI

1. Перейдите на [OpenAI Platform](https://platform.openai.com/)
2. Войдите в свой аккаунт или создайте новый
3. Перейдите в раздел "API Keys"
4. Создайте новый API ключ
5. Скопируйте ключ (он начинается с `sk-`)

### 2. Настройте API ключ

#### Вариант A: Переменная окружения (рекомендуется)

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

#### Вариант B: Прямо в application.properties

Откройте файл `src/main/resources/application.properties` и замените:

```properties
openai.api.key=your-openai-api-key-here
```

на:

```properties
openai.api.key=sk-your-actual-api-key-here
```

### 3. Проверьте настройки

Убедитесь, что в `application.properties` правильно настроены:

```properties
# OpenAI Configuration
openai.api.key=${OPENAI_API_KEY:your-openai-api-key-here}
openai.api.url=https://api.openai.com/v1/chat/completions
openai.model.name=gpt-4o-mini
openai.timeoutMs=90000
```

### 4. Тестирование

После настройки API ключа:

1. Перезапустите приложение
2. Откройте `GET /api/openai/test` для проверки подключения
3. Проверьте логи на наличие ошибок

### 5. Возможные проблемы

- **401 Unauthorized**: Неверный или истекший API ключ
- **429 Rate Limit**: Превышен лимит запросов
- **500 Server Error**: Временная проблема с сервером OpenAI

### 6. Безопасность

⚠️ **Важно**: Никогда не коммитьте реальные API ключи в репозиторий!

- Используйте переменные окружения
- Добавьте `application.properties` в `.gitignore` если содержит секреты
- Используйте отдельные файлы конфигурации для продакшена

## Пример использования

После настройки API ключа сервис будет работать автоматически:

```java
@Autowired
private OpenAIAnalyticsService openAIAnalyticsService;

// Анализ текста
MarketItem.Analytics analytics = openAIAnalyticsService.analyzeText("Ваш текст здесь");

// Генерация контента
String result = openAIAnalyticsService.generateWithInstruction(
    "Данные для анализа",
    "Напиши краткий отчет"
);
```
