![見出し画像](https://assets.st-note.com/production/uploads/images/112261498/rectangle_large_type_2_c6ff2fd7af310d0f5c1252232bbf7ea2.png?width=1200)
LangChain Experimentalまとめ
7月20日に開催されたLangChain Japan MeetupでもHarrison本人から告知があった通り、実行時に何らかのリスクのある機能についてはLangChain本体からLangChain Experimentalという別パッケージに移行していくという作業が行われています。
全くの余談ですが、LangChain Japan Meetupでは私が主宰しているLangChainもくもく会の紹介をさせて頂きました。次回は明日8月2日20時開催なので、ご興味のある方はお気軽にご参加くださいませ(Discordでやります)。
というわけで、今回はどんな機能がExperimentalに移行されていっているのか、私自身の理解のためにまとめておきたいと思います。
公式ブログのまとめ
LangChain Experimentalの概要については公式ブログで紹介されています。
ブログの内容をざっくりまとめると以下の通り。
LangChainは言語モデルを外部データと計算ソースに接続していることを目指している。
この接続は強力だが、新しいリスクベクトルを開く可能性がある。実験的であるがゆえに、セキュリティ上の懸念を含むユースケースがある。
langchain_experimentalという別のPythonパッケージがリリースされ、CVEを引き起こしたコンポーネントが移動された。
両者の分離には、コアであるLangChainをより堅牢にすることと、その他リスクのある機能の開発を迅速に推進することの二重の目標がある。
移行の対象として、具体的には
Retrieval augmented generation:言語モデルを検索システムに接続
Interacting with APIs:特定のAPIリクエストのパスとパラメータを生成
Code generation:言語モデルがコードを生成し実行
あたりの機能をリスクのある機能としてLangChain Experimentalに移行しているようです。
移行対象へのもう少し詳しい言及は↓
https://github.com/langchain-ai/langchain/discussions/8043
LangChain Experimentalへの移行方法
以下のドキュメントに移行方法が記載されています。
https://github.com/langchain-ai/langchain/blob/master/MIGRATE.md
パッケージ自体が分割されているので、以下のように二つパッケージをインストール必要があり、
pip install -U langchain langchain_experimental
インポートも変更する必要があります。
from langchain_experimental import ...
ライブラリのコード構造
リポジトリ自体は分かれておらず(monorepo)、libs以下にlangchain_experimentalとlangchainが並んでいます。
![](https://assets.st-note.com/img/1690880058838-CktpDwGim2.png)
LangChain Experimentalは0.0.1からバージョン番号が再カウントされており、8月1日現在は0.0.5が最新です。CoreとExperimentalのバージョンがGitHubのTags内で混在しているので、差分まとめを定期的に作っている私としてはちょっとつらいですね。。
もくもく会のネタ的にはLangChain Experimental側に追加される機能の方が盛り上がりそうなので、差分はExperimentalのものだけ扱っていくようにしようかなぁと思案中です。何となく会の中で意見を伺いつつ、方向性を定めて行ければと考えています。
現場からは以上です。