137 lines
6.0 KiB
Markdown
137 lines
6.0 KiB
Markdown
# DEV-014: Аудит и настройка моделей в OpenClaw
|
||
|
||
**Дата:** 27 марта 2026
|
||
**Статус:** ✅ Завершено
|
||
|
||
---
|
||
|
||
## 1. Что нашёл в документации
|
||
|
||
### `/app/docs/providers/google.md`
|
||
- Провайдер: `google`
|
||
- Аутентификация: `GEMINI_API_KEY` или `GOOGLE_API_KEY` (из `~/.openclaw/.env`)
|
||
- Синтаксис модели в конфиге: `google/gemini-3.1-pro-preview` (prefix `google/` + ID модели)
|
||
- Если Gateway запущен как демон — `GEMINI_API_KEY` должен быть в `~/.openclaw/.env` ✅ (уже так)
|
||
- Альтернативный провайдер: `google-gemini-cli` (OAuth, unofficial)
|
||
|
||
### `/app/docs/providers/models.md`
|
||
- Формат задания модели: `provider/model` (например `google/gemini-2.5-pro`)
|
||
- Для OpenRouter: `openrouter/<provider>/<model>`
|
||
|
||
### `/app/docs/providers/openrouter.md`
|
||
- Модели OpenRouter: `openrouter/<provider>/<model>` (например `openrouter/anthropic/claude-sonnet-4.6`)
|
||
- Принципиальное отличие от Google: OpenRouter имеет промежуточный слой (один ключ → много провайдеров)
|
||
|
||
---
|
||
|
||
## 2. Что было неправильно в конфиге
|
||
|
||
### Проблема: Устаревшие/несуществующие ID моделей Google
|
||
|
||
Были добавлены следующие модели, которые **не существуют в Google API**:
|
||
|
||
| Неправильный ID | HTTP ответ | Причина ошибки |
|
||
|-----------------|------------|----------------|
|
||
| `gemini-2.5-pro-preview-03-25` | **404 NOT FOUND** | Устаревший preview ID (был заменён стабильным) |
|
||
| `gemini-2.5-flash-preview-04-17` | **404 NOT FOUND** | Устаревший preview ID (был заменён стабильным) |
|
||
|
||
Проверка через `GET /v1beta/models?key=...` показала, что этих моделей больше нет в API.
|
||
|
||
---
|
||
|
||
## 3. Что исправил
|
||
|
||
### Удалены невалидные модели
|
||
```
|
||
- google/gemini-2.5-pro-preview-03-25
|
||
- gemini-2.5-pro-preview-03-25
|
||
- google/gemini-2.5-flash-preview-04-17
|
||
- gemini-2.5-flash-preview-04-17
|
||
```
|
||
|
||
### Добавлены актуальные модели (проверено через Google ListModels API)
|
||
```json
|
||
"google/gemini-2.5-pro": {},
|
||
"gemini-2.5-pro": {},
|
||
"google/gemini-2.5-flash": {},
|
||
"gemini-2.5-flash": {},
|
||
"google/gemini-2.5-flash-lite": {},
|
||
"gemini-2.5-flash-lite": {},
|
||
"google/gemini-2.0-flash": {},
|
||
"gemini-2.0-flash": {},
|
||
"google/gemini-3.1-pro-preview": {},
|
||
"gemini-3.1-pro-preview": {},
|
||
"google/gemini-3.1-flash-lite-preview": {},
|
||
"gemini-3.1-flash-lite-preview": {}
|
||
```
|
||
|
||
Все модели добавлены **двумя записями** — с prefix `google/` и без (согласно правилу из MEMORY.md).
|
||
|
||
### Почему профиль `google:default` корректен
|
||
```json
|
||
"google:default": {
|
||
"provider": "google",
|
||
"mode": "api_key"
|
||
}
|
||
```
|
||
Профиль настроен правильно. Ключ `GEMINI_API_KEY` читается из `~/.openclaw/.env` ✅.
|
||
|
||
---
|
||
|
||
## 4. Результаты тестирования
|
||
|
||
### Полный список актуальных моделей Google (через ListModels API)
|
||
Из API получен список всех моделей, поддерживающих `generateContent`:
|
||
|
||
| ID модели | Название |
|
||
|-----------|---------|
|
||
| `gemini-2.5-flash` | Gemini 2.5 Flash |
|
||
| `gemini-2.5-pro` | Gemini 2.5 Pro |
|
||
| `gemini-2.0-flash` | Gemini 2.0 Flash |
|
||
| `gemini-2.0-flash-001` | Gemini 2.0 Flash 001 |
|
||
| `gemini-2.0-flash-lite` | Gemini 2.0 Flash-Lite |
|
||
| `gemini-2.5-flash-lite` | Gemini 2.5 Flash-Lite |
|
||
| `gemini-3.1-pro-preview` | Gemini 3.1 Pro Preview |
|
||
| `gemini-3.1-flash-lite-preview` | Gemini 3.1 Flash Lite Preview |
|
||
| `gemini-3-pro-preview` | Gemini 3 Pro Preview |
|
||
| `gemini-3-flash-preview` | Gemini 3 Flash Preview |
|
||
|
||
### Тестовые вызовы
|
||
| Модель | Статус | Результат |
|
||
|--------|--------|-----------|
|
||
| `gemini-2.5-flash` | ✅ 200 OK | `Hi` (корректный ответ) |
|
||
| `gemini-2.5-pro` | ⚠️ 429 | Rate limit (Free Tier) — модель существует, лимит квоты |
|
||
| `gemini-3.1-pro-preview` | ⚠️ 429 | Rate limit (Free Tier) — модель существует, лимит квоты |
|
||
| `gemini-2.5-pro-preview-03-25` | ❌ 404 | Модель не существует |
|
||
| `gemini-2.5-flash-preview-04-17` | ❌ 404 | Модель не существует |
|
||
|
||
**Вывод:** API работает. Free Tier имеет строгие rate limits, но модели валидны.
|
||
|
||
---
|
||
|
||
## 5. Нужна ли перезагрузка гейтвея?
|
||
|
||
**Да, нужна** — изменения в `openclaw.json` (список `agents.defaults.models`) вступают в силу только после перезапуска Gateway.
|
||
|
||
```bash
|
||
# Перезапуск Gateway
|
||
openclaw gateway restart
|
||
```
|
||
|
||
Или вручную:
|
||
```bash
|
||
kill -9 $(pgrep -f "openclaw gateway") && openclaw gateway &
|
||
```
|
||
|
||
---
|
||
|
||
## Итог
|
||
|
||
- ✅ Документация изучена — Google provider работает через `google/` prefix + `GEMINI_API_KEY` в `.env`
|
||
- ✅ Обнаружены 2 невалидных ID моделей (устаревшие preview-версии с датой)
|
||
- ✅ Конфиг исправлен: добавлены актуальные стабильные модели Google (2.5-pro, 2.5-flash, 2.0-flash, 2.5-flash-lite, 3.1-pro-preview, 3.1-flash-lite-preview)
|
||
- ✅ Все модели добавлены двумя записями (с prefix `google/` и без)
|
||
- ✅ API протестирован — `gemini-2.5-flash` отвечает корректно (HTTP 200)
|
||
- ⚠️ Free Tier активен — есть rate limits, но это ограничение плана, не конфигурации
|
||
- 🔄 Требуется перезапуск Gateway для применения изменений
|