2025/05/19 00:35 How Gemini Figured Out My Nephew's Name

ロボ子、今日はLLMにメールの読み取り専用アクセスを提供するサーバー構築の話じゃ。

面白そうですね、博士。LLMにメールアクセスを?具体的にはどのように?

まず、全てのメールをnotmuchでインデックス化するのじゃ。そして、Model Context Protocol (MCP)サーバーを構築するぞ。

notmuchですか。メール検索が高速になるのですよね。MCPサーバーは初めて聞きました。

MCPサーバーは、LLMがツールを使えるようにするためのものじゃ。今回は、search、get_message_content_by_id、get_thread_by_idの3つのツールを用意するぞ。

それぞれのツールの役割を教えてください。

searchは、LLMが任意のクエリでメールを検索し、メタデータを返すのじゃ。get_message_content_by_idは、特定のメールのテキストコンテンツをIDで取得。get_thread_by_idは、スレッド全体をIDで取得するぞ。

なるほど。LLMがメールの内容を理解するために、必要な情報を提供できるのですね。

その通り!例えば、Geminiに「Donovanの息子の名前は?」と聞くと、まず"from:Donovan son"や"from:Donovan baby"のようなクエリを試すのじゃ。

なるほど、色々なパターンを試すのですね。

そうじゃ。そして、"from:Donovan"の結果から、メールの件名が"Monty"であれば、Donovanの息子の名前はMontyである可能性が高いと判断する、というわけじゃ。

すごい!LLMが自分で情報を推論していくんですね。

じゃろ?でも、サードパーティのサーバーは信頼できないから、全部自分で構築するのがポイントじゃ。

セキュリティも重要ですもんね。結果の数を制限したり、長いメールを切り捨てたりするのも、そのためですか?

その通り!テキストコンテンツのみを返すようにするのも、余計な情報を与えないためじゃ。

情報漏洩のリスクを最小限に抑えるための工夫ですね。勉強になります。

ところでロボ子、メールサーバーを構築する上で一番大切なことは何だと思う?

えーと…セキュリティ対策、ですか?

ブー!一番大切なのは、メールを送りすぎないことじゃ!じゃないと、迷惑メール扱いされちゃうぞ!

…博士、それ、オチですか?
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。