type: standard
aspect: process
title: "Стандарт делегирования моделей"
version: 1.0.0
date: 2026-02-19
status: active
Версия: 1.1.0
Дата: 2025-12-24
Статус: active
При создании ЛЮБЫХ компонентов Claude ОБЯЗАН:
model="haiku" или model="sonnet"При выходе обновлений (новые модели, изменение цен):
Частота проверки: ежемесячно или при анонсе новых моделей Anthropic.
Рутину — дешёвым моделям, думать — дорогим.
Экономия достигается правильным выбором модели под задачу.
Разница в стоимости: до 20x между Haiku и Opus.
| Модель | Input $/1M | Output $/1M | Относительно |
|---|---|---|---|
| Claude 3 Haiku | $0.25 | $1.25 | 1x (базовая) |
| Claude 3.5 Haiku | $0.80 | $4.00 | 3x |
| Claude 4.5 Haiku | $1.00 | $5.00 | 4x |
| Sonnet 4/4.5 | $3.00 | $15.00 | 12x |
| Opus 4.5 | $5.00 | $25.00 | 20x |
Источник: https://www.anthropic.com/pricing
Задачи без интеллекта — поиск, форматирование, проверки.
| Задача | Пример |
|---|---|
| Поиск файлов | "найди все .py с import requests" |
| Grep по коду | "где используется функция X" |
| Валидация синтаксиса | "проверь yaml файлы" |
| Форматирование | "преобразуй JSON в таблицу" |
| Извлечение данных | "вытащи все URL из файла" |
| Простые проверки | "сервис работает? curl status" |
Триггеры: найди, grep, проверь синтаксис, форматируй, извлеки, список
Задачи с лёгким анализом — понимание кода, сравнение.
| Задача | Пример |
|---|---|
| Explore кодовой базы | "как работает авторизация" |
| Сравнение файлов | "чем отличаются версии" |
| Документирование | "опиши что делает функция" |
| Поиск багов | "найди очевидные ошибки" |
| Тесты на покрытие | "какие кейсы не покрыты" |
Триггеры: explore, как работает, объясни, сравни, опиши
Задачи написания и изменения кода.
| Задача | Пример |
|---|---|
| Написание функций | "напиши парсер CSV" |
| Рефакторинг | "разбей на мелкие функции" |
| Баг-фиксы | "исправь ошибку в обработке" |
| Code review | "проверь код на качество" |
| Тесты | "напиши unit-тесты" |
| API интеграции | "добавь endpoint" |
Триггеры: напиши, создай функцию, рефакторинг, исправь баг, добавь
Задачи требующие глубокого понимания и решений.
| Задача | Пример |
|---|---|
| Архитектура | "спроектируй систему" |
| Планирование | "как лучше реализовать" |
| Сложный анализ | "почему падает производительность" |
| Принятие решений | "какой подход выбрать" |
| Дебаг сложных багов | "почему не работает (неочевидно)" |
| Стратегия | "как масштабировать" |
Триггеры: спроектируй, архитектура, стратегия, почему, как лучше
ВХОД: задача (текст)
1. ИЗВЛЕЧЬ ключевые слова из задачи
2. ПРОВЕРИТЬ триггеры по классам:
ЕСЛИ содержит ["найди", "grep", "список", "проверь синтаксис",
"форматируй", "извлеки", "валидируй"]:
→ Класс A → Claude 3 Haiku
ЕСЛИ содержит ["explore", "как работает", "объясни", "сравни",
"опиши", "документируй"]:
→ Класс B → Claude 3.5 Haiku
ЕСЛИ содержит ["напиши", "создай", "рефакторинг", "исправь",
"добавь", "тест", "код"]:
→ Класс C → Sonnet 4.5
ЕСЛИ содержит ["архитектура", "спроектируй", "стратегия",
"почему", "как лучше", "выбрать"]:
→ Класс D → Opus (не делегировать)
3. ЕСЛИ не определено → по умолчанию Класс B (Haiku 3.5)
4. ЭСКАЛАЦИЯ при неудаче:
- Haiku 3 не справился (2 попытки) → Haiku 3.5
- Haiku 3.5 не справился (2 попытки) → Sonnet
- Sonnet не справился (2 попытки) → Opus сам
ВЫХОД: модель для Task tool
ВАЖНО: Модели не хардкодятся в программах — читаются из справочника.
system/config/models.yaml ← ЕДИНСТВЕННЫЙ источник правды
from library.core.model_selector import get_model, get_model_for_role, calculate_cost
# Программа не знает какая модель — узнаёт в runtime
model = get_model("analyze")
# → {"provider": "openrouter", "model": "google/gemini-2.0-flash-exp:free"}
# Получить модель для роли
model = get_model_for_role("projector", task="research")
# → {"provider": "claude", "model": "claude-opus-4-5-20251101"}
# Рассчитать стоимость
cost = calculate_cost("analyze", input_tokens=1000, output_tokens=500)
# → 0.0 (бесплатная модель)
# При смене справочника — код НЕ меняется
# Проверка задачи
python library/core/model_selector.py analyze
# → analyze: openrouter/google/gemini-2.0-flash-exp:free
# Список всех ролей
python library/core/model_selector.py roles
# Список всех задач
python library/core/model_selector.py tasks
Проектор имеет 6 внутренних режимов с разными моделями:
| Режим | Модель | Назначение | Триггеры |
|---|---|---|---|
| research | Opus | Исследование кодовой базы | исследуй, изучи, найди как, разберись |
| planning | Opus | Проектирование фичи | спланируй, спроектируй, продумай, подготовь план |
| implement | Sonnet 4.5 | Написание кода | реализуй, напиши, создай, сделай, добавь |
| review | Sonnet 4.5 | Ревью кода | проверь, ревью, посмотри код |
| analyze | Gemini Free | Анализ данных, логов | проанализируй, разбери данные, статистика |
| quick | Llama Free | Быстрые операции | форматируй, преобразуй, извлеки |
Конфигурация: system/config/models.yaml → roles.projector.modes
Переключение: library/core/projector_mode.py
from library.core.projector_mode import get_projector_mode
# Определить режим по триггерам
mode = get_projector_mode("исследуй структуру проекта")
# → {"mode": "research", "model": "claude-opus-4-5-20251101"}
mode = get_projector_mode("напиши функцию парсинга")
# → {"mode": "implement", "model": "claude-sonnet-4-5-20250929"}
# Класс A — механические (OpenRouter, бесплатно)
Task(
subagent_type="Explore",
model="haiku",
prompt="найди все файлы где импортируется pandas"
)
# Класс B — аналитические (OpenRouter)
Task(
subagent_type="Explore",
model="haiku",
prompt="объясни как работает авторизация в этом проекте"
)
# Класс C — кодирование (Claude Sonnet)
Task(
model="sonnet",
prompt="напиши функцию для парсинга CSV с валидацией"
)
# Класс D — НЕ делегировать
# Opus делает сам — планирование, архитектура, решения
1. ПРОВЕРИТЬ цены:
WebSearch("Anthropic Claude API pricing {текущий_месяц} {год}")
2. СРАВНИТЬ с текущей таблицей:
- Новые модели?
- Изменились цены?
- Deprecated модели?
3. ПРОТЕСТИРОВАТЬ новую модель:
- Задача класса A → замерить качество + время
- Задача класса B → замерить качество + время
- Задача класса C → замерить качество + время
4. ОБНОВИТЬ этот документ:
- Таблица цен
- Рекомендации по классам
- Дата обновления
5. УВЕДОМИТЬ: "Обновлён стандарт MODEL_DELEGATION.md"
| Критерий | Вес |
|---|---|
| Стоимость | 40% |
| Качество результата | 35% |
| Скорость | 15% |
| Стабильность | 10% |
Формула: score = quality * 0.35 + (1/cost) * 0.40 + speed * 0.15 + stability * 0.10
# Логировать при каждом Task:
- timestamp
- task_class: A|B|C|D
- model_used: haiku|sonnet|opus
- tokens_input
- tokens_output
- cost_usd
- success: true|false
- escalated: true|false
ЭКОНОМИЯ ЗА НЕДЕЛЮ:
- Задач класса A: 45 (Haiku 3) → $0.12
- Задач класса B: 23 (Haiku 3.5) → $0.18
- Задач класса C: 12 (Sonnet) → $0.89
- Задач класса D: 8 (Opus) → $1.20
────────
ИТОГО: $2.39
БЕЗ ОПТИМИЗАЦИИ (всё на Opus): $11.50
ЭКОНОМИЯ: 79%
Добавить в секцию "ДЕЛЕГИРОВАНИЕ МОДЕЛЯМ":
### Выбор модели по классу задачи
| Класс | Тип задачи | Модель | $/1M |
|-------|------------|--------|------|
| A | Поиск, форматирование | Haiku 3 | $0.25 |
| B | Анализ, explore | Haiku 3.5 | $0.80 |
| C | Код, рефакторинг | Sonnet | $3.00 |
| D | Архитектура, решения | Opus (сам) | $5.00 |
**Стандарт:** [architect/standards/MODEL_DELEGATION.md]
model="haiku"|"sonnet"|"opus"Версия: 1.0.0
Обновлено: 2025-12-23
Следующая проверка цен: 2026-01-23