Improve AI module comments and README

This commit is contained in:
2026-02-28 16:43:05 +03:00
parent ff52b75073
commit a87840c78d
2 changed files with 43 additions and 0 deletions

View File

@@ -18,6 +18,8 @@
`Alexander Smart Speaker` слушает ключевое слово `Alexandr`, распознает речь, маршрутизирует команду в нужный модуль и озвучивает ответ.
Проект оптимизирован под русский язык, но поддерживает RU/EN сценарии (включая перевод и mixed-language TTS).
Проект собран как локальная голосовая колонка под Linux: активация по wake word, распознавание речи, маршрутизация команд, ответ через AI или встроенные модули и затем озвучка результата.
## Возможности
- Активация по wake word `Alexandr` (Porcupine).
@@ -45,6 +47,13 @@ flowchart TD
F --> G[Follow-up режим или ожидание wake word]
```
## Что Важно В Этой Реализации
- Контекст диалога хранится в памяти текущей сессии, поэтому после первого вопроса можно продолжать разговор без потери нити.
- Системная роль ассистента и `ROLE_JSON` сохраняются для всех поддерживаемых AI-провайдеров.
- Для AI используется строго один активный API key. Если в `.env` оставить несколько ключей, ассистент покажет ошибку конфигурации вместо случайного выбора.
- Поддержка провайдеров сделана внутри одного модуля, но с разным форматом запросов для OpenAI-compatible API и Anthropic.
## Быстрый старт
### 1) Системные зависимости (Ubuntu/Debian)
@@ -86,6 +95,19 @@ PORCUPINE_ACCESS_KEY=...
Если одновременно оставить несколько AI API key, ассистент вернет ошибку: он не будет выбирать провайдера наугад.
Пример:
```ini
# правильно
OPENAI_API_KEY=sk-...
# GEMINI_API_KEY=...
# ANTHROPIC_API_KEY=...
# неправильно
OPENAI_API_KEY=sk-...
GEMINI_API_KEY=AIza...
```
### 4) Запуск
```bash
@@ -146,6 +168,15 @@ python run.py
Память текущего диалога, история сообщений и `ROLE_JSON` системной роли сохраняются для всех поддерживаемых AI-провайдеров.
## Как Выбирается AI-Провайдер
1. Приложение проверяет, какие AI API key реально активны в `.env`.
2. Если активен ровно один ключ, используется именно он.
3. Если активны несколько ключей, ассистент возвращает ошибку конфигурации.
4. Если активных ключей нет, приложение ориентируется на `AI_PROVIDER`, но без ключа работать не сможет.
Такое поведение сделано специально, чтобы конфигурация была предсказуемой и при демонстрации не возникало скрытого переключения между сервисами.
## Полезные команды
| Команда | Что делает |
@@ -179,6 +210,7 @@ alexander_smart-speaker/
| STT не распознает речь | `DEEPGRAM_API_KEY`, сетевой доступ, выбранный микрофон |
| Нет звука | корректное аудиоустройство и доступность `pactl`/`amixer` |
| Будильник/таймер не звонит | наличие `mpg123` в системе |
| Ошибка про несколько AI API | в `.env` должен остаться только один незакомментированный AI ключ |
| Spotify не управляется | заполнены `SPOTIFY_*`, есть активное устройство, Premium-аккаунт |
## Лицензия