Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt nur für:klassisches Foundry Portal. Dieser Artikel ist für das neue Foundry-Portal nicht verfügbar.
Erfahren Sie mehr über das neue Portal.
Hinweis
Links in diesem Artikel können Inhalte in der neuen Microsoft Foundry-Dokumentation anstelle der jetzt angezeigten Foundry-Dokumentation (klassisch) öffnen.
Erfahren Sie, wie Sie Ablaufverfolgungsergebnisse anzeigen, die Einblicke in die KI-Anwendungsausführung bieten. Verwenden Sie Traces, um ungenaue Toolaufrufe, irreführende Eingabeaufforderungen, Latenzengpässe und niedrige Qualitätsbewertungsergebnisse zu diagnostizieren.
In diesem Artikel erfahren Sie, wie Sie:
- Aktivieren Sie die Ablaufverfolgung für ein Projekt.
- Implementieren Sie das OpenAI SDK.
- Erfassen von Nachrichteninhalten (optional).
- Anzeigen von Ablaufverfolgungszeitleisten und Spannen.
- Verbinden Sie die Ablaufverfolgung mit Evaluationsschleifen.
In diesem Artikel wird erläutert, wie Tracing-Ergebnisse für KI-Anwendungen mithilfe des OpenAI SDK unter Verwendung von OpenTelemetry in Microsoft Foundry angezeigt werden können.
Voraussetzungen
Sie benötigen Folgendes, um dieses Lernprogramm abzuschließen:
Ein Foundry-Projekt wurde erstellt.
Eine KI-Anwendung, die openAI SDK verwendet, um Aufrufe an Modelle zu tätigen, die in Foundry gehostet werden.
Aktivieren Sie die Ablaufverfolgung in Ihrem Projekt
Foundry speichert Ablaufverfolgungen in Azure-Anwendung Insights mithilfe von OpenTelemetry. Neue Ressourcen stellen Application Insights nicht automatisch bereit. Zuordnen (oder Erstellen) einer Ressource einmal pro Foundry-Ressource.
Die folgenden Schritte zeigen, wie Sie Ihre Ressource konfigurieren:
Wechseln Sie zum Foundry-Portal , und navigieren Sie zu Ihrem Projekt.
Wählen Sie auf der Seitennavigationsleiste Ablaufverfolgung aus.
Wenn eine Azure-Anwendung Insights-Ressource nicht ihrer Foundry-Ressource zugeordnet ist, ordnen Sie eine Ressource zu. Wenn Sie bereits über eine Application Insights-Ressource verfügen, wird unten die Seite "Aktivieren" nicht angezeigt, und Sie können diesen Schritt überspringen.
Um eine vorhandene Azure-Anwendung Insights wiederzuverwenden, verwenden Sie das Dropdown-Menü Application Insights Ressourcennamen, um die Ressource zu suchen, und wählen Sie Verbinden aus.
Tipp
Um eine Verbindung mit einer vorhandenen Azure-Anwendung Insights herzustellen, benötigen Sie mindestens Mitwirkendenzugriff auf die Foundry-Ressource (oder hub).
Um eine Verbindung mit einer neuen Azure-Anwendung Insights-Ressource herzustellen, wählen Sie die Option Neue aus.
Verwenden Sie den Konfigurations-Assistenten, um den Namen der neuen Ressource zu konfigurieren.
Standardmäßig wird die neue Ressource in derselben Ressourcengruppe erstellt, in der die Foundry-Ressource erstellt wurde. Verwenden Sie die Option "Einstellungen im Voraus" , um eine andere Ressourcengruppe oder ein anderes Abonnement zu konfigurieren.
Tipp
Um eine neue Azure-Anwendung Insights-Ressource zu erstellen, benötigen Sie auch die Mitwirkenderolle für die von Ihnen ausgewählte Ressourcengruppe (oder die Standardressource).
Wählen Sie "Erstellen" aus, um die Ressource zu erstellen und mit der Foundry-Ressource zu verbinden.
Nachdem die Verbindung konfiguriert wurde, können Sie die Ablaufverfolgung in jedem Projekt innerhalb der Ressource verwenden.
Tipp
Stellen Sie sicher, dass Die Rolle Log Analytics Reader in Ihrer Application Insights-Ressource zugewiesen ist. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Assign Azure Rollen mithilfe des Azure Portals. Verwenden Sie Microsoft Entra-Gruppen, um den Zugriff für Benutzer einfacher zu verwalten.
Wechseln Sie zur Zielseite Ihres Projekts, und kopieren Sie den Endpunkt-URI des Projekts. Sie benötigen es später.
Wichtig
Für die Verwendung des Endpunkts eines Projekts muss Microsoft Entra ID in Ihrer Anwendung konfiguriert werden. Wenn Sie nicht Entra ID konfiguriert haben, verwenden Sie die Azure-Anwendung Insights Verbindungszeichenfolge, wie in Schritt 3 des Lernprogramms angegeben.
Ergebnisse der Ablaufverfolgung im Foundry-Portal anzeigen
Nachdem Sie die Ablaufverfolgung konfiguriert haben und Ihre Anwendung instrumentiert ist, können Sie Ablaufverfolgungsergebnisse im Foundry-Portal anzeigen:
Wechseln Sie zum Foundry-Portal , und navigieren Sie zu Ihrem Projekt.
Wählen Sie auf der seitlichen Navigationsleiste "Ablaufverfolgung" aus.
Sie sehen eine Liste der Ergebnisse der Ablaufverfolgung Ihrer instrumentierten Anwendungen. Jede Spur zeigt:
- Protokollierungs-ID: Eindeutige Kennung für die Protokollierung
- Startzeit: Zu welchem Zeitpunkt das Tracing begonnen hat
- Dauer: Dauer des Vorgangs
- Status: Erfolgs- oder Fehlerstatus
- Vorgänge: Anzahl der Spannen in der Ablaufverfolgung
Wählen Sie eine beliebige Trace aus, um detaillierte Tracergebnisse anzuzeigen, einschließlich:
- Vollständige Ausführungszeitlinie
- Eingabe- und Ausgabedaten für jeden Vorgang
- Leistungsmetriken und Zeitmessung
- Fehlerdetails, falls vorhanden
- Benutzerdefinierte Attribute und Metadaten
Integrieren Sie das OpenAI SDK
Bei der Entwicklung mit dem OpenAI SDK können Sie Ihren Code so gestalten, dass Traces an Foundry gesendet werden. Führen Sie die folgenden Schritte aus, um Ihren Code zu instrumentieren:
Installieren von Paketen:
pip install azure-ai-projects azure-monitor-opentelemetry opentelemetry-instrumentation-openai-v2(Optional) Nachrichteninhalt erfassen:
- Powershell:
setx OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT true - Bash:
export OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=true
- Powershell:
Rufen Sie die Verbindungszeichenfolge für die verknüpfte Application Insights-Ressource ab (Projekt > Tracing > Datenquelle verwalten > Verbindungszeichenfolge):
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()Konfigurieren Sie Azure Monitor und instrumentieren Sie das OpenAI SDK.
from azure.monitor.opentelemetry import configure_azure_monitor from opentelemetry.instrumentation.openai_v2 import OpenAIInstrumentor configure_azure_monitor(connection_string=connection_string) OpenAIInstrumentor().instrument()Senden einer Anforderung:
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)Kehren Sie zu Tracing im Portal zurück, um neue Traces anzuzeigen.
Es kann hilfreich sein, Abschnitte Ihres Codes zu erfassen, die Geschäftslogik mit Modellen bei der Entwicklung komplexer Anwendungen kombinieren. OpenTelemetry verwendet das Konzept von Spans, um Abschnitte zu erfassen, die Sie interessieren. Rufen Sie eine Instanz des aktuellen Tracer-Objekts ab, um mit dem Generieren eigener Spans zu beginnen.
from opentelemetry import trace tracer = trace.get_tracer(__name__)Verwenden Sie dann Dekoratoren in Ihrer Methode, um bestimmte Szenarien in Ihrem Code zu erfassen, an dem Sie interessiert sind. Diese Dekoratoren generieren automatisch Spannweiten. Im folgenden Codebeispiel wird eine Methode namens
assess_claims_with_contextinstrumentiert, die eine Liste von Claims durchläuft und überprüft, ob der Claim durch den Kontext mithilfe eines Sprachmodells gestützt wird. Alle in dieser Methode getätigten Aufrufe werden innerhalb derselben Zeitspanne erfasst: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 responsesTracing-Ergebnisse sehen folgendermaßen aus:
Möglicherweise möchten Sie der aktuellen Spanne auch zusätzliche Informationen hinzufügen. OpenTelemetry verwendet dazu das Konzept von Attributen . Verwenden Sie das
traceObjekt, um auf sie zuzugreifen und zusätzliche Informationen einzuschließen. Erfahren Sie, wie dieassess_claims_with_contextMethode geändert wurde, um ein Attribut einzuschließen:@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
Ablaufverfolgung auf Konsole
Es kann hilfreich sein, Ihre Anwendung ebenfalls zu verfolgen und die Logs an die lokale Ausführungskonsole zu senden. Dieser Ansatz kann nützlich sein, wenn Komponententests oder Integrationstests in Ihrer Anwendung mithilfe einer automatisierten CI/CD-Pipeline ausgeführt werden. Ablaufverfolgungen können zur weiteren Analyse an die Konsole gesendet und von Ihrem CI/CD-Tool erfasst werden.
Konfigurieren Sie die Ablaufverfolgung wie folgt:
Instrumentieren Sie das OpenAI SDK wie gewohnt.
from opentelemetry.instrumentation.openai_v2 import OpenAIInstrumentor OpenAIInstrumentor().instrument()Konfigurieren von OpenTelemetry zum Senden von Traces an die Konsole:
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)Verwenden Sie openAI SDK wie gewohnt:
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": "" } }
Lokale Ablaufverfolgung mit KI-Toolkit
AI Toolkit bietet eine einfache Möglichkeit, lokal in VS Code nachzuverfolgen. Es verwendet einen lokalen OTLP-kompatiblen Sammler, sodass er perfekt für Entwicklung und Debugging geeignet ist, ohne cloudbasierten Zugriff zu benötigen.
Das Toolkit unterstützt das OpenAI SDK und andere AI-Frameworks über OpenTelemetry. Sie können Ablaufverfolgungen sofort in Ihrer Entwicklungsumgebung sehen.
Ausführliche Einrichtungsanweisungen und SDK-spezifische Codebeispiele finden Sie unter "Tracing in AI Toolkit".