Реализация AI-логирования и мониторинга запросов в мобильном приложении
Без логирования AI-пайплайн — чёрный ящик. Не знаете, сколько запросов генерирует каждый пользователь, какие промпты дают плохие ответы, где растут токены и деньги. Мониторинг AI-запросов принципиально отличается от обычного API-мониторинга: здесь важны токены, стоимость, latency по частям (TTFT — time to first token), качество ответа.
Что логировать
Минимальный набор для каждого AI-запроса:
# Структура записи в логе
{
"request_id": "uuid",
"user_id": "hashed", # Не сырой ID — GDPR
"session_id": "uuid",
"timestamp": "ISO8601",
"model": "gpt-4o-mini",
"prompt_tokens": 342,
"completion_tokens": 89,
"total_cost_usd": 0.000124, # Считаем на сервере
"latency_ms": 1840,
"ttft_ms": 380, # Time to first token (streaming)
"status": "success", # success / rate_limited / timeout / content_filtered
"fallback_used": false,
"cache_hit": false,
"guardrail_triggered": false
}
Текст запроса и ответа — не логируем в сыром виде (конфиденциальность). Логируем хэш промпта для дедупликации и категорию запроса (классифицированную отдельной моделью).
Мониторинг стоимости
AI-запросы — это прямые расходы, которые масштабируются с пользователями. Без мониторинга стоимость неожиданно вырастает в 10 раз при вирусном росте. Нужны алерты:
- Общая стоимость за день > X USD → Slack/PagerDuty уведомление
- Стоимость на одного пользователя > Y USD → флаг злоупотребления
- Средний размер промпта вырос > Z токенов → регрессия в управлении контекстом
LangSmith (от LangChain) и Helicone — managed-платформы для AI observability, интегрируются за несколько строк кода и дают дашборды «из коробки»:
# Helicone proxy — прозрачный для кода
import openai
client = openai.AsyncOpenAI(
api_key=OPENAI_API_KEY,
base_url="https://oai.helicone.ai/v1",
default_headers={"Helicone-Auth": f"Bearer {HELICONE_API_KEY}"}
)
# Всё остальное — без изменений
Качество ответов
Latency и стоимость — технические метрики. Качество ответов — бизнес-метрика. Собираем:
- Явный фидбек: большой палец вверх/вниз в UI
- Неявный: пользователь переформулировал вопрос (повторный запрос в течение 10с — вероятно, ответ не устроил)
- LLM-as-judge: автоматическая оценка качества ответа отдельной моделью по критериям релевантности и полноты
Ориентиры по срокам
Базовое логирование через Helicone или LangSmith — 1 день. Собственная система с PostgreSQL и дашбордами Grafana — 2–3 дня. С LLM-as-judge и бизнес-метриками качества — 3–5 дней.







