目次
こんにちは。SCSKのDatabricksエンジニア 天野です。
前回はDatabricksの基本概念について触れましたが、第2回となる今回は、より実践的な「生成AIチャットアプリの構築」をハンズオン形式で実施します。
「社内用チャットボットを作りたいけれど、GPUサーバーの管理やAPIキーの管理が面倒...」
そんなお悩みはありませんか?
Databricksを使えば、LLMのホスティングからアプリの公開まで、すべてDatabricksプラットフォーム内で完結し、セキュリティもコスト管理も劇的にシンプルになります。今回はその具体的な方法をご紹介します。
AIアプリを作る際、最初の壁となるのが「LLMをどう動かすか」です。自前でGPUインスタンスを立てるのは運用コストがかかりますし、外部のAPI(OpenAIなど)を契約すると、請求書が分かれてしまい管理が煩雑になりがちです。
そこで活用したいのが、Mosaic AI Model Serving(Foundation Model APIs) です。
モデルの準備ができたら、次はユーザーが触る「画面(UI)」が必要です。
これまでは、AWS FargateやAzure App Serviceなどを別途用意してデプロイする必要がありましたが、Databricksの 「Databricks Apps」 を使えばその必要もなくなりました。
簡易なアプリ構築: Streamlitなどの人気フレームワークをネイティブサポート。
Unity Catalogと完全統合: アプリの権限管理はDatabricks上のデータ権限と連動します。「このデータの閲覧権限がある人だけがアプリを使える」といった制御が容易です。
コンピュート管理不要: サーバーレスコンピュート上で動作するため、起動も高速です。
また、「Databricks Apps」ではいくつかのテンプレートフォーマットも用意されているので、そちらをベースに作成すればコーディングも最小限で済みます。
それでは、実際に「Mosaic AI Model Serving」と「Databricks Apps」を組み合わせて、シンプルなチャットボットを作って公開してみます。
今回は、Databricksですぐに利用可能な 「GPT-5.2」 (Pay-per-token)を使用します。
Databricksのワークスペース画面「サービング」タブから、「databricks-gpt-5-2」 というエンドポイントが「準備完了」になっていることを確認するだけです。これだけで準備完了です!
サイドバーの「コンピュート」メニュー内の「アプリ」から「アプリを作成」をクリックします。
「テンプレートからインストール」の「Agent」から「Chat UI」を選択します。
サービングエンドポイントで「databricks-gpt-5-2」を選択し、コンピュートサイズは「M」を選択して「次のページ」を押下します。
「認証を確認する」はそのまま「次のページ」を押下します。
「アプリ名」と「説明」を記載し、「インストール」を押下します。
これだけで、アプリ用の環境が立ち上がります。
コードもテンプレートのものがワークスペースに準備されているので内容は「デプロイメント」の「ソース」から確認して、適宜修正できます。
また、「実行中」の横のURLを押下すると作成されたチャットアプリをデプロイ前に確認できます。 確認が完了したら、「デプロイ」を押すとデプロイできます。
デプロイが完了したら「実行中」の横のURLを押下して作成されたチャットアプリにアクセスしてみましょう。
チャットUI上で、質問を投げてみると回答が返ってきます。
これは裏で「databricks-gpt-5-2」に質問が投げられて、回答が表示されています。
このアプリはすでにDatabricks上でホストされており、URLを共有すれば、権限を持つ社内メンバーがすぐに利用できます。
今回のデモでかかった時間は、5分程度です。なんとノーコードで簡単なチャットアプリを作成してリリースできました。
今回のデモに関連する主なDatabricksの機能は以下の通りです。
今回のようにDatabricksを活用することで、エンジニアは「インフラのお守り」から解放され、「ビジネス価値を生むアプリケーション開発」に集中できるようになります。
「自社のデータを使ってRAG(検索拡張生成)を構築したい」「もっと複雑なワークフローを組みたい」といったご要望がございましたら、ぜひSCSKまでお問い合わせください。最適なアーキテクチャをご提案いたします。
本ブログをご覧いただきありがとうございました。
記載されている製品/サービス名称、社名、ロゴマークなどは該当する各社の商標または登録商標です。
本ブログ記事は正確性を保証するものではなく、記事の内容によって生じた結果について、いかなる責任も負いません。