AI Observability

Siyah Kutuyu Çözmek: Yapay Zekâ Uygulamaları İçin OpenTelemetry Uygulaması

Büyük Dil Modelleri (LLM'ler) modern yazılım ürünlerinin omurgası haline geldikçe, gözlemlenebilirlik zorluğu geleneksel metriklerden anlamsal anlama kaymıştır. Geliştiriciler, bir modelin neden halüsinasyon gördüğünü veya belirli bir çıkarım sırasında neden gecikmenin arttığını hata ayıklamakta sık sık zorlanır. Gözlemlenebilirlik için sektör standardı olan OpenTelemetry (OTel), bu benzersiz ihtiyaçları karşılamak üzere evrim geçirmiştir. Standart bir izleme çerçevesi benimseyerek, istem (prompt) oluşturmaktan token üretimine kadar yapay zekâ uygulamalarınızın yaşam döngüsü hakkında derin içgörüler elde edebilirsiniz.

Anlamsal Sözleşmelere Geçiş

Tarihsel olarak, bir yapay zekâ uygulamasını izlemek, harici API çağrılarını genel HTTP metrikleriyle sarmalamayı içeriyordu. Ancak bu, yapay zekâ performansını tanımlayan kritik detayları gizler: token sayıları, model parametreleri ve istem bağlamları. Bulut Yerel Hesaplama Vakfı (CNCF), Üretken Yapay Zekâ için özel anlamsal sözleşmeler tanıttı. Bu sözleşmeler, gen_ai.system, gen_ai.request.model ve gen_ai.response.token_count gibi öznitelikleri tanımlar. Bu standartlara uymak, gözlemlenebilirlik verilerinizin OpenAI, Anthropic veya yerel LLM'ler kullanıyor olmanızdan bağımsız olarak farklı arka uçlar arasında taşınabilir ve karşılaştırılabilir olmasını sağlar.

LLM Çağrılarınızı Enstrümantasyon

Popüler çerçeveler için otomatik enstrümantasyon kütüphaneleri mevcut olsa da, açık enstrümantasyon daha fazla kontrol sunar. Aşağıda, basit bir LLM etkileşimini izlemek için Python OpenTelemetry SDK'sını kullanan pratik bir örnek bulunmaktadır. Bu yaklaşım, token kullanımının ve model detaylarının span'lar olarak yakalanmasını sağlayarak maliyeti belirli kullanıcı istekleriyle ilişkilendirmenize olanak tanır.

from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
from opentelemetry.trace import Status, StatusCode

# Tracer sağlayıcısını başlat
provider = TracerProvider()
provider.add_span_processor(BatchSpanProcessor(OTLPSpanExporter()))
tracer = trace.get_tracer(__name__)

def call_llm(prompt: str, model: str):
    with tracer.start_as_current_span("llm.inference") as span:
        span.set_attribute("gen_ai.system", "openai")
        span.set_attribute("gen_ai.request.model", model)
        span.set_attribute("gen_ai.prompt", prompt)

        # LLM çağrısını simüle et
        response = "Bu bir simüle edilmiş yanıt."
        input_tokens = len(prompt.split())
        output_tokens = len(response.split())

        # Token metriklerini kaydet
        span.set_attribute("gen_ai.usage.input_tokens", input_tokens)
        span.set_attribute("gen_ai.usage.output_tokens", output_tokens)
        span.set_attribute("gen_ai.response.text", response)

        if "error" in response:
            span.set_status(Status(StatusCode.ERROR, "LLM Hatası"))
        else:
            span.set_status(Status(StatusCode.OK))
        
        return response

# Örnek kullanım
call_llm("Kuantum dolanıklığını basitçe açıkla", "gpt-4")

Maliyet ve Performans İçin Metrikleri Toplama

İzlemeler (Traces) tek bir isteğin yolculuğunu gösterirken, metrikler sisteminizin zaman içindeki sağlığını ortaya koyar. Token sayılarını zaman serisi verilerine dönüştürmelisiniz. Bu, kullanımındaki anormal sıçramalar için uyarılar kurmanıza olanak tanır; bu durumlar genellikle istem mühendisliğinizdeki bir hatayı (örneğin, bağlamı ekleyen sonsuz döngü) veya trafik artışını gösterir. Bu metrikleri faturalandırma sağlayıcınıza eşleyerek, harcamaları model, özellik veya kullanıcı katmanına göre ayrıntılandıran gerçek zamanlı bir maliyet paneli oluşturabilirsiniz.

"Neden"i Hata Ayıklama

OpenTelemetry'in yapay zekâdaki gerçek gücü, neden-sonuç ilişkisini bağlama yeteneğinde yatar. Bir kullanıcı kötü bir yanıt bildirdiğinde, isteği vektör veritabanı aramasından, istem derleme mantığından ve son olarak LLM çağrısına kadar geriye izleyebilirsiniz. Arama puanlarını ve istem sürümlerini span öznitelikleri olarak dahil ederek, modelin kötü arama kalitesi mi yoksa sadece belirsiz bir istem mi nedeniyle başarısız olduğunu belirleyebilirsiniz. Bu düzeyde incelik, hata ayıklamayı tahmine dayalı bir süreçten veri odaklı bir sürece dönüştürür.

Sonuç

OpenTelemetry'i yapay zekâ yığınıınıza entegre etmek, üretim düzeyindeki sistemler için artık isteğe bağlı değildir. Maliyetleri izlemek, model performansını iyileştirmek ve güvenilirliği sağlamak için gerekli şeffaflığı sağlar. Anlamsal sözleşmelerden yararlanarak gözlemlenebilirlik stratejinizi geleceğe hazırlarsınız; böylece yapay zekâ modelleri evrim geçirdikçe izleme yeteneklerinizin de aynı hızda ilerlemesini garanti altına alırsınız. Temel LLM çağrılarınızı enstrümantasyon yaparak küçük başlayın ve yapay zekâ uygulamanızın davranışının kapsamlı bir görünümünü oluşturmak için vektör aramasını ve ajan mantığını kademeli olarak dahil edin.

Share: