DifyとGeminiAPIで簡単構築!ふり返りをAIがコメントバック!先生の負担を激減させる魔法のワークフローを作った話(DSLファイルプレゼント)
1.この記事で伝えたいこと
2. もうコメントバックに悩まない
こんばんは。嬉しい三連休ですね。
小学校で働くささです。
授業後、子ども一人ひとりのコメントに目を通し、丁寧にフィードバックを返す作業は、想像以上に時間と労力を要します。質の高いフィードバックを提供したい、でも時間がない…多くの先生方が抱えるこの悩みを、私も日々感じていました。
コメントバックに教育的効果があるのか?
そもそもコメントバックの費用対効果って?
といった議論をここでするつもりはありません。
今回はLLM(大規模言語モデル)のAPIを使ってふりかえりに対してコメントバックのたたき台を作ってくれるAIツールを作った話をお伝えします。
3.スプシで作ったGemini関数は実用化せず・・・
以前、AIの練習を兼ねてGoogleスプレッドシート上でGeminiAPIを呼び出して自作のGemini関数を作り、その関数を使ってフィードバックを試みたこともありました。大変反響の大きかった記事です。
しかし次のような課題があり、実用化にはいたらなかったのです。
スプレッドシートごとにGASの設定が必要
AIのフィードバック品質にばらつきがある
様々な形式で集まるコメントの一元管理が難しい
4.そこでDifyでコメントバックワークフローを作ってみた
これらの課題を解決するため、ローコード開発プラットフォームDifyに挑戦し、授業でのふり返りや感想に対して自動で分析とフィードバックを可能にするワークフローを構築してみました。
以下のXのポストの動画からイメージをつかんでもらえればと。
この記事では、DifyとGeminiがどのように連携し、コメントの収集からフィードバックまでを自動化するのか、その全貌をご紹介します。ちなみにGeminiAPIでなくても使えますが、無料でできるメリットから私はGeminiがオススメです。
5.そもそもDifyとは?
Difyは、AIアプリケーションを視覚的に構築できるローコード開発プラットフォームです。今回は「ワークフロー」と呼ばれる機能で、複数の処理を組み合わせて柔軟なAIシステムを構築できます。
プログラミングの専門知識がなくても、ブロックを配置して接続していくだけで、複雑な処理の流れを設計できるのが大きな魅力です。今回のフィードバックシステムでも、この特徴を活かして以下のような処理を実現しています
入力されたコメントの判定(空欄チェック)
AIによるフィードバック生成
文字数のカウントと調整
条件に応じた処理の分岐
次のセクションでは、実際のワークフロー構築の詳細について解説していきます。どうぞ、読み飛ばしてください。
6.Difyのワークフローを各ブロックごとに紹介します(作ってみたい人だけ読んで)
以下の手順でワークフローが構成されています。
1. 開始ブロック:
入力として「query」という変数を受け取ります。これは、スプレッドシートから取得したコメントが入る場所です。
この変数には最大5000文字の段落形式のテキストが設定できます。
この変数は敢えて必須にしてありません。(スプシと連携するときのため→ポイントです)
2. IF/ELSEブロック:
入力された「query」変数が空でないか判定します。スプシ内で空欄セルに対応するためこのブロックを追加しています。まぁ、なくても全然OKです。
もし「query」が空でない場合(コメントが存在する場合)、処理はIF分岐へ進みます。
もし「query」が空の場合(コメントが存在しない場合)、処理はELSE分岐へ進み、ワークフローは終了します。
3. IF分岐(コメントが存在する場合):
コメント返すブロック(LLMブロック): Gemini 2.0 Flashという大規模言語モデル(LLM)を使って、コメントに対するフィードバックを作成します。
コンテキスト: 入力されたコメント(query)をLLMに渡します。
Userプロンプトには日本語での対話を促す指示に加え、まるでAIアシスタントが、相手の話を丁寧に聴き、共感と励ましの気持ちが伝わるように話すよう指示する詳細なプロンプトが設定されています。
文字数を制限するブロック: Gemini 2.0 Flashを使って、コメントの文字数を調整し、100文字以内に収めます。
4. 「文字数を数える」コードブロック:
文字数をカウントし、変数「result」に格納するPythonコードを利用しています。
コード書けなくても安心してください。☆マークからコードを自動で生成してくれます。
def main(arg1: str) -> dict:
return {'result': len(arg1)}
5. 「130文字を基準に判定する」IF/ELSEブロック:
先ほどカウントした文字数resultが130文字以上であるかどうかを判定します。
もし130文字以上であれば、次に「端的にする」ブロックへ進みます。
もし130文字以下であれば、「一発成功」ブロックへ進みます。
6. 「端的にする」LLMブロック(130文字以上の場合):
Gemini 2.0 Flashを使って、生成されたコメントをより端的に修正します。
Systemプロンプト: コンテキストを受け取り、伝えたい内容をそのままにして短くまとめてくださいという指示がされています。
Userプロンプト: 100文字以内で短くする指示と、丁寧な口調で語りかける指示が設定されています。
7. 「一発成功」終了ブロック(130文字以下の場合):
文字数を制限するブロックからの出力をそのまま出力します。
出力変数は「text」にしておきます。その他の終了ブロックと揃えておきます。
8. 「修正あり」終了ブロック:
端的に修正した結果、または、130文字以下だった場合は、ここで出力結果を返し、ワークフローが終了します。
出力変数は「text」にしておきます。その他の終了ブロックと揃えておきます。
7. ワークフロー使ってみると・・・
実際にこのAIコメントバックワークフローを使ってみた結果をご紹介します。
例えば、前回の記事で紹介した先生方へのスプレッドシート研修会のふり返りに対するコメントバックをしてみましょう。
このコメントに対してコメントバックしたもらった結果が次の通り。
この例からもわかるように、AIは単にコメントを返すだけでなく、内容を理解し、学習を促すような温かい言葉でフィードバックを生成してくれます。さらに、文字数制限を加えることで、長文になりがちなAIの出力を、より的確で読みやすいコメントに調整することが可能になります。
8. このワークフローをスプレッドシート連携させることで実務でもっと使いやすくなる
次回は、このDifyで作成したワークフローとGoogleスプレッドシートを連携させることで、さらに利便性を高める方法についてお伝えする予定です。実務でもっと使えます。お楽しみに!!
9. 紹介したこのワークフローのDSLファイルをプレゼントします
まだまだ試作ですが、このDSLファイルをプレゼントします。ほしい方は「スキ」していただいた後に「コメント欄」で教えていただければ何らかの方法でお渡しできます。
私が参加させてもらっているAIについて学ぶ教育関係者向けの勉強会でも今回のAIツールを紹介しています。もし興味あればどうぞ。