J・K・ローリングの人気児童小説「ハリー・ポッター」シリーズの2作目である『ハリー・ポッターと秘密の部屋』に登場する「トム・リドルの日記」は、日記帳に文字を書き込むことでホグワーツ魔法学校の元学生だったトム・リドルと会話ができるというアイテムでした。このトム・リドルの日記をLLM(大規模言語モデル)を使って再現するツール「Riddle」がオープンソースで開発されています。

MaximeRivest/riddle: The diary of Tom Riddle for the reMarkable Paper Pro - write with your pen, the page drinks your ink and answers in a flowing hand

https://github.com/MaximeRivest/Riddle

実際にトム・リドルの日記で会話するところは以下のムービーで見ることができます。



電子ペーパータブレットのreMarkable Paper Proに、「こんにちは、ぼくはハリー・ポッターです」と書き込みます。



すると、書き込んだ文章がスーッと消えていきました。



そして少し間を置いてから、「この日記をどこで手に入れた?」というトム・リドルからの返事が、まるでペンで書いているかのようなアニメーションで表示されました。ポイントはUIも何もなく、書き込んだ文章が吸い込まれるように消えていき、しばし考えるような時間を挟んでから、筆記体で回答が表示されるというところ。



Riddleは手書きをPNG画像として読み取る、画像入力対応のLLMを使う設計です。Riddleが手書き文字をOCRでテキスト化してからLLMへ送るのではなく、書いたページを画像としてLLMに渡しているため、画像入力に対応したVision LLMが必要です。

標準設定ではOpenAI互換APIに接続し、モデル名を指定しなければgpt-4o-miniが使われます。OpenAIのほか、OpenRouter、Groq、ローカルのOpenAI互換サーバーなどにも接続できます。APIキーを設定しない場合は、マルチモデル対応のオープンソース・コーディングエージェントである「Pi」を利用可能。

返答の「手書き」は画像を単に表示しているわけではなく、Dancing Scriptという筆記体フォントをいったん画像化し、線を細い輪郭へ変換してから、ペン先が動く経路として再構成します。その経路を少しずつ再生するため、文字が一画ずつ書かれているように見えるというわけ。

画面表示にはAppLoad上で通常のアプリとして動かす方式と、reMarkable標準UIのxochitlを停止してe-ink描画エンジンを直接使う方式の2種類があります。後者は遅延を最小化するための「takeover」モードで、デモで見られるような即時性の高いペン表示を狙ったものだとのこと。

なお、開発者のマキシム・リヴェスト氏は「トム・リドルの日記」のほか、同じく「ハリー・ポッター」シリーズに登場する「忍びの地図」もreMarkable Paper Proで再現しています。