От «логируй всё» к SLO и дашбордам: что мерить, как связать трейсы с evals, как находить деградации до жалоб.
| Уровень | Что | Инструменты |
|---|---|---|
| Трейсы | Полный путь запроса: LLM-вызовы, тулы, чанки, промпты | OpenTelemetry, Langfuse, LangSmith, Phoenix |
| Метрики | Агрегаты: RPS, p95, cost, ошибки | Prometheus (vLLM /metrics), Grafana |
| Алерты | Пороги: очередь растёт, WER скакнул, PII-leak | Alertmanager, PagerDuty |
Трейсы отвечают «что случилось с этим запросом», метрики — «не деградировало ли в целом», алерты — «пора вставать».
trace_id, session_id, tenant_id,
prompt_version, config_version, model,
tokens_in/out, cost, latency,
tool_calls: [{name, args_hash, status, latency}],
chunk_ids, guard_decision, handoff, WER (для voice)
Ключевое: prompt_version + config_version — без них невозможно откатить «вчерашний ответ» и понять, какая версия промпта дала регрессию (урок 0007).
Observability и evals — это одна петля, не два мира:
Это петля Phoenix/Langfuse: «observe → find → dataset → evaluate». Инструменты из урока 0008 и глоссария инструментов.
| Метрика | Типичный SLO | Почему |
|---|---|---|
| PII-leak rate | 0.0% | Не обсуждается для банка |
| Resolution rate | ≥ целевого (например, 70%) | Главная бизнес-метрика |
| p95 latency | < 2с (текст), < 1с первый звук (voice) | UX |
| Guard trip rate | стабилен, не скачет | Аномалия = атака или перекос |
| Error rate (5xx/тул) | < 0.1% | Надёжность |
| Eval pass rate в CI | 100% на критичных (PII, деньги) | Регрессии не в прод |
Правило: алерт = действие. «Что-то странное» — это дашборд, не алерт.
Трейс отвечает на вопрос?
SLO по PII-leak для банка?
Алерт — это когда?