OpenAI SDK'sını kullanarak yapay zeka uygulamaları için izleme sonuçlarını görüntüleme (klasik)

Yalnızca şunlar için geçerlidir:Dökümhane (klasik) portalı. Bu makale yeni Dökümhane portalında kullanılamaz. Yeni portal hakkında daha fazla bilgi edinin.

Not

Bu makaledeki bağlantılar, şu anda görüntülediğiniz Dökümhane (klasik) belgeleri yerine yeni Microsoft Foundry belgelerinde içerik açabilir.

Yapay zeka uygulaması yürütmesine görünürlük sağlayan izleme sonuçlarını görüntülemeyi öğrenin. Yanlış araç çağrılarını, yanıltıcı istemleri, gecikme darboğazlarını ve düşük kaliteli değerlendirme puanlarını tanılamak için izlemeleri kullanın.

Bu makalede şunların nasıl yapılacağını öğreneceksiniz:

  • Proje için izlemeyi etkinleştirme.
  • OpenAI SDK'yi uygulayın.
  • İleti içeriğini yakalama (isteğe bağlı).
  • İzleme zaman çizelgelerini ve aralıklarını görüntüleyin.
  • İzlemeyi değerlendirme döngüleriyle bağlayın.

Bu makalede, Microsoft Foundry'de OpenTelemetry ile OpenAI SDK kullanarak yapay zeka uygulamalarının izleme sonuçlarını görüntüleme işlemi açıklanmaktadır.

Önkoşullar

Bu kılavuzu tamamlamak için şunlara ihtiyacınız vardır:

  • Dökümhane projesi oluşturuldu.

  • Foundry'de barındırılan modellere çağrı yapmak için OpenAI SDK'sını kullanan bir yapay zeka uygulaması.

Projenizde izlemeyi etkinleştirme

Foundry, OpenTelemetry kullanarak izlemeleri Azure Uygulaması Insights'ta depolar. Yeni kaynaklar Application Insights'i otomatik olarak sağlamaz. Dökümhane kaynağı başına bir kaynağı bir kez ilişkilendirin (veya oluşturun).

Aşağıdaki adımlarda kaynağınızı yapılandırma adımları gösterilmektedir:

  1. Foundry Portal'a gidin ve projenizde gezinin.

  2. Yan gezinti çubuğunda İzleme'yi seçin.

  3. Bir Azure Uygulaması Insights kaynağı, Dökümhane kaynağınızla ilişkili değilse, bir kaynağı ilişkilendirin. Zaten ilişkili bir Application Insights kaynağınız varsa, aşağıdaki etkinleştirme sayfasını görmezsiniz ve bu adımı atlayabilirsiniz.

    Foundry kaynağına Azure Uygulaması Insights'ı nasıl yapılandıracağınızı gösteren ekran görüntüsü.

    1. Mevcut bir Azure Uygulaması Insights'i yeniden kullanmak için, Application Insights kaynak adını kullanarak kaynağı bulun ve Bağlan seçeneğini seçin.

      Ipucu

      Mevcut Azure Uygulaması Insights'a bağlanmak için, En azından Foundry kaynağına (veya Hub'a) katkıda bulunan erişimine ihtiyacınız vardır.

    2. Yeni bir Azure Uygulaması Insights kaynağına bağlanmak için Yeni oluştur seçeneğini belirleyin.

      1. Yeni kaynağın adını yapılandırmak için yapılandırma sihirbazını kullanın.

      2. Varsayılan olarak, yeni kaynak Dökümhane kaynağının oluşturulduğu kaynak grubunda oluşturulur. Farklı bir kaynak grubu veya abonelik yapılandırmak için Ayarları ilerlet seçeneğini kullanın.

        Ipucu

        Yeni bir Azure Uygulaması Insights kaynağı oluşturmak için, seçtiğiniz kaynak grubuna (veya varsayılan gruba) katkıda bulunan rolüne de ihtiyacınız vardır.

      3. Kaynağı oluşturmak ve Dökümhane kaynağına bağlamak için Oluştur'u seçin.

    3. Bağlantı yapılandırıldıktan sonra, kaynaktaki herhangi bir projede izlemeyi kullanmaya hazırsınız demektir.

    Ipucu

    Application Insights kaynağınızda Log Analytics Okuyucu rolünün atandığından emin olun. Altyapıdaki Log Analytics tabloları korunuyorsa, Privileged Monitoring Data Reader rolünü de atayın. Rolleri atama hakkında daha fazla bilgi edinmek için bkz. Azure portalını kullanarak Azure rolleri atama. Kullanıcıların erişimini daha kolay yönetmek için Microsoft Entra gruplarını kullanın.

  4. Projenizin giriş sayfasına gidin ve projenin uç nokta URI'sini kopyalayın. Daha sonra lazım olacak.

    Proje uç noktası URI'sinin nasıl kopyalanmasını gösteren ekran görüntüsü.

    Önemli

    Projenin uç noktasını kullanmak için uygulamanızda Microsoft Entra ID'yi yapılandırmalısınız. Entra ID yapılandırmadıysanız, öğreticinin 3. adımında gösterildiği gibi Azure Uygulaması Insights bağlantı dizesi kullanın.

Foundry portalında izleme sonuçlarını görüntüleme

İzlemeyi yapılandırdıktan ve uygulamanız izlendikten sonra, izleme sonuçlarını Dökümhane portalında görüntüleyebilirsiniz:

  1. Foundry Portal'a gidin ve projenizde gezinin.

  2. Yan gezinti çubuğunda İzleme'yi seçin.

  3. İzlenen uygulamalarınızdan alınan izleme sonuçlarının listesini görürsünüz. Her izleme şunları gösterir:

    • Trace ID: İz için benzersiz kimlik tanımlayıcı
    • Başlangıç saati: İzleme başladığında
    • Süre: İşlemin ne kadar sürdüğü
    • Durum: Başarı veya başarısızlık durumu
    • İşlemler: İzdeki parça sayısı
  4. Aşağıdakiler dahil olmak üzere ayrıntılı izleme sonuçlarını görüntülemek için herhangi bir izleme seçin:

    • Tam yürütme zaman çizelgesi
    • Her işlem için giriş ve çıkış verileri
    • Performans ölçümleri ve zamanlaması
    • Herhangi bir hata oluştuysa hata ayrıntıları
    • Özel öznitelikler ve meta veriler

OpenAI SDK'sını Entegre Etme

OpenAI SDK ile geliştirme yaparken, izleme verilerinin Foundry'ye gönderilmesi için kodunuzu entegre edebilirsiniz. Kodunuzu enstrümante etmek için şu adımları izleyin:

  1. Paketleri yükleme:

    pip install azure-ai-projects azure-monitor-opentelemetry opentelemetry-instrumentation-openai-v2
    
  2. (İsteğe bağlı) İleti içeriğini yakala:

    • Powershell: setx OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT true
    • Bash: export OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=true
  3. tr-TR: Bağlı Application Insights kaynağı için bağlantı dizesini alın (Proje > İzleme > Veri kaynağını yönet > Bağlantı dizesi):

    from azure.ai.projects import AIProjectClient
    from azure.identity import DefaultAzureCredential
    
    project_client = AIProjectClient(
         credential=DefaultAzureCredential(),
         endpoint="https://<your-resource>.services.ai.azure.com/api/projects/<your-project>",
    )
    connection_string = project_client.telemetry.get_application_insights_connection_string()
    
  4. Azure İzleyici'u yapılandırmak ve OpenAI SDK'sını ölçümlemek.

    from azure.monitor.opentelemetry import configure_azure_monitor
    from opentelemetry.instrumentation.openai_v2 import OpenAIInstrumentor
    
    configure_azure_monitor(connection_string=connection_string)
    OpenAIInstrumentor().instrument()
    
  5. İstek gönderin:

    client = project_client.get_openai_client()
    response = client.chat.completions.create(
         model="gpt-4o-mini", 
         messages=[{"role": "user", "content": "Write a short poem on open telemetry."}],
    )
    print(response.choices[0].message.content)
    
  6. Yeni izlemeleri görüntülemek için portalda İzleme'ye dönün.

    Aralıkları ve gecikme süresini gösteren sohbet tamamlama isteğinin izleme görünümünü gösteren ekran görüntüsü.

  7. Kodunuzun karmaşık uygulamalar geliştirirken iş mantığını modellerle karıştıran bölümlerini yakalamak yararlı olabilir. OpenTelemetry, ilgilendiğiniz bölümleri yakalamak için spans kavramını kullanır. Kendi span'larınızı oluşturmaya başlamak için mevcut izleyici nesnesinin bir örneğini alın.

    from opentelemetry import trace
    
    tracer = trace.get_tracer(__name__)
    
  8. Ardından, kodunuzdaki ilgilendiğiniz belirli senaryoları yakalamak için yönteminizdeki dekoratörleri kullanın. Bu dekoratörler otomatik olarak yayılma alanları oluşturur. Aşağıdaki kod örneği, bir talep listesi üzerinde yineleyen adlı assess_claims_with_context bir yöntemi gösterir ve bir LLM kullanarak talebin bağlam tarafından desteklenip desteklenmediğini doğrular. Bu yöntemde yapılan tüm çağrılar aynı yayılma alanında yakalanır:

    def build_prompt_with_context(claim: str, context: str) -> str:
        return [{'role': 'system', 'content': "I will ask you to assess whether a particular scientific claim, based on evidence provided. Output only the text 'True' if the claim is true, 'False' if the claim is false, or 'NEE' if there's not enough evidence."},
                {'role': 'user', 'content': f"""
                    The evidence is the following: {context}
    
                    Assess the following claim on the basis of the evidence. Output only the text 'True' if the claim is true, 'False' if the claim is false, or 'NEE' if there's not enough evidence. Do not output any other text.
    
                    Claim:
                    {claim}
    
                    Assessment:
                """}]
    
    @tracer.start_as_current_span("assess_claims_with_context")
    def assess_claims_with_context(claims, contexts):
        responses = []
        for claim, context in zip(claims, contexts):
            response = client.chat.completions.create(
                model="gpt-4.1",
                messages=build_prompt_with_context(claim=claim, context=context),
            )
            responses.append(response.choices[0].message.content.strip('., '))
    
        return responses
    
  9. İzleme sonuçları aşağıdaki gibi görünür:

    Dekoratör kullanan bir yöntemin izlemede nasıl görüntülendiğini gösteren bir ekran görüntüsü.

  10. Geçerli aralığa ek bilgi de eklemek isteyebilirsiniz. OpenTelemetry bunun için öznitelik kavramını kullanır. trace Bunlara erişmek ve ek bilgi eklemek için nesnesini kullanın. Yöntemin assess_claims_with_context bir özniteliği içerecek şekilde nasıl değiştirildiğini görün:

    @tracer.start_as_current_span("assess_claims_with_context")
    def assess_claims_with_context(claims, contexts):
        responses = []
        current_span = trace.get_current_span()
    
        current_span.set_attribute("operation.claims_count", len(claims))
    
        for claim, context in zip(claims, contexts):
            response = client.chat.completions.create(
                model="gpt-4.1",
                messages=build_prompt_with_context(claim=claim, context=context),
            )
            responses.append(response.choices[0].message.content.strip('., '))
    
        return responses
    

Konsola izlerini yazdır

Uygulamanızı izlemek ve izlemeleri yerel yürütme konsoluna göndermek de yararlı olabilir. Bu yaklaşım, otomatik bir CI/CD işlem hattı kullanarak uygulamanızda birim testleri veya tümleştirme testleri çalıştırırken yararlı olabilir. İzler konsola gönderilebilir ve daha fazla analiz için CI/CD aracınız tarafından yakalanıp incelenebilir.

İzlemeyi aşağıdaki gibi yapılandırın:

  1. OpenAI SDK'yi her zamanki gibi entegre edin:

    from opentelemetry.instrumentation.openai_v2 import OpenAIInstrumentor
    
    OpenAIInstrumentor().instrument()
    
  2. Konsola izleme göndermek için OpenTelemetry'yi yapılandırın:

    from opentelemetry import trace
    from opentelemetry.sdk.trace import TracerProvider
    from opentelemetry.sdk.trace.export import SimpleSpanProcessor, ConsoleSpanExporter
    
    span_exporter = ConsoleSpanExporter()
    tracer_provider = TracerProvider()
    tracer_provider.add_span_processor(SimpleSpanProcessor(span_exporter))
    trace.set_tracer_provider(tracer_provider)
    
  3. OpenAI SDK'sı her zamanki gibi kullanın:

    response = client.chat.completions.create(
        model="deepseek-v3-0324",
        messages=[
            {"role": "user", "content": "Write a short poem on open telemetry."},
        ],
    )
    
    {
        "name": "chat deepseek-v3-0324",
        "context": {
            "trace_id": "0xaaaa0a0abb1bcc2cdd3d",
            "span_id": "0xaaaa0a0abb1bcc2cdd3d",
            "trace_state": "[]"
        },
        "kind": "SpanKind.CLIENT",
        "parent_id": null,
        "start_time": "2025-06-13T00:02:04.271337Z",
        "end_time": "2025-06-13T00:02:06.537220Z",
        "status": {
            "status_code": "UNSET"
        },
        "attributes": {
            "gen_ai.operation.name": "chat",
            "gen_ai.system": "openai",
            "gen_ai.request.model": "deepseek-v3-0324",
            "server.address": "my-project.services.ai.azure.com",
            "gen_ai.response.model": "DeepSeek-V3-0324",
            "gen_ai.response.finish_reasons": [
                "stop"
            ],
            "gen_ai.response.id": "aaaa0a0abb1bcc2cdd3d",
            "gen_ai.usage.input_tokens": 14,
            "gen_ai.usage.output_tokens": 91
        },
        "events": [],
        "links": [],
        "resource": {
            "attributes": {
                "telemetry.sdk.language": "python",
                "telemetry.sdk.name": "opentelemetry",
                "telemetry.sdk.version": "1.31.1",
                "service.name": "unknown_service"
            },
            "schema_url": ""
        }
    }
    

Foundry Toolkit ile yerelde iz sürme

Foundry Toolkit, VS Code'da yerel olarak izlemenin basit bir yolunu sunar. Yerel OTLP uyumlu bir toplayıcı kullanarak bulut erişimine gerek kalmadan geliştirme ve hata ayıklama için mükemmel hale getirir.

Araç seti OpenTelemetry aracılığıyla OpenAI SDK'sını ve diğer yapay zeka çerçevelerini destekler. Geliştirme ortamınızda izlemeleri anında görebilirsiniz.

Ayrıntılı kurulum yönergeleri ve SDK'ya özgü kod örnekleri için bkz. Foundry Toolkit'te İzleme.