生成AIアプリケーション用のエージェントをデプロイ

プレビュー

この機能はパブリックプレビュー段階です。

この記事では、モデルサービングを直接使用するか、databricks.agentsdeploy() APIを使用してエージェントをデプロイする方法について説明します。

要件

  • エージェントをデプロイする前に、Unity Catalogに登録する必要があります。「AIエージェントの作成とログ記録」を参照してください。エージェントをUnity Catalogに登録すると、モデルの形でパッケージ化されます。

  • databricks.agentsdeploy() 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テーブル名の例

各テーブルの内容

ペイロード

{catalog_name}.{schema_name}.{model_name}_payload

生のJSONペイロード

ペイロードリクエストログ

{catalog_name}.{schema_name}.{model_name}_payload_request_logs

書式設定されたリクエストと応答、MLflowトレース

ペイロード評価ログ

{catalog_name}.{schema_name}.{model_name}_payload_assessment_logs

レビューアプリで提供されるフォーマットされたフィードバック(各リクエストに対して)

リクエストログと評価ログテーブル

上記のペイロード推論テーブルから、リクエストログと評価ログという2つのテーブルが自動的に生成されます。ユーザーは、デプロイメントを操作してから1時間以内にこれらのテーブルにデータが格納されることを期待できます。

次に、リクエストログテーブルのスキーマを示します。

列名

タイプ

説明

client_request_id

String

クライアント要求 ID (通常は null.

databricks_request_id

String

Databricks リクエスト ID。

date

Date

要求の日付。

timestamp_ms

Long

タイムスタンプ (ミリ秒単位)。

timestamp

Timestamp

要求のタイムスタンプ。

status_code

Integer

エンドポイントの状態コード。

execution_time_ms

Long

合計実行ミリ秒。

conversation_id

String

要求ログから抽出された会話 ID。

request

String

ユーザーの会話からの最後のユーザー クエリ。 これはRAGリクエストから抽出されます。

response

String

ユーザーへの最後の応答。 これはRAGリクエストから抽出されます。

request_raw

String

リクエストの文字列表現。

response_raw

String

応答の文字列表現。

trace

String

応答構造体のdatabricks_optionsから抽出されたトレースの文字列表現。

sampling_fraction

Double

サンプリング分数。

request_metadata

マップ[文字列, 文字列]

リクエストに関連付けられたモデルサーバーエンドポイントに関連するメタデータのマップ。 このマップには、エンドポイント名、モデル名、およびエンドポイントに使用されるモデル バージョンが含まれています。

schema_version

String

スキーマ バージョンの整数。

以下は、評価ログのスキーマです。

列名

タイプ

説明

request_id

String

Databricks リクエスト ID。

step_id

String

検索評価から派生します。

source

構造体

評価を作成したユーザーに関する情報を含む構造体フィールド。

timestamp

Timestamp

要求のタイムスタンプ。

text_assessment

構造体

レビューアプリからのエージェントの応答に関するフィードバックのデータを含む構造体フィールド。

retrieval_assessment

構造体

応答のために取得されたドキュメントに関するフィードバックのデータを含む構造体フィールド。

デプロイされたアプリケーションを取得する

配備されたエージェントを取得する方法を以下に示します。

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