チャットボットと会話するたびに、「私は〇〇が好きです」と同じことを何度も説明するのは面倒ではありませんか?
Difyの「Personalized Memory Assistant(パーソナライズされた記憶アシスタント)」テンプレートは、ユーザーとの会話から「事実」「好み」「思い出」を抽出し、長期的な記憶として保持し続けることができる高度なチャットフローです。
この記事では、OpenAIのMemory機能やオープンソースプロジェクト「mem0ai」にインスパイアされた、この「記憶するAI」の仕組みと構築方法を解説します。
Personalized Memory Assistantとは:あなた専属の秘書AI
このテンプレートは、会話の中でユーザーが発した重要な情報(例:「コーヒーはブラックが好き」「来週京都に行く」など)を自動的に検出し、データベース(会話変数)に保存します。
次回以降の会話では、その保存された記憶を参照して回答するため、「いつものコーヒーでいいですか?」「京都旅行の準備はどうですか?」といった、文脈を踏まえたパーソナライズされた対話が可能になります。
Difyで構築する機能概要
本テンプレートでは、以下のロジックで記憶の形成と活用を行います。
- 記憶の判断:ユーザーの発言に「覚えるべき新しい情報」が含まれているかをAIが判断します。
- 記憶の抽出と保存:情報を「事実(Facts)」「好み(Preferences)」「思い出(Memories)」に分類して抽出・保存します。
- 記憶の活用:過去の記憶を参照しながら、現在の質問に回答します。

機能
公開するる専門家です。あなたの仕事は、提供された情報を用いて、質問に正確かつ簡潔に回答することです。
ガイドライン: – 質問に基づいて、記憶から関連情報を抽出します。 – 関連情報が見つからない場合は、「情報が見つからなかった」とは言わないでください。代わりに、質問を認め、一般的な回答を提供します。 – 回答は明確かつ簡潔で、質問に直接答えるものにしてください。回答の言語がこのアプローチと一致していることを確認してください。
【重要】最適化モデルのワークフロー詳細(ノード表)
このテンプレートは、Difyの「会話変数(Conversation Variables)」機能をフル活用しています。
以下は、実際に動作する完成版モデルの全ノード構成と設定内容です。
クエリに応答する際、ノードは関連する記憶に基づいて回答する必要があります。記憶に関連性がない場合は、一般的な回答を提供する必要があります。
あなたは提供された記憶に基づいて回答す
プレビュー
| アイテム名(ノード名) | 処理内容・設定詳細 |
|---|---|
| Start (Start) | ワークフローの開始 ユーザーからの入力を受け付けます。 ※事前に「会話変数(array[object]型)」を設定しておく必要があります。 |
| 記憶保存の決定 (LLM) | 記憶すべきかの判断(使用AI:Gemini 1.5 Pro) ユーザーの入力に、保存すべき新しい「事実」「好み」「記憶」が含まれているかを判定します。 Yes/Noで判断し、次の分岐に渡します。 |
| 条件分岐 (IF/ELSE) | 処理ルートの分岐 ・IF(記憶あり):新しい記憶を抽出・保存してから回答するルートへ。 ・ELSE(記憶なし):既存の記憶だけを参照して回答するルートへ。 |
| 【IF:新しい記憶がある場合】 | |
| ∟ 記憶の抽出 (LLM) | 情報の構造化(使用AI:Gemini 1.5 Pro) mem0aiのプロンプトをベースに、入力テキストから「facts(事実)」「preferences(好み)」「memories(記憶)」をJSON形式で抽出します。 |
| ∟ 文字列をオブジェクトへ (Code) | データ型変換 LLMが出力したJSON文字列を、Difyの会話変数に格納できる「オブジェクト型」に変換するPythonコードを実行します。 |
| ∟ 変数の割当 (Variable Assigner) | 長期記憶の更新 変換されたデータを、セッションレベルの会話変数(array[object])に追加(Append)または上書きします。 これにより、ブラウザを閉じても記憶が保持されます。 |
| ∟ オブジェクトを文字列へ (Code) | コンテキスト化 更新された記憶オブジェクトを、再びLLMが読める文字列(XMLタグ付きなど)に変換します。 |
| ∟ 応答2 (LLM) | 回答生成(使用AI:Gemini 1.5 Pro) 「更新された最新の記憶」と「ユーザーの質問」の両方を参照し、文脈に沿った回答を生成します。 |
| ∟ Answer(2) | ユーザーに回答を表示します。 |
| 【ELSE:新しい記憶がない場合】 | |
| ∟ オブジェクトを文字列へ (Code) | 既存記憶の読み込み 現在の会話変数に保存されている記憶データを読み込み、LLMへの入力用文字列に変換します。 |
| ∟ 応答 (LLM) | 回答生成(使用AI:Gemini 1.5 Pro) 「既存の記憶」を参照して、質問に回答します。 プロンプト:「提供された記憶に基づいて回答してください。情報がない場合は一般的な回答をしてください。」 |
| ∟ Answer(1) | ユーザーに回答を表示します。 |
DifyでPersonalized Memory Assistantを構築・有効化する手順
以下の手順で、記憶するAIを自身のワークスペースに導入できます。
- Difyダッシュボードの「探索」からテンプレートを選択し、ワークスペースに追加します。
- 会話変数の確認:「環境設定(Settings)」→「会話変数(Conversation Variables)」に移動し、記憶を保存するための変数が設定されているか確認します(通常は自動設定されます)。
- モデルの設定:各LLMノードにGemini 1.5 Proなどの高性能モデルが割り当てられているか確認し、APIキーを設定します。
- 動作確認:プレビューで「私は辛い食べ物が苦手です」と入力した後、別の話題を挟んでから「おすすめのレストランを教えて」と聞き、辛い店を避けて提案してくれるかテストします。
このテンプレートを活用するメリット
「会話変数」というDifyの強力な機能を、実践的な形で学ぶことができます。
- ユーザー体験の向上:自分のことを覚えていてくれるAIは、ユーザーに愛着と信頼感を与えます。
- 情報の再入力不要:一度伝えた要件(OSの種類、好みの言語など)を毎回入力する手間が省けます。
- パーソナライズされた提案:個人の嗜好に基づいた、より精度の高いレコメンドが可能になります。
まとめ
Personalized Memory Assistantは、単なるQ&Aボットを超え、ユーザーのパートナーとなり得るAIエージェントのひな形です。
カスタマーサポート、パーソナルコーチ、旅行コンシェルジュなど、継続的な対話が必要なあらゆるサービスに応用可能です。
ミラーマスター合同会社では、このような「記憶機能」を持った高度なチャットボットの開発支援や、外部データベース(Vector DB)と連携させた大規模な記憶システムの構築も承っております。顧客満足度を高めるAI活用をご検討の際は、ぜひお気軽にご相談ください。
【推奨】業務システム化に有効なアイテム
生成AIを学ぶ



システム化のパートナー(ミラーマスター合同会社)



VPSサーバの選定





コメント