LangChain v0.3における 'ConversationBufferMemory' の ImportError 解決方法

初級🧠 AI Tools2026-07-14| Python 3.9+, LangChain v0.3.x, langchain-community, Windows/macOS/Linux

Error Message

ImportError: cannot import name 'ConversationBufferMemory' from 'langchain.memory'
#langchain#python#import-error#memory#langchain-community

問題の発生

pip install --upgrade langchain を実行した直後、チャットボットが突然動作しなくなったことはありませんか?アプリケーションを起動しようとすると、Pythonは次のようなトレースバックを表示します。

Traceback (most recent call last):
  File "app.py", line 5, in <module>
    from langchain.memory import ConversationBufferMemory
ImportError: cannot import name 'ConversationBufferMemory' from 'langchain.memory'

これは、LangChain v0.3で大規模なアーキテクチャの変更が行われたために発生します。開発チームは、コアとなる langchain パッケージを最小限の構成に整理しました。ほとんどのメモリ ユーティリティを含むレガシー コンポーネントは、コア ライブラリを軽量かつモジュール化するために、別のパッケージに移動されました。

インポートが失敗する理由

以前のバージョン(v0.1およびv0.2の初期)では、ConversationBufferMemory はメイン パッケージ内に直接含まれていました。v0.3以降、langchain パッケージは主に薄いラッパーとして機能します。

ConversationBufferMemory クラスは現在、langchain-community に配置されています。メイン パッケージをアップグレードしても、関連する community パッケージをインストールしていない場合、以前の場所でクラスを見つけることができません。これは、依存関係が新しい場所に移動したものの、古い名前空間に転送先のアドレスを残していないという典型的なケースです。

ステップ 1: Community パッケージのインストール

最初のステップは、必要な実装パッケージがインストールされていることを確認することです。一括アップグレードの際、多くの開発者がこのステップを忘れがちです。

ターミナルで次のコマンドを実行してください。

pip install -U langchain-community

モダンな依存関係マネージャーを使用している場合は、対応するコマンドを使用してください。

# Poetryユーザーの場合
poetry add langchain-community

# Pipenvユーザーの場合
pipenv install langchain-community

ステップ 2: インポート文の更新

パッケージをインストールするだけでは不十分です。Pythonに対して、新しい langchain_community 名前空間を探すように指示する必要があります。旧来のインポート パスは非推奨となり、v0.3ではエラーが発生します。

失敗するインポート(旧)

# v0.3では失敗します
from langchain.memory import ConversationBufferMemory

正しいインポート(新)

# community名前空間に変更します
from langchain_community.memory import ConversationBufferMemory

この変更は他のメモリ タイプにも適用されます。ConversationSummaryMemoryReadOnlySharedMemory を使用している場合も、それらのパスを langchain_community.memory に更新する必要があります。

Chat History の更新も忘れずに

プロジェクトで生のメッセージ文字列を保存するために ChatMessageHistory を使用している場合、それも移動されています。最初の修正の直後に別のエラーが発生するのを防ぐため、そのインポートも更新する必要があるでしょう。

# メッセージ履歴の新しいパス
from langchain_community.chat_message_histories import ChatMessageHistory

検証: 修正のテスト

5行の簡単なテスト スクリプトを実行して、すべてが正常に動作することを確認しましょう。check_memory.py という名前のファイルを作成します。

try:
    from langchain_community.memory import ConversationBufferMemory
    memory = ConversationBufferMemory()
    memory.save_context({"user": "こんにちは"}, {"bot": "こんにちは!何かお手伝いしましょうか?"})
    print("成功: メモリは正常に動作しています。")
    print("バッファの内容:", memory.load_memory_variables({}))
except ImportError:
    print("インポートに失敗しました。langchain-communityのインストールを確認してください。")

python check_memory.py で実行します。「成功」メッセージが表示されれば、復旧完了です。

より良い方法: LangGraph への移行

この修正によってレガシー コードは動作し続けますが、LangChain チームは現在 langchain.memory モジュールをメンテナンス モードと見なしています。2024年以降の本番用アプリケーションでは、状態管理に LangGraph を使用することが推奨されています。

LangGraph のチェックポインターは、従来の ConversationBufferMemory よりも優れた永続性と制御を提供します。新しいプロジェクトを開始する場合は、これらのレガシーな community コンポーネントに頼るのではなく、LangGraph の状態管理を学ぶ時間を投資する価値があります。

Related Error Notes