Databricks Appsでエージェントチャットアプリを構築してみた

### はじめに

[前回の記事](https://qiita.com/yatta3/items/3e625cfcdb2df73b030e)ではDatabricksでマルチエージェントシステムを構築しました。今回は、構築したエージェントをアプリケーションに組み込むため、Databricks Appsを試してみました。

Databricks Appsは、Databricksプラットフォーム上でWebアプリケーションを簡単にデプロイ・運用できるサービスです。今回は、Databricks上のサービングエンドポイント（マネージドLLMやデプロイしたエージェント）を活用したAIチャットボットアプリを、Databricks Appsにデプロイする手順を解説します。

### 今回作成したアプリ
- **AIチャットボットアプリ**：StreamlitベースのチャットUI
- **機能**：
  - サービングエンドポイントとの対話
  - 会話履歴の管理
  - レスポンシブなUI

## Databricks Appsのデプロイ方法

Databricks AppsにはWebUIからデプロイする方法とローカル環境からデプロイする方法があります：

### 1. Databricks WebUI からのデプロイ

Databricks WebUIからは、以下の方法でアプリを作成できます：

#### 方法A：テンプレートからのインストール

**手順：**
1. Databricksワークスペースにログイン
2. 左側メニュー → **「コンピュート」** → **「アプリ」**
3. **「アプリを作成」** ボタンをクリック
4. **「テンプレートからインストール」** のフレームワークを選択：
   - **Streamlit**（今回使用）
   - **Dash**
   - **Flask**
   - **Gradio**
   - **Shiny**
5. 利用可能なテンプレートから選択：
   - **Chatbot**（今回選択）
   - **Data app**
   - **Hello world**
6. アプリの設定：
   - **リソースを設定**: サービングエンドポイントを選択
   - **認証を確認**: 権限は「クエリー可能 (CAN_QUERY)」
   - **メタデータを追加**: アプリ名等を入力
7. **「インストール」** をクリック
8. **「デプロイ」** をクリック

**メリット：**
- ✅ **即座に動作**：テンプレートがそのまま使用可能
- ✅ **ベストプラクティス**：Databricks推奨構成
- ✅ **カスタマイズ可能**：後から修正・拡張可能

![dbrs-apps-qiita_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635931/11a62133-f2dc-41ec-9d28-9f6e35d85fbf.png)
![dbrs-apps-qiita_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635931/63f92b56-9d08-4cff-857d-23edd7fe6820.png)

#### 方法B：カスタムアプリをゼロから作成

**手順：**
1. Databricksワークスペースにログイン
2. 左側メニュー → **「コンピュート」** → **「アプリ」**
3. **「アプリを作成」** ボタンをクリック
4. **「カスタムアプリを作成」** を選択
5. 必要な情報を入力：
   - **アプリ名**: `my-custom-chatbot`
   - **構成 (オプション)**: 必要なリソース（サービングエンドポイント等）を設定
6. **「アプリを作成」** をクリック
7. **「デプロイ」** をクリック
   - **ソースコードのパス**を設定

**メリット：**
- ✅ **完全な制御**：ゼロからの自由な設計
- ✅ **既存コードの活用**：既に開発済みのコードを使用可能
- ✅ **フレームワーク選択**：用途に最適なフレームワークを選択

![dbrs-apps-qiita_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635931/d52e4657-2fd5-4a6b-a579-bbd4751c0244.png)
![dbrs-apps-qiita_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635931/23fd5ec3-0708-414b-b608-c57a903c7afd.png)

---

テンプレートからインストールすることで、シンプルなChatbotが簡単に構築できました。
`/Workspace/Users/<your-username>/databricks_apps`にソースコードが格納されているため、カスタマイズして再デプロイすることも可能です。

![dbrs-apps-qiita_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635931/8e8407ed-9a5a-4263-b652-ec50d95aff60.png)

### 2. ローカル環境からのCLIデプロイ

WebUIからのデプロイは直感的で分かりやすくお薦めですが、ローカル環境（VS Code等）で開発・動作確認してからDatabricks CLIを利用してデプロイする方法もあります。
また、WebUIのテンプレートはGitHubに格納されており、同様に利用できます。

**GitHub テンプレートリポジトリ：**

https://github.com/databricks/app-templates

#### 1. 環境準備

新しいDatabricks CLI（0.20以上）をインストールする必要があります。

**[参考] Databricks CLI インストール手順：**

https://docs.databricks.com/aws/ja/dev-tools/cli/install

##### Windows環境でのDatabricks CLI導入例：wingetを使用

```bash
# Databricks CLIを検索
winget search databricks

# インストール
winget install Databricks.DatabricksCLI

# バージョン確認（0.20以上であることを確認）
databricks --version
```

#### 2. ローカル開発フェーズ

**[参考] Databricks エージェントフレームワーク チャットアプリ：**

https://docs.databricks.com/aws/ja/generative-ai/agent-framework/chat-app

```bash
# 1. テンプレートの取得 (例: Streamlitのchatbotテンプレート)
git clone https://github.com/databricks/app-templates
cd app-templates/streamlit-chatbot-app

# 2. 必要なライブラリのインストール
pip install -r requirements.txt

# 3. Databricks CLI の設定
# ワークスペースの Databricks ホスト URL（https://hostname.cloud.databricks.com）
# 個人用アクセストークンを指定等
# 参考: https://docs.databricks.com/aws/ja/dev-tools/cli/authentication
databricks configure

# 4. 環境変数の設定
# NOTE: Windowsコマンドプロンプトでは set SERVING_ENDPOINT=<your-serving-endpoint-name>
export SERVING_ENDPOINT=<your-serving-endpoint-name>

# 5. アプリケーション起動
streamlit run app.py
```

#### 3. デプロイフェーズ

```bash
# 1. Databricksアプリの作成
databricks apps create --json '{
  "name": "my-agent-chatbot",
  "resources": [
    {
      "name": "serving-endpoint",
      "serving_endpoint": {
        "name": "'"$SERVING_ENDPOINT"'",
        "permission": "CAN_QUERY"
      }
    }
  ]
}'

# 2. ソースコードをDatabricksにアップロード
databricks sync . "/Users/<your-username>/streamlit-chatbot-app"

# 3. アプリをデプロイ
databricks apps deploy my-agent-chatbot --source-code-path "/Workspace/Users/<your-username>/streamlit-chatbot-app"
```

今回はテンプレートをベースにローカル環境（VS Code + uv）でカスタマイズしてデプロイしました。ローカル環境での開発に慣れている方にはお薦めです。

![dbrs-apps-qiita_6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635931/3780ce72-9259-4b22-9d8d-7c02e96672c2.png)

## まとめ

Databricks Appsとエージェントを組み合わせることで、高性能なAIチャットボットを比較的簡単に構築・デプロイできることがわかりました。皆さんもぜひDatabricks Appsを活用して、独自のAIアプリケーションを構築してみてください！