claude-skills/

Anthropic公式スキル・プラグインの日本語ディレクトリ

last sync 22h ago
スキルOfficialdatabase

🚀databricks-apps-python

プラグイン
databricks

説明

Databricksアプリケーションを構築します。 新規アプリには AppKit(TypeScript + React SDK)を優先し、Pythonが必要な場合は Pythonフレームワーク(Dash、Streamlit、Gradio、Flask、FastAPI、Reflex)にフォールバックします。 OAuth認可、アプリリソース、SQLウェアハウスおよびLakebaseへの接続、モデルサービング、基盤モデルAPI、デプロイメントを処理します。 次のような場合に使用: Databricks向けのWebアプリ、ダッシュボード、MLデモ、またはREST APIを構築する場合、 あるいはユーザーが AppKit、Streamlit、Dash、Gradio、Flask、FastAPI、Reflex、またはDatabricks appについて言及した場合。

原文を表示

Builds Databricks applications. Prefers AppKit (TypeScript + React SDK) for new apps; falls back to Python frameworks (Dash, Streamlit, Gradio, Flask, FastAPI, Reflex) when Python is required. Handles OAuth authorization, app resources, SQL warehouse and Lakebase connectivity, model serving, foundation model APIs, and deployment. Use when building web apps, dashboards, ML demos, or REST APIs for Databricks, or when the user mentions AppKit, Streamlit, Dash, Gradio, Flask, FastAPI, Reflex, or Databricks app.

ユースケース

  • Databricks向けのWebアプリを構築する
  • ダッシュボードを構築する
  • MLデモを構築する
  • REST APIを構築する

本文(日本語訳)

Databricks Applications

Databricks アプリケーションを構築します。完全なサンプルとレシピについては、Databricks Apps Cookbook を参照してください。


AppKit(新規アプリに推奨)

AppKit は、新規 Databricks アプリ向けに推奨される SDK です。 TypeScript + React ベースの SDK で、プラグインアーキテクチャ、組み込みキャッシュ、テレメトリ、エンドツーエンドの型安全性を備えています。

要件

  • Node.js v22 以上
  • Databricks CLI v0.295.0 以上

新規アプリのスキャフォールド

databricks apps init

このインタラクティブなコマンドにより、プロジェクト全体のスキャフォールド、依存関係のインストール、およびオプションでデプロイが実行されます。

デプロイ

databricks apps deploy

AppKit プラグイン

プラグイン 用途
Analytics Databricks SQL Warehouse に対する SQL クエリ — ファイルベース・型付き・キャッシュ対応
Genie 自然言語クエリによる会話型 AI/BI インターフェース
Files Unity Catalog ボリュームの閲覧・アップロード
Lakebase OAuth トークン管理を備えた Lakebase 経由の OLTP PostgreSQL

AI を活用した開発

# AI によるスキャフォールディング用の agent スキルをインストール
databricks aitools install

# AppKit ドキュメントをインラインで照会
npx @databricks/appkit docs "質問をここに入力"

AppKit ドキュメント

  • AppKit Docs — はじめかた、プラグイン、API リファレンス
  • AI を活用した開発 — コードアシスタント向けガイダンス
  • llms.txt — AI コンテキスト用の機械可読ドキュメント

Python アプリ(代替手段)

次のような場合に使用: チームが Python のみの環境である場合、Streamlit / Dash / Gradio が必要な場合、または既存の Python アプリを拡張する場合。

Python アプリにおける重要ルール(必ず遵守すること)

  • フレームワークの選択を確認するか、以下の Python フレームワーク選択 を使用すること(必須
  • 認証には SDK の Config() を使用すること(トークンのハードコードは禁止)(必須
  • リソースには app.yamlvalueFrom を使用すること(リソース ID のハードコードは禁止)(必須
  • Dash アプリのレイアウトとスタイリングには dash-bootstrap-components を使用すること(必須
  • Streamlit のデータベース接続には @st.cache_resource を使用すること(必須
  • Flask は Gunicorn、FastAPI は uvicorn でデプロイすること(開発用サーバーは使用禁止)(必須

Python アプリに必要な手順

以下のチェックリストをコピーし、各項目を確認してください:

- [ ] フレームワークを選択した
- [ ] 認証戦略を決定した: app 認証、ユーザー認証、またはその両方
- [ ] アプリのリソースを特定した(SQL warehouse、Lakebase、serving エンドポイントなど)
- [ ] バックエンドのデータ戦略を決定した(SQL warehouse、Lakebase、または SDK)
- [ ] デプロイ方法を決定した: CLI または DABs

Python フレームワーク選択

フレームワーク 最適な用途 app.yaml コマンド
Dash 本番ダッシュボード、BI ツール、複雑なインタラクション ["python", "app.py"]
Streamlit 迅速なプロトタイピング、データサイエンスアプリ、社内ツール ["streamlit", "run", "app.py"]
Gradio ML デモ、モデルインターフェース、チャット UI ["python", "app.py"]
Flask カスタム REST API、軽量アプリ、webhook ["gunicorn", "app:app", "-w", "4", "-b", "0.0.0.0:8000"]
FastAPI 非同期 API、OpenAPI ドキュメントの自動生成 ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"]
Reflex JavaScript を使わないフルスタック Python アプリ ["reflex", "run", "--env", "prod"]

デフォルト: プロトタイプには Streamlit、本番ダッシュボードには Dash、API には FastAPI、ML デモには Gradio を推奨します。


クイックリファレンス

項目 詳細
ランタイム Python 3.11、Ubuntu 22.04、2 vCPU、6 GB RAM
プリインストール済み Dash 2.18.1、Streamlit 1.38.0、Gradio 4.44.0、Flask 3.0.3、FastAPI 0.115.0
認証(app) Config() 経由のサービスプリンシパル — DATABRICKS_CLIENT_ID / DATABRICKS_CLIENT_SECRET が自動注入
認証(ユーザー) x-forwarded-access-token ヘッダー — references/1-authorization.md を参照
リソース app.yaml の valueFromreferences/2-app-resources.md を参照
Cookbook https://apps-cookbook.dev/
ドキュメント https://docs.databricks.com/dev-tools/databricks-apps/

詳細ガイド

Authorization(認証・認可): app またはユーザーの認可を設定する際は references/1-authorization.md を使用してください。 サービスプリンシパル認証、ユーザー代理トークン(on-behalf-of)、OAuth スコープ、フレームワーク別コードサンプルを網羅しています。 (キーワード: OAuth、サービスプリンシパル、ユーザー認証、on-behalf-of、アクセストークン、スコープ)

App リソース: アプリを Databricks リソースに接続する際は references/2-app-resources.md を使用してください。 SQL warehouse、Lakebase、モデルサービング、シークレット、ボリューム、valueFrom パターンを網羅しています。 (キーワード: リソース、valueFrom、SQL warehouse、モデルサービング、シークレット、ボリューム、接続)

フレームワーク: フレームワーク別の Databricks 固有パターンについては references/3-frameworks.md を参照してください。 Dash、Streamlit、Gradio、Flask、FastAPI、Reflex について、認証統合、デプロイコマンド、Cookbook リンクを網羅しています。 (キーワード: Dash、Streamlit、Gradio、Flask、FastAPI、Reflex、フレームワーク選択)

デプロイ: アプリをデプロイする際は references/4-deployment.md を使用してください。 Databricks CLI、Asset Bundles(DABs)、app.yaml の設定、デプロイ後の確認手順を網羅しています。 (キーワード: デプロイ、CLI、DABs、asset bundles、app.yaml、ログ)

Lakebase: アプリのデータレイヤーとして Lakebase(PostgreSQL)を使用する際は references/5-lakebase.md を使用してください。 自動注入される環境変数、psycopg2 / asyncpg のパターン、Lakebase と SQL warehouse の使い分けを網羅しています。 (キーワード: Lakebase、PostgreSQL、psycopg2、asyncpg、トランザクション、PGHOST)

CLI コマンド: CLI によるアプリのライフサイクル管理については references/6-cli-approach.md を使用してください。 アプリの作成、デプロイ、モニタリング、削除を網羅しています。 (キーワード: CLI、アプリ作成、アプリデプロイ、アプリログ)

Foundation Models: Databricks の foundation model API を呼び出す方法については examples/llm_config.py を参照してください。 OAuth M2M 認証、OpenAI 互換クライアントの接続設定、トークンキャッシュを網羅しています。 (キーワード: foundation model、LLM、OpenAI クライアント、チャット補完)


ワークフロー

  1. タスクの種類を確認する:

    新規アプリをゼロから作成する場合AppKit を使用(databricks apps init)。Python が必須の場合のみ Python フレームワーク選択 にフォールバックする。 認証・認可を設定する場合references/1-authorization.md を参照 データ/リソースに接続する場合references/2-app-resources.md を参照 Lakebase(PostgreSQL)を使用する場合references/5-lakebase.md を参照 Databricks にデプロイする場合references/4-deployment.md を参照 CLI でアプリのライフサイクルを管理する場合references/6-cli-approach.md を参照 Foundation model / LLM API を呼び出す場合examples/llm_config.py を参照

  2. 該当するガイドの手順に従う

  3. 完全なコードサンプルは https://apps-cookbook.dev/ を参照


コアアーキテクチャ

すべての Python Databricks アプリは以下の構成に従います:

app-directory/
├── app.py                 # メインアプリケーション(またはフレームワーク固有の名前)
├── models.py              # Pydantic データモデル
├── backend.py             # データアクセス層
├── requirements.txt       # 追加の Python 依存関係
├── app.yaml               # Databricks Apps の設定
└── README.md

バックエンド切り替えパターン

import os
from databricks.sdk.core import Config

USE_MOCK = os.getenv("USE_MOCK_BACKEND", "true").lower() == "true"

if USE_MOCK:
    from backend_mock import MockBackend as Backend
else:
    from backend_real import RealBackend as Backend

backend = Backend()

SQL Warehouse 接続(全フレームワーク共通)

from databricks.sdk.core import Config
from databricks import sql

cfg = Config()  # 環境から認証情報を自動検出
conn = sql.connect(
    server_hostname=cfg.host,
    http_path=f"/sql/1.0/warehouses/{os.getenv('DATABRICKS_WAREHOUSE_ID')}",
    credentials_provider=lambda: cfg.authenticate,
)

Pydantic モデル

from pydantic import BaseModel, Field
from datetime import datetime
from enum import Enum

class Status(str, Enum):
    ACTIVE = "active"
    PENDING = "pending"

class EntityOut(BaseModel):
    id: str
    name: str
    status: Status
    created_at: datetime

class EntityIn(BaseModel):
    name: str = Field(..., min_length=1)
    status: Status = Status.PENDING

よくある問題

問題 解決策
接続の枯渇 @st.cache_resource(Streamlit)またはコネクションプールを使用する
認証トークンが見つからない x-forwarded-access-token ヘッダーを確認 — デプロイ時のみ利用可能で、ローカルでは使用不可
アプリが起動しない app.yaml のコマンドがフレームワークと一致しているか確認。databricks apps logs <name> でログを確認
リソースにアクセスできない UI からリソースを追加し、サービスプリンシパルに権限があることを確認。app.yaml で valueFrom を使用する
デプロイ時のインポートエラー 不足しているパッケージを requirements.txt に追加する(プリインストール済みパッケージは記載不要)
Lakebase アプリが起動時にクラッシュ psycopg2 / asyncpg はプリインストールされていません — requirements.txt への追加が必須
ポートの競合 アプリは環境変数 `DATABRICKS_APP
原文(English)を表示

Databricks Applications

Build Databricks applications. For full examples and recipes, see the Databricks Apps Cookbook.


AppKit (Preferred for New Apps)

AppKit is the recommended SDK for new Databricks apps. It is a TypeScript + React SDK with a plugin architecture, built-in caching, telemetry, and end-to-end type safety.

Requirements

  • Node.js v22+
  • Databricks CLI v0.295.0+

Scaffold a new app

databricks apps init

This interactive command scaffolds the full project, installs dependencies, and optionally deploys.

Deploy

databricks apps deploy

AppKit plugins

Plugin Purpose
Analytics SQL queries against Databricks SQL Warehouses — file-based, typed, cached
Genie Conversational AI/BI interface with natural language queries
Files Browse/upload Unity Catalog Volumes
Lakebase OLTP PostgreSQL via Lakebase with OAuth token management

AI-assisted development

# Install agent skills for AI-powered scaffolding
databricks aitools install

# Query AppKit docs inline
npx @databricks/appkit docs "your question here"

AppKit documentation


Python Apps (alternative)

Use Python when: the team is Python-only, you need Streamlit/Dash/Gradio, or you are extending an existing Python app.

Critical Rules for Python apps (always follow)

  • MUST confirm framework choice or use Python Framework Selection below
  • MUST use SDK Config() for authentication (never hardcode tokens)
  • MUST use app.yaml valueFrom for resources (never hardcode resource IDs)
  • MUST use dash-bootstrap-components for Dash app layout and styling
  • MUST use @st.cache_resource for Streamlit database connections
  • MUST deploy Flask with Gunicorn, FastAPI with uvicorn (not dev servers)

Required Steps for Python apps

Copy this checklist and verify each item:

- [ ] Framework selected
- [ ] Auth strategy decided: app auth, user auth, or both
- [ ] App resources identified (SQL warehouse, Lakebase, serving endpoint, etc.)
- [ ] Backend data strategy decided (SQL warehouse, Lakebase, or SDK)
- [ ] Deployment method: CLI or DABs

Python Framework Selection

Framework Best For app.yaml Command
Dash Production dashboards, BI tools, complex interactivity ["python", "app.py"]
Streamlit Rapid prototyping, data science apps, internal tools ["streamlit", "run", "app.py"]
Gradio ML demos, model interfaces, chat UIs ["python", "app.py"]
Flask Custom REST APIs, lightweight apps, webhooks ["gunicorn", "app:app", "-w", "4", "-b", "0.0.0.0:8000"]
FastAPI Async APIs, auto-generated OpenAPI docs ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"]
Reflex Full-stack Python apps without JavaScript ["reflex", "run", "--env", "prod"]

Default: Recommend Streamlit for prototypes, Dash for production dashboards, FastAPI for APIs, Gradio for ML demos.


Quick Reference

Concept Details
Runtime Python 3.11, Ubuntu 22.04, 2 vCPU, 6 GB RAM
Pre-installed Dash 2.18.1, Streamlit 1.38.0, Gradio 4.44.0, Flask 3.0.3, FastAPI 0.115.0
Auth (app) Service principal via Config() — auto-injected DATABRICKS_CLIENT_ID/DATABRICKS_CLIENT_SECRET
Auth (user) x-forwarded-access-token header — see references/1-authorization.md
Resources valueFrom in app.yaml — see references/2-app-resources.md
Cookbook https://apps-cookbook.dev/
Docs https://docs.databricks.com/dev-tools/databricks-apps/

Detailed Guides

Authorization: Use references/1-authorization.md when configuring app or user authorization — covers service principal auth, on-behalf-of user tokens, OAuth scopes, and per-framework code examples. (Keywords: OAuth, service principal, user auth, on-behalf-of, access token, scopes)

App resources: Use references/2-app-resources.md when connecting your app to Databricks resources — covers SQL warehouses, Lakebase, model serving, secrets, volumes, and the valueFrom pattern. (Keywords: resources, valueFrom, SQL warehouse, model serving, secrets, volumes, connections)

Frameworks: See references/3-frameworks.md for Databricks-specific patterns per framework — covers Dash, Streamlit, Gradio, Flask, FastAPI, and Reflex with auth integration, deployment commands, and Cookbook links. (Keywords: Dash, Streamlit, Gradio, Flask, FastAPI, Reflex, framework selection)

Deployment: Use references/4-deployment.md when deploying your app — covers Databricks CLI, Asset Bundles (DABs), app.yaml configuration, and post-deployment verification. (Keywords: deploy, CLI, DABs, asset bundles, app.yaml, logs)

Lakebase: Use references/5-lakebase.md when using Lakebase (PostgreSQL) as your app's data layer — covers auto-injected env vars, psycopg2/asyncpg patterns, and when to choose Lakebase vs SQL warehouse. (Keywords: Lakebase, PostgreSQL, psycopg2, asyncpg, transactional, PGHOST)

CLI commands: Use references/6-cli-approach.md for managing app lifecycle via CLI — covers creating, deploying, monitoring, and deleting apps. (Keywords: CLI, create app, deploy app, app logs)

Foundation Models: See examples/llm_config.py for calling Databricks foundation model APIs — covers OAuth M2M auth, OpenAI-compatible client wiring, and token caching. (Keywords: foundation model, LLM, OpenAI client, chat completions)


Workflow

  1. Determine the task type:

    New app from scratch? → Use AppKit (databricks apps init). Fall back to Python Framework Selection only if Python is required. Setting up authorization? → Read references/1-authorization.md Connecting to data/resources? → Read references/2-app-resources.md Using Lakebase (PostgreSQL)? → Read references/5-lakebase.md Deploying to Databricks? → Read references/4-deployment.md Using CLI for app lifecycle? → Read references/6-cli-approach.md Calling foundation model/LLM APIs? → See examples/llm_config.py

  2. Follow the instructions in the relevant guide

  3. For full code examples, browse https://apps-cookbook.dev/


Core Architecture

All Python Databricks apps follow this pattern:

app-directory/
├── app.py                 # Main application (or framework-specific name)
├── models.py              # Pydantic data models
├── backend.py             # Data access layer
├── requirements.txt       # Additional Python dependencies
├── app.yaml               # Databricks Apps configuration
└── README.md

Backend Toggle Pattern

import os
from databricks.sdk.core import Config

USE_MOCK = os.getenv("USE_MOCK_BACKEND", "true").lower() == "true"

if USE_MOCK:
    from backend_mock import MockBackend as Backend
else:
    from backend_real import RealBackend as Backend

backend = Backend()

SQL Warehouse Connection (shared across all frameworks)

from databricks.sdk.core import Config
from databricks import sql

cfg = Config()  # Auto-detects credentials from environment
conn = sql.connect(
    server_hostname=cfg.host,
    http_path=f"/sql/1.0/warehouses/{os.getenv('DATABRICKS_WAREHOUSE_ID')}",
    credentials_provider=lambda: cfg.authenticate,
)

Pydantic Models

from pydantic import BaseModel, Field
from datetime import datetime
from enum import Enum

class Status(str, Enum):
    ACTIVE = "active"
    PENDING = "pending"

class EntityOut(BaseModel):
    id: str
    name: str
    status: Status
    created_at: datetime

class EntityIn(BaseModel):
    name: str = Field(..., min_length=1)
    status: Status = Status.PENDING

Common Issues

Issue Solution
Connection exhausted Use @st.cache_resource (Streamlit) or connection pooling
Auth token not found Check x-forwarded-access-token header — only available when deployed, not locally
App won't start Check app.yaml command matches framework; check databricks apps logs <name>
Resource not accessible Add resource via UI, verify SP has permissions, use valueFrom in app.yaml
Import error on deploy Add missing packages to requirements.txt (pre-installed packages don't need listing)
Lakebase app crashes on start psycopg2/asyncpg are NOT pre-installed — MUST add to requirements.txt
Port conflict Apps must bind to DATABRICKS_APP_PORT env var (defaults to 8000). Never use 8080. Streamlit is auto-configured; for others, read the env var in code or use 8000 in app.yaml command
Streamlit: set_page_config error st.set_page_config() must be the first Streamlit command
Dash: unstyled layout Add dash-bootstrap-components; use dbc.themes.BOOTSTRAP
Slow queries Use Lakebase for transactional/low-latency; SQL warehouse for analytical queries

Platform Constraints

Constraint Details
Runtime Python 3.11, Ubuntu 22.04 LTS
Compute 2 vCPUs, 6 GB memory (default)
Pre-installed frameworks Dash, Streamlit, Gradio, Flask, FastAPI, Shiny
Custom packages Add to requirements.txt in app root
Network Apps can reach Databricks APIs; external access depends on workspace config
User auth Public Preview — workspace admin must enable before adding scopes

Official Documentation

Related Skills

  • databricks-dabs - deploying apps via DABs
  • databricks-python-sdk - backend SDK integration
  • databricks-lakebase - adding persistent PostgreSQL state (autoscaling managed PG with branching)
  • databricks-model-serving - serving ML models for app integration

原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。