次の方法で共有


AI エージェントとそのツールを作成する

重要

この機能はパブリック プレビュー段階にあります。

この記事では、Mosaic AI エージェントフレームワークを使用して AI エージェントとツールを作成する方法について説明します。

AI プレイグラウンドを使用してツール呼び出しエージェントをすばやくプロトタイプ作成し、Mosaic AI エージェント フレームワークにエクスポートする方法について説明します。

要件

  • 複合 AI システムと AI エージェントとは?」で説明されているように、AI エージェントとツールの概念を理解する。
  • Databricks では、エージェントの開発時に最新バージョンの MLflow Python クライアントをインストールすることをお勧めします。 mlflow バージョンの要件については、依存リソースの認証に関する記事を参照してください。

AI エージェント ツールを作成する

AI エージェントは、構造化データや非構造化データの取得、コードの実行、リモート サービスとの通信 (メールや Slack メッセージの送信など) など、言語生成以外のアクションを実行するツールを使用します。

Mosaic AI エージェント フレームワークを使用してエージェントにツールを提供するには、次の方法の任意の組み合わせを使用できます。

  • 既存の Unity カタログ関数を作成または使用 ツールとして使用します。 Unity カタログ関数は、簡単な検出、ガバナンス、共有を提供し、大規模なデータセットに変換と集計を適用するのに適しています。
  • エージェント コードで Python 関数としてローカルにツールを定義します。 この方法は、REST API を呼び出す、任意のコードまたはライブラリを使用する、または非常に短い待機時間でツールを実行する必要がある場合に便利です。 このアプローチには、Unity カタログ関数によって提供される組み込みの検出可能性とガバナンスがありません。 Databricks では、エージェントを構築するときにこのトレードオフを検討して、最適なアプローチを判断することをお勧めします。

どちらの方法も、カスタム Python コードで記述されたエージェントや、LangGraph などのエージェント作成ライブラリを使用する場合に機能します。

ツールを定義するときは、ツール、パラメーター、および戻り値が文書化されていることを確認して、エージェント LLM がツールの使用時期と使用方法を理解できるようにします。

Unity Catalog 関数を使用してエージェント ツールを作成する

これらの例では、ノートブック環境または SQL エディターで記述Unity Catalog 関数を使用して AI エージェント ツールを作成します。

ノートブックのセルで次のコードを実行します。 %sqlノートブックマジックを使用して、python_execと呼ばれる Unity Catalog 関数を作成します。

LLM では、このツールを使用して、ユーザーが提供する Python コードを実行できます。

%sql
CREATE OR REPLACE FUNCTION
main.default.python_exec (
 code STRING COMMENT 'Python code to execute. Remember to print the final result to stdout.'
)
RETURNS STRING
LANGUAGE PYTHON
DETERMINISTIC
COMMENT 'Executes Python code in the sandboxed environment and returns its stdout. The runtime is stateless and you can not read output of the previous tool executions. i.e. No such variables "rows", "observation" defined. Calling another tool inside a Python code is NOT allowed. Use standard python libraries only.'
AS $$
 import sys
 from io import StringIO
 sys_stdout = sys.stdout
 redirected_output = StringIO()
 sys.stdout = redirected_output
 exec(code)
 sys.stdout = sys_stdout
 return redirected_output.getvalue()
$$

SQL エディターで次のコードを実行します。

これは、LLM が架空のcustomer_data テーブルから構造化データを取得するために使用できる、lookup_customer_infoという Unity Catalog 関数を作成します。

CREATE OR REPLACE FUNCTION main.default.lookup_customer_info(
  customer_name STRING COMMENT 'Name of the customer whose info to look up'
)
RETURNS STRING
COMMENT 'Returns metadata about a particular customer given the customer name, including the customer email and ID. The
customer ID can be used for other queries.'
RETURN SELECT CONCAT(
    'Customer ID: ', customer_id, ', ',
    'Customer Email: ', customer_email
  )
  FROM main.default.customer_data
  WHERE customer_name = customer_name
  LIMIT 1;

AI プレイグラウンドでのプロトタイプ ツール呼び出しエージェント

Unity Catalog 関数を作成したら、 AI プレイグラウンド を使用して LLM に渡し、エージェントをテストできます。 AI プレイグラウンドは、ツール呼び出しエージェントのプロトタイプを作成するためのサンドボックスを提供します。

AI エージェントに満足したら、それをエクスポートして Python でさらに開発するか、そのまま Model Serving エンドポイントとしてデプロイできます。

Note

Unity Catalogサーバーレス コンピューティングMosaic AI エージェント フレームワーク、トークンごとの 基本モデル または external モデルのいずれかを使用できる必要があります 現在のワークスペースで、AI プレイグラウンドのエージェントのプロトタイプを作成する必要があります。

ツール呼び出しエンドポイントのプロトタイプを作成します。

  1. プレイグラウンドから、 Function 呼び出し ラベルを持つモデルを選択します。

    ツール呼び出し LLM を選択する

  2. [ツール]を選択し、ドロップダウンで Unity Catalog 関数の名前を指定します。

    ツールの選択

  3. LLM、ツール、システム プロンプトの現在の組み合わせをテストし、バリエーションを試すチャット。

    LLM のプロトタイプを作成する

AI プレイグラウンド エージェントのエクスポートとデプロイ

ツールを追加してエージェントをテストした後、プレイグラウンド エージェントを Python ノートブックにエクスポートします。

  1. [エージェント コードのエクスポート] をクリックして、AI エージェントの開発とデプロイに役立つ Python ノートブック ノートブックを生成します。

    エージェント コードをエクスポートすると、ワークスペースに次の 3 つのファイルが保存されます。

    • agent ノートブック: LangChain を使用してエージェントを定義する Python コードが含まれています。
    • driver ノートブック: Mosaic AI エージェント フレームワークを使用して AI エージェントのログ記録、トレース、登録、デプロイを行う Python コードが含まれています。
    • config.yml: ツール定義を含む、エージェントに関する構成情報が含まれます。
  2. agent ノートブックを開いてエージェントを定義する LangChain コードを表示します。このノートブックを使用して、より多くのツールの定義やエージェントのパラメーターの調整など、プログラムによってエージェントをテストして反復処理します。

    Note

    エクスポートされたコードの動作は、AI プレイグラウンド セッションとは異なる場合があります。 Databricks では、エクスポートされたノートブックを実行して、さらに反復処理とデバッグを行い、エージェントの品質を評価してから、エージェントをデプロイして他のユーザーと共有することをお勧めします。

  3. エージェントの出力に問題がなければ、 driver ノートブックを実行して、エージェントをログに記録し、Model Serving エンドポイントにデプロイできます。

コードでエージェントを定義する

AI プレイグラウンドからエージェント コードを生成するだけでなく、LangChain や Python コードなどのフレームワークを使用して、コード内でエージェントを自分で定義することもできます。 エージェント フレームワークを使用してエージェントをデプロイするには、その入力が サポートされている入力形式と出力形式のいずれかに準拠している必要があります。

パラメーターを使用してエージェントを構成する

エージェント フレームワークでは、パラメーターを使用してエージェントの実行方法を制御できます。 これにより、コードを変更することなく、エージェントのさまざまな特性を使用して迅速に反復処理できます。 パラメーターは、Python ディクショナリまたは .yaml ファイルで定義するキーと値のペアです。

コードを構成するには、キーと値のパラメーターのセットである ModelConfig を作成します。 ModelConfig は Python ディクショナリまたは .yaml ファイルです。 たとえば、開発中にディクショナリを使用し、運用環境のデプロイと CI/CD 用の .yaml ファイルに変換できます。 ModelConfig の詳細については、MLflow のドキュメントを参照してください。

ModelConfig の例を次に示します。

llm_parameters:
  max_tokens: 500
  temperature: 0.01
model_serving_endpoint: databricks-dbrx-instruct
vector_search_index: ml.docs.databricks_docs_index
prompt_template: 'You are a hello world bot. Respond with a reply to the user''s
  question that indicates your prompt template came from a YAML file. Your response
  must use the word "YAML" somewhere. User''s question: {question}'
prompt_template_input_vars:
- question

コードから構成を呼び出すには、次のいずれかを使用します。

# Example for loading from a .yml file
config_file = "configs/hello_world_config.yml"
model_config = mlflow.models.ModelConfig(development_config=config_file)

# Example of using a dictionary
config_dict = {
    "prompt_template": "You are a hello world bot. Respond with a reply to the user's question that is fun and interesting to the user. User's question: {question}",
    "prompt_template_input_vars": ["question"],
    "model_serving_endpoint": "databricks-dbrx-instruct",
    "llm_parameters": {"temperature": 0.01, "max_tokens": 500},
}

model_config = mlflow.models.ModelConfig(development_config=config_dict)

# Use model_config.get() to retrieve a parameter value
value = model_config.get('sample_param')

サポートされている入力形式と出力形式

Agent Framework では、MLflow モデルシグネチャを使用して、エージェントの入力スキーマと出力スキーマを定義します。 モザイク AI エージェント フレームワークの機能では、レビュー アプリや AI プレイグラウンドなどの機能を操作するために、入力/出力フィールドの最小セットが必要です。 詳細については、「 エージェントの入力スキーマと出力スキーマを定義するを参照してください。

ノートブックの例

これらのノートブックは、Databricks でチェーン アプリケーションを作成する方法を示す単純な "Hello World" チェーンを作成します。 最初の例では、単純なチェーンを作成します。 2 番目のノートブック例では、開発中にパラメーターを使用してコードの変更を最小限に抑える方法を示します。

単純なチェーン ノートブック

ノートブックを入手

単純なチェーン ドライバー ノートブック

ノートブックを入手

パラメーター化されたチェーン ノートブック

ノートブックを入手

パラメーター化されたチェーン ドライバー ノートブック

ノートブックを入手

次のステップ