Az AI-alkalmazások nyomkövetési eredményeinek megtekintése az OpenAI SDK használatával (klasszikus)

Csak a következőkre vonatkozik:Öntödei (klasszikus) portál. Ez a cikk nem érhető el az új Foundry portálon. További információ az új portálról.

Megjegyzés

A cikkben szereplő hivatkozások megnyithatják a tartalmat az új Microsoft Foundry-dokumentációban a most megtekintett Foundry (klasszikus) dokumentáció helyett.

Megtudhatja, hogyan tekintheti meg az AI-alkalmazások végrehajtásának láthatóságát biztosító nyomkövetési eredményeket. A nyomok használatával diagnosztizálhatja a pontatlan eszköz hívásokat, a félrevezető utasításokat, a késési problémákat és a gyenge minőségű értékelési pontszámokat.

Ebből a cikkből megtudhatja, hogyan:

  • Projekt nyomkövetésének engedélyezése.
  • Az OpenAI SDK integrálása.
  • Üzenettartalom rögzítése (nem kötelező).
  • Nyomkövetési idővonalak és szakaszok megtekintése.
  • Kapcsold össze a nyomkövetést a kiértékelési ciklusokkal.

Ez a cikk azt ismerteti, hogyan tekintheti meg az AI-alkalmazások nyomkövetési eredményeit a OpenAI SDK és az OpenTelemetry használatával az Microsoft Foundryben.

Előfeltételek

Az oktatóanyag elvégzéséhez a következőkre van szüksége:

  • Létrejött egy Foundry-projekt.

  • Egy AI-alkalmazás, amely OpenAI SDK-t használ a Foundryben üzemeltetett modellek hívásához.

Nyomkövetés engedélyezése a projektben

Az Foundry az OpenTelemetria használatával tárolja a nyomkövetéseket Azure-alkalmazás Insightsban. Az új erőforrások nem építik ki automatikusan az Application Insightst. Erőforrás társítása (vagy létrehozása) öntödei erőforrásonként egyszer.

Az alábbi lépések bemutatják az erőforrás konfigurálását:

  1. Nyissa meg a Foundry portált, és navigáljon az ön projektjéhez.

  2. Az oldalsó navigációs sávon válassza a Nyomkövetés lehetőséget.

  3. Ha egy Azure-alkalmazás Insights-erőforrás nincs társítva az Öntödei erőforráshoz, társítson egyet. Ha már rendelkezik Application Insights-erőforrással, az alábbi engedélyezési oldal nem jelenik meg, és kihagyhatja ezt a lépést.

    Egy képernyőkép, amely megmutatja, hogyan konfigurálható az Azure-alkalmazás Insights a Foundry erőforráshoz.

    1. Meglévő Azure-alkalmazás Insights újbóli használatához használja a legördülő Application Insights-erőforrás nevét az erőforrás megkereséséhez, majd válassza a Connect lehetőséget.

      Tipp

      Ha egy meglévő Azure-alkalmazás Insightshoz szeretne csatlakozni, legalább közreműködői hozzáférésre van szüksége az Foundry-erőforráshoz (vagy a Hubhoz).

    2. Ha új Azure-alkalmazás Insights-erőforráshoz szeretne csatlakozni, válassza a Új lehetőséget.

      1. A konfigurációs varázslóval konfigurálhatja az új erőforrás nevét.

      2. Alapértelmezés szerint az új erőforrás ugyanabban az erőforráscsoportban jön létre, amelyben az Foundry-erőforrás létrejött. Az Előzetes beállítások beállítással konfigurálhat egy másik erőforráscsoportot vagy előfizetést.

        Tipp

        Új Azure-alkalmazás Insights-erőforrás létrehozásához közreműködői szerepkörre is szükség van a kiválasztott erőforráscsoporthoz (vagy az alapértelmezetthez).

      3. Válassza a Létrehozás lehetőséget az erőforrás létrehozásához és az Öntödei erőforráshoz való csatlakoztatásához.

    3. Miután konfigurálta a kapcsolatot, készen áll a nyomkövetés használatára az erőforrás bármely projektjében.

    Tipp

    Győződjön meg arról, hogy a Log Analytics Olvasó szerepkört hozzárendelte az Application Insights-erőforráshoz. Ha a mögöttes Log Analytics táblák védettek, rendelje hozzá a Privileged Monitoring Data Reader szerepkört is. A szerepkörök hozzárendeléséről további információt a Azure portálon Azure szerepkörök hozzárendelése című témakörben talál. A Microsoft Entra csoportok használatával egyszerűbben kezelheti a felhasználók hozzáférését.

  4. Nyissa meg a projekt kezdőlapját, és másolja ki a projekt végponti URI-ját. Később szüksége lesz rá.

    Képernyőkép a projektvégpont URI másolásáról.

    Fontos

    A projekt végpontjának használatához konfigurálni kell Microsoft Entra ID az alkalmazásban. Ha nincs konfigurálva az Entra ID, használja az Azure-alkalmazás Insights kapcsolati karakterláncot az oktatóanyag 3. lépésében leírtak szerint.

Nyomkövetési eredmények megtekintése az Foundry portálon

Miután konfigurálta a nyomkövetést, és az alkalmazás instrumentálva van, megtekintheti a nyomkövetési eredményeket a Foundry portálon.

  1. Nyissa meg a Foundry portált, és navigáljon az ön projektjéhez.

  2. Az oldalsó navigációs sávon válassza a Nyomkövetés lehetőséget.

  3. Láthatja az instrumentált alkalmazások nyomon követési eredményeinek listáját. Minden nyomkövetés a következőt mutatja:

    • Nyomkövetési azonosító: A nyomkövetés egyedi azonosítója
    • Kezdési időpont: A nyomkövetés kezdete
    • Időtartam: Mennyi ideig tartott a művelet?
    • Állapot: Sikeres vagy sikertelen állapot
    • Műveletek: A nyom szakaszainak száma
  4. Válasszon ki egy nyomkövetést a részletes nyomkövetési eredmények megtekintéséhez, beleértve a következőket:

    • Végrehajtási ütemterv befejezése
    • Bemeneti és kimeneti adatok minden művelethez
    • Teljesítménymetrikák és időzítés
    • Hiba részletei, ha történt ilyen
    • Egyéni attribútumok és metaadatok

Az OpenAI SDK implementálása

Amikor az OpenAI SDK-val fejleszt, a kód rendszerezhető, így a rendszer nyomkövetéseket küld a Foundrynek. A kód kialakításához kövesse az alábbi lépéseket:

  1. Csomagok telepítése:

    pip install azure-ai-projects azure-monitor-opentelemetry opentelemetry-instrumentation-openai-v2
    
  2. (Nem kötelező) Üzenettartalom rögzítése:

    • Powershell: setx OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT true
    • Bash: export OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=true
  3. Szerezze be a csatolt Application Insights-erőforráshoz tartozó kapcsolati karakterláncot (Projekt > Nyomkövetés > Adatforrás kezelése > Kapcsolati karakterlánc):

    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 konfigurálása és az OpenAI SDK instrumentálása:

    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. Kérés küldése:

    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. Térjen vissza a nyomkövetéshez a portálon az új nyomkövetések megtekintéséhez.

    Képernyőkép egy csevegés befejezésére irányuló kérelem nyomkövetési nézetéről, amely a időtartamokat és a késést mutatja.

  7. Hasznos lehet a kód olyan szakaszainak rögzítése, amelyek az üzleti logikát a modellekkel kombinálják összetett alkalmazások fejlesztésekor. Az OpenTelemetry a spanok fogalmát használja az önt érdeklő szakaszok rögzítésére. A saját spanok létrehozásához szerezze be az aktuális jelölőobjektum egy példányát.

    from opentelemetry import trace
    
    tracer = trace.get_tracer(__name__)
    
  8. Ezután használjon dekorátorokat a metódusban, hogy rögzítsen bizonyos forgatókönyveket a kódban, amelyek érdeklik. Ezek a dekorátorok automatikusan spanokat generálnak. Az alábbi példakód egy olyan metódust mutat be, amelynek az a neve assess_claims_with_context , hogy iterálja a jogcímek listáját, és ellenőrzi, hogy a jogcímet támogatja-e a környezet egy LLM használatával. Az ebben a metódusban végrehajtott összes hívás azonos időtartamon belül lesz rögzítve:

    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. A nyomkövetési eredmények a következőképpen néznek ki:

    Képernyőkép arról, hogyan jelenik meg egy dekoratőrt használó módszer a nyomkövetésben.

  10. Érdemes lehet további információkat is hozzáadni az aktuális tartományhoz. Az OpenTelemetry ehhez az attribútumok fogalmát használja. trace Az objektummal elérheti őket, és további információkat is tartalmazhat. Tekintse meg, hogyan lett módosítva a assess_claims_with_context metódus egy attribútum belefoglalásához:

    @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
    

Nyomkövetés a konzolra

Hasznos lehet az alkalmazás nyomon követése és a nyomkövetések elküldése a helyi végrehajtási konzolra. Ez a megközelítés akkor lehet hasznos, ha egységteszteket vagy integrációs teszteket futtat az alkalmazásban egy automatizált CI/CD-folyamat használatával. A nyomkövetések elküldhetők a konzolra, és a CI/CD-eszköz rögzítheti őket a további elemzéshez.

Konfigurálja a nyomkövetést az alábbiak szerint:

  1. Az OpenAI SDK-t a szokásos módon kell beállítani:

    from opentelemetry.instrumentation.openai_v2 import OpenAIInstrumentor
    
    OpenAIInstrumentor().instrument()
    
  2. Az OpenTelemetria konfigurálása nyomkövetések konzolra való küldéséhez:

    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. Használja az OpenAI SDK-t a szokásos módon:

    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": ""
        }
    }
    

Helyi nyomkövetés az Foundry Toolkittel

A Foundry Toolkit egyszerű módot kínál a helyi nyomkövetésre a VS Code-ban. Helyi OTLP-kompatibilis gyűjtőt használ, így tökéletes fejlesztéshez és hibakereséshez felhőbeli hozzáférés nélkül.

Az eszközkészlet openTelemetria használatával támogatja az OpenAI SDK-t és más AI-keretrendszereket. A nyomkövetések azonnal megjelennek a fejlesztési környezetben.

Részletes beállítási utasításokért és SDK-specifikus kód példákért lásd: Nyomkövetés az Foundry Toolkitben.