【Dify上級】教材PDFをアップするだけ!一問一答・穴埋め・記述問題+難易度別演習プランを全自動生成するアプリの作り方

Dify上級編として、教材PDFをアップロードするだけで、一問一答・穴埋め・記述問題と難易度別演習プランを全自動生成する「問題集・学習プラン作成アプリ」の作り方を解説した第153話のアイキャッチ画像。左側では「PDF教材」の書類がDifyの吸い込み口(パイプライン)へと投入され、中央に立つ作業着姿の49歳男性が笑顔で両側を指し示している。右側には、自動生成された問題集(A+評価マーク付き)、評価基準(RUBRIC)、ステップアップ式の学習プラン(STUDY PLAN)のデジタルパネルが近未来的なネオンブルーで浮かび上がっている様子。 Difyワークフロー

皆さんこんにちは、横浜で清掃業をしているヤスです。

前回は【Dify上級】問い合わせを貼るだけでFAQ・対応マニュアル・改善提案書を全自動生成!

のアプリを作りましたね。今回はこちらです。

1. 教材を読んで問題を作る作業、全部AIに任せましょう

「この教材から問題集を作りたいけど、一から考えるのが大変…」「試験対策の問題を用意したいけど時間がない」「塾・企業研修・自己学習で使える問題集が欲しい」先生・研修担当者・自己学習者なら誰もが感じる悩みです。

今回紹介する「教材PDF→問題集+解説+難易度別演習プラン自動生成くん」は、教材PDFをアップするだけで以下を全自動生成します。

  • 教材の重要概念・キーワードの抽出(重要度:高・中・低の3段階)
  • 一問一答問題集(難易度別・正答・ポイント付き)
  • 穴埋め問題集(4択選択肢・解説付き)
  • 記述問題集(模範解答・採点基準ルーブリック付き)
  • 入門・標準・上級の3段階演習プラン(日別スケジュール・チェックリスト付き)

実際にPython基礎入門テキストのPDFでテストしたところ、変数・関数・制御構文・例外処理などPDF固有の内容に基づいた問題集が数分で完成しました。先生・研修担当者・塾講師・自己学習者全員に刺さるアプリです。

2. 実際の出力サンプル

📚 問題集+演習プラン 自動生成 教科:プログラミング・IT 学習目標:基礎固め 📖 STEP1 教材分析 推定タイトル:Python基礎入門テキスト 章構成:第1章Pythonとは / 第2章変数とデータ型 第3章制御構文 / 第4章関数 / 第5章例外処理 重要度【高】:変数・for文・while文・def・try/except ✅ STEP2 一問一答(標準20問・易8・普8・難4) Q1【易】用語定義型 変数とは何ですか? 答え:プログラム内でデータを保存するための記号的な名前 ポイント:変数はデータを一時的に保持するために使われます 📝 STEP3 穴埋め(標準20問) 問1【易】空欄数:1 変数は___を保存するための記号である。 a)データ b)関数 c)クラス d)メモリ 正答:a)データ / 解説:変数はデータを格納する… ✍️ STEP4 記述(10問・採点基準付き) 問1【説明型】難易度:易 関数の役割について再利用性の観点から説明しなさい(200字) 模範解答:関数は特定の処理をまとめたもので… 採点基準:3点=再利用性・具体例を含む / 2点=基本説明のみ 🗓️ STEP5 演習プラン(3段階) 入門:7日間・30分/日・易問題中心 標準:7日間・45分/日・一問一答+穴埋め並行 上級:7日間・60分/日・記述問題重点

💡 テキスト抽出ブロックを使うことでPDFの内容を正確にLLMに渡せます。スキャン画像のみのPDFは読み取れません。

3. このアプリが特に刺さる人

こんな人に刺さる解決できる悩み
学校の先生・塾講師教材から問題集を作る時間が数時間→数分になる
企業研修の担当者研修テキストから確認テストを自動生成できる
資格試験の受験者テキストをアップするだけで過去問形式の問題が生成される
自己学習者読んだ本・教材の理解度を問題形式で確認できる
EdTech系のサービス開発者コンテンツから問題集を自動生成するサービスの核心部分として使える

4. 全体のブロック構成

#ブロック名種類役割
1ユーザー入力開始PDF・教科・レベル・問題数・目標を入力
2テキスト抽出テキスト抽出PDFからテキストを変換して出力
3重要概念抽出LLM①教材の重要概念を重要度別に抽出・整理
4一問一答生成LLM②難易度別・問題タイプ別の一問一答を生成
5穴埋め問題生成LLM③4択選択肢・解説付きの穴埋め問題を生成
6記述問題生成LLM④模範解答・採点基準付きの記述問題を生成
7演習プラン生成LLM⑤3段階の難易度別演習プランを生成
8最終整形テンプレート変換全ドキュメントを1つにまとめる
9出力終了最終結果を出力

5. 今回の核心:テキスト抽出ブロックの使い方

このアプリで最も重要なのが「テキスト抽出ブロック」です。DifyのLLMはPDFをそのまま読み取れないため、テキスト抽出ブロックを経由させる必要があります。

方法確実性設定の簡単さ
テキスト抽出ブロック経由(推奨)✅ 確実✅ 簡単
LLMのコンテキスト機能⚠️ 不安定⚠️ 設定が複雑
ビジョン機能でPDFを読む✅ 確実⚠️ 10ページ以内限定
テキストを直接貼り付け✅ 確実✅ 簡単(PDFなし可)

テキスト抽出ブロックの設定は1つだけです。

テキスト抽出ブロックの設定: 入力変数:{{開始.teaching_material}} 出力変数:text(固定・変更不可) LLM①のプロンプトでの参照: 教材の内容:{{テキスト抽出.text}}

⚠️ テキスト抽出ブロックの出力変数名は「text」固定です。変更しないでください。またスキャン画像のみのPDF(文字データなし)は読み取れません。

💡 LLM①のプロンプトで変数を設定する際は「{{」と入力してサジェストからテキスト抽出の「text」を選択することで正しく紐づきます。

6. 事前準備|必要なものはこれだけ

  • Difyのアカウント(無料プランOK)
  • OpenAIのAPIキー(GPT-4oが使えるプラン)
  • テスト用の教材PDF(テキストデータを含むもの)
  • 所要時間:40〜60分

7. 【作り方】ステップごとに丁寧に解説

STEP 1|新しいワークフローアプリを作成する

  1. Difyにログインして「アプリを作成」をクリック
  2. 種類は「ワークフロー」を選ぶ
  3. アプリ名に「教材PDF→問題集+解説+難易度別演習プラン自動生成くん」と入力
  4. 「作成する」をクリック

STEP 2|開始ブロックを設定する(変数5つ)

変数名表示名種類必須
teaching_material教材PDFファイル✅ 必須
subject教科・科目セレクトボックス✅ 必須
level学習レベルセレクトボックス✅ 必須
question_count生成する問題数セレクトボックス✅ 必須
learner_goal学習目標セレクトボックス✅ 必須

【subject】選択肢:数学・算数/英語・英文法/国語・現代文/理科・化学・物理/社会・歴史・地理/プログラミング・IT/ビジネス・経営/その他

【level】選択肢:小学生・中学生/高校生/大学生・社会人/資格・検定試験

【question_count】選択肢:少なめ(各種10問)/標準(各種20問)/多め(各種30問)

【learner_goal】選択肢:基礎固め・理解確認/試験・テスト対策/資格取得・検定合格/実務応用・スキルアップ

STEP 3|テキスト抽出ブロックを設定する

  1. 開始ブロックの右の「+」をクリックして「ドキュメント抽出」または「テキスト抽出」を選ぶ
  2. 入力変数に「{{開始.teaching_material}}」を設定する
  3. 出力変数は「text」(固定・変更不可)のまま

💡 設定する項目はこれだけです。とてもシンプルです。

STEP 4|LLM①(重要概念抽出)を設定する

temperature:0.1(抽出・分析は正確性重視)・最大トークン:2000に設定してください。

プロンプト設計の最重要ポイントは「教材にない概念を補完させない」ことです。Must Notに以下を必ず追記してください。

## Must Not – 教材に存在しない情報・概念を追加しない – {{テキスト抽出.text}}に記載されていない 用語・概念を絶対に出題しない – 「プログラミング・IT」などのカテゴリの 一般知識で補完・追加することを禁止する – 教材に書かれている内容のみを使うこと

またPre-ProcessingのStep1の前に以下を追加することで精度が上がります。

Step0 教材内容の確認(最初に必ず実行) {{テキスト抽出.text}}に含まれる内容のみを 分析対象とする 教材に存在しない概念は出力しない 教材のテキストが空の場合はFallbackを実行する

STEP 5〜8|LLM②〜⑤を設定する

ブロック役割temperature最大トークン
LLM②一問一答生成0.42000
LLM③穴埋め問題生成0.42000
LLM④記述問題生成0.52000
LLM⑤演習プラン生成0.51500

各LLMの変数紐づけ

ブロック参照する変数
LLM①開始.subject / 開始.level / 開始.learner_goal / テキスト抽出.text
LLM②開始.subject / 開始.level / 開始.question_count / 開始.learner_goal / LLM①.text
LLM③開始.subject / 開始.level / 開始.question_count / 開始.learner_goal / LLM①.text / LLM②.text
LLM④開始.subject / 開始.level / 開始.question_count / 開始.learner_goal / LLM①.text / LLM②.text / LLM③.text
LLM⑤開始.subject / 開始.level / 開始.learner_goal / LLM①〜④.text

STEP 9|テンプレート変換+終了ブロックを設定する

変数名(左)参照先(右)内容
arg1LLM①.text重要概念分析
arg2LLM②.text一問一答問題集
arg3LLM③.text穴埋め問題集
arg4LLM④.text記述問題集
arg5LLM⑤.text難易度別演習プラン
arg6開始.subject教科・科目
arg7開始.level学習レベル
arg8開始.learner_goal学習目標
Difyで構築した「教材PDFから問題集・演習プランを自動生成するアプリ」のワークフロー設計図と、テスト実行時にエラーが発生している画面。左側にはユーザー入力から「テキスト抽出」を経て、「PDF内容抽出」「一問一答問題生成」「穴埋め問題生成」「記述問題生成」「難易度別演習プラン生成」へと繋がるgpt-4oノードのフローが表示されている。右側のテスト結果画面には「前のブロック(重要概念抽出)の出力が正常ではありません。LLM①を確認してください。」といった、各ステップで連鎖的に発生したエラー文が表示されている様子。

8. よくあるトラブルと解決方法

① PDFの内容が反映されず一般的な知識で出力される

LLM①のMust Notに「教材にない概念を追加しない」を明示的に追記してください。また変数の参照が正しく設定されているかDifyのサジェスト機能で確認してください。

② テキスト抽出ブロックで何も出力されない

PDFがスキャン画像のみの場合は読み取れません。WordからエクスポートしたPDFやブラウザで印刷したPDFを使用してください。テキスト抽出ブロックを単体で実行して「最後の実行」タブで出力内容を確認してください。

③ LLMへの変数参照が正しく設定されない

プロンプト内に手打ちで変数名を書くのではなく「{{」と入力してDifyのサジェスト機能から選択してください。サジェストから選択することで正しいブロック名・変数名が自動入力されます。

9. 3種類の問題形式の学習効果

問題形式確認できること特徴
一問一答基礎用語・定義の記憶難易度別・問題タイプ別・正答+ポイント付き
穴埋め文脈の中での概念理解4択・解説付き・一問一答と角度を変えて出題
記述深い理解・応用・論述力模範解答・3点満点採点基準(ルーブリック)付き

記述問題の採点基準(ルーブリック)は「3点=必須要素+補足あり・2点=必須要素のみ・1点=方向性は正しい・0点=的外れ」の4段階で出力されます。教師・研修担当者がそのまま採点に使えます。

10. よくある質問(FAQ)

Q1. どんなPDFでも使えますか?

テキストデータが含まれているPDFなら使えます。WordからエクスポートしたPDF・ブラウザで印刷したPDF・電子書籍のサンプルPDFなどが対応しています。スキャンして画像化されたPDFは読み取れません。

Q2. 問題の精度を上げるコツはありますか?

LLM①のMust Notに「教材にない内容を補完しない」を明示することが最も効果的です。またPDFの文字数が少ない場合はテキスト長文変数に変えて直接貼り付ける方法が確実です。

Q3. 記述問題の採点基準はそのまま使えますか?

基本的にそのまま使えるレベルで出力されます。ただし教科・教材によっては採点基準が甘すぎたり厳しすぎる場合があります。最終確認は必ず行ってください。

Q4. 複数のPDFをまとめて処理できますか?

ファイル変数を複数対応にして繰り返しブロック(Iterator)を追加することで複数PDFの一括処理が可能です。ただし1PDFずつ処理する方が品質が安定します。

11. まとめ

  • 教材PDFをアップするだけで一問一答・穴埋め・記述の3種類+採点基準+演習プランを全自動生成
  • テキスト抽出ブロック→LLM①〜⑤の8ブロック構成でPDFの内容を正確に問題化
  • LLM①のMust Notで「教材外の補完を禁止」することが品質の鍵
  • 記述問題に3点満点のルーブリックが付くので採点作業も自動化
  • 入門・標準・上級の3段階演習プランで学習者のレベルに合わせた活用が可能

教材を読んで問題を作る作業が、PDFをアップするだけで数分で完成します。先生・研修担当者・受験生・自己学習者のどなたにも刺さるアプリです。

問題を作るのってとても時間がかかって難しいと思いますので

苦労されてる方にはぜひ試してみて欲しいです。

次におすすめの記事

49歳・AI初心者の絶望が希望に変わった瞬間。Dify執筆エージェントで『書けない』を卒業!

xもやってるので良かったら見に来てください

私のエックスです。

コメント

タイトルとURLをコピーしました