langchainのlangchain.chainsを使おうとしたらエラーが出た話

Python

みんな大好き,LangChainがどうやらV1.0が出たらしく,早速使おうとしたらエラーが出たので,残しておきます.

問題のコード

以下のようなコードです.

from langchain.chains import LLMChain
from langchain.retrievers import MultiVectorRetriever

発生した問題

実行すると,こんな感じのエラーが出ると思います.

ModuleNotFoundError: No module named 'langchain.chains'
ModuleNotFoundError: No module named 'langchain.retrievers'

まあ,エラーの通りモジュールが無いみたい.

原因

v1.0になってモジュール名が変わったようです.
以下の公式ドキュメントに書いてありますねー.
(これ見たらこの記事意味ないかも…).
https://docs.langchain.com/oss/python/releases/langchain-v1#langchain-classic

どうやら,コアパッケージを軽量化し,エージェント構築に集中させるためらしいです.これにより,以下のようになったみたいです.
langchain: エージェント構築に必要な必須機能(Agents, Messages, Toolsなど)のみに絞り込み.
langchain-classic: 従来のChain(Legacy chains),Retriever,Indexing APIなどの古い機能は,こっちの新パッケージに移動.

解決方法

新パッケージに移動されてしまったらしいので,まずlangchain-classicをもってきます.
uvなら

uv add langchain-classic

pipなら

pip install langchain-classic

次にimportを変えていきます.

from langchain_classic.chains import ...
from langchain_classic.retrievers import ...

おわりに

どうやら,まだ新し目の情報で,日本語記事は少なかったり,昔のimportのままの記事が多かったりするのでちょっと困りましたね.
今回はエラー解決なので,だいぶ緩めの記事ですが,誰かの参考になれば幸いです.

コメント

タイトルとURLをコピーしました