Aracılığıyla paylaş


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

Uyarı

Bu belge , Microsoft Foundry (klasik) portalını ifade eder.

🔍Yeni portal hakkında bilgi edinmek için Microsoft Foundry (yeni) belgelerini görüntüleyin.

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 izler kullanın.

Bu makalede şunları öğreneceksiniz:

  • Proje için izlemeyi etkinleştirme.
  • OpenAI SDK'sını kurulum.
  • İ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'sını kullanarak yapay zeka uygulamalarının izleme sonuçlarını görüntüleme işlemi açıklanmaktadır.

Önkoşullar

Bu öğreticiyi tamamlamak için aşağıdakilere 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

Dökümhane, izleri OpenTelemetry kullanarak Azure Application 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. Dökümhane portalına gidin ve projenizi açın.

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

  3. Bir Azure Application Insights kaynağı Foundry 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.

    Azure Application Insights'ı Dökümhane kaynağına yapılandırmayı gösteren ekran görüntüsü.

    1. Mevcut bir Azure Application Insights'ı yeniden kullanmak için, açılır menüden Application Insights kaynak adını bulun ve Bağlan düğmesini seçin.

      Tavsiye

      Mevcut bir Azure Application Insights'a bağlanmak için, Foundry kaynağına (veya Hub'a) en az katılımcı erişimine sahip olmanız gerekir.

    2. Yeni bir Azure Application 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.

        Tavsiye

        Yeni bir Azure Application 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.

    Tavsiye

    Application Insights kaynağınızda Log Analytics Okuyucusu rolünün atandığından emin olun. 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 yapılandırması gerekir. Entra Kimliği yapılandırılmadıysa, öğreticinin 3. adımında gösterildiği gibi Azure Application Insights bağlantı dizesini 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. Dökümhane portalına gidin ve projenizi açın.

  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:

    • İzleme Kimliği: İzleme için benzersiz bir tanımlayıcı
    • Başlangıç saati: İzlemenin başladığı zaman
    • Süre: İşlemin ne kadar sürdüğü
    • Durum: Başarı veya başarısızlık durumu
    • İşlemler: İzlemedeki yayılma alanı 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'sı ile geliştirme yaparken, izlemelerin Foundry'ye gönderilmesi için kodunuzu izleyebilirsiniz. Kodunuzu enstrüman 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. Bağlı Application Insights kaynağının bağlantı dizesini alın (Proje > İzleme > Veri kaynağını > yönetme 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 Monitor'u yapılandırma ve OpenAI SDK'sını enstrümanla.

    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"lerinizi oluşturmaya başlamak için geçerli tracer nesnesinin bir örneğini edinin.

    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 aralıkları oluşturur. Aşağıdaki kod örneği, bir talep listesi üzerinde yineleyen ve assess_claims_with_context adlı bir yöntemi enstrüman eden bir yapı sunar. Bu yapı, 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:

    İzleme kaydında dekoratör kullanan bir yöntemin nasıl görüntülendiğini gösteren 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 izleme

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 ele alınıp işlenebilir.

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

  1. OpenAI SDK'sını 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": ""
        }
    }
    

AI Toolkit ile yerel olarak takip etme

AI 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. AI Toolkit'te İzleme.