Перейти к содержимому

Трассировка и наблюдаемость

Каждый запуск автоматически строит структурированный ExecutionTrace, прикреплённый к result.trace. Он сериализуемый, сравниваемый и воспроизводимый.

result = chain.execute(context)
trace = result.trace
print(trace.format_gantt()) # text Gantt (parallel-batch aware)
print(trace.format_gantt(format="mermaid"))
trace.to_html("playback.html") # standalone animated HTML/JS (zero deps)

to_html() записывает самодостаточный файл (встроенный CSS+JS), который можно добавить в описание PR; без пути возвращает HTML-строку.

trace.to_json() # serialise (also: from_json)
diff = trace.diff(other_trace) # structural diff between two runs

TraceAggregator сворачивает множество трасс — перцентили задержек по шагам (p50/p95/p99/mean/max) и использование токенов (p50/p95) — для обнаружения выбросов хвостовой задержки после пакетного запуска:

from mmar_carl import TraceAggregator
agg = TraceAggregator([t1, t2, t3])

Для хостинговой панели трассировки установите LANGFUSE_PUBLIC_KEY (и секрет) в переменные окружения — интеграция tracing.py от CARL автоматически отправляет спаны (установите mmar-carl[langfuse]).

import logging
from mmar_carl import set_log_level, get_logger
set_log_level(logging.DEBUG) # INFO by default
get_logger().info("Starting analysis")
УровеньКогда
DEBUGРазработка — подробный поток.
INFOПродакшн — старт/завершение цепочки (по умолчанию).
WARNINGНеудачные шаги.
ERRORКритические ошибки.