AI エージェント ツールを作成する
重要
この機能はパブリック プレビュー段階にあります。
この記事では、Mosaic AI Agent Framework を使用して AI エージェント用のツールを作成する方法について説明します。 詳細については、「 複合 AI システムと AI エージェントとは」を参照してください。
AI エージェントは、構造化データや非構造化データの取得、コードの実行、リモート サービスとの通信 (メールや Slack メッセージの送信など) など、言語生成以外のアクションを実行するためにツールを使用します。
Mosaic AI Agent Framework を使用してエージェントにツールを提供するには、次の方法を任意に組み合わせて使用できます。
- Unity カタログ関数を使用してツールを作成する: Unity カタログ関数を使用すると、検出、ガバナンス、共有が簡単になります。 Unity カタログ関数は、大規模なデータセットに変換と集計を適用する場合に特に適しています。
- エージェント コードを使用してツールを作成する: この方法は、REST API を呼び出す場合、任意のコードまたはライブラリを使用する場合、または非常に短い待機時間でツールを実行する場合に便利です。 ただし、このアプローチには、Unity カタログ関数によって提供される組み込みの検出可能性とガバナンスがありません。 エージェントを構築するときにこのトレードオフを検討し、最適なアプローチを決定します。
どちらの方法も、カスタム Python コードで記述されたエージェントや、LangGraph などのエージェント作成ライブラリを使用する場合に機能します。
ドキュメントを使用してツール呼び出しを改善する
AI エージェントは、ドキュメントを使用して、提供するツールをいつどのように使用するかを理解します。 そのため、ツールを定義するときは、ツール、パラメーター、および戻り値に関する明確で詳細なドキュメントを必ず追加してください。
Unity カタログ関数の場合は、 COMMENT
を使用してツールを記述します。
要件
- Databricks では、エージェントの開発時に最新バージョンの MLflow Python クライアントをインストールすることをお勧めします。
mlflow
バージョンの要件については、依存リソースの認証に関する記事を参照してください。
Unity カタログ関数を使用してツールを作成する
次の例では、 Unity カタログ関数を使用してエージェント ツールを作成する方法を示します。
Python Executor ツール
この例では、Python コードを実行するツールを作成します。
LLM は、このツールを使用して、ユーザーによって提供または LLM によって記述された Python コードを実行できます。
ノートブックのセルで次のコードを実行します。 %sql
ノートブックマジックを使用して、python_exec
と呼ばれる Unity Catalog 関数を作成します。
%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 the output of the previous tool executions. No such variables, "rows", or "observations" were 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()
$$
テーブル クエリ ツール
この例では、Unity カタログ テーブルから顧客データを照会するツールを作成します。
これは、LLM が架空のcustomer_data
テーブルから構造化データを取得するために使用できる、lookup_customer_info
という Unity カタログ関数を作成します。
SQL エディターで次のコードを実行します。
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;
Unity カタログ ツールをエージェントに割り当てる
Unity カタログ ツールを作成したら、ツールを使用できるようにエージェントに割り当てます。
このセクションでは、AI プレイグラウンドを使用してツール呼び出しエージェントを作成する方法について説明します。
AI プレイグラウンドからツール呼び出しエージェントをエクスポートする
AI Playground を使用して、Unity カタログ ツールを LLM に割り当て、エージェントをテストしてから、ツール呼び出し元エージェントを定義するコードをエクスポートします。
AI Playground を使用してエージェントをエクスポートするには、ワークスペースが次の要件を満たしている必要があります。
- Unity カタログ 有効
- サーバーレス コンピューティング 有効
- トークンごとの支払い基盤モデル または External モデル 有効
Playground で、 Tools が有効になっているモデル 選択します。
Toolsを選択し、ツールの追加をクリックします。
ドロップダウン メニューで、Unity カタログ関数を選択します。
Playground を使用してチャットし、LLM、ツール、システム プロンプトの現在の組み合わせをテストします。 現在のセットアップのしくみを確認するには、バリエーションを試してください。
ツールを追加した後、エージェントを Python ノートブックにエクスポートします。
Export をクリックして、エージェントを定義してデプロイする Python ノートブックを生成します。
エージェント コードをエクスポートすると、ワークスペースに次の 3 つのファイルが保存されます。
agent
ノートブック: LangChain を使用してエージェントを定義する Python コードが含まれています。driver
ノートブック: Mosaic AI エージェント フレームワークを使用して AI エージェントのログ記録、トレース、登録、デプロイを行う Python コードが含まれています。config.yml
: ツール定義など、エージェントに関する構成情報が含まれます。
agent
ノートブックを開き、エージェントを定義する LangChain コードを確認します。 このノートブックを使用して、より多くのツールの定義など、エージェントをプログラムでテストして反復処理します。エージェントの出力に問題がなければ、
driver
ノートブックを実行して、エージェントをログに記録し、モデル サービス エンドポイントにデプロイできます。
エージェント コードを使用してツールを作成する
Unity カタログ関数ではなく、エージェントのコードでツールを作成することもできます。
この方法は、REST API を呼び出す場合、任意のコードまたはライブラリを使用する場合、または待機時間の短いツールを実行する場合に便利です。 ただし、エージェントのコードでツールを定義する場合、Unity カタログ関数によって提供される検出可能性とガバナンスが欠けています。
エージェント コードで定義されているベクター検索取得ツールの例については、「 ベクター検索取得ツールの作成を参照してください。