🦜🔗 LangChain入門: オープンソース言語モデルフレームワーク
2023年7月30日4分で読める

🦜🔗 LangChain入門: オープンソース言語モデルフレームワーク

この記事はAIによって翻訳されたため、不正確な場合があります。

この記事は主にGPT-4によって翻訳されており、こちらが元の記事です

TL;DR

1️⃣ LangChainは言語モデルアプリケーションにおける各コンポーネントの責任を定義し、開発者が一貫したインターフェースを通じてカスタマイズされた言語モデルアプリケーションを開発できるようにします。LangChainはPythonJavascriptの2つの言語SDKを提供しています。

2️⃣ LangChainのコアコンポーネントには、Modals、Prompts、Indexes、Memory、Chains、Agentsなどがあります。これらのコンポーネントにより、開発者は内部および外部のデータリソースを統合し、大規模言語モデルの能力と使用を最大化できます。

3️⃣ 食品注文ボットの例を使用して、LangChainの様々なコンポーネントを特定のアプリケーション実装にどのように適用するかを説明します。

4️⃣ 大規模言語モデルは問題解決の新たな可能性を開き、LangChainのような技術は将来のニーズを満たすためのより多くのソリューションを段階的に追加していくでしょう。


シリーズについて

最近の大規模言語モデルの進歩は、将来のソフトウェアアプリケーションについて多くの想像力をかき立て、多くのツールや技術が登場しています。元同僚との何気ない雑談で、言語モデルアプリケーション開発フレームワークであるLangChainについて知り、好奇心を感じ、この技術についてより深く学びたいと思いました。LangChainの公式ドキュメントを読んだ後、この未来技術について学びたいという欲求を感じ、私の学習を共有することでLangChainに興味と好奇心を持つ他の人々の役に立つことを期待しています。

このLangChainシリーズでは、LangChainフレームワークで定義されている様々なコンポーネントを紹介します。公式ドキュメントは既に存在していますが、一部の部分が詳細に説明されていない可能性があります。そこで、LangChainに対する私の理解を通じて、よりアクセスしやすい方法で皆さんと共有したいと思います。

シリーズで執筆予定のLangChainコンポーネント:

  1. Modals
  2. Prompts
  3. Indexes
  4. Memory
  5. Chains
  6. Agents

LangChainとは?

LangChainは、大規模言語モデル(LLM)を使用したアプリケーション開発を簡素化するために設計されたオープンソースフレームワークです。LangChainは言語モデルにおける各コンポーネントの責任を明確に定義し、コンポーネント間が特定のインターフェースを通じて通信します。これにより、開発者は内部および外部のデータリソースを体系的に統合できます。プロンプトエンジニアリングと組み合わせることで、大規模言語モデルの能力とデータ使用を最大化します。開発者とデータサイエンティストの両方が、よりシンプルで一貫した方法で完全にカスタマイズされたソリューションを得ることができます。LangChainは現在、PythonとJavascriptの2つの言語SDKを提供しています。

LangChainの役割を理解するために、モバイルアプリとのアナロジーを使用できます。これらの3つの要素を見てみましょう:

  1. インフラ - iPhoneはインターネットアクセス、計算能力などの強力な基本機能を提供します。
  2. データ - iPhoneユーザーは写真、投稿コンテンツなど多くのデータを持っています。
  3. アプリ - YouTube、Instagram、Facebookなど。

モバイルアプリの世界では、基本機能とデータの利点を最大化するためにカスタムアプリが必要です。例えば、ユーザーがGoogle PhotosモバイルアプリをiPhoneで使用して家族写真を見るようなものです。

言語モデルのアプリケーションシナリオでは、インフラは強力な言語モデルに相当します。しかし、モデル単体で解決できる問題はまだ限られています。我々の問題を最大限に解決するためには、データとアプリ(言語モデルアプリケーション)が必要です。LangChainの役割は橋渡しをすることで、インフラデータを接続し、様々なアプリケーションシナリオでの問題を解決するためのカスタマイズされた言語モデルアプリを構築することです。

LangChain App Flow Diagram

LangChainのコアコンポーネント

いくつかのアプリケーションシナリオを見る前に、LangChainが提供するコアコンポーネントを簡単に理解しましょう:

Modals

LangChain自体はモデルプロバイダーではありません。単に標準的なインターフェースを提供し、LangChainがOpenAIのGPT3.5、GPT4など様々な異なる言語モデルを同じ方法で呼び出せるようにします。

Prompts

LangChainは開発者がプロンプトの入力と出力を操作するのを助ける一連のツールを提供します:

  1. Prompt Template: 言語モデルへの入力プロンプトのテンプレートを提供します。
  2. Output Parser: 言語モデルが出力テキストをどのように返すべきかの指示を提供します。
  3. Example Selector: 開発者のプロンプトにより多くの出力/入力テンプレートがある場合、例をコード形式でプロンプト指示に読み込むことができます。

Indexes

IndexesはLangChainのデータソース処理の重要な部分です。データインデックスライフサイクルの観点から、以下のコンポーネントにさらに細分化できます:

  1. Document Loader: 様々なローカルファイル、ウェブページコンテンツなどを読み取ります。
  2. Text Splitter: モデルには入力トークン数の制限があるため、読み取ったデータをより小さなスライスに分割して保存し、後の読み取りを容易にします。
  3. Vector Store: 分割・前処理されたデータをVector Storeに保存し、後でベクトル類似性比較に基づいてリクエストできます。
  4. Retriever: 開発者はベクトルに基づいてVector Storeにリクエストでき、異なる取得ルールをカスタマイズすることもできます。

Memory

大規模言語モデル自体はメモリを持ちません。言語モデルがメモリを持つ能力には、モデル呼び出し元が会話のコンテキストを後続の会話に入力する必要があります。LangChainは会話でのコンテキストメモリを処理する様々な方法を提供します。

Chains

Chainは入力と出力パイプラインの1つのプロセスと見ることができます。言語モデルアプリケーションが処理のために複数のプロセスを必要とする場合、LangChainは異なる処理フローが互いに相互作用できるようにするChainインターフェースを提供します。

Agents

一部のアプリケーションでは、ユーザー入力リクエストがある場合にどのパイプラインを使用してリクエストを処理すべきかを動的に決定する必要があります。これはAgentsが使用される時です。Agentsは異なるツールの説明に基づいて、リクエストを処理するのに適切なツールを選択できます。

LangChainによってネイティブに提供される様々なツールに加えて、開発者はリクエストを処理するためのツールを定義することもできます。

最後に、言語モデルアプリケーションを例として、LangChainコンポーネント間の関係を説明しましょう: LangChain Components Relationships

LangChainのシンプルな使用例

上記のLangChainの基本コンポーネントの理解により、アプリケーションシナリオを議論することで、アプリケーション内での各基本コンポーネントの位置付けをより明確に理解できます。バーガーショップを開いたと仮定して、我々が持つメニュー情報を使用して注文システムのチャットボットプロセスを実装できます:

  1. ユーザーチャットボットに注文したいことを表現します。
  2. チャットボットは言語モデルを使用して注文の意図を認識し、注文処理ツールを選択します(Modal、Agent)。
    1. 注文ツールがデータストレージからメニューを取得します(Indexes)。
    2. メニューをリスト形式でユーザーに返します(Prompt - Output Parser)。
  3. リストを見た後、ユーザーは「2つの卵バーガーと1杯のアイスミルクティーが欲しいです」などの注文メッセージを入力します。
  4. チャットボットは注文作成の意図を認識し、注文作成ツールを探します(Agent、Memory)。
    1. 注文ツールがユーザー入力を解析し構造化します(Prompt - Output Parser)。
    2. 注文内容が正しいかどうかの確認をユーザーに返します。
  5. ユーザーが正しいことを確認すると、構造化された注文メッセージがデータベースに保存され、食事準備などの後続フローがトリガーされます(Memory)。

このプロセスは多くの詳細を簡素化していますが、チャットボットがエンドユーザーにサービスを提供する際にサブタスクをどのように分解し、LangChainのコンポーネント能力を使用してサブタスクのニーズを満たす方法をより具体的に理解していただけることを期待しています。

結論 - 言語モデルアプリケーションの未来

大規模言語モデルの問題解決能力は、新しい世界への扉を開くようなものです。ボトルの中の空間をAIが解決できるすべての問題の比喩とすると、ChatGPTはこの空のボトルの中に置かれた大きな石のようなものです。この石は多くの問題を解決しましたが、ボトルにはまだ多くの空間があります。我々の世界にはまだAIが解決していない多くの問題があります。これらの問題にはより的を絞った、カスタマイズされたソリューションが必要です。我々はLangChainのような技術がボトルにより多くの小石と細かい砂を徐々に追加して、より多くの問題を解決することを待っています。我々はより効率的に生活し働くのを助け、より重要なことをする時間を与えてくれる新しい技術を期待しています。

ちなみに、LangChainの最近の評価額は約2億ドルです。これは市場のAI分野への高い期待を表しています。未来がどのようになるかについては、見守り続けましょう...