メインコンテンツまでスキップ

生成AIアプリケーションのエージェントをデプロイする (Model Serving)

備考

新しいユースケースの場合、Databricksは、エージェントのコード、サーバー設定、およびデプロイワークフローを完全に制御するために、Databricks Appsへのエージェントのデプロイを推奨しています。AIエージェントを作成してDatabricks Appsにデプロイするを参照してください。既存のエージェントを移行するには、Model ServingからDatabricks Appsにエージェントを移行するを参照してください。

Model Serving でAIエージェントをデプロイするには、Custom Agents Python APIdeploy()関数を使用します。デプロイにより、組み込みの拡張性、モニタリング、コラボレーションツールを備えたサービングエンドポイントが作成されます。

展開済みエージェントは、リアルタイムのトレース、ステークホルダーからのフィードバックを得るためのレビューアプリ、およびモニタリングを含む、MLflow 3の評価およびモニタリング機能と自動的に統合されます。

要件

  • Unity Catalog にエージェントを登録する
  • MLflow 3.1.3 をインストールします。databricks.agentsdeploy() API を使用してエージェントをデプロイするには、以上が必要です。
  • Databricks ノートブックの外部からエージェントをデプロイするには、databricks-agents SDK バージョン 1.1.0 が必要です。以上。

前提条件をインストールします:

Python
# Install prerequisites
%pip install mlflow>=3.1.3 databricks-agents>=1.1.0

# Restart Python to make sure the new packages are picked up
dbutils.library.restartPython()

を使用してエージェントをデプロイする deploy()

エージェントをモデルサービングエンドポイントにデプロイしてください:

Python
from databricks import agents

deployment = agents.deploy(uc_model_name, uc_model_info.version)

# Retrieve the query endpoint URL for making API requests
deployment.query_endpoint

deploy()を呼び出すと、Databricksは本番運用インフラストラクチャを自動的にセットアップし、以下の方法でエージェントをMLflow生成AI機能と統合します。

警告

Databricks Gitフォルダーに保存されているノートブックからエージェントをデプロイしている場合、MLflow 3 リアルタイムトレースはデフォルトで機能しません。

リアルタイムトレースを有効にするには、 agents.deploy()を実行する前に、 mlflow.set_experiment()を使用してエクスペリメントをGitに関連付けられていないエクスペリメントに設定します。

deploy()関数はデフォルトで次のアクションを実行します:手のひらにすっぽり収まります。

  • モデルサービングエンドポイントを作成し、自動スケーリングとロードバランシングによってエージェントをホストします
  • エージェントが基盤となるリソースにアクセスするための**安全な認証を提供します**
  • **MLflowエクスペリメントのトレースと本番運用のトラフィックに対する自動品質評価により、リアルタイムモニタリングを実現します**
  • フィードバック収集のためにレビューアプリを使用して利害関係者のコラボレーションを設定します。

情報については、詳細なデプロイアクションを参照してください。

デプロイメントをカスタマイズする

デプロイメントをカスタマイズするために、deploy() に追加の引数を渡します。たとえば、scale_to_zero_enabled=True を渡すことで、アイドル状態のエンドポイントのスケールをゼロにすることができます。これによりコストは削減されますが、初期クエリの処理時間は増加します。

その他のパラメーターについては、Databricks Agents Python APIを参照してください。

既存の展開を更新

既存のデプロイと同じUnity Catalogモデル名でdeploy()を呼び出すと、新しいモデルバージョンが既存のサービングエンドポイントに追加され、準備が整うとトラフィックがそれに切り替わります。以前にデプロイされたバージョンは、展開中にリクエストを処理し続けるため、更新によって進行中のトラフィックが中断されることはありません。

ゼロダウンタイムデプロイメントを実現するには、UCモデルバージョン(つまり、endpoint_nameとモデル名)以外の構成を変更しないでください。

エージェントデプロイの取得と削除

既存のエージェントデプロイの取得または管理。Databricks Agents Python APIを参照してください。

Python
from databricks.agents import list_deployments, get_deployments, delete_deployment

# Print all current deployments
deployments = list_deployments()
print(deployments)

# Get the deployment for a specific agent model name and version
agent_model_name = "" # Set to your Unity Catalog model name
agent_model_version = 1 # Set to your agent model version
deployment = get_deployments(model_name=agent_model_name, model_version=agent_model_version)

# List all deployments
all_deployments = list_deployments()

# Delete an agent deployment
delete_deployment(model_name=agent_model_name, model_version=agent_model_version)

依存リソースの認証

エージェントは、デプロイ時にタスクを完了するために、他のリソースに対して認証を行う必要があることがよくあります。例えば、エージェントは非構造化データをクエリするために、AI Searchインデックスにアクセスする必要がある場合があります。

認証方法(使用するタイミングや設定方法を含む)に関する情報については、AIエージェントの認証 (Model Serving)を参照してください。

エージェントデプロイメントのネットワーキング

ワークスペースで Private Link または制限付き送信ネットワークポリシーを使用している場合、エージェントのデプロイを成功させるには、ネットワークアクセスを構成する必要があります。モデルサービングエンドポイントでは、コンテナのビルド中に依存関係をダウンロードするためのアウトバウンドアクセスが必要です。エージェントは、ランタイム時に外部 APIs にアクセスする必要がある場合もあります。

Databricks Appsにデプロイされたエージェントの場合、DNSまたはエグレスポリシーの設定に関する詳細なガイダンスについては、Private Link環境でのアプリのデプロイを参照してください。

Model Serving にデプロイされたエージェントについては、以下を確認してください:

  • ビルド時の依存関係: ネットワークポリシーでは、Pythonパッケージのpypi.orgfiles.pythonhosted.orgなど、エージェントの環境で必要とされるパッケージリポジトリへのアクセスを許可する必要があります。Databricksは、ブロックされたネットワークアクセスが原因で発生したビルドの失敗を、system.access.outbound_networkシステムテーブル内のnetwork_source_type: ML Buildでログに記録します。モデルサービングで検証を参照してください。
  • Runtime の依存関係 :エージェントが推論中に外部 APIs またはサービスを呼び出す場合、それらのドメインをネットワークポリシーの許可リストに追加します。
  • DNS解決:Private Link環境では、エージェントが依存するDatabricksのサービス(AI検索やSQLウェアハウスエンドポイントなど)のホスト名を解決できることを確認してください。

詳細なデプロイアクション

次の表に、deploy()呼び出しから生じる詳細なデプロイアクションを示します。デプロイが完了するまでに最大15分かかる場合があります。

deploy() 操作

説明

モデルサービングエンドポイントを作成

自動負荷分散により、エージェントをユーザー向けアプリケーションに提供するスケーラブルな REST API エンドポイントを作成します。

安全な認証をプロビジョニングします。

エージェントがDatabricks管理のリソース(AI Searchインデックス、Unity Catalog関数など)に最小限必要な権限でアクセスできるように、有効期間の短い資格情報を自動的に提供します。

Databricksは、資格情報を発行する前にエンドポイントの所有者が必要な権限を持っていることを確認し、不正アクセスを防止します。

Databricks以外のリソースについては、シークレットを含む環境変数をdeploy()に渡します。モデルサービングエンドポイントからリソースへのアクセスを構成するを参照してください。

レビューアプリを有効にする

ステークホルダーがエージェントと対話し、フィードバックを提供できるWebインターフェースを提供します。既存のトレースにラベルを付けてフィードバックと期待を収集するを参照してください。

リアルタイムトレースを有効にする

すべてのエージェントインタラクションをリアルタイムでMLflowエクスペリメントにログ記録し、モニタリングとデバッグのために即座に可視性を提供します。

  • エンドポイントからのトレースは、現在アクティブなMLflowエクスペリメント(mlflow.set_experiment()で設定)に書き込まれます。
  • エンドポイント内のすべてのエージェントは、トレース保存用に同じエクスペリメントを共有します
  • トレースは、より長期的なストレージのために推論テーブルにも書き込まれます。

本番運用モニタリング(ベータ)を有効にする

本番運用のトラフィックでスコアラーを実行する自動品質評価を設定します。本番運用のモニタリングを参照してください。

推論テーブルを有効にする

監査と分析のために、リクエストの入力と応答をログに記録するテーブルを作成します。

  • 警告: リクエストログと評価ログは非推奨であり、将来のリリースで廃止されます。代わりに MLflow 3 リアルタイムトレーシングを使用してください。移行ガイダンスについては、リクエストログと評価ログの廃止を参照してください。

  • すべてのエージェントはログ記録に AI Gateway 推論テーブルを使用します。

  • ストリーミング応答は、ResponsesAgentChatAgent、およびChatCompletionスキーマと互換性のあるフィールドのみをログに記録します。

REST API リクエストと Review App フィードバックをログに記録

APIリクエストとフィードバックを推論テーブルにログ記録します。

**警告:** フィードバックモデル は非推奨であり、今後のリリースで削除されます。MLflow 3 にアップグレードし、代わりに log_feedback API を使用してください。ユーザーのフィードバックを収集するを参照してください。

  • レビューアプリからのフィードバックを受け取り、記録するフィードバックモデルを作成します。
  • このモデルは、デプロイされたエージェントと同じ CPU モデルサービングエンドポイントで提供されます。

その他のリソース