よく理解できていなかったので、こちらのAI Playgroundにおけるツール呼び出しエージェントのプロトタイプの機能を試してみます。
どのような機能か
AI Playgroundは、様々なLLMに対するプロンプトエンジニアリングを容易に行うことができる環境です。最近、こちらにエージェントシステムをプロトタイピングする機能が追加されました。
エージェントが呼び出すツールをUnity Catalog配下の関数として定義することで、エージェントシステムから関数を呼び出して、複雑な挙動をさせることが可能になります。
マニュアルはこちら。
全体的な流れは以下のようになります。
- エージェントシステムの設計(どのようなツールを活用してどのような挙動をさせたいのか)
- データの準備
- ツールの実装
- AI Playgroundでのプロトタイピング
- エージェントノートブック、ドライバーノートブックのエクスポート
- ドライバーノートブックを実行してエージェントシステムを構築
今回はエクスポート以降には踏み込みません。別の記事で説明する予定です。
エージェントシステムの設計
RAG(Retrieval Augmented Generation)もエージェントシステムの一種ですが、同じことをやっても詮無いので今回はクッキーの売り上げデータを取り扱うエージェントシステムを組んでみます。今年のData + AIサミットでデモされたものです。
私自身、エージェントシステムは勉強中ですが、以下のようなツールを用いたエージェントが今後増えてくるのではないかと思っています。
- LLMに含まれていないデータに基づく挙動をするエージェント(RAGもこの一種です)
- 外部APIを呼び出し、その結果に基づいた挙動をするエージェント
データの準備
ツールからアクセスするデータを格納するテーブルを作成します。フランチャイズ店舗の情報を持つfranchises
と、トランザクションデータを保持するtransactions
です。
ツールの実装
Databricksでは、SQLあるいはPythonで関数を定義することができますので、柔軟にロジックを組むことができます。
ここでは、SQLを用いた関数を定義します。上で準備したテーブルにアクセスするクエリーを記述します。
都市名からフランチャイズ情報を取得する関数
%sql
CREATE
OR REPLACE FUNCTION takaakiyayoi_catalog.cookie.franchise_by_city (
city_name STRING COMMENT 'フランチャイズが存在する都市',
country_name STRING COMMENT 'フランチャイズが存在する国'
) RETURNS TABLE READS SQL DATA SQL SECURITY DEFINER COMMENT '国、都市にあるフランチャイズを取得' RETURN
SELECT franchiseID, name, size from takaakiyayoi_catalog.cookie.franchises where city=city_name and country=CASE
WHEN country_name IN ('USA', 'America', 'United States') THEN 'US'
ELSE country_name
END order by size desc
特定のフランチャイズの売上データを取得する関数
%sql
CREATE
OR REPLACE FUNCTION takaakiyayoi_catalog.cookie.franchise_sales (
franchise_id INT COMMENT 'bakehouseフランチャイズのID',
start_date STRING COMMENT '販売期間の開始日'
) RETURNS TABLE READS SQL DATA SQL SECURITY DEFINER COMMENT '指定されたフランチャイズで販売された総量と売上合計を取得' RETURN
SELECT SUM(totalPrice) AS total_sales, SUM(quantity) AS total_quantity, product
FROM takaakiyayoi_catalog.cookie.transactions
WHERE franchiseID = franchise_id AND dateTime > start_date GROUP BY product
これで、データとツールの準備ができました。
注意
AI Playgroundで稼働するツールはサーバレスコンピュートを使用します。本記事の執筆時点では、サーバレスコンピュートからインターネットへのアクセスはできないので、外部APIの呼び出しはサポートされていません。通常のクラスターにアタッチしたノートブックからツールを実行した際には外部APIの呼び出しは成功します。
AI Playgroundでのプロトタイピング
AI Playgroundでツールをサポートしているモデルを選択します。
上のステップで作成したツール(関数)を追加します。
これでエージェントの準備ができたので問い合わせをしてみます。
Tokyoで人気のクッキー
すると、Tokyoのフランチャイズを特定するためにfranchise_by_city
を呼び出します。
続いて、Tokyoのフランチャイズの売上データを取得するために、上のステップで取得したフランチャイズIDを用いてfranchise_sales
を呼び出します。
結果として以下を返してくれました。
Based on the response, the top-selling cookie in Tokyo is "Outback Oatmeal" with a total sales of 81 and a total quantity of 27.
モデルを切り替えたり、システムプロンプトを追加することもできます。
ユーザーとのインタラクション、エージェントに期待する挙動をイメージしつつ、ツールの実装、LLMとの連携を組み上げていく流れを容易に試行錯誤することができます。是非ご活用ください!
プロトタイピングの次はプロダクションですが、Databricksではそちらもカバーしています。プロダクションへの移行は次回説明します。
続きはこちらです。