sdr_claude_haiku_migration_guide
SDR: Migration от llama-3.1-8b-instant → claude-haiku-4-5
Создано: 2026-03-10 (Феанор, worker ночь)
Статус: ГОТОВО К ИСПОЛНЕНИЮ — нужен только ANTHROPIC_API_KEY от Даниила
Проблема
| Метрика | llama-3.1-8b-instant (текущий) | Ожидается от claude-haiku |
|---|---|---|
| Accuracy (benchmark_1) | 64.9% overall | ~75-80% |
| Citation accuracy | 0% (9/9 ошибок) | ~50-70% |
| Rate limits | 500K TPD (часто 429) | Нет таких лимитов |
| Hallucinations | Высокие (нет цитат) | Низкие |
| Стоимость | Бесплатно (Groq) | $0.80/1M in, $3.20/1M out |
Текущая модель делает 0/9 правильных ответов на citation-вопросы в benchmark.
Ключевая задача SDR — точное цитирование источников. Это критический блокер качества.
Что нужно сделать (последовательность)
Шаг 1: Получить ANTHROPIC_API_KEY (from Даниил)
Ключ нужно добавить в /root/config/.env:
ANTHROPIC_API_KEY=sk-ant-api03-...
Без export (systemd EnvironmentFile не поддерживает).
Шаг 2: Обновить .env.benchmark в sdr_repo
# Текущий:
CLOUD_API_KEY=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
CLOUD_BASE_URL=https://api.groq.com/openai/v1
CLOUD_MODEL_NAME=llama-3.1-8b-instant
# После миграции:
CLOUD_API_KEY=${ANTHROPIC_API_KEY} # или вставить напрямую
CLOUD_BASE_URL=https://api.anthropic.com/v1
CLOUD_MODEL_NAME=claude-haiku-4-5-20251001
STRUCTURED_OUTPUT_METHOD=json_mode # важно! Anthropic не поддерживает json_schema
# Лимиты токенов (claude-haiku дешевле = можно поднять):
RESEARCH_MAX_TOKENS=8000
COMPRESSION_MAX_TOKENS=3000
FINAL_REPORT_MAX_TOKENS=10000
MAX_MICRO_RESEARCHERS=5
MICRO_RESEARCHER_BATCH_SIZE=3
Критически важно: STRUCTURED_OUTPUT_METHOD=json_mode
- Groq поддерживает json_mode, Anthropic — тоже json_mode, но НЕ json_schema
- Текущий дефолт в конфиге: json_schema — это сломает structured output с Anthropic
Шаг 3: Верификация
cd /root/sdr_repo
# Быстрый smoke test (1-2 мин)
set -a; source .env.benchmark; set +a
python3 -c "
from openai import OpenAI
client = OpenAI(base_url='$CLOUD_BASE_URL', api_key='$CLOUD_API_KEY')
r = client.chat.completions.create(
model='$CLOUD_MODEL_NAME',
messages=[{'role': 'user', 'content': 'Say OK'}],
max_tokens=10
)
print(r.choices[0].message.content)
"
# Если OK: запустить pipeline
python3 -m open_deep_research.run \
--topic "operator splitting in machine learning" \
--output /tmp/test_report.md
Шаг 4: Запустить benchmark (опционально, ~15-20 мин)
cd /root/sdr_repo
uv run python -m eval.main run-all \
--benchmark data/benchmarks/benchmark_1.yaml \
--model sber-ai-lab/deep-research-haiku-v1 \
--output data/eval/results/benchmark_1/haiku_v1/
Оценка стоимости
Типичный SDR прогон (operator splitting topic):
- ~5100 токенов итого (llama-8b benchmark)
- При 10 прогонах/день: 51K токенов
- Стоимость: 51K × ($0.80 + $3.20)/2 ÷ 1000 ≈ $0.10/день
Это очень дешево. Даже при 50 прогонах/день = $0.50/день.
Потенциальные риски
| Риск | Вероятность | Митигация |
|---|---|---|
json_schema не работает → structured output ломается |
Высокая | Всегда использовать json_mode |
| Rate limit у Anthropic | Низкая | У Tier 1 API 50 req/min |
| Haiku галлюцинирует на специфических темах | Средняя | Тест после миграции |
| Стоимость растёт неожиданно | Низкая | Мониторить worker_stats.json |
Rollback
Если что-то сломалось — вернуть исходный .env.benchmark:
git -C /root/sdr_repo checkout .env.benchmark
(если файл в git) или вручную вернуть Groq настройки.
Следующий шаг после миграции
После успешной верификации — предложить Дан. merge eval→main в sdr_repo.
Eval ветка содержит все фиксы для pipeline, которые уже верифицированы 09.03.
Феанор, 2026-03-10 06:15 MSK (auto, worker ночь)
Статус задачи: READY. Исполнение: как только Даниил даст ANTHROPIC_API_KEY