ホームへ戻る

GitHub Repo

LangChain Core 1.6.4、会話履歴クラスを非推奨化し、グラフ状態のチェックポイント保存へ

新版では2つの会話履歴クラスを非推奨とし、2.0.0での削除を予告した。既存の操作は引き続きサポートされるが、移行には会話ID、保存形式、復旧手順の再確認が必要となる。

Dirck van Baburen · Public domain · Image source
zh-Hant

LangChain は9月21日、Python パッケージ langchain-core 1.6.4 をリリースし、`BaseChatMessageHistory` と `InMemoryChatMessageHistory` を非推奨とした。削除予定のバージョンは 2.0.0。従来のクラスで複数ターンの会話を保存しているアプリケーションに対し、移行を促す明確な方針が示された。既存のメッセージ操作は引き続きサポートされ、このパッチバージョンへの更新によって履歴機能が直ちに失われるわけではない。[リリース告知](https://github.com/langchain-ai/langchain/releases/tag/langchain-core==1.6.4/)、[PyPI のリリース記録](https://pypi.org/project/langchain-core/1.6.4/)。

この2つのクラスは従来、メッセージの読み取り、追加、消去のインターフェースを提供していた。今回のプルリクエストでは、公式の短期メモリのドキュメントへ案内するとともに、非推奨化デコレーターが多重継承に及ぼす影響にも対処している。継承チェーンに沿って初期化処理を呼び出すことで、Pydantic の初期化を維持する。履歴保存クラスを独自に拡張しているチームは、オブジェクトの生成とフィールドの検証もアップグレード時の確認対象に含めるとよい。[プルリクエストの説明](https://github.com/langchain-ai/langchain/pull/40711)。

公式が推奨するのは、会話をエージェントのグラフ状態に組み込み、チェックポインター(checkpointer)で保存する方式だ。エージェントの作成時にチェックポイントの保存機構を渡し、呼び出し時に `thread_id` を指定する。同じ会話では以前の状態を引き継ぎ、異なるIDの会話は個別に保存できる。短期メモリはエージェントの呼び出しやツールのステップが完了するたびに更新され、次のステップの開始時に読み込まれる。これにより、メモリのライフサイクルが実行フローと結び付く。[短期メモリのドキュメント](https://docs.langchain.com/oss/python/langchain/short-term-memory)。

技術的な違いは、保存対象がグラフ状態に広がる点にある。LangGraph は super-step の境界で完全なチェックポイントを保存するほか、完了したノードの中間書き込みも別途保存する。同じステップで別のノードが失敗しても、復旧時には成功したノードの結果を再利用できる。この仕組みは、人間の介入、過去の状態の参照、障害からの復旧を支える。ただし、実際のデータの耐久性は書き込みモードとストレージバックエンドに依存する。[チェックポイントの仕組み](https://docs.langchain.com/oss/python/langgraph/checkpointers)。

開発環境では `InMemorySaver` を利用できる。本番デプロイについては、ドキュメントで `PostgresSaver` などのデータベースバックエンドが推奨されている。長い会話には、引き続き履歴の切り詰めや要約の方針を設計する必要がある。履歴全体を保存しても、モデルのコンテキストウィンドウが広がるわけではない。[デプロイとメモリ管理に関する推奨事項](https://docs.langchain.com/oss/python/langchain/short-term-memory)。

移行におけるエンジニアリング上の要点は、従来のクラスの呼び出し箇所、会話ID、既存のデータ形式を洗い出し、再起動後の会話の再開、ツール応答の順序、消去動作を検証することだ。同期と非同期のストレージ実装を両方維持している場合は、どちらの処理経路も実際の会話データでテストする必要がある。これらは2つのインターフェースの違いに基づく確認事項であり、今回のリリースが自動移行を保証しているわけではない。今後はクラス名の置き換えだけで済ませず、2.0.0 での削除範囲と連携パッケージの互換性を追跡する必要がある。

出典

  1. Release langchain-core==1.6.4
  2. chore(core): deprecate chat message history #40711
  3. langchain-core 1.6.4
  4. Short-term memory
  5. Checkpointers