16分でDatabricksエクスプレスセットアップからGenie、ノートブック、AIエージェントを試す

以前、エクスプレスセットアップについて記事を書きました。

https://qiita.com/taka_yayoi/items/d180c3e65da26befe9de

こちらのセットアップでは、お客様の方でAWSアカウントを作成することなしに、クイックにDatabricksを使い始めることができます。

こちらからセットアップをスタートできます。

https://www.databricks.com/jp/try-databricks

**クイックセットアップ**を選択します。

![Screenshot 2025-04-24 at 17.52.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/1047e327-7f3c-49ef-810a-23587caa3ba3.png)


そして、今日になってワークスペースのトップページにチュートリアルが追加されていることに気づきました。

![Screenshot 2025-04-24 at 17.46.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/88df3b78-bbf5-47d3-9aad-a6d87121cbb9.png)

以下の3つです。

1. **自然言語を用いてデータと会話する** 新たな洞察を発見、可視化するために、架空のパン屋からの売上、在庫データに関して自然言語でAI/BI Genieに質問します。
1. **AIアシストノートブックでデータを探索** クエリーを生成し、結果を可視化するために、サンプルデータの分析方法と人工知能(AI)の使い方を学びます。
1. **初めてのAIエージェントの構築** ガバナンスの効いた洞察のためにUnity Catalogで関数を作成、登録し、アクション可能な洞察を生成するためにチャットベースのAIを構築します。

それぞれ試していきます。

# 自然言語を用いてデータと会話する

Genieにアクセスすると、サンプルのGenieスペース**Bakehouse Sales Starter Space**が作成されています。

![Screenshot 2025-04-24 at 17.29.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/ca89851b-8f9d-4217-927a-2188ce3cf289.png)

ウェアハウスを開始して、問い合わせしてみます。

![Screenshot 2025-04-24 at 17.29.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/5040293d-5bf3-4e90-aab5-a24c7236a8d4.png)
![Screenshot 2025-04-24 at 17.29.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/d72172ee-fe40-4bb8-9bd2-e10c0ff87024.png)

どのようなデータかを聞きます。

![Screenshot 2025-04-24 at 17.30.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/e879695b-7d83-4875-8f52-6d3cb03a832a.png)

2024/5の収益を聞いてみます。

![Screenshot 2025-04-24 at 17.31.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/41dcc02c-97f0-4d4f-8671-8a9a5c9d2d6c.png)

フランチャイズごとの収益を聞いてみます。

![Screenshot 2025-04-24 at 17.31.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/8062f16c-9127-4aba-a832-dbf1ac14d9ba.png)

セットアップしてからここまでで**約4分**です。

# AIアシストノートブックでデータを探索

ノートブックが開きます。英語ですが、![Screenshot 2025-04-24 at 17.55.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/96a22d28-4618-4140-992d-0b6bcbaa435a.png)ボタンをクリックしてアシスタントを呼び出します。**翻訳**と指示すれば日本語になります。

![Screenshot 2025-04-24 at 17.32.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/295a4496-1ece-4c9d-8db4-65d4456d2e90.png)

## Databricksノートブックへようこそ

ノートブックは、Databricksの主要なコード作成ツールです。これを使って、シンプルな探索的データ分析からMLモデルのトレーニング、複数段階のデータパイプラインの構築まで、何でも行うことができます。

ベイクハウスのデータを調査して、売上を分析してみましょう！

### ステップ1: 始めましょう

ノートブックセルでコードを実行するには、コードを入力して、セルの左上にある実行ボタンをクリックするか、`Cmd + Enter`を使用します。
</br>
</br>
<img src="https://docs.databricks.com/en/_images/cell-run-new.png">

提供されたステートメントを実行してみてください: `print("Let's execute some Python code!")`

```py
print("Let's execute some Python code!")
```
```
Let's execute some Python code!
```
#### コマンドパレットを試してみましょう

`[Cmd + Shift + P]` キーボードショートカットを使用して、コマンドパレットを開き、新しいセルの挿入、結果の並列表示などの主要なノートブックアクションを実行します。

これを使ってセルを挿入してみましょう。

<img src="https://docs.databricks.com/en/_images/command-palette.gif" width=500>

#### ノートブックはマルチランゲージのオーサリング体験です

DatabricksではPythonだけでなく、SQLやMarkdownを使用してノートブックにコードを書いて実行することができます。

##### 右上のドロップダウンを使用して言語を変更してみましょう。

- コマンドパレットを使用して現在のセルの下に新しいセルを挿入します。
- 言語スイッチャーを使用してその言語をSQLに変更します。セルの上部に`%sql`が表示されることに注目してください。これは[マジックコマンド](https://docs.databricks.com/ja/notebooks/notebooks-code.html#mix-languages)と呼ばれます。
- `select "hello world";`と入力して実行ボタンを押します。

```sql
%sql
select "hello world";
```
![Screenshot 2025-04-24 at 17.57.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/88421725-9dba-4324-8788-e19bdf39269d.png)

### ステップ 3: データの探索と分析
私たちのベーカリーは複数の国でフランチャイズを展開しており、さまざまな製品を提供しています。

まず、Pythonを使用してサンプルデータをクエリし、最も人気のある製品を特定します。

### ステップ 2: サンプルデータにアクセスする

この演習では、ベーカリーフランチャイズデータをシミュレートしたsamples.bakehouseに保存されているBakehouseデータセットを使用します。まず、`samples.bakehouse.sales_transactions`テーブルを表示します。

ノートブックの左側で、カタログビューにアクセスしてカタログ、スキーマ、およびテーブルを参照します。

`sales_transactions`テーブルを見つけるには、左側のスキーマブラウザを開き、![](https://docs.databricks.com/en/_images/notebook-data-icon.png) をクリックして**Samples**に移動し、**bakehouse**スキーマを選択して**sales_transactions**テーブルを見つけ、テーブルの横にあるケバブメニュー <img src="https://docs.databricks.com/en/_images/kebab-menu.png"> をクリックして**新しいセルでプレビュー**を選択します。

![Screenshot 2025-04-24 at 17.58.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/4f34fde1-bb1b-482b-ae31-e6ba2d301043.png)
![Screenshot 2025-04-24 at 17.59.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/712fabfa-566c-4ac2-8c67-170338e6a092.png)

### ステップ 3: データの探索と分析
私たちのベーカリーは複数の国でフランチャイズを展開しており、さまざまな製品を提供しています。

まず、Pythonを使用してサンプルデータをクエリし、最も人気のある製品を特定します。

#### 最も人気の製品

**コメントを日本語に**でコメントも翻訳してもらいます。

![Screenshot 2025-04-24 at 17.35.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/9da17651-5afb-4daa-b440-9c16da628785.png)


```py
# サンプルのベイクハウスの取引とフランチャイズのデータセットを読み込み、PySpark DataFrameにロードする。
df_transactions = spark.read.table('samples.bakehouse.sales_transactions')
df_franchises = spark.read.table('samples.bakehouse.sales_franchises')

# PySpark DataFrameをPandas DataFrameに変換する
pdf_transactions = df_transactions.toPandas()
pdf_franchises = df_franchises.toPandas()

# 最も多くのユニットが売れた製品はどれか？
top_product = (pdf_transactions.groupby('product')['quantity']
          .sum()
          .reset_index()
          .sort_values(by='quantity', ascending=False)
         )
        
display(top_product)
```
|product|quantity|
|---|---|
|Golden Gate Ginger|3865|
|Outback Oatmeal|3733|
|Austin Almond Biscotti|3716|
|Tokyo Tidbits|3662|
|Pearly Pies|3595|
|Orchard Oasis|3586|

**ゴールデンゲートジンジャー**は当店のベストセラークッキーです！

その販売で最も業績の良い都市を特定するために、`transactions`テーブルと`franchises`テーブルを結合します。これにより、どの都市がゴールデンゲートジンジャーの販売数が最も多いかを分析できます。

#### franchisesとtransactionsテーブルの結合

```py
## ゴールデンゲートジンジャーのユニットを最も多く販売した都市
top_city = (pdf_franchises.merge(pdf_transactions[pdf_transactions['product'] == 'Golden Gate Ginger'], 
                            on='franchiseID', 
                            how='right')
            .groupby('city')['quantity']
            .sum()
            .reset_index()
            .sort_values(by='quantity', ascending=False)
            .rename(columns={'quantity': 'units'})
         )

display(top_city)
```
|city|units|
|---|---|
|Rome|474|
|Stockholm|316|
|Sydney|184|
|San Francisco|116|
|Kanazawa|93|
|Kyoto|92|
|Osaka|92|
|Chicago|90|
|Washington D.C.|83|
|Nashville|83|
|Boston|81|
|Los Angeles|81|
|Chiba|80|
|Nagoya|79|
|Aomori|79|
|Las Vegas|78|
|Okayama|78|
|Seattle|77|
|Gold Coast|75|
|Berlin|75|
|Kobe|74|
|Austin|74|
|Paris|73|
|Philadelphia|72|
|Adelaide|70|
|Niigata|68|
|Vancouver|64|
|Portland|64|
|Matsuyama|64|
|Melbourne|63|
|Kagoshima|63|
|Honolulu|62|
|Miami|62|
|Amsterdam|61|
|Suita|60|
|Denver|59|
|Hiratsuka|51|
|Brisbane|50|
|New Orleans|49|
|Kumamoto|46|
|Fukuoka|45|
|Sendai|40|
|Tokyo|40|
|Perth|37|
|Hiroshima|29|
|Naha|10|
|Sapporo|9|

### ステップ 4: 結果テーブルの検索とフィルタリング

**結果の並べ替え:**
上の結果テーブルで列名にカーソルを合わせ、表示される矢印アイコンをクリックしてその列の値で並べ替えます。
</br>
<img src="https://docs.databricks.com/en/_images/result-table-sort.png" width=350>
</br>

- 上の結果テーブルを昇順に並べ替えて、ゴールデンゲートジンジャークッキーの販売数が最も少ない都市を見つけてみてください。
</br>
</br>

**結果のフィルタリング:**
フィルタを作成するには、セル結果の右上にある <img src="https://docs.databricks.com/en/_images/filter-icon.png"> をクリックします。表示されるダイアログで、フィルタリングする列と適用するフィルタルールおよび値を選択します。
- `units > 100` と入力して、ゴールデンゲートジンジャーを100単位以上販売しているすべての都市をフィルタリングしてみてください。

### ステップ 5: データの可視化

***全店舗におけるゴールデンゲートジンジャーの週間販売***を可視化しましょう。

- 下のセルを実行してゴールデンゲートジンジャーの販売データを表示します。
- 可視化を作成するには、結果の上部にある **+** ボタンをクリックし、可視化ビルダーの手順に従います。
- 好みのチャートタイプを選択し、チャートの値を設定して可視化を完成させます。

<img src="https://docs.databricks.com/en/_images/new-visualization-menu.png" width=600>

- 下の結果セクションでゴールデンゲートジンジャーの販売テーブルをクリックして、サンプルの可視化を表示します。

```sql
%sql
-- すべての場所で毎週どれだけのGolden Gate Gingerが販売されているか？
SELECT
f.name as franchise_name, 
date_trunc('week',datetime) as week, 
sum(quantity) as quantity
FROM samples.bakehouse.sales_transactions t join samples.bakehouse.sales_franchises f on t.franchiseID = f.franchiseID
WHERE product = 'Golden Gate Ginger' 
GROUP BY 1,2

-- 結果セクションのGolden Gate Ginger Salesタブをクリック
```
![visualization.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/a044ce55-3703-4aea-a8e4-b443d7b53b39.png)

### ステップ 6: コード提案のためのDatabricks Assistantの使用
ノートブックには、コンテキストに応じた[Databricks Assistant](https://docs.databricks.com/ja/notebooks/use-databricks-assistant.html)が装備されており、自然言語を使用してコードの生成、説明、および修正を支援します。
アシスタントを使用するには、新しいセルを作成し、`CMD+I`をクリックするか、新しいセルの右上にある<img src="https://docs.databricks.com/en/_images/help-assistant-icon.png">をクリックします。

以下のセルにアシスタントにコード提案を求めるプロンプトを入力します。以下はサンプルプロンプトです:
- _ゴールデンゲートジンジャーの総販売単位を表示するPythonコード。_

**生成**をクリックするか、プロンプトで**Enter**を押して、アシスタントがプロンプトに答えるコードを提案するのを見てみましょう。提案されたコードを保存するには「承認」をクリックし、セルを実行して結果を表示します！

![Screenshot 2025-04-24 at 18.03.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/03ba4af5-24cc-4af3-87be-95f16ea83fa4.png)
![Screenshot 2025-04-24 at 18.03.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/eb35935c-a06f-478e-a2ca-1a47a88d038c.png)

#### AIアシスタントはエラー修正も支援します
以下のクエリを実行します。エラーが発生すると、**[クイックフィックス](https://docs.databricks.com/ja/notebooks/use-databricks-assistant.html)** が基本的な問題に対する解決策を自動的に提案します。これらの問題は単一行の変更で解決できます。
**承認して実行**をクリックして修正を適用し、コードの実行を続けましょう。

</br>
<img src="https://docs.databricks.com/en/_images/assistant-quick-fix.png" width=500>

![Screenshot 2025-04-24 at 18.04.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/c1748e8a-daee-4fe6-9d42-d7709cb3e767.png)
![Screenshot 2025-04-24 at 18.04.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/217e66e2-0b13-4beb-bfa3-31cb449f86c8.png)

セットアップしてからここまでで**約9分**です。途中で翻訳もしています。

# 初めてのAIエージェントの構築

## AI駆動のデータインテリジェンスでスマートなクッキーフランチャイズを実現

このデモへようこそ。ここでは、クッキーフランチャイズビジネス向けに強力なAIエージェントを構築します。このエージェントは、フランチャイズオーナーが顧客データを分析し、ターゲットを絞ったマーケティングキャンペーンを作成し、データ駆動の販売戦略を開発して運営を改善するための支援を目的としています。

データインテリジェンスを使用することで、フランチャイズはトップセラー商品を理解し、実際の販売データに基づいたキャンペーンを作成することができます。

このノートブックでは、Unity Catalogでシンプルな関数を作成および登録し、インサイトへのガバナンスされたアクセスを提供する方法を案内します。その後、これらの関数を使用してチャットベースのAIを構築し、フランチャイズがよりスマートでデータ駆動のキャンペーンを開発できるようにします。

以下の内容をカバーします：

- Unity CatalogでのSQL関数の作成と登録
- Langchainを使用してこれらの関数をツールとして統合
- これらのツールを実行し、複雑な質問に取り組むAIエージェントの構築

```py
%pip install -q langchain-community==0.2.16 langchain-openai==0.1.19 mlflow==2.15.1 databricks-agents==0.5.0 langchain==0.2.16
%restart_python
```

## ステップ1: Unity Catalogでの関数/ツールの作成

次の2つの関数を作成します：
- 都市名に基づいてIDを取得するシンプルなクエリ
- 指定されたIDの売上データを返す集計クエリ

### Franchise by City関数の作成

```sql
%sql
-- まず、既に存在しないことを確認します
DROP FUNCTION IF EXISTS workspace.default.franchise_by_city;
-- 最初の関数を作成します。これは都市名を入力として受け取り、その都市にあるフランチャイズのテーブルを返します。
-- 後でエージェントをガイドするために、入力パラメータにコメントを追加しました。
CREATE OR REPLACE FUNCTION
workspace.default.franchise_by_city(
  city_name STRING COMMENT '検索する都市'
)
returns table(franchiseID BIGINT, name STRING, size STRING)
return
(SELECT franchiseID, name, size from samples.bakehouse.sales_franchises where city=city_name 
     order by size desc)
```

### Franchise by City関数のテスト

```sql
%sql
-- 先ほど作成した関数をテストします
SELECT * from workspace.default.franchise_by_city('Seattle')
```
|franchiseID|name|size|
|---|---|---|
|3000038|Dough Delights|XXL|
|3000014|Sweet Temptations|L|

### Sales関数の作成

```sql
%sql
-- 再度存在するか確認します
DROP FUNCTION IF EXISTS workspace.default.franchise_sales;
-- この関数はIDを入力として受け取り、今回は集計を行い、そのfranchise_idの売上を返します。
CREATE OR REPLACE FUNCTION
workspace.default.franchise_sales (
  franchise_id BIGINT COMMENT '検索するフランチャイズのID'
)
returns table(total_sales BIGINT, total_quantity BIGINT, product STRING)
return
(SELECT SUM(totalPrice) AS total_sales, SUM(quantity) AS total_quantity, product 
FROM samples.bakehouse.sales_transactions 
WHERE franchiseID = franchise_id GROUP BY product)
```

### Sales関数のテスト

```sql
%sql
-- sales関数が機能するか確認します - 前のクエリからfranchise_idを使用します
SELECT * FROM workspace.default.franchise_sales(3000038)
```
|total_sales|total_quantity|product|
|---|---|---|
|138|46|Pearly Pies|
|348|116|Outback Oatmeal|
|108|36|Austin Almond Biscotti|
|108|36|Orchard Oasis|
|51|17|Tokyo Tidbits|
|189|63|Golden Gate Ginger|

これらの関数は、画面右の**カタログ**からアクセスできるカタログエクスプローラで確認できます。

![Screenshot 2025-04-24 at 19.09.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/e93f5a7b-9cd2-45cd-a0b7-3aba6294296d.png)


```py
import mlflow
import langchain

# エージェントの実行中に何が起こるかを理解するためにこれを有効にします
mlflow.langchain.autolog(disable=False)
```

## ステップ2: エージェントの作成

このステップでは、エージェントの3つの重要な部分を定義します：
- エージェントが使用するツール
- エージェントの「頭脳」として機能するLLM
- エージェントのタスクのガイドラインを定義するシステムプロンプト

```py
from langchain_community.tools.databricks import UCFunctionToolkit
from databricks.sdk import WorkspaceClient
import pandas as pd
import time

w = WorkspaceClient()

def get_shared_warehouse():
    w = WorkspaceClient()
    warehouses = w.warehouses.list()
    for wh in warehouses:
        if wh.name == "Serverless Starter Warehouse":
            if wh.num_clusters == 0:
                w.warehouses.start(wh.id)
                time.sleep(5)
                return wh
            else:
                return wh 
    raise Exception("Couldn't find any Warehouse to use. Please start the serverless SQL Warehouse for this code to run.")
    
wh_id = get_shared_warehouse().id

def get_tools():
    return (
        UCFunctionToolkit(warehouse_id=wh_id)
        .include("workspace.default.*")
        .get_tools())
```

```py
from langchain_community.chat_models.databricks import ChatDatabricks

# llama 3.1を使用します。これはツール対応であり、非常に優れています。温度を0に保ち、より決定論的にします。
llm = ChatDatabricks(endpoint="databricks-meta-llama-3-3-70b-instruct",
    temperature=0.0,
    streaming=False)
```

**コメントとリテラルを日本語に**で、コメントに加えて文字列定数も翻訳します。

![Screenshot 2025-04-24 at 17.42.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/05d98a9f-edde-428a-94a0-a7e9a1c4423a.png)


```py
from langchain_core.prompts import ChatPromptTemplate
from langchain_community.chat_models import ChatDatabricks

# これはエージェントのシステムプロンプトを定義します。ここで、期待することを伝え、特定の関数を使用するように指示できます。

def get_prompt(history = [], prompt = None):
    if not prompt:
            prompt = """あなたはクッキーストアを監督するグローバル企業の役に立つアシスタントです。あなたの任務は、店舗オーナーが製品と販売指標について理解するのを助けることです。次のように関数を実行する能力があります:

            franchise_by_city関数を使用して、指定された都市名のfranchiseIDを取得します。

            franchise_sales関数を使用して、指定されたfranchiseIDのクッキー販売を取得します。これは各franchiseIDに対して実行する必要があります。ユーザーに他の店舗を見たいかどうかを尋ねず、すべてのfranchiseIDに対して実行してください。

    各ステップで関数を呼び出し、結果が取得されたことを確認してから次のステップに進むようにしてください。ツールについてユーザーに言及しないでください。ユーザーが尋ねていることだけに答えてください。"""
    return ChatPromptTemplate.from_messages([
            ("system", prompt),
            ("human", "{messages}"),
            ("placeholder", "{agent_scratchpad}"),
    ])
```

```py
from langchain.agents import AgentExecutor, create_openai_tools_agent, Tool, load_tools

prompt = get_prompt()
tools = get_tools()
agent = create_openai_tools_agent(llm, tools, prompt)

# ここで定義された要素を収集し、それらを組み合わせてエージェントを作成します
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
```

```py
from operator import itemgetter
from langchain.schema.runnable import RunnableLambda
from langchain_core.output_parsers import StrOutputParser

# 入力（messages）をエージェントに渡し、出力（output）を文字列として収集する非常に基本的なチェーン
agent_str = ({ "messages": itemgetter("messages")} | agent_executor | itemgetter("output") | StrOutputParser() )
```

```py
# 複合AIエージェントにInstagramの投稿を生成させましょう。これには以下が必要です:
#     1. シアトルにある店舗を調べる
#     2. 売上データを使用してその店舗で最も売れているクッキーを調べる

answer=agent_str.invoke({"messages": "シアトルの店舗で最も売れているクッキーは何ですか？"})
```
```


> Entering new AgentExecutor chain...

Invoking: `workspace__default__franchise_by_city` with `{'city_name': 'Seattle'}`


{"format": "CSV", "value": "franchiseID,name,size\n3000038,Dough Delights,XXL\n3000014,Sweet Temptations,L\n", "truncated": false}
Invoking: `workspace__default__franchise_sales` with `{'franchise_id': 3000038}`


{"format": "CSV", "value": "total_sales,total_quantity,product\n108,36,Austin Almond Biscotti\n138,46,Pearly Pies\n189,63,Golden Gate Ginger\n348,116,Outback Oatmeal\n51,17,Tokyo Tidbits\n108,36,Orchard Oasis\n", "truncated": false}
Invoking: `workspace__default__franchise_sales` with `{'franchise_id': 3000014}`


{"format": "CSV", "value": "total_sales,total_quantity,product\n27,9,Austin Almond Biscotti\n42,14,Pearly Pies\n42,14,Golden Gate Ginger\n48,16,Outback Oatmeal\n36,12,Tokyo Tidbits\n30,10,Orchard Oasis\n", "truncated": false}シアトルの店舗で最も売れているクッキーは、Dough Delights（franchise ID: 3000038）で販売されているOutback Oatmealクッキーです。販売数量は116個、総売上は348です。Sweet Temptations（franchise ID: 3000014）では、Outback Oatmealクッキーが最も売れており、販売数量は16個、総売上は48です。

> Finished chain.
```

> "シアトルの店舗で最も売れているクッキーは、Dough Delights（franchise ID: 3000038）で販売されているOutback Oatmealクッキーです。販売数量は116個、総売上は348です。Sweet Temptations（franchise ID: 3000014）では、Outback Oatmealクッキーが最も売れており、販売数量は16個、総売上は48です。"

![Screenshot 2025-04-24 at 18.10.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/f8b1eadf-b995-490a-a85b-32b18cfcda2c.png)

## もっと知りたいですか？

- アクション中の完全なデモを[こちら](https://www.youtube.com/watch?v=UfbyzK488Hk&t=3501s)でご覧ください。
- 次のステップに進んで、コンテキストの深みを加えた[RAGベースのチャットボット](https://www.databricks.com/resources/demos/tutorials/data-science-and-ai/lakehouse-ai-deploy-your-llm-chatbot?itm_data=demo_center)を構築しましょう！

セットアップしてからここまでで**約16分**です。途中で翻訳もしています。

なお、ここで定義したツールは、[AI Playground](https://docs.databricks.com/aws/ja/large-language-models/ai-playground)でも動作確認することができます。

![Screenshot 2025-04-24 at 18.13.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/6441de3f-e5af-4196-985b-56bc44e9cf7b.png)
![Screenshot 2025-04-24 at 18.14.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/9201f8ff-cbee-45d8-be54-ed204119cfd2.png)
![Screenshot 2025-04-24 at 18.14.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/d7302de6-d358-4890-aab2-c3977c275dfc.png)


# まとめ

ここまでで[**費用は一円もかかっていません**](https://docs.databricks.com/aws/ja/getting-started/express-setup)。Genie、ノートブック、AIエージェントを是非お試しください！

### はじめてのDatabricks

[はじめてのDatabricks](https://qiita.com/taka_yayoi/items/8dc72d083edb879a5e5d)

### Databricks無料トライアル

[Databricks無料トライアル](https://databricks.com/jp/try-databricks)