10分で読めます
  • AI
  • ツール
  • How-to
  • 教育

DeepTutor——香港大学発のオープンソースAI家庭教師が、調べて・出題して・覚えてくれる

29Kスター突破のオープンソースAIチューター「DeepTutor」の使い方を解説。RAGで自分の資料を読み込み、問題を出して、3層の記憶で学習を継続させる——香港大学HKUDSラボ発の全部入り学習エージェントを、インストールから実際の使い方までステップで追います。

カテゴリー: AI · ツール · How-to · 教育 | 公開: 2026年7月24日 | 読了目安: 約10分

29Kスター突破のオープンソースAIチューター「DeepTutor」の使い方を解説。RAGで自分の資料を読み込み、問題を出して、3層の記憶で学習を継続させる——香港大学HKUDSラボ発の全部入り学習エージェントを、インストールから実際の使い方までステップで追います。

📑 目次

ふむふむ。最近「AIチューター」って言葉をよく聞くようになって、なんだかフワッとしていませんか?

「AIに質問すれば答えてくれる」——それ、ChatGPTに直接聞くのと何が違うの? とチカちゃんは思ってたんですよね。でも今週、GitHub Trendingの上位にいて気になった DeepTutor を読んでて、ちょっと見方が変わりました。

これ、単なるQ&Aボットじゃないんです。

調べる。問題を出す。覚えてる。自分のPDFを読み込んで、そこから問題を作って、前回どこでつまずいたかまで記録する。「学習を継続させる」という設計が最初から入ってる。

しかも香港大学のHKUDSラボが主導するオープンソース(Apache 2.0)で、29,000スター。論文も出てます(arXiv:2604.26962)。今日はこれを、実際にどう立ち上げてどう使うか、ステップで追っていきます。

DeepTutorは何をするのか——ひと言で

DeepTutorは、エージェントネイティブな学習ワークスペースです。

「エージェントネイティブ」って何? となりますよね。要するに、Chat(対話)・Quiz(出題)・Research(調査)・Solve(問題解決)・Visualize(図表化)・Mastery Path(習熟度チェック)という複数のモードが、全部同じエージェントのループ上で動くってこと。目的を切り替えるとき、エンジンごと変えるんじゃなくて「今はQuizモードで」と指示するだけ。学習の文脈(コンテキスト)がモードをまたいで持ち運ばれる——ここが普通のAIツールとの違いです。

具体的にできることを並べると:

  • ナレッジベース(RAG) — 自分のPDF、DOCX、Markdownを読み込ませて、そこから質問に答える。LlamaIndex・GraphRAG・LightRAG・PageIndexから検索エンジンを選べる。Obsidianボルトもリンク可能
  • 問題生成と習熟度チェック — 読み込んだ資料から自動でクイズを作り、「ここは理解が浅い」と判定したら重点的に掘り下げる
  • 3層の記憶(Memory) — L1(トレース)・L2(要約)・L3(統合)で、学習者が何を理解し、何を忘れがちかを記録。Memory Graphが「この主張はどの資料から来たか」まで遡って確認できる
  • パートナー — Claude CodeやCodexなどの外部エージェントを、チャットの途中で呼び出して相談できる。外部ツールの過去ログもインポート可能
  • CLIモード — Web UIなしでターミナルから全部叩ける。スクリプトに組み込む用途向け

つまり「教科書を読み込ませて、問題を出してもらって、間違えたところを覚えておいて、次はそこを重点的に」——人間の家庭教師がやる一連の流れを、エージェント1つで回そうとしている。ここが面白い。

事前確認——動かすのに必要なもの

インストール前に、環境を確認しておきましょう。

  • Python 3.11 以上(3.14まで動作確認済み)
  • Node.js 20 以上(Webアプリ版を使う場合。パッケージされたNext.js standaloneサーバーを起動するのに必要)
  • LLMのAPIキー — OpenAI、Anthropic、Google、またはOllama・LM Studio・llama.cppなどのローカル環境

ローカルLLMだけで完結させることも可能です。APIキーなしでも、Ollamaが動いていれば完全に自分のマシン内で学習できます。

クイックスタート——3コマンドで立ち上げる

一番手軽なのは、PyPIからインストールする方法です。

# 1. 作業ディレクトリを作る
mkdir -p my-deeptutor && cd my-deeptutor

# 2. インストール
pip install -U deeptutor

# 3. 初期化(ポート・LLMプロバイダー・埋め込みモデルを聞かれる)
deeptutor init

# 4. 起動(バックエンド+フロントエンドが同時に上がる)
deeptutor start

deeptutor init で対話式に聞かれるのは以下の項目です:

項目デフォルト内容
バックエンドポート8001API用ポート
フロントエンドポート3782ブラウザで開くポート
LLMプロバイダーOpenAI / Anthropic / Ollama等
ベースURLローカル環境のエンドポイント
APIキープロバイダーのキー
モデル名使いたいモデル
埋め込みプロバイダーRAG用。省略可(後で設定可能)

init をスキップしても大丈夫——空の設定で起動し、あとからWebの Settings → Models で設定できます。まず触ってみたい人はスキップ推奨。

起動したら、ターミナルに表示されるURL(デフォルトは http://127.0.0.1:3782)をブラウザで開きます。止めるときは Ctrl+C

Dockerで一発起動——環境を汚したくない人向け

Python環境をいじりたくない場合は、Dockerが一番きれいです。

docker run --rm --name deeptutor \
  -p 127.0.0.1:3782:3782 \
  -v deeptutor-data:/app/data \
  ghcr.io/hkuds/deeptutor:latest

公開するのは 3782 番だけ。ブラウザはフロントエンドにだけ通信し、コンテナ内のNext.jsミドルウェアが /api/* をバックエンド(8001番)に転送してくれます。設定やナレッジベースは deeptutor-data ボリュームに保存されるので、コンテナを消しても残ります。

ローカルLLMと繋ぎたい場合は、Docker内の localhost はコンテナ自身を指すため、ホストマシンに host.docker.internal で到達する設定が必要です:

docker run --rm --name deeptutor \
  -p 127.0.0.1:3782:3782 -p 127.0.0.1:8001:8001 \
  --add-host=host.docker.internal:host-gateway \
  -v deeptutor-data:/app/data \
  ghcr.io/hkuds/deeptutor:latest

そのうえで、Webの Settings → Models でベースURLを指定します:

  • Ollama(LLM): http://host.docker.internal:11434/v1
  • LM Studio: http://host.docker.internal:1234/v1
  • llama.cpp: http://host.docker.internal:8080/v1

実際に使ってみる——PDFを食わせて問題を出してもらう

立ち上がったら、一番やってみたくなるのは「自分の資料を読み込ませて学習する」ですよね。やってみます。

ステップ1:ナレッジベースを作る

Web UIの Knowledge Center から、新しいナレッジベースを作成。PDF・DOCX・Markdownなどをドラッグ&ドロップで追加します。

CLIからもできます:

deeptutor kb create my-textbook --doc textbook.pdf

すると、選んだ検索エンジン(デフォルトはLlamaIndex)でインデックスが作られます。GraphRAGを選べば「この概念はどの章のどの節で定義されていて、どこから参照されているか」という関係まで構築されます。ただのキーワード検索と、関係性を追える検索は、複雑な資料ほど差が出ます。

ステップ2:チャットで質問する

普通にチャット画面で「第3章の〇〇について説明して」と聞くと、ナレッジベースを検索して答えてくれます。ここまでは普通のRAG。

ステップ3:問題を出してもらう

ここがDeepTutorの肝。Quiz 機能、あるいは Guided Learning で「この資料から問題を出して」と指示すると、実際の理解度を試す問題を生成します。選択肢問題、穴埋め、記述式などがあり、解答すると採点してくれる。

さらに Mastery Path は、「この分野は理解度70%だから、残り30%を埋める問題を追加で出す」という具合に、習熟度に応じて出題を調整します。ここで記憶システムが効いてくる——前回間違えたところを覚えていて、重点的に出題してくれる。

ステップ4:記憶を確認する

Memory機能で、自分の学習履歴を確認できます:

deeptutor memory show

L1(トレース:学習の生の記録)、L2(要約)、L3(統合:「この学習者は概念Aは得意だが、計算系は弱い」みたいな傾向)の3層に分かれていて、それぞれ編集可能。「AIが勝手に覚えたこと」が見える化されているのは、透明性として安心できます。

CLIだけで使う——ターミナル派向け

Web UIが要らない人は、CLIのみの構成も可能です:

git clone https://github.com/HKUDS/DeepTutor.git
cd DeepTutor

python3 -m venv .venv-cli && source .venv-cli/bin/activate
python -m pip install --upgrade pip
python -m pip install -e ./packaging/deeptutor-cli

deeptutor init --cli
deeptutor chat

よく使うコマンドをいくつか:

# 対話REPL
deeptutor chat

# 特定のナレッジベースを使って問題解決
deeptutor chat --capability deep_solve --tool rag --kb my-kb

# ワンショットで質問
deeptutor run chat "フーリエ変換について説明して"

# RAG+KB指定で問題解決
deeptutor run deep_solve "x^2 = 4 を解け" --tool rag --kb my-kb

スクリプトに組み込んだり、エディタのターミナルからサッと聞いたりする用途に便利です。

ここで一回、疑っておきたい

便利そうに見えますが、チカちゃん的にはここでブレーキを踏みます。

「AIチューターに任せきりになると、自分で考える力が落ちないか?」

これは教育AI全般につきまとう問いです。DeepTutorはMastery Pathで「理解度」を測りますが、それを測っているのはAI。問題の作り方もAI。つまり「何を分かったとするか」も「何に挫折したとするか」も、LLMの判断に依存しています。

LLMの評価が外れるケース——たとえば、もっともらしいけど実は不正確な問題を出したり、学習者がたまたま正解しただけで深い理解がないのを「習熟」と判定したり——こういう罠は、GitHub Trendingの勢いだけでは見えません。

実際に使うときは:

  • 生成された問題の正確性を、たまに自分でも確認する
  • Memory Graphの主張が本当に正しいか、元資料と付き合わせる習慣をつける
  • 「AIが理解している」と「自分が理解している」を混同しない

この3つを自分のルールにしておくと、便利さと主体的な学習のバランスが取りやすいと思います。

どんな人に向いてる?

  • 自分の専門資料を体系的に学び直したい人 — 論文や教科書を食わせて、問題を出してもらう用途に強い
  • 試験対策が必要な人 — Mastery Pathが「ここが弱点」と可視化してくれるので、効率よく復習できる
  • ローカルで完結させたい人 — Ollama等と組み合わせれば、データを一切外に出さずに学習環境が作れる
  • 学習記録をデータとして残したい人 — L1〜L3の3層メモリとMemory Graphで、何をどう学んだかが構造化される

逆に、さくっと概念を調べたいだけなら、普通にChatGPT等で十分。DeepTutorの本領は「継続的に学習する環境」として使うときに発揮されます。


参考URL


本記事は公開情報をもとにした個人的な技術メモです。DeepTutorの機能、動作要件、ライセンス条件は今後のバージョンで変更される可能性があります。導入前に公式リポジトリおよびドキュメント(deeptutor.info)を確認してください。特にRAGの検索精度やAI生成問題の正確性は、元資料とモデルの組み合わせに依存します。学習効果の最終判断は、人間自身が行うことをおすすめします。

思索は冒険です。今日の話も、その入口のひとつでした。

  • インターネット上のツールは第三者が提供するものです。開発工程や配布経路を悪用した攻撃(サプライチェーン攻撃)が仕掛けられる可能性もゼロではありません。ご利用の際は公式リポジトリの情報をご確認いただき、自己責任でお使いください。
  • AIに関する技術や情報は急速に変化します。本記事の内容が公開後に古くなる可能性があります。各サービスの公式ドキュメントや最新情報をご確認ください。