2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AI Playgroundによるエージェントシステムのプロトタイピング

Last updated at Posted at 2024-10-20

よく理解できていなかったので、こちらのAI Playgroundにおけるツール呼び出しエージェントのプロトタイプの機能を試してみます。

どのような機能か

AI Playgroundは、様々なLLMに対するプロンプトエンジニアリングを容易に行うことができる環境です。最近、こちらにエージェントシステムをプロトタイピングする機能が追加されました。

エージェントが呼び出すツールをUnity Catalog配下の関数として定義することで、エージェントシステムから関数を呼び出して、複雑な挙動をさせることが可能になります。

マニュアルはこちら。

全体的な流れは以下のようになります。

  1. エージェントシステムの設計(どのようなツールを活用してどのような挙動をさせたいのか)
  2. データの準備
  3. ツールの実装
  4. AI Playgroundでのプロトタイピング
  5. エージェントノートブック、ドライバーノートブックのエクスポート
  6. ドライバーノートブックを実行してエージェントシステムを構築

今回はエクスポート以降には踏み込みません。別の記事で説明する予定です。

エージェントシステムの設計

RAG(Retrieval Augmented Generation)もエージェントシステムの一種ですが、同じことをやっても詮無いので今回はクッキーの売り上げデータを取り扱うエージェントシステムを組んでみます。今年のData + AIサミットでデモされたものです。

私自身、エージェントシステムは勉強中ですが、以下のようなツールを用いたエージェントが今後増えてくるのではないかと思っています。

  • LLMに含まれていないデータに基づく挙動をするエージェント(RAGもこの一種です)
  • 外部APIを呼び出し、その結果に基づいた挙動をするエージェント

Screenshot 2024-10-20 at 11.52.19.png

データの準備

ツールからアクセスするデータを格納するテーブルを作成します。フランチャイズ店舗の情報を持つfranchisesと、トランザクションデータを保持するtransactionsです。

Screenshot 2024-10-20 at 11.54.23.png
Screenshot 2024-10-20 at 11.54.57.png

ツールの実装

Databricksでは、SQLあるいはPythonで関数を定義することができますので、柔軟にロジックを組むことができます。

ここでは、SQLを用いた関数を定義します。上で準備したテーブルにアクセスするクエリーを記述します。

都市名からフランチャイズ情報を取得する関数

franchise_by_city
%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

特定のフランチャイズの売上データを取得する関数

franchise_sales
%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

これで、データとツールの準備ができました。

Screenshot 2024-10-20 at 11.57.20.png

注意
AI Playgroundで稼働するツールはサーバレスコンピュートを使用します。本記事の執筆時点では、サーバレスコンピュートからインターネットへのアクセスはできないので、外部APIの呼び出しはサポートされていません。通常のクラスターにアタッチしたノートブックからツールを実行した際には外部APIの呼び出しは成功します。

AI Playgroundでのプロトタイピング

AI Playgroundでツールをサポートしているモデルを選択します。

Screenshot 2024-10-20 at 11.58.25.png

上のステップで作成したツール(関数)を追加します。

Screenshot 2024-10-20 at 11.58.51.png
Screenshot 2024-10-20 at 11.59.24.png

これでエージェントの準備ができたので問い合わせをしてみます。

Tokyoで人気のクッキー

すると、Tokyoのフランチャイズを特定するためにfranchise_by_cityを呼び出します。

Screenshot 2024-10-20 at 12.00.55.png

続いて、Tokyoのフランチャイズの売上データを取得するために、上のステップで取得したフランチャイズIDを用いてfranchise_salesを呼び出します。

Screenshot 2024-10-20 at 12.02.12.png

結果として以下を返してくれました。

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.

モデルを切り替えたり、システムプロンプトを追加することもできます。

Screenshot 2024-10-20 at 12.05.54.png
Screenshot 2024-10-20 at 12.05.59.png

ユーザーとのインタラクション、エージェントに期待する挙動をイメージしつつ、ツールの実装、LLMとの連携を組み上げていく流れを容易に試行錯誤することができます。是非ご活用ください!

プロトタイピングの次はプロダクションですが、Databricksではそちらもカバーしています。プロダクションへの移行は次回説明します。

続きはこちらです。

はじめてのDatabricks

はじめてのDatabricks

Databricks無料トライアル

Databricks無料トライアル

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?