セマンティックカーネルのトレース
Semantic Kernel は、C#、Python、および JavaのAIミドルウェアとして機能する軽量のオープンソースSDKです。モデルの相互作用を抽象化し、プロバイダー間でプロンプト、関数、プラグインを作成します。
MLflow Tracing はセマンティック カーネルと統合して、カーネル コールバックを自動的にインストルメント化し、包括的な実行トレースをキャプチャします。アプリロジックを変更する必要はありません。mlflow.semantic_kernel.autologで有効にします。
この統合により、次の全体像が提供されます。
- プロンプトと完了応答
 - チャット履歴とメッセージ
 - 待ち時間
 - モデル名とプロバイダー
 - カーネル関数とプラグイン
 - テンプレート変数と引数
 - トークンの使用情報
 - 発生した場合の例外
 
ストリーミングは現在トレースされていません。
前提 条件
セマンティックカーネルで MLflow Tracing を使用するには、 MLflow と関連するセマンティックカーネルパッケージをインストールする必要があります。
- Development
 - Production
 
開発環境の場合は、Databricks エクストラとセマンティック カーネルを含む完全な MLflow パッケージをインストールします。
pip install --upgrade "mlflow[databricks]>=3.1" semantic_kernel openai
完全な mlflow[databricks] パッケージには、Databricks でのローカル開発と実験のためのすべての機能が含まれています。
本番運用デプロイの場合は、 mlflow-tracing とセマンティックカーネルをインストールします。
pip install --upgrade mlflow-tracing semantic_kernel openai
mlflow-tracingパッケージは本番運用用に最適化されています。
最適なトレース エクスペリエンスを得るには、MLflow 3 をお勧めします。
例を実行する前に、環境を構成する必要があります。
Databricks ノートブック以外のユーザーの場合 : Databricks 環境変数を設定します。
export DATABRICKS_HOST="https://your-workspace.cloud.databricks.com"
export DATABRICKS_TOKEN="your-personal-access-token"
Databricks ノートブック内のユーザーの場合 : これらの資格情報は自動的に設定されます。
API キー: LLM プロバイダーの API キーが構成されていることを確認します。本番運用環境では、ハードコードされた値の代わりにMosaic AI GatewayシークレットまたはシークレットDatabricksを使用して、セキュアなAPIキー管理を行います。
export OPENAI_API_KEY="your-openai-api-key"
# Add other provider keys as needed
使用例
セマンティックカーネルは、主に非同期パターンを使用します。ノートブックでは、直接 await できます。スクリプトでは、 asyncio.run()で折り返します。
import mlflow
mlflow.semantic_kernel.autolog()
サーバレス コンピュート クラスタでは、生成 AI トレースフレームワークの自動ログは自動的に有効になりません。 トレースする特定の統合に対して適切な mlflow.<library>.autolog() 関数を呼び出して、自動ログを明示的に有効にする必要があります。
import openai
from semantic_kernel import Kernel
from semantic_kernel.connectors.ai.open_ai import OpenAIChatCompletion
openai_client = openai.AsyncOpenAI()
kernel = Kernel()
kernel.add_service(
    OpenAIChatCompletion(
        service_id="chat-gpt",
        ai_model_id="gpt-4o-mini",
        async_client=openai_client,
    )
)
answer = await kernel.invoke_prompt("Is sushi the best food ever?")
print("AI says:", answer)
トークン使用状況の追跡
MLflow 3.2.0+LLM 呼び出しごとのトークン使用量を記録し、トレース情報に合計を集計します。
import mlflow
last_trace_id = mlflow.get_last_active_trace_id()
trace = mlflow.get_trace(trace_id=last_trace_id)
print(trace.info.token_usage)
for span in trace.data.spans:
    usage = span.get_attribute("mlflow.chat.tokenUsage")
    if usage:
        print(span.name, usage)
自動トレースを無効にする
mlflow.semantic_kernel.autolog(disable=True) でセマンティックカーネルの自動トレースを無効にするか、 mlflow.autolog(disable=True)ですべて無効にします。