Add multi-provider AI config safeguards
This commit is contained in:
31
README.md
31
README.md
@@ -24,7 +24,7 @@
|
||||
- Follow-up окно 4 секунды после ответа: если пользователь молчит, ассистент возвращается к ожиданию wake word.
|
||||
- Распознавание речи через Deepgram (WebSocket, VAD, fast stop).
|
||||
- Озвучка через Silero TTS (RU + EN, с прерыванием по wake word).
|
||||
- AI-диалог через Perplexity API со streaming-ответом и контекстом.
|
||||
- AI-диалог через Perplexity, OpenAI, Gemini, Z.ai и Anthropic Claude API со streaming-ответом и контекстом.
|
||||
- Перевод RU -> EN и EN -> RU.
|
||||
- Погода: текущий прогноз по городу по умолчанию или по названию города.
|
||||
- Таймеры, будильники (включая будни/выходные), секундомеры.
|
||||
@@ -73,11 +73,19 @@ cp .env.example .env
|
||||
Минимально обязательные переменные:
|
||||
|
||||
```ini
|
||||
PERPLEXITY_API_KEY=...
|
||||
AI_PROVIDER= # опционально; можно оставить пустым
|
||||
# Раскомментируйте только один AI API KEY:
|
||||
# PERPLEXITY_API_KEY=...
|
||||
# OPENAI_API_KEY=...
|
||||
# GEMINI_API_KEY=...
|
||||
# ZAI_API_KEY=...
|
||||
# ANTHROPIC_API_KEY=...
|
||||
DEEPGRAM_API_KEY=...
|
||||
PORCUPINE_ACCESS_KEY=...
|
||||
```
|
||||
|
||||
Если одновременно оставить несколько AI API key, ассистент вернет ошибку: он не будет выбирать провайдера наугад.
|
||||
|
||||
### 4) Запуск
|
||||
|
||||
```bash
|
||||
@@ -92,8 +100,23 @@ python run.py
|
||||
|
||||
| Переменная | Обязательно | По умолчанию | Назначение |
|
||||
|---|---|---|---|
|
||||
| `PERPLEXITY_API_KEY` | Да | - | Ключ Perplexity API |
|
||||
| `AI_PROVIDER` | Нет | `perplexity` | Опциональный провайдер AI (`perplexity`, `openai`, `gemini`, `zai`, `anthropic`; также понимает `claude`) |
|
||||
| `PERPLEXITY_API_KEY` | Да* | - | Ключ Perplexity API (*если выбран Perplexity и только этот AI ключ активен) |
|
||||
| `PERPLEXITY_MODEL` | Нет | `llama-3.1-sonar-small-128k-chat` | Модель Perplexity |
|
||||
| `PERPLEXITY_API_URL` | Нет | `https://api.perplexity.ai/chat/completions` | Endpoint Perplexity Chat Completions |
|
||||
| `OPENAI_API_KEY` | Да* | - | Ключ OpenAI API (*если выбран OpenAI и только этот AI ключ активен) |
|
||||
| `OPENAI_MODEL` | Нет | `gpt-4o-mini` | Модель OpenAI |
|
||||
| `OPENAI_API_URL` | Нет | `https://api.openai.com/v1/chat/completions` | Endpoint OpenAI Chat Completions |
|
||||
| `GEMINI_API_KEY` | Да* | - | Ключ Google Gemini API (*если выбран Gemini и только этот AI ключ активен) |
|
||||
| `GEMINI_MODEL` | Нет | `gemini-2.5-flash` | Модель Gemini |
|
||||
| `GEMINI_API_URL` | Нет | `https://generativelanguage.googleapis.com/v1beta/openai/chat/completions` | OpenAI-compatible endpoint Gemini |
|
||||
| `ZAI_API_KEY` | Да* | - | Ключ Z.ai API (*если выбран Z.ai и только этот AI ключ активен) |
|
||||
| `ZAI_MODEL` | Нет | `glm-5` | Модель Z.ai |
|
||||
| `ZAI_API_URL` | Нет | `https://api.z.ai/api/paas/v4/chat/completions` | Endpoint Z.ai Chat Completions |
|
||||
| `ANTHROPIC_API_KEY` | Да* | - | Ключ Anthropic API (*если выбран Anthropic и только этот AI ключ активен) |
|
||||
| `ANTHROPIC_MODEL` | Нет | `claude-sonnet-4-20250514` | Модель Claude |
|
||||
| `ANTHROPIC_API_URL` | Нет | `https://api.anthropic.com/v1/messages` | Endpoint Anthropic Messages API |
|
||||
| `ANTHROPIC_API_VERSION` | Нет | `2023-06-01` | Версия Anthropic API |
|
||||
| `DEEPGRAM_API_KEY` | Да | - | Ключ Deepgram STT |
|
||||
| `PORCUPINE_ACCESS_KEY` | Да | - | Ключ PicoVoice Porcupine |
|
||||
| `PORCUPINE_SENSITIVITY` | Нет | `0.8` | Чувствительность wake word |
|
||||
@@ -121,6 +144,8 @@ python run.py
|
||||
| Игра | `Давай сыграем в города` |
|
||||
| Управление диалогом | `Повтори`, `Стоп`, `Хватит` |
|
||||
|
||||
Память текущего диалога, история сообщений и `ROLE_JSON` системной роли сохраняются для всех поддерживаемых AI-провайдеров.
|
||||
|
||||
## Полезные команды
|
||||
|
||||
| Команда | Что делает |
|
||||
|
||||
Reference in New Issue
Block a user