Tracing in AI Toolkit
AI Toolkit bietet Tracing-Funktionen, die Ihnen helfen, die Leistung Ihrer KI-Anwendungen zu überwachen und zu analysieren. Sie können die Ausführung Ihrer KI-Anwendungen, einschließlich Interaktionen mit generativen KI-Modellen, verfolgen, um Einblicke in deren Verhalten und Leistung zu gewinnen.
AI Toolkit hostet einen lokalen HTTP- und gRPC-Server zum Sammeln von Tracedaten. Der Collector-Server ist mit OTLP (OpenTelemetry Protocol) kompatibel, und die meisten SDKs für Sprachmodelle unterstützen entweder OTLP direkt oder verfügen über Nicht-Microsoft-Instrumentierungsbibliotheken, um dies zu unterstützen. Verwenden Sie AI Toolkit, um die gesammelten Instrumentierungsdaten zu visualisieren.
Alle Frameworks oder SDKs, die OTLP unterstützen und die semantischen Konventionen für generative KI-Systeme befolgen, werden unterstützt. Die folgende Tabelle enthält gängige KI-SDKs, die auf Kompatibilität getestet wurden.
| Azure AI Inference | Foundry Agent Service | Anthropic | Gemini | LangChain | OpenAI SDK 3 | OpenAI Agents SDK | |
|---|---|---|---|---|---|---|---|
| Python | ✅ | ✅ | ✅ (traceloop, monocle)1,2 | ✅ (monocle) | ✅ (LangSmith, monocle)1,2 | ✅ (opentelemetry-python-contrib, monocle)1 | ✅ (Logfire, monocle)1,2 |
| TS/JS | ✅ | ✅ | ✅ (traceloop)1,2 | ❌ | ✅ (traceloop)1,2 | ✅ (traceloop)1,2 | ❌ |
- Die SDKs in Klammern sind Nicht-Microsoft-Tools, die OTLP-Unterstützung hinzufügen, da die offiziellen SDKs OTLP nicht unterstützen.
- Diese Tools folgen nicht vollständig den OpenTelemetry-Regeln für generative KI-Systeme.
- Für das OpenAI SDK wird nur die Chat Completions API unterstützt. Die Responses API wird noch nicht unterstützt.
Erste Schritte mit dem Tracing
-
Öffnen Sie die Tracing-Webansicht, indem Sie im Baumansicht Tracing auswählen.
-
Wählen Sie die Schaltfläche Collector starten, um den lokalen OTLP-Trace-Collector-Server zu starten.

-
Aktivieren Sie die Instrumentierung mit einem Code-Snippet. Weitere Code-Snippets für verschiedene Sprachen und SDKs finden Sie im Abschnitt Instrumentierung einrichten.
-
Generieren Sie Tracedaten, indem Sie Ihre App ausführen.
-
Wählen Sie in der Tracing-Webansicht die Schaltfläche Aktualisieren, um neue Tracedaten anzuzeigen.

Instrumentierung einrichten
Richten Sie das Tracing in Ihrer KI-Anwendung ein, um Tracedaten zu sammeln. Die folgenden Code-Snippets zeigen, wie das Tracing für verschiedene SDKs und Sprachen eingerichtet wird.
Der Prozess ist für alle SDKs ähnlich
- Fügen Sie Ihrem LLM- oder Agenten-App Tracing hinzu.
- Richten Sie den OTLP-Trace-Exporter so ein, dass er den lokalen AITK-Collector verwendet.
Azure AI Inference SDK - Python
Installation
pip install opentelemetry-sdk opentelemetry-exporter-otlp-proto-http azure-ai-inference[opentelemetry]
Einrichtung
import os
os.environ["AZURE_TRACING_GEN_AI_CONTENT_RECORDING_ENABLED"] = "true"
os.environ["AZURE_SDK_TRACING_IMPLEMENTATION"] = "opentelemetry"
from opentelemetry import trace, _events
from opentelemetry.sdk.resources import Resource
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.sdk._logs import LoggerProvider
from opentelemetry.sdk._logs.export import BatchLogRecordProcessor
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk._events import EventLoggerProvider
from opentelemetry.exporter.otlp.proto.http._log_exporter import OTLPLogExporter
resource = Resource(attributes={
"service.name": "opentelemetry-instrumentation-azure-ai-agents"
})
provider = TracerProvider(resource=resource)
otlp_exporter = OTLPSpanExporter(
endpoint="https://:4318/v1/traces",
)
processor = BatchSpanProcessor(otlp_exporter)
provider.add_span_processor(processor)
trace.set_tracer_provider(provider)
logger_provider = LoggerProvider(resource=resource)
logger_provider.add_log_record_processor(
BatchLogRecordProcessor(OTLPLogExporter(endpoint="https://:4318/v1/logs"))
)
_events.set_event_logger_provider(EventLoggerProvider(logger_provider))
from azure.ai.inference.tracing import AIInferenceInstrumentor
AIInferenceInstrumentor().instrument(True)
Azure AI Inference SDK - TypeScript/JavaScript
Installation
npm install @azure/opentelemetry-instrumentation-azure-sdk @opentelemetry/api @opentelemetry/exporter-trace-otlp-proto @opentelemetry/instrumentation @opentelemetry/resources @opentelemetry/sdk-trace-node
Einrichtung
const { context } = require('@opentelemetry/api');
const { resourceFromAttributes } = require('@opentelemetry/resources');
const {
NodeTracerProvider,
SimpleSpanProcessor
} = require('@opentelemetry/sdk-trace-node');
const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-proto');
const exporter = new OTLPTraceExporter({
url: 'https://:4318/v1/traces'
});
const provider = new NodeTracerProvider({
resource: resourceFromAttributes({
'service.name': 'opentelemetry-instrumentation-azure-ai-inference'
}),
spanProcessors: [new SimpleSpanProcessor(exporter)]
});
provider.register();
const { registerInstrumentations } = require('@opentelemetry/instrumentation');
const {
createAzureSdkInstrumentation
} = require('@azure/opentelemetry-instrumentation-azure-sdk');
registerInstrumentations({
instrumentations: [createAzureSdkInstrumentation()]
});
Foundry Agent Service - Python
Installation
pip install opentelemetry-sdk opentelemetry-exporter-otlp-proto-http azure-ai-inference[opentelemetry]
Einrichtung
import os
os.environ["AZURE_TRACING_GEN_AI_CONTENT_RECORDING_ENABLED"] = "true"
os.environ["AZURE_SDK_TRACING_IMPLEMENTATION"] = "opentelemetry"
from opentelemetry import trace, _events
from opentelemetry.sdk.resources import Resource
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.sdk._logs import LoggerProvider
from opentelemetry.sdk._logs.export import BatchLogRecordProcessor
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk._events import EventLoggerProvider
from opentelemetry.exporter.otlp.proto.http._log_exporter import OTLPLogExporter
resource = Resource(attributes={
"service.name": "opentelemetry-instrumentation-azure-ai-agents"
})
provider = TracerProvider(resource=resource)
otlp_exporter = OTLPSpanExporter(
endpoint="https://:4318/v1/traces",
)
processor = BatchSpanProcessor(otlp_exporter)
provider.add_span_processor(processor)
trace.set_tracer_provider(provider)
logger_provider = LoggerProvider(resource=resource)
logger_provider.add_log_record_processor(
BatchLogRecordProcessor(OTLPLogExporter(endpoint="https://:4318/v1/logs"))
)
_events.set_event_logger_provider(EventLoggerProvider(logger_provider))
from azure.ai.agents.telemetry import AIAgentsInstrumentor
AIAgentsInstrumentor().instrument(True)
Foundry Agent Service - TypeScript/JavaScript
Installation
npm install @azure/opentelemetry-instrumentation-azure-sdk @opentelemetry/api @opentelemetry/exporter-trace-otlp-proto @opentelemetry/instrumentation @opentelemetry/resources @opentelemetry/sdk-trace-node
Einrichtung
const { context } = require('@opentelemetry/api');
const { resourceFromAttributes } = require('@opentelemetry/resources');
const {
NodeTracerProvider,
SimpleSpanProcessor
} = require('@opentelemetry/sdk-trace-node');
const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-proto');
const exporter = new OTLPTraceExporter({
url: 'https://:4318/v1/traces'
});
const provider = new NodeTracerProvider({
resource: resourceFromAttributes({
'service.name': 'opentelemetry-instrumentation-azure-ai-inference'
}),
spanProcessors: [new SimpleSpanProcessor(exporter)]
});
provider.register();
const { registerInstrumentations } = require('@opentelemetry/instrumentation');
const {
createAzureSdkInstrumentation
} = require('@azure/opentelemetry-instrumentation-azure-sdk');
registerInstrumentations({
instrumentations: [createAzureSdkInstrumentation()]
});
Anthropic - Python
OpenTelemetry
Installation
pip install opentelemetry-sdk opentelemetry-exporter-otlp-proto-http opentelemetry-instrumentation-anthropic
Einrichtung
from opentelemetry import trace, _events
from opentelemetry.sdk.resources import Resource
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.sdk._logs import LoggerProvider
from opentelemetry.sdk._logs.export import BatchLogRecordProcessor
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk._events import EventLoggerProvider
from opentelemetry.exporter.otlp.proto.http._log_exporter import OTLPLogExporter
resource = Resource(attributes={
"service.name": "opentelemetry-instrumentation-anthropic-traceloop"
})
provider = TracerProvider(resource=resource)
otlp_exporter = OTLPSpanExporter(
endpoint="https://:4318/v1/traces",
)
processor = BatchSpanProcessor(otlp_exporter)
provider.add_span_processor(processor)
trace.set_tracer_provider(provider)
logger_provider = LoggerProvider(resource=resource)
logger_provider.add_log_record_processor(
BatchLogRecordProcessor(OTLPLogExporter(endpoint="https://:4318/v1/logs"))
)
_events.set_event_logger_provider(EventLoggerProvider(logger_provider))
from opentelemetry.instrumentation.anthropic import AnthropicInstrumentor
AnthropicInstrumentor().instrument()
Monocle
Installation
pip install opentelemetry-sdk opentelemetry-exporter-otlp-proto-http monocle_apptrace
Einrichtung
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
# Import monocle_apptrace
from monocle_apptrace import setup_monocle_telemetry
# Setup Monocle telemetry with OTLP span exporter for traces
setup_monocle_telemetry(
workflow_name="opentelemetry-instrumentation-anthropic",
span_processors=[
BatchSpanProcessor(
OTLPSpanExporter(endpoint="https://:4318/v1/traces")
)
]
)
Anthropic - TypeScript/JavaScript
Installation
npm install @traceloop/node-server-sdk
Einrichtung
const { initialize } = require('@traceloop/node-server-sdk');
const { trace } = require('@opentelemetry/api');
initialize({
appName: 'opentelemetry-instrumentation-anthropic-traceloop',
baseUrl: 'https://:4318',
disableBatch: true
});
Google Gemini - Python
OpenTelemetry
Installation
pip install opentelemetry-sdk opentelemetry-exporter-otlp-proto-http opentelemetry-instrumentation-google-genai
Einrichtung
from opentelemetry import trace, _events
from opentelemetry.sdk.resources import Resource
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.sdk._logs import LoggerProvider
from opentelemetry.sdk._logs.export import BatchLogRecordProcessor
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk._events import EventLoggerProvider
from opentelemetry.exporter.otlp.proto.http._log_exporter import OTLPLogExporter
resource = Resource(attributes={
"service.name": "opentelemetry-instrumentation-google-genai"
})
provider = TracerProvider(resource=resource)
otlp_exporter = OTLPSpanExporter(
endpoint="https://:4318/v1/traces",
)
processor = BatchSpanProcessor(otlp_exporter)
provider.add_span_processor(processor)
trace.set_tracer_provider(provider)
logger_provider = LoggerProvider(resource=resource)
logger_provider.add_log_record_processor(
BatchLogRecordProcessor(OTLPLogExporter(endpoint="https://:4318/v1/logs"))
)
_events.set_event_logger_provider(EventLoggerProvider(logger_provider))
from opentelemetry.instrumentation.google_genai import GoogleGenAiSdkInstrumentor
GoogleGenAiSdkInstrumentor().instrument(enable_content_recording=True)
Monocle
Installation
pip install opentelemetry-sdk opentelemetry-exporter-otlp-proto-http monocle_apptrace
Einrichtung
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
# Import monocle_apptrace
from monocle_apptrace import setup_monocle_telemetry
# Setup Monocle telemetry with OTLP span exporter for traces
setup_monocle_telemetry(
workflow_name="opentelemetry-instrumentation-google-genai",
span_processors=[
BatchSpanProcessor(
OTLPSpanExporter(endpoint="https://:4318/v1/traces")
)
]
)
LangChain - Python
LangSmith
Installation
pip install langsmith[otel]
Einrichtung
import os
os.environ["LANGSMITH_OTEL_ENABLED"] = "true"
os.environ["LANGSMITH_TRACING"] = "true"
os.environ["OTEL_EXPORTER_OTLP_ENDPOINT"] = "https://:4318"
Monocle
Installation
pip install opentelemetry-sdk opentelemetry-exporter-otlp-proto-http monocle_apptrace
Einrichtung
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
# Import monocle_apptrace
from monocle_apptrace import setup_monocle_telemetry
# Setup Monocle telemetry with OTLP span exporter for traces
setup_monocle_telemetry(
workflow_name="opentelemetry-instrumentation-langchain",
span_processors=[
BatchSpanProcessor(
OTLPSpanExporter(endpoint="https://:4318/v1/traces")
)
]
)
LangChain - TypeScript/JavaScript
Installation
npm install @traceloop/node-server-sdk
Einrichtung
const { initialize } = require('@traceloop/node-server-sdk');
initialize({
appName: 'opentelemetry-instrumentation-langchain-traceloop',
baseUrl: 'https://:4318',
disableBatch: true
});
OpenAI - Python
OpenTelemetry
Installation
pip install opentelemetry-sdk opentelemetry-exporter-otlp-proto-http opentelemetry-instrumentation-openai-v2
Einrichtung
from opentelemetry import trace, _events
from opentelemetry.sdk.resources import Resource
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.sdk._logs import LoggerProvider
from opentelemetry.sdk._logs.export import BatchLogRecordProcessor
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk._events import EventLoggerProvider
from opentelemetry.exporter.otlp.proto.http._log_exporter import OTLPLogExporter
from opentelemetry.instrumentation.openai_v2 import OpenAIInstrumentor
import os
os.environ["OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT"] = "true"
# Set up resource
resource = Resource(attributes={
"service.name": "opentelemetry-instrumentation-openai"
})
# Create tracer provider
trace.set_tracer_provider(TracerProvider(resource=resource))
# Configure OTLP exporter
otlp_exporter = OTLPSpanExporter(
endpoint="https://:4318/v1/traces"
)
# Add span processor
trace.get_tracer_provider().add_span_processor(
BatchSpanProcessor(otlp_exporter)
)
# Set up logger provider
logger_provider = LoggerProvider(resource=resource)
logger_provider.add_log_record_processor(
BatchLogRecordProcessor(OTLPLogExporter(endpoint="https://:4318/v1/logs"))
)
_events.set_event_logger_provider(EventLoggerProvider(logger_provider))
# Enable OpenAI instrumentation
OpenAIInstrumentor().instrument()
Monocle
Installation
pip install opentelemetry-sdk opentelemetry-exporter-otlp-proto-http monocle_apptrace
Einrichtung
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
# Import monocle_apptrace
from monocle_apptrace import setup_monocle_telemetry
# Setup Monocle telemetry with OTLP span exporter for traces
setup_monocle_telemetry(
workflow_name="opentelemetry-instrumentation-openai",
span_processors=[
BatchSpanProcessor(
OTLPSpanExporter(endpoint="https://:4318/v1/traces")
)
]
)
OpenAI - TypeScript/JavaScript
Installation
npm install @traceloop/instrumentation-openai @traceloop/node-server-sdk
Einrichtung
const { initialize } = require('@traceloop/node-server-sdk');
initialize({
appName: 'opentelemetry-instrumentation-openai-traceloop',
baseUrl: 'https://:4318',
disableBatch: true
});
OpenAI Agents SDK - Python
Logfire
Installation
pip install logfire
Einrichtung
import logfire
import os
os.environ["OTEL_EXPORTER_OTLP_TRACES_ENDPOINT"] = "https://:4318/v1/traces"
logfire.configure(
service_name="opentelemetry-instrumentation-openai-agents-logfire",
send_to_logfire=False,
)
logfire.instrument_openai_agents()
Monocle
Installation
pip install opentelemetry-sdk opentelemetry-exporter-otlp-proto-http monocle_apptrace
Einrichtung
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
# Import monocle_apptrace
from monocle_apptrace import setup_monocle_telemetry
# Setup Monocle telemetry with OTLP span exporter for traces
setup_monocle_telemetry(
workflow_name="opentelemetry-instrumentation-openai-agents",
span_processors=[
BatchSpanProcessor(
OTLPSpanExporter(endpoint="https://:4318/v1/traces")
)
]
)
Beispiel 1: Tracing mit dem Azure AI Inference SDK unter Verwendung von Opentelemetry einrichten
Das folgende End-to-End-Beispiel verwendet das Azure AI Inference SDK in Python und zeigt, wie der Tracing-Provider und die Instrumentierung eingerichtet werden.
Voraussetzungen
Um dieses Beispiel auszuführen, benötigen Sie die folgenden Voraussetzungen
- Visual Studio Code
- AI Toolkit-Erweiterung
- Azure AI Inference SDK
- OpenTelemetry
- Python neueste Version
- GitHub-Konto
Entwicklungsumgebung einrichten
Verwenden Sie die folgenden Anweisungen, um eine vorkonfigurierte Entwicklungsumgebung bereitzustellen, die alle erforderlichen Abhängigkeiten für die Ausführung dieses Beispiels enthält.
-
GitHub Personal Access Token einrichten
Verwenden Sie die kostenlosen GitHub Models als Beispielmodell.
Öffnen Sie die GitHub-Entwicklereinstellungen und wählen Sie Neues Token generieren.
Wichtigmodels:readBerechtigungen sind für das Token erforderlich, andernfalls wird ein Fehler "unauthorized" zurückgegeben. Das Token wird an einen Microsoft-Dienst gesendet. -
Umgebungsvariable erstellen
Erstellen Sie eine Umgebungsvariable, um Ihr Token als Schlüssel für den Client-Code mit einem der folgenden Code-Snippets festzulegen. Ersetzen Sie
<your-github-token-goes-here>durch Ihr tatsächliches GitHub-Token.bash
export GITHUB_TOKEN="<your-github-token-goes-here>"powershell
$Env:GITHUB_TOKEN="<your-github-token-goes-here>"Windows-Eingabeaufforderung
set GITHUB_TOKEN=<your-github-token-goes-here> -
Python-Pakete installieren
Der folgende Befehl installiert die erforderlichen Python-Pakete für das Tracing mit dem Azure AI Inference SDK
pip install opentelemetry-sdk opentelemetry-exporter-otlp-proto-http azure-ai-inference[opentelemetry] -
Tracing einrichten
-
Erstellen Sie ein neues lokales Verzeichnis auf Ihrem Computer für das Projekt.
mkdir my-tracing-app -
Navigieren Sie zu dem von Ihnen erstellten Verzeichnis.
cd my-tracing-app -
Öffnen Sie Visual Studio Code in diesem Verzeichnis
code .
-
-
Python-Datei erstellen
-
Erstellen Sie im Verzeichnis
my-tracing-appeine Python-Datei namensmain.py.Sie fügen den Code zum Einrichten des Tracings und zur Interaktion mit dem Azure AI Inference SDK hinzu.
-
Fügen Sie den folgenden Code zu
main.pyhinzu und speichern Sie die Dateiimport os ### Set up for OpenTelemetry tracing ### os.environ["AZURE_TRACING_GEN_AI_CONTENT_RECORDING_ENABLED"] = "true" os.environ["AZURE_SDK_TRACING_IMPLEMENTATION"] = "opentelemetry" from opentelemetry import trace, _events from opentelemetry.sdk.resources import Resource from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import BatchSpanProcessor from opentelemetry.sdk._logs import LoggerProvider from opentelemetry.sdk._logs.export import BatchLogRecordProcessor from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter from opentelemetry.sdk._events import EventLoggerProvider from opentelemetry.exporter.otlp.proto.http._log_exporter import OTLPLogExporter github_token = os.environ["GITHUB_TOKEN"] resource = Resource(attributes={ "service.name": "opentelemetry-instrumentation-azure-ai-inference" }) provider = TracerProvider(resource=resource) otlp_exporter = OTLPSpanExporter( endpoint="https://:4318/v1/traces", ) processor = BatchSpanProcessor(otlp_exporter) provider.add_span_processor(processor) trace.set_tracer_provider(provider) logger_provider = LoggerProvider(resource=resource) logger_provider.add_log_record_processor( BatchLogRecordProcessor(OTLPLogExporter(endpoint="https://:4318/v1/logs")) ) _events.set_event_logger_provider(EventLoggerProvider(logger_provider)) from azure.ai.inference.tracing import AIInferenceInstrumentor AIInferenceInstrumentor().instrument() ### Set up for OpenTelemetry tracing ### from azure.ai.inference import ChatCompletionsClient from azure.ai.inference.models import UserMessage from azure.ai.inference.models import TextContentItem from azure.core.credentials import AzureKeyCredential client = ChatCompletionsClient( endpoint = "https://models.inference.ai.azure.com", credential = AzureKeyCredential(github_token), api_version = "2024-08-01-preview", ) response = client.complete( messages = [ UserMessage(content = [ TextContentItem(text = "hi"), ]), ], model = "gpt-4.1", tools = [], response_format = "text", temperature = 1, top_p = 1, ) print(response.choices[0].message.content)
-
-
Code ausführen
-
Öffnen Sie ein neues Terminal in Visual Studio Code.
-
Führen Sie den Code im Terminal mit dem Befehl
python main.pyaus.
-
-
Tracedaten in AI Toolkit überprüfen
Nachdem Sie den Code ausgeführt und die Tracing-Webansicht aktualisiert haben, gibt es eine neue Spur in der Liste.
Wählen Sie die Spur aus, um die Detailansicht der Spur zu öffnen.

Überprüfen Sie den vollständigen Ausführungsfluss Ihrer App in der linken Span-Baumansicht.
Wählen Sie einen Span in der rechten Span-Detailansicht aus, um generative KI-Nachrichten im Tab Input + Output anzuzeigen.
Wählen Sie den Tab Metadaten, um die Rohmetadaten anzuzeigen.

Beispiel 2: Tracing mit dem OpenAI Agents SDK unter Verwendung von Monocle einrichten
Das folgende End-to-End-Beispiel verwendet das OpenAI Agents SDK in Python mit Monocle und zeigt, wie das Tracing für ein Multi-Agenten-Reisebuchungssystem eingerichtet wird.
Voraussetzungen
Um dieses Beispiel auszuführen, benötigen Sie die folgenden Voraussetzungen
- Visual Studio Code
- AI Toolkit-Erweiterung
- Okahu Trace Visualizer
- OpenAI Agents SDK
- OpenTelemetry
- Monocle
- Python neueste Version
- OpenAI API-Schlüssel
Entwicklungsumgebung einrichten
Verwenden Sie die folgenden Anweisungen, um eine vorkonfigurierte Entwicklungsumgebung bereitzustellen, die alle erforderlichen Abhängigkeiten für die Ausführung dieses Beispiels enthält.
-
Umgebungsvariable erstellen
Erstellen Sie eine Umgebungsvariable für Ihren OpenAI API-Schlüssel mit einem der folgenden Code-Snippets. Ersetzen Sie
<your-openai-api-key>durch Ihren tatsächlichen OpenAI API-Schlüssel.bash
export OPENAI_API_KEY="<your-openai-api-key>"powershell
$Env:OPENAI_API_KEY="<your-openai-api-key>"Windows-Eingabeaufforderung
set OPENAI_API_KEY=<your-openai-api-key>Alternativ können Sie eine Datei
.envin Ihrem Projektverzeichnis erstellenOPENAI_API_KEY=<your-openai-api-key> -
Python-Pakete installieren
Erstellen Sie eine Datei
requirements.txtmit folgendem Inhaltopentelemetry-sdk opentelemetry-exporter-otlp-proto-http monocle_apptrace openai-agents python-dotenvInstallieren Sie die Pakete mit
pip install -r requirements.txt -
Tracing einrichten
-
Erstellen Sie ein neues lokales Verzeichnis auf Ihrem Computer für das Projekt.
mkdir my-agents-tracing-app -
Navigieren Sie zu dem von Ihnen erstellten Verzeichnis.
cd my-agents-tracing-app -
Öffnen Sie Visual Studio Code in diesem Verzeichnis
code .
-
-
Python-Datei erstellen
-
Erstellen Sie im Verzeichnis
my-agents-tracing-appeine Python-Datei namensmain.py.Sie fügen den Code hinzu, um das Tracing mit Monocle einzurichten und mit dem OpenAI Agents SDK zu interagieren.
-
Fügen Sie den folgenden Code zu
main.pyhinzu und speichern Sie die Dateiimport os from dotenv import load_dotenv # Load environment variables from .env file load_dotenv() from opentelemetry.sdk.trace.export import BatchSpanProcessor from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter # Import monocle_apptrace from monocle_apptrace import setup_monocle_telemetry # Setup Monocle telemetry with OTLP span exporter for traces setup_monocle_telemetry( workflow_name="opentelemetry-instrumentation-openai-agents", span_processors=[ BatchSpanProcessor( OTLPSpanExporter(endpoint="https://:4318/v1/traces") ) ] ) from agents import Agent, Runner, function_tool # Define tool functions @function_tool def book_flight(from_airport: str, to_airport: str) -> str: """Book a flight between airports.""" return f"Successfully booked a flight from {from_airport} to {to_airport} for 100 USD." @function_tool def book_hotel(hotel_name: str, city: str) -> str: """Book a hotel reservation.""" return f"Successfully booked a stay at {hotel_name} in {city} for 50 USD." @function_tool def get_weather(city: str) -> str: """Get weather information for a city.""" return f"The weather in {city} is sunny and 75°F." # Create specialized agents flight_agent = Agent( name="Flight Agent", instructions="You are a flight booking specialist. Use the book_flight tool to book flights.", tools=[book_flight], ) hotel_agent = Agent( name="Hotel Agent", instructions="You are a hotel booking specialist. Use the book_hotel tool to book hotels.", tools=[book_hotel], ) weather_agent = Agent( name="Weather Agent", instructions="You are a weather information specialist. Use the get_weather tool to provide weather information.", tools=[get_weather], ) # Create a coordinator agent with tools coordinator = Agent( name="Travel Coordinator", instructions="You are a travel coordinator. Delegate flight bookings to the Flight Agent, hotel bookings to the Hotel Agent, and weather queries to the Weather Agent.", tools=[ flight_agent.as_tool( tool_name="flight_expert", tool_description="Handles flight booking questions and requests.", ), hotel_agent.as_tool( tool_name="hotel_expert", tool_description="Handles hotel booking questions and requests.", ), weather_agent.as_tool( tool_name="weather_expert", tool_description="Handles weather information questions and requests.", ), ], ) # Run the multi-agent workflow if __name__ == "__main__": import asyncio result = asyncio.run( Runner.run( coordinator, "Book me a flight today from SEA to SFO, then book the best hotel there and tell me the weather.", ) ) print(result.final_output)
-
-
Code ausführen
-
Öffnen Sie ein neues Terminal in Visual Studio Code.
-
Führen Sie den Code im Terminal mit dem Befehl
python main.pyaus.
-
-
Tracedaten in AI Toolkit überprüfen
Nachdem Sie den Code ausgeführt und die Tracing-Webansicht aktualisiert haben, gibt es eine neue Spur in der Liste.
Wählen Sie die Spur aus, um die Detailansicht der Spur zu öffnen.

Überprüfen Sie den vollständigen Ausführungsfluss Ihrer App in der linken Span-Baumansicht, einschließlich Agentenaufrufen, Toolaufrufen und Agentendelegationen.
Wählen Sie einen Span in der rechten Span-Detailansicht aus, um generative KI-Nachrichten im Tab Input + Output anzuzeigen.
Wählen Sie den Tab Metadaten, um die Rohmetadaten anzuzeigen.

Was Sie gelernt haben
In diesem Artikel haben Sie gelernt, wie Sie
- Richten Sie das Tracing in Ihrer KI-Anwendung mit dem Azure AI Inference SDK und OpenTelemetry ein.
- Konfigurieren Sie den OTLP-Trace-Exporter so, dass Tracedaten an den lokalen Collector-Server gesendet werden.
- Führen Sie Ihre Anwendung aus, um Tracedaten zu generieren und Spuren in der AI Toolkit-Webansicht anzuzeigen.
- Verwenden Sie die Tracing-Funktion mit mehreren SDKs und Sprachen, einschließlich Python und TypeScript/JavaScript, sowie Nicht-Microsoft-Tools über OTLP.
- Instrumentieren Sie verschiedene KI-Frameworks (Anthropic, Gemini, LangChain, OpenAI und mehr) mit den bereitgestellten Code-Snippets.
- Verwenden Sie die Benutzeroberfläche der Tracing-Webansicht, einschließlich der Schaltflächen Collector starten und Aktualisieren, um Tracedaten zu verwalten.
- Richten Sie Ihre Entwicklungsumgebung ein, einschließlich Umgebungsvariablen und Paketinstallation, um das Tracing zu ermöglichen.
- Analysieren Sie den Ausführungsfluss Ihrer App mithilfe der Span-Baum- und Detailansicht, einschließlich des Nachrichtenflusses und der Metadaten für generative KI.