Skip to main content

Her oturum için bir iz

Düzenek Mühendisliği (Harness Engineering) bir oturumun ne yaptığını sözlü rapora değil izlere sorar. Bu aparat — OpenTelemetry GenAI semantic conventions uyumlu trace iskeleti — düzenek (harness) içinde runtime gerçeğinin tek kaynağıdır. Oturum açılır, tek bir trace ID üretilir, her feature span olur, her doğrulama adımı alt span olur. Oturum kapanır; “dün ne oldu” sorusu kanıt tabanlı cevaplanır.

Ne işe yarar

İz, aracın dışında bir gerçeklik tutar. Generator AgentOps kullanıyor, evaluator Inspect AI üzerinde koşuyor, operasyon ekibi Jaeger’da debug açıyor — üçü de aynı semantik konvansiyonla aynı span ağacını okur. Düzenek araç değiştirebilir; iz değişmez.
  • Portatif kanıt. Span ve attribute isimleri GenAI semconv standardına bağlı. Aracı değiştirmek tek satır exporter konfigürasyonuna iner.
  • Tek tıkla kök neden. Hata noktası ağaç içinde bulunur; hangi araç çağrısı ne kadar sürdü, hangi token bütçesi yandı netleşir.
  • Oturumlar arası süreklilik. Sonraki oturum geçmiş trace’leri okur, karar gerekçelerine erişir. Bilgi uçurumu kapanır.
Anthropic’in “Quantifying infrastructure noise” çalışması nettir: runtime yapılandırma farkı altı puan skor farkı doğurabiliyor; trace belgelenmeden üç puanın altındaki farklara güvenilmemeli. İz olmadan ne regresyon tespiti ne model karşılaştırması güvenilirdir.

Span hiyerarşisi

Kural sade: trace per session, span per feature, sub-span per verification step.
Bir oturumun tüm akışı tek bir DAG. Üst trace oturum katmanını, orta span feature path’ini, alt spanlar doğrulama adımlarını taşır; ağaç hem zaman hem nedensellik kanıtıdır.

Şablon — OpenTelemetry Python instrumentation

Aşağıdaki iskelet, üç katmanlı span ağacını GenAI semconv attribute isimleriyle kurar. opentelemetry-api ve opentelemetry-sdk paketlerinin yüklü olduğunu varsayar.
Üç düzey: oturum, feature, doğrulama. gen_ai.* attribute’ları GenAI semconv’un sözlüğünden alınır; harness.* namespace’i düzeneğe özgü ek alanlardır. Standart isimler aracın işidir, namespace isimleri düzeneğin işidir; ikisi karışmaz.

GenAI semconv attribute haritası

Kanonik anahtarlar dört kovaya ayrılır:

Konvansiyon

Span adı. Operasyon spanları için {gen_ai.operation.name} {gen_ai.request.model} — örneğin chat claude-sonnet-4-7. Doğrulama spanları için verify {step}verify lint, verify e2e. Attribute kümesi. Operasyon spanlarında en az gen_ai.operation.name, gen_ai.provider.name, gen_ai.request.model, gen_ai.response.model, gen_ai.usage.input_tokens, gen_ai.usage.output_tokens doldurulur. Düzeneğe özgü her şey harness.* altında durur; semconv namespace’i kirlenmez. Opt-in. GenAI semconv hâlâ Development statüsünde. Ortam değişkeni OTEL_SEMCONV_STABILITY_OPT_IN virgülle ayrılmış liste alır; gen_ai_latest_experimental değeri instrumentation’ı en güncel deneysel sürüme geçirir. Bu mekanizma, attribute adlarındaki kırıcı değişikliklere karşı düzeneği korur.

Otomasyona bağlama

OTLP protokolü sayesinde aynı SDK farklı backend’lere yazar.
  • Jaeger — yerel debug için OTLPSpanExporter ile localhost:4317. Docker compose ile beş dakikada ayağa kalkar.
  • Tempo — Grafana yığını içinde uzun süreli saklama. Loki logları ile trace ID üzerinden eşleşir.
  • Honeycomb — yüksek kardinaliteli analiz. gen_ai.request.model veya harness.feature.id üzerinden gruplama tek tıkla yapılır.
Maliyet kontrolü için iki kademeli örnekleme: hata içeren trace’ler her zaman tutulur, başarılı trace’ler ParentBased(TraceIdRatioBased(0.1)) ile yüzde on oranında örneklenir. Token ve süre toplamları metrik olarak ayrıca yayımlanır; örneklenen trace eksilse de toplam ölçüler bozulmaz.

İlgili dersler