見出し画像

LangChain v0.2:安定性への飛躍

4ヶ月前、私たちはLangChainの最初の安定版をリリースしました。本日は、langchain v0.2のプレ(事前)リリースを発表します。

このリリースは、v0.1 で築かれた基盤に基づいて構築されており、コミュニティのフィードバックが組み込まれています。v0.2がもたらすものを共有できることを嬉しく思います。

  • langchainとlangchain-communityの完全分離

  • 新しい (バージョン管理された) ドキュメント

  • より成熟した制御可能なエージェントフレームワーク

  • LLMインターフェースの標準化の改善(特にツール呼び出しに関するもの)

  • ストリーミングサポートの改善

  • 30+新しいパートナーパッケージ

これは単なるプレ(事前)リリースであり、完全なv0.2リリースは数週間以内にリリースされます。langchain v0.2に含まれる内容について詳しく見ていきましょう。

安定性の採用:LangChainアーキテクチャの進化

langchain v0.2で最も注目すべき変更点の一つは、langchainパッケージとlangchain-communityの分離です。その結果、langchain-communityはlangchain-coreとlangchainに依存するようになりました。これはlangchain v0.1.0で始めた、より強固で自己完結的なパッケージを作るための作業の継続です。

💡
備忘録ろして、langchain v0.1.0では、本番環境でのLangChainの使いやすさを向上させるために、langchainパッケージをコンポーネントパッケージに分割しました。これらには、langchain-core、langchain、langchain-communityおよびパートナーパッケージが含まれていました。詳細については、こちらをお読みください


langchain-community多くのサードパーティ統合が含まれています。これは、多くの(オプションの)依存関係と多くのファイルがあり、統合の性質上、パッケージがCVEに対して脆弱であることを意味します。したがって、langchainのlangchain-communityへの依存を取り除くことで、langchainはより軽量になり、より集中し、より安全になる。

既存のエントリーポイントを公開し続けることで、最小限の混乱でこの再編成を行おうとしました。基本的には、langchain-communityがインストールされているかどうかをチェックし、もしインストールされていればインポートを行います。つまり、インストール済みの場合、破壊的変更はありません。

このアイデアはコミュニティメンバーから来ました-ジェイコブに感謝します!

見つけやすさの向上: ドキュメントのバージョン管理の改善

また、コミュニティからのフィードバックに基づいてドキュメントを刷新しました。この取り組みは 1 か月以上前に開始され、主に 2 つの方法で継続しています。

まず、ドキュメントのバージョン管理が行われます。これはコミュニティからの絶え間ない要望であり、私たちはこれを実現するために懸命に取り組んできました。既存のドキュメントを v0.1 ビルドとして維持し、別の v0.2 ビルドのビルドを開始します。今のところ、ドキュメントはデフォルトでv0.1になりますが、完全な0.2リリースがリリースされると、新しいドキュメントがデフォルトになります。バージョン管理されたドキュメントは、パッケージの状態をよりよく反映するはずであり、ここから改善することを望んでいます。

第二に、ドキュメントはよりフラットでシンプルになりました。チュートリアル、ハウツー ガイド、概念ガイド、API リファレンスの 4 つの主要なセクションがあります。これにより、ドキュメントを見つけやすくなり、一貫性のあるガイドの最小限のセットを維持できるようになります。これもコミュニティの提案でした - Redditユーザーの@Zealousideal_Wolf624に感謝します!

また、LangChainの変更点をより明確にするために、「LangChain over time」のドキュメントページにも取り組んでいます。これが、バージョン間での概念の説明と関連付けに役立つことを願っています。

パワーアップ:LangGraphエージェント

LangChainの初期の頃から、フィードバックの最大のポイントの1つは、事前に構築されたチェーンとエージェントの内部をカスタマイズするのは難しいということでした。昨年の夏に導入したLCELは、チェーンの問題を解決し、任意のコンポーザブルシーケンスを簡単に作成できるようにしました。

この時点まで、LangChainのエージェントは、エージェントの実行方法に関するロジックをハードコードした単一のクラスであるAgentExecutorを常にベースとしていました。このクラスには、ますます高度なエージェントをサポートするための引数がどんどん追加されていますが、まだ真の意味でのコンポーザブルではありません。

数ヶ月前、私たちは、エージェントワークロードの作成に特化したLangChainの拡張機能であるLangGraphを導入しました。これを「エージェントのためのLCEL」と考えてください。これはLCELの上に構築されており、サイクルを簡単に定義する機能(エージェントには重要ですが、チェーンには必要ありません)と組み込みメモリという2つの重要なコンポーネントが追加されています。

langchain v0.2では、古いAgentExecutorを維持していますが、LangGraphはエージェントを構築するための推奨される方法になりつつあります。AgentExecutorと同等のビルド済みのLangGraphオブジェクトを追加しました — LangGraph上に構築されているため、カスタマイズと変更がはるかに簡単です。移行方法のドキュメントについては、こちらを参照してください。

進化するv0.1.0:ストリーミングのサポートの改善、標準化されたツール呼び出しなど

今年1月にv0.1.0がリリースされて以来、以下の分野で大幅な改善が行われました。langchain

  • 標準チャットモデルインターフェース: 異なるLLM間をできるだけ簡単にシームレスに切り替えられるようにしたいと考えています。これを行うために、ツール呼び出しのサポートを標準化し、出力を構造化するための標準化されたインターフェイスを追加しました。

  • 非同期サポート: 多くのコア抽象化の非同期サポートを改善しました。ここにいくつかの例があります。これを実現するのを手伝ってくれた@cbornetに心から感謝します!

  • ストリーミングサポート: ストリーミングは LLM アプリケーションにとって非常に重要であり、イベント ストリーミング API を追加することでストリーミング サポートを改善しました。

  • パートナーパッケージ: 安定した信頼性の高い統合を行うことは、私たちにとって最優先事項です。エコシステムパートナーと緊密に連携して、MongoDB、Mistral、Together AIを含むPythonの20+のプロバイダーと、Google VertexAI、Weaviate、CloudflareなどのJavaScriptの17のプロバイダー向けの専用パッケージを追加しました。

アップグレード方法

v0.2 には多くの改善点が含まれており、最小限の破壊的変更で大部分が下位互換性を持つように設計されています。また、問題を軽減するための移行 CLI の追加や、バージョン間の変更点を強調するドキュメントの追加にも取り組みました。

CLI をテストして v0.2 プレリリースをインストールする方法の詳細については、GitHub Discussions スレッドを確認してください。また、5 月 20 日の週に完全な移行ガイドをお届けしますので、ご期待ください。

安定性が重要な理由

私たちは、LangChainを信頼している1M+の開発者の信頼を大切にしています。LangChainを進化させるにあたり、エンジニアリングチームが自信を持って本番環境で使用できる基本的なフレームワークを確保しながら、業界をリードするソリューションを提供することをお約束します。

langchainとlangchain-coreは現在1.0以前の状態ですが、私たちは変更を最小限に抑え、少なくとも1つ前(3-6ヶ月前)のリリースでクラスを非推奨にするよう努めています。また、定期的なアップデートとバグ修正により、LangChainプラットフォームの信頼性と本番環境への準備が整っています。また、バージョン 0.1 のメンテナンスも継続し、重要なバグ修正を 3 か月間プッシュします。リリースと非推奨のポリシーの詳細については、こちらを参照してください


この記事が気に入ったらサポートをしてみませんか?