生成AIアプリケーション用のエージェントをデプロイ
プレビュー
この機能はパブリックプレビュー段階です。
この記事では、モデルサービングを直接使用するか、databricks.agents
のdeploy()
APIを使用してエージェントをデプロイする方法について説明します。
要件
エージェントをデプロイする前に、Unity Catalogに登録する必要があります。「AIエージェントの作成とログ記録」を参照してください。エージェントをUnity Catalogに登録すると、モデルの形でパッケージ化されます。
databricks.agents
のdeploy()
APIを使用してエージェントをデプロイするには、MLflow 2.13.1以上が必要です。
モデルサービングを使用してエージェントをデプロイします
重要
この方法でエージェントをデプロイした場合、レビューアプリを使用してエージェントに関するフィードバックを収集および送信することはできません。
本番環境のワークロードでは、エージェントをデプロイして、ユーザー向けアプリケーションに統合できるREST APIとして利用できるようにすることができます。モデルサービングREST APIを使用して、モデルサービングCPUエンドポイントを作成し、本番環境に対応したエージェントをデプロイできます。
deploy()
を使用してエージェントをデプロイする
deploy()
APIを使用して、エージェントを開発するため、または本番環境対応のエージェントをデプロイするためにエージェントをデプロイできます。deploy()
を使用してデプロイできるのは、Unity Catalogに登録されているエージェントだけです。
deploy()
APIは、次の処理を行います。
ユーザー向けアプリケーションに統合できる、エージェント用のCPUモデルサービングエンドポイントを作成します。これらのエンドポイントはモデルサービングを使用して作成されているので、それらを呼び出してエージェントから回答を得たり、レビューアプリのUIからフィードバックを収集したりできます。
認証情報は、エージェントが必要とするすべてのDataBricksが管理するリソースに自動的に渡されます。
Pinecone など、Databricks で管理されていないリソース依存関係がある場合は、シークレットを含む環境変数を
deploy()
APIに渡すことができます。モデルサービスエンドポイントからリソースへのアクセスの構成を参照してください。
エージェントのレビューアプリを有効にします。レビューアプリでは、利害関係者がレビューアプリのUIを使用してエージェントとチャットしたり、フィードバックを提供したりできます。
クエリ―リクエストとレスポンス、中間トレースデータなど、Review AppまたはREST APIへのすべてのリクエストをMLflowトレースの推論テーブルにログします。
注:
デプロイが完了するまでに最大15分かかる場合があります。未加工のJSONペイロードは到着するまでに10〜30分かかり、フォーマットされたログは未加工のペイロードから約1時間ごとに処理されます。
from databricks.agents import deploy
from mlflow.utils import databricks_utils as du
deployment = deploy(model_fqn, uc_model_info.version)
# query_endpoint is the URL that can be used to make queries to the app
deployment.query_endpoint
# Copy deployment.rag_app_url to browser and start interacting with your RAG application.
deployment.rag_app_url
エージェント強化推論テーブル
deploy()
では、デプロイメントごとに3つの推論テーブルが作成され、エージェントサービスエンドポイントとの間のリクエストと応答がログに記録されます。
テーブル |
Unity Catalogテーブル名の例 |
各テーブルの内容 |
---|---|---|
ペイロード |
|
生のJSONペイロード |
ペイロードリクエストログ |
|
書式設定されたリクエストと応答、MLflowトレース |
ペイロード評価ログ |
|
レビューアプリで提供されるフォーマットされたフィードバック(各リクエストに対して) |
リクエストログと評価ログテーブル
上記のペイロード推論テーブルから、リクエストログと評価ログという2つのテーブルが自動的に生成されます。ユーザーは、デプロイメントを操作してから1時間以内にこれらのテーブルにデータが格納されることを期待できます。
次に、リクエストログテーブルのスキーマを示します。
列名 |
タイプ |
説明 |
---|---|---|
|
String |
クライアント要求 ID (通常は |
|
String |
Databricks リクエスト ID。 |
|
Date |
要求の日付。 |
|
Long |
タイムスタンプ (ミリ秒単位)。 |
|
Timestamp |
要求のタイムスタンプ。 |
|
Integer |
エンドポイントの状態コード。 |
|
Long |
合計実行ミリ秒。 |
|
String |
要求ログから抽出された会話 ID。 |
|
String |
ユーザーの会話からの最後のユーザー クエリ。 これはRAGリクエストから抽出されます。 |
|
String |
ユーザーへの最後の応答。 これはRAGリクエストから抽出されます。 |
|
String |
リクエストの文字列表現。 |
|
String |
応答の文字列表現。 |
|
String |
応答構造体の |
|
Double |
サンプリング分数。 |
|
マップ[文字列, 文字列] |
リクエストに関連付けられたモデルサーバーエンドポイントに関連するメタデータのマップ。 このマップには、エンドポイント名、モデル名、およびエンドポイントに使用されるモデル バージョンが含まれています。 |
|
String |
スキーマ バージョンの整数。 |
以下は、評価ログのスキーマです。
列名 |
タイプ |
説明 |
---|---|---|
|
String |
Databricks リクエスト ID。 |
|
String |
検索評価から派生します。 |
|
構造体 |
評価を作成したユーザーに関する情報を含む構造体フィールド。 |
|
Timestamp |
要求のタイムスタンプ。 |
|
構造体 |
レビューアプリからのエージェントの応答に関するフィードバックのデータを含む構造体フィールド。 |
|
構造体 |
応答のために取得されたドキュメントに関するフィードバックのデータを含む構造体フィールド。 |
デプロイされたアプリケーションを取得する
配備されたエージェントを取得する方法を以下に示します。
from databricks.agents import list_deployments, get_deployments
# Get the deployment for specific model_fqn and version
deployment = get_deployments(model_name=model_fqn, model_version=model_version.version)
deployments = list_deployments()
# Print all the current deployments
deployments