監視をアプリに統合する
Application Insights によってキャプチャされ、Azure Monitor で視覚化される監視データを生成するには、Microsoft Foundry を使用してデプロイしたサービスを実行する必要があります。
サービスは、単にデプロイされた言語モデル、または AI アシスタントやエージェントのようなデプロイされた生成 AI アプリです。
監視をコードに統合するには、次の手順を実行する必要があります。
- Microsoft Foundry SDK を使用して 、モデルの推論を実行 し、テレメトリを出力します。
- OpenTelemetry 標準を使用して、各推論呼び出しと実行ステップを表す スパンをキャプチャ します。
- データを Azure Monitor に自動的にエクスポートし、Application Insights を使用して自動的に格納します。
注
ここで示すコード スニペットは、コードの各部分が実行する内容を強調するためだけに用意されています。 演習では、完全な作業例を示します。
モデル推論の実行
生成 AI アプリケーションの監視を開始するには、 Microsoft Foundry SDK を使用してモデル推論を実行する必要があります。 モデルの推論は、単一言語モデルの完了から完全なマルチターン アシスタントまで、あらゆるものになる可能性があります。
Microsoft Foundry SDK を使用すると、特定の Azure AI ハブとプロジェクトに接続できます。 Python では、これは次のコード サンプルのようになります。
connection_string = os.getenv('PROJECT_CONNECTION_STRING')
credential = DefaultAzureCredential()
project = AIProjectClient.from_connection_string(
conn_str=connection_string,
credential=credential
)
その後、Azure AI モデル推論パッケージ (Microsoft Foundry SDK の一部) を使用して、デプロイされたサービスと対話できます。 例えば次が挙げられます。
chat_client = project.inference.get_chat_completions_client()
model_name = os.environ.get("AZURE_OPENAI_DEPLOYMENT_NAME", "gpt-4o")
response = chat_client.complete(
model=model_name,
messages=[
SystemMessage("You are an AI assistant that acts as a travel guide."),
UserMessage(content=(
"What are some recommended supplies for a camping trip in the mountains?"
))]
トレーサーを使用してスパンをキャプチャする
アプリケーションを介して推論要求のパスを簡単に追跡するために、Azure は OpenTelemetry 標準と統合されます。
OpenTelemetry 標準では、スパンとトレーサーを使用して監視データを整理します。
- スパン: 推論要求や API 呼び出しなど、アプリケーション内の個々の作業単位。 各スパンには、期間、成功/失敗の状態、カスタム属性などのメタデータが記録されます。 スパンはトレースの構成要素です。
- トレーサー: トレーサーは、スパンの作成と管理を担当するコード内のコンポーネントです。 これは OpenTelemetry SDK の一部であり、分散トレースで中心的な役割を果たします。
たとえば、アプリケーションでは、まずトレーサー インスタンスを取得し、スパンの一意の識別子を生成します。
# Get the tracer instance
tracer = trace.get_tracer(__name__)
# Generate a session ID for this script execution
SESSION_ID = str(uuid.uuid4())
# Configure the tracer to include session ID in all spans
os.environ['AZURE_TRACING_GEN_AI_CONTENT_RECORDING_ENABLED'] = 'true'
次に、トレーサーを使用して generate_completion という名前のスパンを作成し、AI モデルから応答を生成するプロセスを表すことができます。 スパンは、デプロイされたサービスを操作する前に使用されるため、次のコードを 使用してコードを更新 します。
# Generate a chat completion about camping supplies
with tracer.start_as_current_span("generate_completion") as span:
try:
span.set_attribute("session.id", SESSION_ID)
response = chat_client.complete(
model=model_name,
messages=[
SystemMessage("You are an AI assistant that acts as a travel guide."),
UserMessage(content=(
"What are some recommended supplies for a camping trip in the mountains?"
))]
)
except Exception as e:
span.set_status(Status(StatusCode.ERROR, str(e)))
span.record_exception(e)
raise
データを自動的にエクスポートする
最後に、生成された監視データを自動的にエクスポートするために、Applications Insights リソースに接続していることを確認する必要があります。 Application Insights リソースを Microsoft Foundry プロジェクトに接続すると、プロジェクトを通じてリソースを取得できます。
application_insights_connection_string = project.telemetry.get_connection_string()
configure_azure_monitor(connection_string=application_insights_connection_string)
AIInferenceInstrumentor().instrument()
AIinferenceInstrumentorを使用すると、chat_clientによって実行されるすべての AI 推論操作が自動的にトレースおよび監視されます。
監視方法を理解したので、追跡する情報で何ができるかを調べてみましょう。