первыйБитБИТ.АГЕНТЫ/туториал

Наблюдаемость агентов (Observability)

Проблема чёрного ящика

AI-агент — это цепочка решений, каждое из которых может повлиять на результат: LLM-вызов, выбор инструмента, поиск в базе знаний, форматирование ответа. Когда что-то идёт не так — агент дал неверный ответ, потратил слишком много токенов, вызвал не тот инструмент — без observability вы не узнаете, почему.

В production это критично: ошибочный ответ может стоить денег, репутации или compliance-нарушений. Observability — это не опция, а обязательное требование для production-развёртывания AI-агентов.

Три столпа наблюдаемости

Traceability (Трассировка)

Полная запись каждого шага агента: вызов LLM, запуск инструментов, поиск по базе знаний, время выполнения, токены. Позволяет воспроизвести и расследовать любой инцидент.

traced-agent.ts
// Каждый шаг агента записывается в trace
interface TraceStep {
  step: string
  duration_ms: number
  input_tokens: number
  output_tokens: number
}

const trace: TraceStep[] = []

function tracedLlmCall(prompt: string): string {
  const start = performance.now()
  const result = llm.chat(prompt)
  trace.push({
    step: "llm_call",
    duration_ms: performance.now() - start,
    input_tokens: countTokens(prompt),
    output_tokens: countTokens(result),
  })
  return result
}
Metrics (Метрики)

Агрегированные данные по сессиям: стоимость, задержка, количество вызовов инструментов, точность. Нужны для дашбордов, алертинга и бюджетирования.

session-metrics.ts
// Агрегированные метрики сессии
interface SessionMetrics {
  total_cost_usd: number
  total_latency_ms: number
  total_tokens: number
  tool_calls_count: number
  accuracy_score: number
  user_satisfaction: number
}

function logMetrics(messageId: string, metrics: SessionMetrics) {
  db.collection("metrics").insertOne({
    message_id: messageId,
    timestamp: new Date(),
    metrics,
  })
}
Evaluation (Оценка качества)

Автоматическая проверка ответов: фактологическая точность, полнота, соответствие контексту. LLM-as-a-judge позволяет масштабировать оценку на тысячи ответов.

llm-judge.ts
// LLM-as-a-judge: автоматическая оценка
async function evaluateResponse(
  query: string,
  response: string,
  context: string
): Promise<Evaluation> {
  const criteria = `
  Оцени ответ по шкале 1-10:
  1. Factuality — ответ основан на контексте?
  2. Completeness — покрывает ли вопрос?
  3. Conciseness — нет ли лишнего?
  `

  const judge = await llm.chat([
    { role: "system", content: criteria },
    { role: "user", content: `Query: ${query}\nResponse: ${response}\nContext: ${context}` }
  ])

  return parseEvaluation(judge)
}

Developer Mode: как это работает

В этом туториале observability встроена прямо в ChatWindow. Включите Developer Modeчерез переключатель в правом верхнем углу чата — и каждый ответ агента раскроет полную картину:

Trace Timeline
Пошаговая хронология обработки сообщения: запрос → поиск → LLM → ответ. Длительность каждого шага в миллисекундах, токены на входе и выходе. Позволяет найти узкие места — например, если search_knowledge_base занимает >2 секунды.
Metrics Bar
Сводка по сессии: общее количество токенов, стоимость в USD, средняя задержка, количество вызовов инструментов. Обновляется после каждого сообщения и помогает контролировать бюджет.
Feedback Loop
Кнопки 👍/👎 под каждым ответом. Оценки пользователей — источник ground truth для дашборда качества. Комбинируйте с LLM-as-a-judge для полной картины.

Production-практики

Dev Mode в этом туториале — упрощённая версия. В production потребуется больше:

Persistent Traces
Храните трейсы в базе данных (PostgreSQL, Elasticsearch). С retention policy 30–90 дней для расследования инцидентов и compliance.
Alerting
Пороговые алерты: latency > 10s, cost > $0.05/сообщение, error rate > 5%. Интеграция с PagerDuty, Slack, Telegram.
LLM-as-a-Judge
Автоматическая оценка каждого ответа отдельной LLM. Выявляет галлюцинации, неполноту, несоответствие инструкциям до того, как ответ увидит пользователь.
Privacy
Трейсы могут содержать PII. Маскируйте sensitive data перед записью, применяйте encryption at rest, контролируйте доступ через IAM.

Попробуйте сами

Чат ниже подключён к базе знаний компании. Включите Developer Mode(переключатель справа в заголовке чата) и наблюдайте за каждым шагом агента в реальном времени.

Агент с observability

Проверьте себя

Задайте эти вопросы с включённым Developer Mode и проследите, как меняются трейсы и метрики:

  • #1Какой дресс-код в компании?
  • #2Кому звонить при проблемах с IT?
  • #3Какие бывают типы отпусков?
  • #4Сколько зарабатывает гендиректор? (должен отказаться)