SocraticGuard — ソクラテス式学習ガード

AI/ML

概要

SocraticGuardは「AIチュータが生徒にクイズの解答を与えてはいけない」という方針をランタイムレベルで強制する小型のプロジェクトです。プロンプトやモデルの善意に頼るのではなく、リクエスト中の解答要求パターンを検出するパイプラインを用いて回答を拒否し、代わりにソクラテス式の質問や学習を促すリダイレクト分類へ変換します。実装はTypeScriptで行われ、Geminiによるストリーミング応答(Google Searchでのグラウンディングあり)をメインに、必要に応じてOpenAIをフォールバックとして利用する設計です。教育向けの不正利用(宿題の丸写しなど)を阻止する実務上の仕組みを提供します。

GitHub

リポジトリの統計情報

  • スター数: 1
  • フォーク数: 0
  • ウォッチャー数: 1
  • コミット数: 3
  • ファイル数: 7
  • メインの言語: TypeScript

主な特徴

  • ランタイム強制のガードレール: プロンプト内の指示だけでなく、実行時に挙動を検査して「解答を与えない」ことを確実に実施。
  • パターン検出による拒否とリダイレクト: 解答要求をパターンマッチで検出し、ソクラテス式質問へ自動的に誘導する分類ロジックを持つ。
  • Geminiストリーミングと検索グラウンディング: Google Geminiでのストリーミング応答を基本とし、検索による情報の裏付けを行う設計(OpenAIはフォールバック)。
  • 教育現場向けの実務性: 「ゼロ・宿題カンニング」を目標にした設計思想で、実際のEDTechプロダクトに組み込みやすい。

技術的なポイント

READMEとリポジトリ構成から読み取れる技術要素と設計上の注目点を整理します。まず方針面では「プロンプトだけに依存しない」ことが重要で、これはモデルの出力を実行する前に解析・介入するミドルウェア的レイヤを意味します。実装はTypeScriptで行われており、以下のような構成想定が考えられます。

  • パターン検出(検出器): クイズの直接的な解答要求や宿題のコピーを示す語彙・構文パターンを正規表現やトークンベースのルール、あるいは軽量の分類器で検出します。ここは誤検出を抑えつつ網羅性を確保するためにホワイトリスト/ブラックリストやスコアリングを組み合わせる設計が想定されます。
  • リダイレクトとタクソノミー: 検出されたパターンに対してどのようなソクラテス式の質問へ変換するかを決める「リダイレクト・タクソノミー」を持ちます。たとえば「手順の説明を求める」「概念理解を促す」「部分的ヒントを提供する」など複数の返答戦略を分類して選択します。
  • モデルストリーミング統合: GeminiのストリーミングAPIとGoogle Searchによるグラウンディングを用いて段階的に応答を生成します。ストリーミング対応はユーザー体験改善(遅延の低減)と、途中で検出が入った場合の早期停止や差し替えを可能にする利点があります。
  • フォールバック設計: Geminiに障害がある場合やレイテンシ要件を満たせない場合はOpenAIへフォールバックする実装がREADMEに示唆されています。フォールバック時も同じ検出・リダイレクトロジックを通すことで一貫性を保ちます。
  • 実運用の考慮点: ランタイムでの介入は学習体験を損なわないよう、検出精度やエスカレーション(誤検出時の手動レビュー)経路、ログ・監査の仕組みが必要です。また、国や学習領域による表現差や文化差を許容するためのローカライズ可能なルール管理も重要です。

小規模リポジトリながら、上記の考え方は実運用を視野に入れた設計になっており、API呼び出しやストリーミング処理、ルール管理・分類ロジックの分離といったエンジニアリング上の良い実践が期待されます。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .env.example: file — APIキーや環境設定の雛形。GeminiやOpenAIのエンドポイント情報、シークレット設定が想定されます。
  • .gitignore: file — ビルド成果物や機密ファイルを無視する設定。
  • CONTRIBUTING.md: file — コントリビュート方針、開発フロー、コーディング規約などを規定している可能性があります。
  • README.md: file — プロジェクトの目的、使用方法、アーキテクチャの概要や依存関係が記載されています(抜粋は上に掲載)。
  • package.json: file — TypeScriptプロジェクトの依存関係やスクリプト。GeminiやOpenAIのSDK、ビルド・lintスクリプトがここに定義されている想定です。

…他 2 ファイル

上記の構成から、実行時のガードレールは環境変数でオン/オフ可能にし、Node.js実行環境で動作する小型のミドルウェアとして組み込めることが推測されます。実運用ではルールの追加・更新を容易にするため、ルール定義ファイルや管理UIを別途実装することが推奨されます。

まとめ

学習支援における「解答給付を技術的に阻止する」実践的アプローチを示す、教育向けガードレール実装のプロトタイプです。

リポジトリ情報:

READMEの抜粋:

SocraticGuard

AI tutor that refuses to give quiz answers — hardcoded guardrails that redirect to Socratic questioning.

JAX is the AI tutor inside Drivia. It streams responses via Gemini (Google Search grounding) with OpenAI fallback. The one thing it will never do: give a student a quiz answer. This is not a suggestion in the prompt — it’s a runtime enforcement layer with pattern detection and mandatory redirect behavior.


The Problem

Every edtech company that ships an AI tutor …