はじめに
- 情報処理安全確保支援士(以下、支援士)の勉強をしている
- 話題のローコードツール「Dify」で何か作ってみたくなった
というわけで、支援士の過去問解説やクイズを出題してくれる自分専用のAIチャットボットをDifyで作ってみることにしました。
最初なので簡単に、PCローカルに構築した方法を共有します。
開発環境
- Windows 11
- WSL2
- Docker Desktop
0. 全体の流れ
- Google AI StudioでのAPIキー発行
- DockerによるDifyの環境構築
- DifyでAIチャットボット作成
1. Google AI StudioでAPIキーを発行する
まずは、Difyの頭脳となるAIを使用するための手続きを行います。
私はGoogleサービスをよく使うためGeminiにしました。Google AI StudioからAPIキーを取得します。
- Google AI Studio にアクセスし、Googleアカウントでログイン
- 画面左上の 「Get API key」 ボタンをクリック
- 「Create API key」 をクリックし、任意のプロジェクトを選択(または新規作成)してAPIキーを生成
- 発行された長い文字列(APIキー)をコピーし、メモ帳などに控えておく(※他人に絶対見せないように注意してください)
💡 参考リンク
Google AI Studioの仕様や料金設定については、こちらの記事が非常に分かりやすくて参考になりました。
2. Dockerを使ってDifyをローカルにインストールする
次はDifyをPCで使えるようにするため、Windows(WSL2)環境をベースに、Dockerを使ってDifyを構築します。
① Docker Desktopを起動する
公式サイトからのDocker DesktopインストールやWSL連携設定を行ってから起動します。
💡 参考リンク
インストールや初期設定の手順は、こちらの記事が参考になります。
② WSL2を開き、Linux側のホームディレクトリに移動して開発用フォルダを作る
エラーが起こらないようWSL2(Linux)側のファイルシステム内で完結させたほうがよいため、Linux側のホームディレクトリに移動してから操作を行います。
# Linux側のホームディレクトリに戻る
cd ~
# 開発用のフォルダ(例: projects)を作して中に入る
mkdir -p projects
cd projects
③ WSL2でDifyの公式リポジトリをクローンする
git clone https://github.com/langgenius/dify.git
cd dify/docker
④ 環境変数ファイルをコピー
特に中身の調整はせず、そのままコピーします。
cp .env.example .env
3. Dockerを使ってDifyを立ち上げる
① Dockerコンテナを起動
docker compose up -d
② 起動完了後、ブラウザでアクセス
ブラウザを開き、 http://localhost にアクセスします。
③ 管理者アカウント登録
初回起動時は登録画面が出るため、メールアドレスとパスワードを設定してログインします。
4. DifyとGemini(Google AI Studio)を紐付ける
Difyの中に、先ほど取得したAPIキーを設定します。
- Dify画面右上の 「設定(Settings)」 を開く
- 左メニューから 「モデルプロバイダー(Model Provider)」 を選択
- 一覧から 「Gemini」 を探し、「セットアップ」 ボタンを押す
- 「API Key」 の入力欄に、Google AI Studioで控えておいたAPIキーを貼り付けて保存
これで下準備はすべて完了です!
5. Dify上でチャットボットを作成する
- 「アプリを作成する」 > 「最初から作成」 ボタンを押す
- 「チャットフロー」 を選ぶ
- ※「ワークフロー」と「チャットフロー」の2種類がありますが、対話型のボットを作りたい場合は必ず「チャットフロー」を選択します。
- 任意の名前(例:支援士合格メンター)を付けて「作成する」を押す
- クイズメンターのノード設定
- チャットフローでアプリを作成すると、最初から画面に「開始 ──> LLM ──> 回答」の3つのノードが綺麗に並んだ状態で作られます。
🛠️ ①「LLM」ノードの設定
- 画面上の 「LLM」ノード をクリックして設定パネルを開く
- モデル選択 で任意のモデルを選択
- ※最初は
Gemini 2.5 Flashを選択しましたが、アクセス集中により503 UNAVAILABLEエラーが発生したため、軽量・高速なGemini 3.1 Flash-Liteを選択したところ非常に安定しました。
- 「SYSTEM(プロンプト)」 の欄に、情報処理安全確保支援士のメンターとしての振る舞いを記述します。
# Role
あなたは情報処理安全確保支援士(SC)試験の合格請負人である、超優秀なプロ講師です。
ITガバナンスやプロジェクトマネジメント(PM/PL)のバックグラウンドを持つ社会人の受講生(Specialist)が、最短で、かつ実務に活きる形で合格できるよう、論理的かつ情熱的に伴走します。
# Mission
受講生が指定した「セキュリティの専門用語」や「過去問のテーマ」について、以下の【解説方針】に従って対話・指導を行ってください。
# 解説方針
1. 【試験での位置づけ】
そのテーマが、午前II(選択式)でどう問われるか、あるいは午後(記述式)でどう狙われるかを最初に明確にしてください。
2. 【本質的な仕組み(3行解説)】
「バイブス」ではなく、技術的な「論理構造」を3行でシンプルに解説してください。
3. 【午後試験で書かされるキーワード】
午後の記述式試験で、採点基準(キーワード)になりやすい重要なセキュリティ用語や、具体的な「対策(例:プレースホルダの利用、WAFによる遮断など)」を強調してください。
4. 【次のアクション(問いかけ)】
解説の最後には、必ず受講生の理解度を深めるための「確認クイズ(選択式または短い記述式)」を1問出題し、受講生の回答を待ってください。
# トーン&マナー
* 専門用語(CWE, CVSS, 攻撃ベクトルなど)は正確に使用しつつ、実務(プロジェクト管理やITガバナンス)の視点と結びつけて親切に解説してください。
* 受講生を鼓舞し、モチベーションを高める前向きな言葉をかけてください。
- 末尾の「USER」項目に、ユーザーからの入力を受け取るための
ユーザー入力(query)がセットされていることを確認します。
🛠️ ②「回答(Answer)」ノードの確認
LLMの右に繋がっている「回答」ノードを開き、出力する変数に LLM / text が入っていることを確認します。
6. 対話テスト
画面右上にある 「プレビュー」 ボタンを押すと、画面右側(または下部)にチャットボックスが出現します。
試しに質問を投げかけると、設定したプロンプト通りに深い技術解説と確認クイズが返ってきて、綺麗な対話のラリーが可能になりました!
おわりに
環境構築や仕様変更によるノードの挙動に手間取りましたが、無事にDifyで動くものを作ることができました。
1往復のトークン消費量を計算しても数銭レベルなので、コストを気にせず使い倒せそうです。
次は、スマホからこのチャットボットにアクセスして勉強できるよう、Cloudflare Tunnels を使った外部公開とゼロトラストセキュリティ構築に挑戦してみたいと思います。
