ワークフローアシスタント
ワークフローアシスタントは、AI-School における AI アシスタントの高度な形です。固定された構造のない自由な会話ではなく、ユーザーは AI によって進行管理される、定義済みの一連のステップをたどります。これにより、最初から最後までの授業全体のような複雑な多段階プロセスを自動化できます。
ワークフローアシスタントとは?
ワークフローアシスタントは、矢印(edges)で接続されたノード(nodes)からなる視覚的なワークフローで構成されます。各ノードは、次のような特定のタスクを実行します。
- 開始 / 終了 — ワークフローの開始点と終了点
- 評価 — コンテキストを分析し、構造化情報をメモリに保存する
- 条件 — 式を評価し、フローを適切な方向へ振り分ける
- LLM — 特定のタスクのために言語モデルを呼び出す(任意でユーザー入力を待機)
- 承認 — はい/いいえの質問を行い、回答に基づいてフローを進める
- 接続 — AI タスクや目に見える出力なしでルートを接続する。ワークフローを見やすく保つのに便利
- サブエージェント - たとえば採点ラウンドごとに生徒1人ずつなど、複数項目に対して同じタスクを並列で実行する
ワークフローは、各ステップの後に状態を自動的に保存します。ユーザーが入力すると、ワークフローは中断したところから正確に再開します。
ワークフローアシスタントを作成する
アシスタント を開き、ワークフローアシスタント タブを選択します。上部のカードで 新しいワークフロー をクリックし、AI でワークフローを作成または編集、空のワークフロー、n8n ワークフロー、またはプリセットのいずれかを選びます。クイックスタート では、プリセットを直接開始するか、テンプレートとして使用 を選べます。
独自のアシスタントを変換することもできます。アシスタントカードのメニューで ワークフローとして開く を選択します。新しい未共有の下書きが作成され、元のアシスタントはそのまま残ります。公開する前に、提案された手順を確認し、テストしてください。
ワークフローアシスタントは、通常のアシスタントと同様に、グループや同僚と共有できます。エディタからも、ツールバーの 共有 ボタンで共有可能です。同僚と共有する場合、AI-School が自動でメール通知を送信し、受信者にワークフローアシスタントが利用可能であることを知らせることができます。
n8n ワークフローを開始する
AI 駆動のワークフローアシスタントに加えて、AI-School は webhook を介して n8n ワークフローを開始することもできます。n8n ワークフローはチャットを開きません。フィールドがなければ webhook は直接呼び出され、フィールドがある場合はまずフォームが開きます。管理者は アシスタント → ワークフローアシスタント → 新しいワークフロー → n8n ワークフロー から作成します。
詳しい説明は n8n ワークフロー のページをご覧ください。
一般設定
ワークフローを作成または編集する際は、設定パネルで 一般設定 を行います。これらの設定はワークフロー全体に適用されます。
- モデル: すべてのステップで使用される AI モデル。ワークフロー全体で 1 つのモデルを選びます。
- ツール: ワークフローで利用可能なツール(例: Vastlegging、SLO zoeken、Internet zoeken)。有効なツールは、ステップごとに無効化しない限り、すべての LLM ステップで利用できます。
- MCP サーバー: ワークフローで利用可能な外部連携。
- ドキュメント: LLM ステップが参照できるファイル。
- 画像: LLM ステップが使用できる画像。
また、チャット中にユーザー自身がファイルや画像を追加できるかどうかも設定できます。
ワークフローフォーム内のファイル
ワークフローでは、たとえばテスト、採点基準、提出された生徒の課題など、ファイルの提出をユーザーに求めることができます。そのようなファイル入力では、ユーザーは次のことができます。
- 新しいファイルをアップロードする
- ファイル管理から既存のファイルを選ぶ
- 質問ごとに、どのファイルをどの項目に割り当てるかを決める
新しいファイルはまず処理されます。処理が完了するまで、ワークフローは確実に続行できません。必須のファイル入力がまだ処理中、または失敗している場合、ユーザーは待機するか、ファイルを再選択/再アップロードする必要があります。
ワークフローフォーム経由で追加されたファイルは、そのチャット用のアシスタントファイルとして利用可能になります。通常のチャットファイルとして自動的に選択されることはありません。
ステップごとの設定
各 LLM ステップ では、全体設定で有効化されているツール、ファイル、画像を、その特定ステップで 無効化 できます。これにより、どのステップでどの機能を使えるかを細かく制御できます。ステップ単位では、全体設定で有効になっていないものを追加することはできません。

多くのユーザーにとって、プリセットが最適な出発点です。その後、自分のニーズに合わせて調整できます。
例: レッスンアシスタント
レッスンアシスタント は、教育向けに特別に設計されたすぐに使えるプリセットです。テーマやレベルの決定から、学習目標、説明、演習、最後の要約まで、ユーザーを最初から最後まで導きます。
ワークフローの概要
レッスンアシスタントは、次のステップ(ノード)で構成されます。
ステップごとの説明
1. 開始
ユーザーがチャットを開いて最初のメッセージを送ると、ワークフローが開始されます。
2. トリアージ: レッスンテーマ (評価ノード)
何をするの? AI はユーザーのメッセージを分析し、次を判断しようとします。
- テーマ — レッスンの内容は何か?(例: 「てこ」の法則)
- レベル — 基礎、中級、上級のどれか?
- 十分な情報があるか? — 直接学習目標を作成できるだけの文脈があるか?
この結果はワークフローのメモリに保存されます。
3. 十分な情報があるか? (条件ノード)
十分な情報がある場合(voldoende_info = true)、ワークフローは 学習目標を作成 に直接進みます。
情報が不足している場合は、情報収集 に進みます。
4. 情報収集 (LLM ノード、入力待ち)
何をするの? AI は、テーマと希望レベルを把握するために、ユーザーに具体的な質問をします。ユーザーが回答すると、フローは トリアージ: レッスンテーマ に戻って再評価します。
会話例:
🤖 「ようこそ!うまくお手伝いするために、短く2つ質問します。 1. どのテーマのレッスンをしたいですか? 2. レベルはどれですか?(基礎 / 中級 / 上級)」
👤 「高校2年生の物理、てこの法則」
この回答の後、トリアージが再評価され、voldoende_info = true と判断されます。
5. 学習目標を作成 (LLM ノード)
何をするの? AI は、指定されたテーマとレベルに対して、最大 4〜5 個の具体的で測定可能な学習目標を番号付きリストで作成します。
出力例:
学習目標 てこの法則 – 高校2年生(中級):
- てこの法則を定式化し、式 F₁ × r₁ = F₂ × r₂ を説明できる。
- 不明な力や腕の長さを求める計算ができる。
- てこの法則を実生活の例(はさみ、一輪車、シーソー)に適用できる。
- 第一種、第二種、第三種てこ の違いを説明できる。
6. 学習目標を承認 (承認ノード)
何をするの? AI は、作成した学習目標が適切か、レッスンを開始してよいかをユーザーに確認します。
- はい → レッスンへ進む
- いいえ → 学習目標を作成 に戻り、学習目標を作り直す
ユーザーはチャット内の折りたたみメニューから学習目標を確認できます。
7. トリアージ: 学習目標 (評価ノード)
何をするの? 各レッスンサイクルの後、AI はユーザーがすべての学習目標を習得しているか確認します。これは厳密な評価です。ユーザーは各学習目標を明確に理解している必要があります。
8. すべての学習目標を理解したか? (条件ノード)
- はい → 演習エージェント へ進む
- いいえ → 次の学習目標のために レッスンエージェント へ進む
9. レッスンエージェント (LLM ノード、入力待ち)
何をするの? AI は、作成された学習目標に沿って、テーマについて段階的にレッスンします。各項目の後に理解確認の質問をします。ユーザーが学習目標を理解していることを示して初めて、レッスンは次に進みます。
ユーザー入力の後、フローは トリアージ: 学習目標 に戻って進捗を評価します。
例:
🤖 「まず学習目標 1: てこの法則から始めましょう。てこは、支点の周りで回転する硬い棒です。必要な力は、支点からの距離によって決まります。式は次の通りです。
F₁ × r₁ = F₂ × r₂
この式で r₁ と r₂ が何を意味するか説明できますか?」
10. 演習エージェント (LLM ノード、入力待ち)
何をするの? AI は、各学習目標につき少なくとも 1 問の演習問題を出します。ユーザーが問題に答えると、フローは フィードバックエージェント に進みます。
11. フィードバックエージェント (LLM ノード、入力待ち)
何をするの? AI は、取り組んだ演習について詳細で個別的なフィードバックを提供します。各学習目標ごとに、何が良かったか、どこを改善できるかを説明します。口調は率直ですが、励ましも含みます。
12. 終了する? (承認ノード)
AI は、終了したいか、さらに練習したいかを尋ねます。
- はい → 要約 へ進む
- いいえ → 新しいラウンドのために 演習エージェント に戻る
13. 要約 (LLM ノード)
何をするの? AI は、扱った内容全体をわかりやすく要約し、その後で成果に対する個人的で前向きなフィードバックを伝えます。
14. 終了
ワークフローは、励ましの締めくくりメッセージで終わります。
「このレッスン、お疲れさまでした。次回もがんばりましょう!」
完全な会話例
以下は、てこの法則、高校2年生 に関するレッスンアシスタントとの短縮版の会話例です。
| 誰 | メッセージ |
|---|---|
| 👤 ユーザー | こんにちは |
| 🤖 レッスンアシスタント | ようこそ!どのテーマのレッスンをしたいですか?レベルも教えてください。 |
| 👤 ユーザー | 高校2年生の物理、てこの法則 |
| 🤖 レッスンアシスタント | 完璧です!4つの学習目標を作成しました。この学習目標でレッスンを始めますか? |
| 👤 ユーザー | はい |
| 🤖 レッスンアシスタント | まず学習目標 1: てこの法則から始めます。(説明 + 理解確認の質問) |
| 👤 ユーザー | (理解確認の質問への回答) |
| 🤖 レッスンアシスタント | (学習目標 2、3、4 への続きのレッスン...) |
| 🤖 レッスンアシスタント | すべての学習目標を終えました!演習の時間です... |
| 👤 ユーザー | (演習問題への回答) |
| 🤖 レッスンアシスタント | (個別フィードバック) 終了しますか、それともさらに練習しますか? |
| 👤 ユーザー | 終了する |
| 🤖 レッスンアシスタント | (要約 + 前向きな締めくくり) |
進捗を確認する
ワークフローアシスタントとの会話中は、チャット入力欄の右側にある ワークフローボタン から進捗を確認できます。このボタンをクリックすると、次の内容を含むパネルが開きます。
- ワークフローのすべてのステップ(条件ノードとメモノードは表示されません)
- 各ステップのステータス:
- ⬜ 待機: まだ到達していない
- 🔄 アクティブ: 現在実行中
- ✅ 完了: 正常に完了
- ⏸️ 入力待ち: ユーザーの応答待ち
- ⏭️ スキップ済み: 実行されなかった(例: 条件による)
- ❌ エラー: エラーが発生した
トリアージノードを作成する
評価ノード(トリアージノード)は、会話から情報を取り出してワークフローのメモリに保存します。条件ノードは、その値を読み取り、フローを適切な方向に導けます。
設定
- ワークフローに 評価 ノードを追加します。
- AI が何を分析し、どのような結論を出すべきかを説明する システムプロンプト を書きます。
- フィールドを使って 出力スキーマ を定義します。
- フィールド名: 後で値を取得するためのキー(例:
voldoende_info、niveau、route) - 型:
string(文字列)、number(数値)、boolean(はい/いいえ)、enum(固定値からの選択)。enumでは許可する値をカンマ区切りで指定します。
- フィールド名: 後で値を取得するためのキー(例:
- ノードが無限に実行され続けないように、最大反復回数 を設定します。
メモリ値
保存された値は、条件ノード内で state. プレフィックスを使って参照できます。たとえば state.voldoende_info や state.niveau です。
条件ノードを設定する
条件ノード は、ワークフローのメモリに基づいて式を評価し、フローを適切な次のステップへ送ります。
ブランチ
条件ノードには 1 つ以上の ブランチ があります。
- If: 最初に評価される条件
- Else-if: 任意の追加条件
- Else: どの条件にも一致しない場合の標準ルート
式の書き方
式は CEL (Common Expression Language) で書きます。
| 期待する動作 | 式 |
|---|---|
フィールドが true | state.voldoende_info == true |
| フィールドが固定値を持つ | state.niveau == "gevorderd" |
| 数値比較 | state.score > 7 |
| 複数条件 | state.niveau == "basis" && state.score < 5 |
接続の設定
条件ノードから、各ブランチごとに正しい次のノードへ 個別の接続 を引きます。エディタでは、各ブランチごとにノード上の出口が別々に表示されます。
接続ノードを使う
接続ノード はそれ自体では AI タスクを実行しません。ノードはワークフローを次のステップへ渡すだけです。複数のルートをわかりやすくまとめたいときや、フローチャート上で技術的な中間ステップが必要なときに使います。
実用例:
- スクリプトをスキップする経路を、画像を選ぶステップに接続する
- 複数の承認ルートを同じ次のステップに集約する
- メモノードを接続点として使わずに、長いワークフローを見やすくする
接続ノードには、少なくとも 1 つの入力接続と 1 つの出力接続が必要です。このノードは、ワークフロー進行上の独立した内容ステップとしては表示されません。
サブエージェントノードを使う
サブエージェントノード は、同じ方法で複数回実行する必要があるタスク向けです。このノードはワークフローのメモリから項目のリストを受け取り、各項目ごとに分離されたコンテキストで個別の実行を開始します。
実用例:
- 生徒ごとにテストを採点する
- 文書ごとに分析を行う
- 各入力フォームごとに要約を作成する
- 各項目ごとに個別のレポートを記録する
設定
- 以前の評価ノードが、たとえば
leerlingen_jsonのような項目リストをワークフローのメモリに保存していることを確認します。 - サブエージェント ノードを追加します。
- 項目のソースを設定します。
- 必要に応じてラベルフィールドを設定し、進捗が見分けやすいようにします。
- 並列実行の最大数を設定します。
- 結果を保存するメモリキーを指定します。
サブエージェントのコンテキストには、その時点で処理中の項目だけが含まれます。そのため、プロンプトでは現在の項目を明示的に参照し、AI が複数の項目を同時に処理しないようにしてください。
ワークフローでの記録
Vastlegging ツール はワークフローで特に便利です。これにより、AI は中間結果や最終結果を、サイドパネル内の編集可能なドキュメントとして自動保存できます。
設定
- ワークフローの一般設定で Vastlegging ツール を有効にします。
- 対象の LLM ステップのシステムプロンプトに、特定の内容を記録するよう指示を追加します。そのステップでツールを有効にするか、全体で有効のままにします。
例
学習目標のステップでは、システムプロンプトに次のように書けます。
「指定されたテーマとレベルに対する学習目標を作成してください。その後、'学習目標' というタイトルで Vastlegging ツールを使ってただちに記録してください。」
ユーザーは、チャットのツールバーにある Vastlegging ボタン(📄)から記録されたドキュメントを確認できます。
会話を復元する
授業の途中で、会話のもっと前の地点に戻りたい場合は、以前のメッセージの 復元ボタン(履歴アイコン)から行えます。これにより、その時点以降のすべてのメッセージが削除され、ワークフローはその正確な瞬間から再開されます。
復元は元に戻せません。削除されたメッセージはもう利用できません。
ワークフローを編集する
管理者として、既存のワークフローを開いて ワークフローエディタ で調整できます。ノードをクリックして設定を変更し、右クリックメニューから新しいノードを追加したり、接続を別のノードへドラッグしたりできます。
まったく新しいワークフローの場合は、空のキャンバスまたは別のプリセットから始められます。
AI でワークフローを作成または編集する
AI と一緒にワークフローを作成します。有効な変更はエディタに表示されます。保存または公開する前に、結果を確認してテストしてください。