ConversationSummaryMemory

LangChainにおける**「ConversationSummaryMemory」は、大規模言語モデル(LLM)との対話履歴を要約形式で保存・管理**するためのメモリ機構です。これは、過去の会話履歴全体をすべて保持する代わりに、要約された会話内容のみを記憶し、プロンプトのトークン数を節約しつつコンテキストを維持することを目的としています。


1. 基本概念と目的

通常のConversationBufferMemoryでは、ユーザーとエージェントのすべての発話がそのまま記録されますが、ConversationSummaryMemoryでは、以下のような特徴を持っています:

  • 要約ベースの記憶形式

  • トークンの効率化(特に長時間の会話に有効)

  • 過去の対話を簡潔に振り返れるようにする


2. 動作の仕組み

初期化時

python
from langchain.memory import ConversationSummaryMemory from langchain.chat_models import ChatOpenAI llm = ChatOpenAI(temperature=0) memory = ConversationSummaryMemory(llm=llm)

要約生成の流れ

  1. 会話が進行する。

  2. ConversationSummaryMemoryは現在までの会話をLLMに渡して要約文を生成。

  3. その要約文を次回以降の会話のコンテキストとして保持

  4. 要約は累積的に更新されていく(新しい情報が追加されるたびに再要約)。


3. 使用例

python
from langchain.chains import ConversationChain conversation = ConversationChain( llm=llm, memory=ConversationSummaryMemory(llm=llm), verbose=True ) conversation.predict(input="こんにちは、私の名前は田中です。") conversation.predict(input="先ほど話した内容を覚えていますか?")

このようにして、会話が長くなっても、要約を通じてコンテキストを保ったまま応答することが可能です。


4. 主なメリット

項目 説明
効率的なトークン管理 要約によりプロンプト長を抑え、APIコストの削減につながる
長期対話に強い 長時間の会話でも全履歴を保持する必要がない
推論性能の安定化 関連情報のみを簡潔に伝えることでLLMの理解度を向上させる

5. 注意点

  • 要約の質はLLMに依存します。要約が不正確だと、コンテキストの誤解を招く可能性があります。

  • 要約を生成する際にも追加でLLMの呼び出しが発生するため、コストに注意が必要です。


6. まとめ

ConversationSummaryMemoryは、LangChainにおける効率的かつスケーラブルな会話管理を可能にする重要なメモリコンポーネントです。要約ベースで過去の会話履歴を保持することで、長い対話においても適切な文脈を維持しながら、モデルの出力品質を高める役割を果たします。

ChatGPT4o 生成日:2025/06/12