社内で開発されたAIデモアプリケーションを効率的に共有・管理するためのWebアプリケーションです。
📚 利用マニュアル
AI Demo Hubは、Databricks環境で動作するGradioベースのWebアプリケーションです。社内のAI・MLプロジェクトのデモを一元管理し、チーム間での知識共有を促進します。
- 📋 デモ一覧表示: 登録されたデモの検索・閲覧
- ➕ 新規デモ登録: AI自動生成機能付きの簡単登録
- ✏️ デモ情報管理: 既存デモの編集・削除
- 🤖 セマンティック検索: RAGシステムによる自然言語検索
- 👥 ユーザー管理: 作成者・投稿者の自動識別
- 🔒 アクセス制御: 社内認証システムとの連携
- Cursor - AI駆動型統合開発環境
- Databricks MCP - Unity Catalog連携機能
- uv - 高速Pythonパッケージマネージャー
- Gradio 5.37.0 - Web UI フレームワーク
- Markdown - コンテンツレンダリング
- Pandas - データ表示
- Python 3.10+ - メインプログラミング言語
- Databricks SQL Statement REST API - データベース接続
- Databricks SDK - LLM統合 (Claude-3-7-sonnet)
- OpenAI ChatCompletion - RAGシステム連携
- Databricks Apps - アプリケーションホスティング
- Unity Catalog - データガバナンス
- SQL Warehouse - データ処理エンジン
- Python 3.10以上
- uv パッケージマネージャー
- Cursor - 開発環境(推奨)
- Databricks CLI - デプロイ用
- Databricksワークスペースへのアクセス
- Unity Catalogの有効化
git clone https://github.com/hiouchiy/ai_demo_hub.git
cd ai_demo_hubCursor(推奨開発環境)でDatabricks MCP機能を使用するために、以下の設定を行います:
- Cursorのワークスペース設定ファイル(
.cursor/mcp.json)を作成:
{
"mcpServers": {
"uc-function-mcp": {
"type": "streamable-http",
"url": "https://YOUR_WORKSPACE.azuredatabricks.net/api/2.0/mcp/functions/CATALOG/SCHEMA",
"headers": {
"Authorization": "Bearer DATABRICKS_TOKEN"
},
"note": "Databricks UC function for searching delta tables in the Databricks workspace"
}
}
}
⚠️ YOUR_WORKSPACEを実際のワークスペース名に、DATABRICKS_TOKENを実際のトークンに置き換えてください。
# Homebrewを使用(推奨)
brew install uv
# または、curl(Homebrewがない場合)
curl -LsSf https://astral.sh/uv/install.sh | sh# pip経由でのインストール
pip install uv
# または、curl(Linux/macOS)
curl -LsSf https://astral.sh/uv/install.sh | shuv --version# uvを使用してパッケージをインストール
uv pip install -r requirements.txt.envファイルを作成し、以下の環境変数を設定:
# .envファイルをenv.exampleからコピー
cp env.example .env.envファイルを編集:
# Databricks接続情報
DATABRICKS_HOST=your-workspace.cloud.databricks.com
DATABRICKS_TOKEN=your-databricks-token
DATABRICKS_WAREHOUSE_ID=your-warehouse-id
# RAGエンドポイント
RAG_ENDPOINT=https://your-workspace.cloud.databricks.com/serving-endpoints/YOUR_RAG_ENDPOINT_NAME/invocationsUnity Catalogに以下のテーブルを作成:
CREATE TABLE hiroshi.ai_demo_hub.demos (
demo_id BIGINT GENERATED ALWAYS AS IDENTITY,
title STRING NOT NULL,
summary STRING,
description_md STRING NOT NULL,
owner_emp_id STRING NOT NULL,
creator_emp_id STRING,
created_at TIMESTAMP,
updated_at TIMESTAMP,
status STRING NOT NULL,
demo_url STRING NOT NULL,
repo_url STRING,
products ARRAY<STRING>,
confidentiality STRING,
remarks STRING,
all_info_md STRING
);📝 詳細な手順: Create Table.ipynbを参照
DATABRICKS_TOKEN=YOUR_TOKEN RAG_ENDPOINT=https://YOUR_HOST/serving-endpoints/YOUR_ENDPOINT_NAME/invocations DATABRICKS_WAREHOUSE_ID=YOUR_DW_ID DATABRICKS_HOST=YOUR_HOST python app.pyブラウザで http://localhost:7860 にアクセスしてアプリケーションを利用できます。
| 列名 | 型 | 説明 |
|---|---|---|
demo_id |
BIGINT | 自動生成される一意識別子 |
title |
STRING | デモのタイトル(必須) |
summary |
STRING | デモの要約 |
description_md |
STRING | 詳細説明(Markdown対応、必須) |
owner_emp_id |
STRING | 代表投稿者のメールアドレス(必須) |
creator_emp_id |
STRING | デモ作成者のメールアドレス |
created_at |
TIMESTAMP | 作成日時(自動設定) |
updated_at |
TIMESTAMP | 更新日時(自動設定) |
status |
STRING | ステータス(draft/published/archived) |
demo_url |
STRING | デモのURL(必須) |
repo_url |
STRING | リポジトリのURL |
products |
ARRAY | 利用Databricks製品 |
confidentiality |
STRING | 機密性(internal/confidential/public) |
remarks |
STRING | 備考 |
all_info_md |
STRING | 自動生成される全情報(Markdown) |
| 変数名 | 必須 | 説明 |
|---|---|---|
DATABRICKS_HOST |
✅ | DatabricksワークスペースのURL |
DATABRICKS_TOKEN |
✅ | Personal Access Token |
DATABRICKS_WAREHOUSE_ID |
✅ | SQLウェアハウスのID |
RAG_ENDPOINT |
✅ | セマンティック検索用RAGエンドポイント |
アプリケーションは以下のヘッダーから現在のユーザー情報を取得します:
x-forwarded-emailx-forwarded-userx-forwarded-preferred-username
ローカル開発時は unknown@databricks.com がデフォルト値として使用されます。
Databricks Claude-3-7-sonnetモデルを使用して:
- タイトル生成: 詳細説明からキャッチーなタイトルを自動生成
- 要約生成: 詳細説明から適切な要約を自動生成
- 文章清書: ラフなメモをプロフェッショナルな文章に変換
RAGシステムと連携して:
- 自然言語での検索が可能
- 会話履歴を保持した対話形式
- Markdown形式での結果表示
- URL自動リンク化
ai_demo_hub/
├── app.py # メインアプリケーション
├── api_database_manager.py # データベース操作
├── run_app.py # 本番起動スクリプト
├── start_app.sh # シェルスクリプト
├── requirements.txt # Python依存関係
├── env.example # 環境変数テンプレート
├── USER_GUIDE.md # 利用者向けマニュアル
├── Create Table.ipynb # データベースセットアップ
└── test/ # テストスクリプト
├── debug_db.py
├── query_test.py
└── ...
本番環境ではDatabricks Appsを使用してデプロイします。
# Databricks CLIのインストール(pipx推奨)
pipx install databricks-cli
# または pip
pip install databricks-cli
# 認証設定
databricks configure --token# ワークスペースにコードを同期(ウォッチモード)
databricks sync --watch . /Workspace/Users/hiroshi.ouchiyama@databricks.com/japan-ai-demo-hub💡
--watchオプションにより、ローカルファイルの変更が自動的にワークスペースに同期されます。
# Databricks Appsとしてデプロイ
databricks apps deploy japan-ai-demo-hub --source-code-path /Workspace/Users/hiroshi.ouchiyama@databricks.com/japan-ai-demo-hubDatabricksワークスペースで以下の環境変数をSecretとして設定:
- Databricks Secrets CLIを使用:
# Secretスコープを作成
databricks secrets create-scope ai-demo-hub
# 各環境変数をSecretとして登録
databricks secrets put-secret ai-demo-hub DATABRICKS_TOKEN
databricks secrets put-secret ai-demo-hub RAG_ENDPOINT
databricks secrets put-secret ai-demo-hub DATABRICKS_SERVER_HOSTNAME
databricks secrets put-secret ai-demo-hub DATABRICKS_WAREHOUSE_ID- アプリ設定ファイル(app.yaml)で参照:
# app.yamlの例
env:
- name: DATABRICKS_TOKEN
valueFrom:
secretKeyRef:
scope: ai-demo-hub
key: DATABRICKS_TOKEN
- name: RAG_ENDPOINT
valueFrom:
secretKeyRef:
scope: ai-demo-hub
key: RAG_ENDPOINT# アプリ一覧表示
databricks apps list
# アプリ詳細確認
databricks apps describe japan-ai-demo-hub
# アプリ停止
databricks apps stop japan-ai-demo-hub
# アプリ削除
databricks apps delete japan-ai-demo-hub- このリポジトリをフォーク
- フィーチャーブランチを作成 (
git checkout -b feature/amazing-feature) - 変更をコミット (
git commit -m 'Add amazing feature') - ブランチにプッシュ (
git push origin feature/amazing-feature) - Pull Requestを作成
詳細な変更履歴は CHANGELOG.md を参照してください。
- Issues: GitHub Issues でバグ報告や機能要求を受け付けています
- Wiki: 詳細なドキュメントは Wiki を参照
- Discussions: 質問や議論は Discussions をご利用ください
このプロジェクトは MIT License の下で公開されています。
MIT License
Copyright (c) 2025 AI Demo Hub Contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
⭐ このプロジェクトが役に立ったら、スターをつけていただけると嬉しいです!