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?

Databricks デモ:Compound AI System and Agent Tools - その1

Last updated at Posted at 2024-09-15

はじめに

株式会社NTTデータ デジタルサクセスソリューション事業部 で Databricks や AWS を推進している nttd-saitouyun です。

DATA + AI Summit 2024 の発表の目玉であった AI Agent に関するデモがリリースされていました。今回はこのデモを動かしてみようと思います。

image.png
Data + AI Summit Keynote Day 1 - Full より)

デモについて

デモは Databricks社が提供しているデモ資材をダウンロドするツールである dbdemos から入手可能です。※dbdemos やその使い方はこちらの記事を参照してください。

image.png

今回の対象のデモは以下のものです。

Compound AI System and Agent Tools
Build and deploy tools to support your AI Systems with Unity Catalog

デモ資材の入手は以下のコマンドを実行することでワークスペース上にダウンロードされます。

%pip install dbdemos
import dbdemos
dbdemos.install('llm-tools-functions', catalog='xxx', schema='xxx')

catalogschema はオプションです。オプションを指定し忘れた場合も config ファイルで後から設定可能です。

Compound AI System and Agent Tools

現時点(2024年9月15日)では「00-AI-function-tools-introduction」というノートブックが1つ提供されていました。

ノートブックの末尾に追加のデモの予告が記載されているので今後増えていくのだと思います。

image.png

00-AI-function-tools-introduction

デモのノートブックを開いてみます。コンテンツは以下の通り英語であるため、翻訳した内容でデモを見ていきます。

image.png

実行環境について

実行環境は、サーバレスコンピュートで実施します。

※デモのインストール時にサーバレスコンピュートでは適切に動作確認できていない旨のメッセージが出ますが、サーバレスでチャレンジします。

image.png


ここより下はデモの内容になります。

組み合わせ可能なAIシステム:当社製品を販売するAIスタイリストスペシャリストの構築
Composable AI systems: Building and AI Stylist Specialist selling our products

デモのシナリオは「AIスタイリスト」です。「明日の面接に向けて何を着ればいい?」と言ったユーザが与えた状況に応じて、ただ一般論に基づいて回答するのではなく、翌日の天気をAPIで取得したり、関連した商品を検索したりしながら、より適した服装を提案するAIを構築していきます

組み合わせ可能なAIシステムとは
What's a composable AI systems

image.png

"Composable AI systems" という表現をこのデモでは使っていますが、"Compound AI Systems"という表現をDatabricksは使うことが多いです。私もこちらに解説を記載していますので参考にしていただければ幸いです。

Databricks Mosaic AIエージェントフレームワークを使用した組み合わせ可能なAIシステムの構築
Building Composable AI Systems with Databricks Mosaic AI agent framework

image.png

AIスタイリストを実現するためには、AIエージェントが利用するツールを定義します。

ツールには、服装を考えるようプロンプトエンジニアリングされたLLMだけでなく、LLMが苦手な計算を行う関数、LLMが知らない情報をAPIやテーブルを検索して取得する関数をいった非AIのツールも含まれます。これらのツールをAIエージェントがタスクに応じて使い分け、より実用的なAIを実現します。

そして、これらのツールは Unity Catalog で管理することができ、データやAIモデルと一緒に、適切にアクセス制御やメタデータ管理することができます。

事前の説明は以上です。ここから本題に入ります。

前準備

必要なパッケージのインストールと初期化スクリプトの実行を準備として行います。
image.png

ツールの作成:Unity Catalog関数の使用
Creating our tools: Using Unity Catalog Functions

image.png

ここからAIエージェントが利用する数々のツールを定義していきます。作り方は特別なものではなく、ユーザー定義関数 (UDF)と同じです。

数学の計算:インチからセンチメートルへの変換

image.png

ご存知の通り、LLMは計算が苦手です。この例のようにセンチ↔︎インチなどの計算を正確に行うために関数を定義します。

image.png

関数の内容はシンプルなスカラーUDFです。スカラーUDFの詳細はこちらから。

もちろん、 SQL以外にもPythonでコーディングすることもでき、以下のようになります。

%sql
CREATE OR REPLACE FUNCTION convert_inch_to_cm_py (size_in_inch FLOAT)
RETURNS FLOAT
LANGUAGE PYTHON
COMMENT 'convert size from inch to cm'
AS $$
  return size_in_inch * 2.54
$$

※Python UDF を Unity Catalog に登録するには、二重ドル記号 ($$) でくくる必要がありますのでご注意ください。詳細はこちら



関数を作成すると Unity Catalog 上に表示されるようになります。ここから関数の詳細を確認したり、権限付与を行ったりすることができます。

image.png

内部データを取得するツールの実行:最新の顧客注文の取得

image.png

2つ目の関数です。初期化スクリプトによって、tools_customers(顧客テーブル)、tools_orders(注文テーブル)が作成されています。この2つのテーブルを使って、ユーザの注文情報を関数で抽出します。

image.png

こちらは戻り値がスカラーではなく、テーブル形式のデータであるユーザー定義テーブル関数です。細かい点は以下のマニュアルを参照してください。

パッと見で処理の内容がわかりにくくなってきたので少し解説します。
まず、参照しているテーブルを確認しておきます。

【tools_customers(顧客テーブル)】
image.png

(続き)
image.png

【tools_orders(注文テーブル)】
image.png

よくあるベーシックなテーブルでした。

ここで、関数の定義で where email=current_user() と条件を指定しいている点に注目してみます。current_user() はプログラムを実行しているユーザのユーザ名を取得する関数です。

image.png

ん?自分のダミーデータなんてあるのか?と思ったので、顧客テーブルを検索してみます。

image.png

ありました。「Dawn May」という名前で email が現在のユーザ名になっているようです。このような処理が初期化スクリプト内で仕込まれているようです。

よって、「Dawn May」の顧客IDである「d8ca793f-7f06-42d3-be1b-929e32fc8bc9」で注文テーブルと結合し、4件の注文データが表示されていました。

プログラムだけだと、どのような処理になっているのか分かりにくいと感じたため、データを見ながら説明してみました。

リアルタイムで外部データセットを取得するPython関数の実行:天気の取得

image.png

3つ目の関数です。Open-Meteo というオープンソースの天気APIを使って外部の情報を取得します

image.png

API の URL は以下の通りです。
https://api.open-meteo.com/v1/forecast?latitude={latitude}&longitude={longitude}&current=temperature_2m,rain&forecast_days=1

調べたところ、API の各パラメーターは以下の通りでした。

  • latitude={latitude} : 関数の引数として渡された緯度を指定
  • longitude={longitude} : 関数の引数として渡された経度を設定
  • current=temperature_2m,rain : 地上から2メートルの温度と降水量を取得値として指定
  • forecast_days=1 : 1日後の予測値を取得するように指定

ただし、初期状態では、デモで値を固定するために#weather = ・・・の部分がコメントアウトされているいます。よって、APIもコールされず、weather変数が定義されないため、値は except句に定義された値が必ず返るようになっています。

ちなみに、(緯度, 経度) = (52.52, 13.41)は なぜかベルリンテレビ塔の座標でした。

image.png

本書執筆時(2024/9/15)でAPIを呼び出してみると、18.2度、降水量0.00でした。

https://api.open-meteo.com/v1/forecast?latitude=52.52&longitude=13.41&current=temperature_2m,rain&forecast_days=1

{"latitude":52.52,"longitude":13.419998,"generationtime_ms":0.0209808349609375,"utc_offset_seconds":0,"timezone":"GMT","timezone_abbreviation":"GMT","elevation":38.0,"current_units":{"time":"iso8601","interval":"seconds","temperature_2m":"°C","rain":"mm"},"current":{"time":"2024-09-15T13:15","interval":900,"temperature_2m":18.2,"rain":0.00}}

特定のプロンプトを持つLLMを呼び出す関数をツールとして作成する

image.png

4つ目の関数です。天気の情報(気温と降水量)とユーザからの指示を受け取って、LLM が出力した推奨される服装に関する情報を提示します。

この関数は内部で特定の専門知識を持った特化型LLMを呼び出しています。今回はプロンプトエンジニアリングしかしていないですが、RAG や Fine-Tuningした LLM を活用することもできます

image.png

Databricks には SQL から LLM を呼び出すai_query関数が用意されています。呼び出す LLM とプロンプトを引き渡すだけです。より具体的な例は他の記事にまとめています。

今回は databricks-meta-llama-3-70b-instruct という Databricks 上でホストされる Meta Llama 3 のモデルを利用しています。databricks-meta-llama-3-1-70b-instructという次のバージョンがすでに利用できるのでこちらに変えてみてもいいかもしれません。

また、エンドポイントを作成すれば、Databricks の外の LLM を呼び出すこともできます。各プラットフォームのサービスを使用する方法は以下の記事を参照いただけばと思います。

ツールとして類似コンテンツを見つけるためのベクトル検索の使用

image.png

5つ目の関数です。4つ目の関数で生成した翌日の天気に適した服装の情報から、ベクトル検索によって商品テーブルを検索し、適切な商品を3つ提示します。が、デモを単純にするためここはモック化されています。

image.png

4つ目の関数と作りはおなじで、ai_query関数を使って LLM にダミーの商品情報を生成させています。

image.png

おわりに

だいぶ長くなってきたので、前編はここまでにしたいと思います。

前編では、AIエージェント(AIスタイリスト)が利用するツール(関数)を定義してきました

ツールは、以下のような非AIのものから、AIを活用する様々なものを定義してきました。

  • LLM が苦手な計算をする関数
  • LLM が知り得ないテーブルの情報や外部の情報をAPIで取得する関数
  • 専門家の LLM にタスクを依頼する関数

ツールの定義はUDFで定義するだけで簡単ですし、ツールの関数は Unity Catalog の配下でガバナンスをかけることができます

後編ではこれらのツールをAIエージェントが活用するところをみていきます!

仲間募集

NTTデータ デザイン&テクノロジーコンサルティング事業本部 では、以下の職種を募集しています。

1. クラウド技術を活用したデータ分析プラットフォームの開発・構築(ITアーキテクト/クラウドエンジニア) クラウド/プラットフォーム技術の知見に基づき、DWH、BI、ETL領域におけるソリューション開発を推進します。

https://enterprise-aiiot.nttdata.com/recruitment/career_sp/cloud_engineer

2. データサイエンス領域(データサイエンティスト/データアナリスト) データ活用/情報処理/AI/BI/統計学などの情報科学を活用し、よりデータサイエンスの観点から、データ分析プロジェクトのリーダーとしてお客様のDX/デジタルサクセスを推進します。

https://enterprise-aiiot.nttdata.com/recruitment/career_sp/datascientist

3.お客様のAI活用の成功を推進するAIサクセスマネージャー DataRobotをはじめとしたAIソリューションやサービスを使って、 お客様のAIプロジェクトを成功させ、ビジネス価値を創出するための活動を実施し、 お客様内でのAI活用を拡大、NTTデータが提供するAIソリューションの利用継続を推進していただく人材を募集しています。

https://nttdata.jposting.net/u/job.phtml?job_code=804

4.DX/デジタルサクセスを推進するデータサイエンティスト《管理職/管理職候補》 データ分析プロジェクトのリーダとして、正確な課題の把握、適切な評価指標の設定、分析計画策定や適切な分析手法や技術の評価・選定といったデータ活用の具現化、高度化を行い分析結果の見える化・お客様の納得感醸成を行うことで、ビジネス成果・価値を出すアクションへとつなげることができるデータサイエンティスト人材を募集しています。

https://nttdata.jposting.net/u/job.phtml?job_code=898

ソリューション紹介

Trusted Data Foundationについて ~データ資産を分析活用するための環境をオールインワンで提供するソリューション~

https://enterprise-aiiot.nttdata.com/tdf/
最新のクラウド技術を採用して弊社が独自に設計したリファレンスアーキテクチャ(Datalake+DWH+AI/BI)を顧客要件に合わせてカスタマイズして提供します。
可視化、機械学習、DeepLearningなどデータ資産を分析活用するための環境がオールインワンで用意されており、これまでとは別次元の量と質のデータを用いてアジリティ高くDX推進を実現できます。

NTTデータとDatabricksについて NTTデータは、お客様企業のデジタル変革・DXの成功に向けて、「databricks」のソリューションの提供に加え、情報活用戦略の立案から、AI技術の活用も含めたアナリティクス、分析基盤構築・運用、分析業務のアウトソースまで、ワンストップの支援を提供いたします。

https://enterprise-aiiot.nttdata.com/service/databricks

TDF-AM(Trusted Data Foundation - Analytics Managed Service)について ~データ活用基盤の段階的な拡張支援(Quick Start) と保守運用のマネジメント(Analytics Managed)をご提供することでお客様のDXを成功に導く、データ活用プラットフォームサービス~

https://enterprise-aiiot.nttdata.com/service/tdf/tdf_am
TDF-AMは、データ活用をQuickに始めることができ、データ活用の成熟度に応じて段階的に環境を拡張します。プラットフォームの保守運用はNTTデータが一括で実施し、お客様は成果創出に専念することが可能です。また、日々最新のテクノロジーをキャッチアップし、常に活用しやすい環境を提供します。なお、ご要望に応じて上流のコンサルティングフェーズからAI/BIなどのデータ活用支援に至るまで、End to Endで課題解決に向けて伴走することも可能です。

NTTデータとSnowflakeについて NTTデータでは、Snowflake Inc.とソリューションパートナー契約を締結し、クラウド・データプラットフォーム「Snowflake」の導入・構築、および活用支援を開始しています。 NTTデータではこれまでも、独自ノウハウに基づき、ビッグデータ・AIなど領域に係る市場競争力のあるさまざまなソリューションパートナーとともにエコシステムを形成し、お客さまのビジネス変革を導いてきました。 Snowflakeは、これら先端テクノロジーとのエコシステムの形成に強みがあり、NTTデータはこれらを組み合わせることでお客さまに最適なインテグレーションをご提供いたします。

https://enterprise-aiiot.nttdata.com/service/snowflake

NTTデータとInformaticaについて データ連携や処理方式を専門領域として10年以上取り組んできたプロ集団であるNTTデータは、データマネジメント領域でグローバルでの高い評価を得ているInformatica社とパートナーシップを結び、サービス強化を推進しています。

https://enterprise-aiiot.nttdata.com/service/informatica

NTTデータとTableauについて ビジュアル分析プラットフォームのTableauと2014年にパートナー契約を締結し、自社の経営ダッシュボード基盤への採用や独自のコンピテンシーセンターの設置などの取り組みを進めてきました。さらに2019年度にはSalesforceとワンストップでのサービスを提供開始するなど、積極的にビジネスを展開しています。

これまでPartner of the Year, Japanを4年連続で受賞しており、2021年にはアジア太平洋地域で最もビジネスに貢献したパートナーとして表彰されました。
また、2020年度からは、Tableauを活用したデータ活用促進のコンサルティングや導入サービスの他、AI活用やデータマネジメント整備など、お客さまの企業全体のデータ活用民主化を成功させるためのノウハウ・方法論を体系化した「デジタルサクセス」プログラムを提供開始しています。

https://enterprise-aiiot.nttdata.com/service/tableau

NTTデータとAlteryxについて Alteryxは、業務ユーザーからIT部門まで誰でも使えるセルフサービス分析プラットフォームです。 Alteryx導入の豊富な実績を持つNTTデータは、最高位にあたるAlteryx Premiumパートナーとしてお客さまをご支援します。

導入時のプロフェッショナル支援など独自メニューを整備し、特定の業種によらない多くのお客さまに、Alteryxを活用したサービスの強化・拡充を提供します。

https://enterprise-aiiot.nttdata.com/service/alteryx

NTTデータとDataRobotについて DataRobotは、包括的なAIライフサイクルプラットフォームです。 NTTデータはDataRobot社と戦略的資本業務提携を行い、経験豊富なデータサイエンティストがAI・データ活用を起点にお客様のビジネスにおける価値創出をご支援します。

https://enterprise-aiiot.nttdata.com/service/datarobot

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?