IBMニュースレター
The DX Leaders
AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。登録の際はIBMプライバシー・ステートメントをご覧ください。
ニュースレターは日本語で配信されます。すべてのニュースレターに登録解除リンクがあります。サブスクリプションの管理や解除はこちらから。詳しくはIBMプライバシー・ステートメントをご覧ください。
LangChainは、大規模言語モデル(LLM)を使用したアプリケーション開発のためのオープンソース・オーケストレーション・フレームワークです。PythonベースとJavascriptベースの両方のライブラリで利用できるLangChainのツールとAPIは、チャットボットやAIエージェントなどのLLM駆動型アプリケーションの構築プロセスを簡素化します。
LangChainは、ほぼすべてのLLMの汎用インターフェースとして機能し、LLMアプリケーションを構築し、外部データソースやソフトウェアワークフローと統合するための集中開発環境を提供します。LangChain のモジュールベースのアプローチにより、開発者やデータサイエンティストは、コードを書き直す必要を最小限に抑えながら、さまざまなプロンプト、さらにはさまざまな基盤モデルを動的に比較できます。このモジュール化された環境では、複数の LLM を使用するプログラム(例:あるLLMを使用してユーザークエリを解釈し、別のLLMを使用して応答を作成するアプリケーションなど) も可能になります。
2022年10月にHarrison Chase氏によって立ち上げられたLangChainは、2023年6月現在、Githubで最も急成長しているオープンソースプロジェクトとして、急成長を遂げています。1 翌月のOpenAIのChatGPTの重要なローンチと同時に、LangChainは、その普及を受けて生成AIを愛好家やスタートアップにとってより身近なものにする上で重要な役割を果たしました。エージェント型AI のアクセシビリティの進歩により、現在、オートメーションに革命が起こっています。
LangChain は、チャットボット、 インテリジェント検索 、質問回答 、 要約 サービス、さらにロボティック・プロセス・オートメーション(RPA) が可能なAIエージェントなど、LLMと自然言語処理のユースケースに対応できます。
LLMはスタンドアロンアプリケーションではありません。LLMは、あらかじめ訓練された統計モデルであり、その目的を果たすためにはアプリケーション(場合によっては特定のデータソース)と組み合わせる必要があります。
たとえば、Chat-GPTはLLMではなく、選択したバージョンに応じてGPT-3.5またはGPT-4言語モデルを使用するチャットボットアプリケーションです。ユーザーの入力を解釈し、自然言語の応答を作成するのはGPTモデルですが、(とりわけ)ユーザーが入力したり読んだりするインターフェースを提供するのはアプリケーションとチャットボット・エクスペリエンスに影響を与えるUXデザインです。エンタープライズレベルでも、GPTモデルを使用するアプリケーションはChat-GPTだけではありません。例として、MicrosoftはGPT-4を使用してBing Chatを強化しています。
さらに、基盤モデル(LLMを強化するモデルなど)は大規模なデータセットで事前にトレーニングされていますが、すべてを網羅しているわけではありません。特定のタスクで内部文書やドメインの専門知識など特定のコンテキスト情報にアクセスする必要がある場合、LLMをそれらの外部データソースに接続する必要があります。現在のイベントのリアルタイム認識をモデルに反映したいだけの場合でも、外部情報が必要です。つまり、モデルの内部データは、事前トレーニングされた期間における最新情報でしかない、ということです。
同様に、特定の生成AIタスクが外部ソフトウェアワークフローへのアクセスを必要とする場合(仮想エージェントをSlackと統合したい場合など)、LLMをそのソフトウェアのAPIと統合する方法が必要です。
通常、このような統合は手動のコードで行いますが、LangChainやIBM watsonxの人工知能製品のようなオーケストレーション・フレームワークは、そのプロセスを大幅に簡素化できます。また、コードに最小限の変更を加えるだけでさまざまなモデルに入れ替えできるため、容易にいろいろなLLMを試し、結果を比較することができます。
LangChainの中核をなすのは、抽象化によってLLMアプリケーションのプログラミングを効率化する開発環境です。抽象化とは、1つ以上の複雑なプロセスの構成ステップをすべてカプセル化した名前付きコンポーネントとみなすことでコードを簡素化することです。
抽象化は、日常生活や言語における一般的な要素です。たとえば「π」を使用すると、無限に桁を書き出さずに、円周の長さと直径の比率を表すことができます。同様に、サーモスタットを使用する際は、その複雑な回路の仕組みを理解していなくても、サーモスタットの設定によって温度がどう変わるかがわかるだけで、家の温度をコントロールできます。
LangChainは本質的に、PythonとJavascriptのための抽象化ライブラリで、言語モデルを扱うために必要な共通のステップと概念を表しています。これらのモジュール式コンポーネント(関数やオブジェクトクラスなど)は、生成AIプログラムの構成要素として機能します。これらを「連鎖」させてアプリケーションを作成することで、複雑なNLPタスクの実行に必要なコードの量と細部の理解を最小限に抑えることができます。LangChainの抽象化されたアプローチは、専門のプログラマーによるアプリケーションの細かなカスタマイズ範囲を制限する可能性がありますが、専門家も初心者も関係なく迅速に試用を行いプロトタイプを作成することができます。
LangChainでは、ほぼすべてのLLMを使用できます。APIキーがあれば、LangChainへの言語モデルのインポートは簡単です。LLMクラスは、すべてのモデルに標準インターフェイスを提供するよう設計されています。
ほとんどのLLMプロバイダーでは、APIキーを受け取るためにアカウントを作成する必要があります。これらのAPIの中でも、特にOpenAIやAnthropicが提供するような独自のクローズドソースモデル用のものは関連するコストがかかる場合があります。
Meta AIのLLaMa、DeepseekのDeepseek-LLM、IBMのGranite 、GoogleのFlan-T5など、多くのオープンソース・モデルは、 Hugging Faceを通じてアクセスできます。IBM watsonx は Hugging Faceとの提携を通じて、厳選されたオープンソースモデル群も提供しています。いずれかのサービスでアカウントを作成すると、そのプロバイダーが提供する任意のモデルのAPIキーを生成できるようになります。
LangChain はすぐに使用できる基盤モデルのみに限定されるわけではありません。CustomLLMクラスではカスタム LLM ラッパーを使用できます。同様に、 IBM watsonx APIとPython SDK (LangChainの統合を含む)を使い、 WatsonxLLM クラス(およびそのモデルに該当する プロジェクトID )を使用して、既にトレーニング済みまたは特定のニーズに合わせて微調整したモデルでLangChainでアプリケーションを構築できます。
プロンプトは、LLMに与えられる指示です。LLMが入力を解釈し、最も役立つ方法で出力を構成するために必要なコンテキストを効果的に提供するプロンプトを作成する「アート」は、よくプロンプト・エンジニアリングと呼ばれます。
LangChainのPromptTemplateクラスは、コンテキストやクエリを手動でハードコードすることなく、プロンプトの構成を形式化します。プロンプトの重要な要素も同様に、input_variablesなどの正式なクラスとして入力されます。そのため、プロンプトテンプレートでは、文脈、指示(例:「専門用語は使わないでください」)、応答を導くための一連の例(「few-shotプロンプティング」と呼ばれる)、指定された出力形式、または回答として標準化された質問を再現することができます。効率的に構造化されたプロンプトテンプレートを保存して名前を付け、必要に応じて簡単に再利用できます。
これらの要素はすべて手動でコーディングできますが、PromptTemplateモジュールを使用すると、同名チェーンなど、他のLangChain機能とスムーズに統合できます。
その名のとおり、チェーンはLangChainのワークフローの中核です。チェーンは、LLMを他のコンポーネントと組み合わせ、一連の関数を実行することでアプリケーションを作成します。
最も基本的なチェーンはLLMChainです。これは単にモデルを呼び出し、そのモデルのプロンプトテンプレートを呼び出すものです。たとえば、プロンプトを「ExamplePrompt」として保存し、それをFlan-T5に対して実行したいとします。LLMChainはlangchain.chainsからインポートできます。次に、chain_example = LLMChain(llm = flan-t5, prompt = ExamplePrompt)を定義します。特定の入力に対してチェーンを実行するには、chain_example.run(“input”)を呼び出すだけです。
ある関数の出力を次の関数の入力として使用するには、SimpleSequentialChainを使用します。各関数は、特定のニーズに応じて、異なるプロンプト、異なるツール、異なるパラメーターの他、異なるモデルも利用できます。
特定のタスクを達成するために、LLMは、社内の文書、電子メール、データセットなど、トレーニングデータセットに含まれていない特定の外部データソースにアクセスする必要があります。LangChainでは、このような外部ドキュメントを総称して「インデックス」と呼びます。
LangChainは、サード・パーティー・アプリケーションの向けの様々なドキュメントローダーを提供しています(ibm.com外部へのリンク)。これにより、ファイルストレージサービス(Dropbox、Google Drive、Microsoft OneDriveなど)、ウェブコンテンツ(YouTube、PubMed、特定のURLなど)、コラボレーションツール(Airtable、Trello、Figma、Notionなど)、データベース(Pandas、MongoDB、Microsoftなど)などのソースからデータを簡単にインポートすることができます。
「従来の」構造化データベースとは異なり、ベクトル・データベースはデータポイントをベクトル埋め込み(固定数の次元を持つベクトルの形式で数値表現)に変換して表現し、多くの場合、教師なし学習法を使用して関連するデータポイントをクラスタリングします。これにより、大規模なデータセットであっても低遅延のクエリが可能になり、効率が大幅に向上します。ベクトルの埋め込みには各ベクトルのメタデータも保存されるため、検索の可能性がさらに高まります。
LangChainは、25種類以上のエンベッディング(埋め込み)手法と、50種類以上のベクターストア(クラウド・ホストとローカル)の統合を提供します。
Text splitters
スピードを上げ、計算量を減らすためには、大きなテキスト文書を小さな断片に分割するのが賢明です。LangChainのTextSplitterは、テキストを意味論的に意味を成し、組み合わせられる小さなチャンクに分割します。
外部の知識ソースが接続されると、モデルは必要に応じて関連情報を迅速に取得して統合する必要があります。watsonxのように、LangChainは検索拡張生成(RAG)を提供します。検索モジュールは文字列クエリーをインプットとして受け取り、アウトプットとしてドキュメントのリストを返します。
LangChain を使用すると、エージェントRAGシステムを構築することもできます。従来のRAGアプリケーションでは、LLMには応答を作成する際に参照するベクトル・データベースが提供されます。対照的に、エージェント型AIのアプリケーションはデータ検索だけに限定されていません。RAGエージェントは、数学的計算の解決、Eメールの作成、データ分析の実行などのタスクのためのツールも搭載できます。
デフォルトでは、LLMには過去のインタラクションの長期記憶はありません(チャット履歴がクエリの入力として使用される場合を除く)。LangChainは、システムにメモリを追加するためのシンプルなユーティリティでこの問題を解決します。オプションは、すべての会話を保持するものから、これまでの会話の要約を保持するもの、最新のn個のやり取りを保持するものまで多岐にわたります。
LLMは、そのパワーと汎用性を謳っているにもかかわらず、最新の情報の欠如、ドメイン固有の専門知識の欠如、数学の一般的な難しさなど、重大な制限があります。
LangChainツールは、LangChain エージェントが現実世界の情報と対話して、提供できるサービスを拡張または改善できるようにする一連の機能です。事前構築された有名なLangChainツールの例としては以下のようなものがあります。
Wolfram Alpha:強力な計算機能とデータの可視化機能へのアクセスを提供し、高度な数学的機能を可能にします。
Google検索:Google検索へのアクセスを提供し、アプリケーションとエージェントにリアルタイムの情報を提供します。
OpenWeatherMap:気象情報を取得します。
Wikipedia:Wikipediaの記事から情報へ効率的にアクセスできます。
IBMニュースレター
AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。登録の際はIBMプライバシー・ステートメントをご覧ください。
ニュースレターは日本語で配信されます。すべてのニュースレターに登録解除リンクがあります。サブスクリプションの管理や解除はこちらから。詳しくはIBMプライバシー・ステートメントをご覧ください。
LangChainフレームワークを使用してエージェントを構築することで、LLMが単一のテキスト応答を生成するだけでなく、意思決定を行い、ツールを使用し、複雑なタスクを段階的に完了できるようになります。LLMのみによる単純なプロンプト応答インタラクションとは異なり、LangChainを搭載したエージェントは、考察し、計画し、一連のアクションを実行し、学習して適応することができます。
LangChain は、AI エージェントを作成するための既成の拡張可能なフレームワークを使用して合理化されたユーザー エクスペリエンスを提供するため、新しいツール選択ロジック、推論ループ(ReAct エージェントなどの場合)、観察/アクション追跡、プロンプトのオーケストレーションとフォーマットを構築する必要はありません。
特定のLangChainパッケージ、クラス、およびメソッドは、使用する予定のAIプラットフォームによって異なります。LangChain を使用して watsonx.ai モデルとの通信を可能にするWatsonxLLMクラスの主要コンポーネントには次のものがあります。
ツールの呼び出しとwatsonx.aiモデルとのチェーンを統合した AI エージェントを構築するためのもう 1 つのLangChainクラスはChatWatsonxです。多くのチュートリアルで活用されるこのクラスは、 bind_toolsメソッドを使用して、毎回のイテレーションでツールのリストをLLMに渡します。これらには、カスタム・ツールと事前構築済みツールの両方が含まれます。AIエージェントの応答を取得するには、 invokeメソッドを使用できます。エージェントが呼び出されると、レスポンスのtool_calls属性には、実行されたツール呼び出しの名称、引数、ID、およびタイプが表示されます(存在する場合)。
LangChainが開発したLangGraphは、マルチエージェント・オーケストレーションをサポートし、さまざまなエージェントが対話、専門化、連携するエージェント・ワークフローを開発者が構築できるようにするオープンソースのAIエージェント・フレームワークです。
LangGraph は、本質的に、グラフベースのアーキテクチャのパワーを活用して、 AIエージェント・ワークフローのさまざまなコンポーネント間の複雑な関係をモデル化し、管理します。LangGraph は、ヒューマン・イン・ザ・ループのメカニズムを一連のAPIおよびツールの統合と組み合わせることで、チャットボット、状態グラフ、その他のエージェントベース・システムを含むAIソリューションとワークフローを開発する汎用プラットフォームをユーザーに提供します。
langchain-mcp-adapters ライブラリを使用すると、LangGraphエージェントはモデル・コンテキスト・プロトコル(MCP)サーバー上で定義されたツールも利用できるようになります。mcpライブラリにより、ユーザーがカスタムMCPサーバーを構築することもできます。基本的に、MCPはAIエージェントなどのAIシステムと外部ツールとの間の安全な接続を可能にします。したがって、さまざまなLLMが、標準のMCPと同じツールやデータソースに接続できます。
2023年秋にリリースされるLangSmithは、LangChainを有名にしたアクセシブルなプロトタイピング機能と生産レベルのLLMアプリケーションの開発のギャップを埋めることを目的としています。
LangSmithは、すべてのモデル呼び出しを自動的にトレースしてエラーを特定し、さまざまなモデル構成でパフォーマンスをテストする機能など、アプリケーションを監視、評価、デバッグするためのツールを提供します。LangSmithの使用は、LangChainエコシステムを使用して構築されたアプリケーションに限定されません。エージェントの性能の評価は、LLM を審査員とする評価者を使用して行われます。このオブザーバビリティーとこれらの主要なメトリクスは、より堅牢でコスト効率の高いアプリケーションを最適化することを目的としています。
LangChain はオープンソースで無料で使用できます。ソースコードはGithub からダウンロードできます。
LangChainは、単純なpipコマンドである pip install langchainを使用してPythonにインストールすることもできます。(必要なもの以外に)すべてのLangChain依存関係をインストールするには、pip install langchain[all]コマンドを実行します。
IBMでは、 LangChainツール呼び出し、エージェントRAG 、 LLM エージェントのオーケストレーション、エージェント・チャンクなど、ステップ・バイ・ステップ方式のチュートリアルを多数提供しています。
LangChainで作成されたAIアプリケーションは、単純な質問応答やテキスト生成タスクから、LLM を「推論エンジン」として使用するより複雑なソリューションまで、さまざまなユースケースに優れたユーティリティを提供します。
チャットボットは、LLMの最も直感的な使用例の1つです。LangChainを使用すると、チャットボットの特定の用途に適切なコンテキストを提供したり、独自のAPIを使用してチャットボットを既存の通信チャネルやワークフローに統合したりできます。
言語モデルは、複雑な学術論文やトランスクリプトの分解から受信メールのダイジェストの提供まで、さまざまなタイプのテキストを要約するタスクを実行できます。
特定の文書または専門知識ベース(Wolfram、arXiv、PubMedなど)を使用して、LLMはストレージから関連情報を取得し、役に立つ回答を明確に伝えます。微調整や適切なプロンプトがあれば、外部情報がなくても多くの質問に答えることができるLLMもあります。
適切なワークフローと統合されたLangChainのAgentモジュールは、LLMを使用して自律的に次のステップを決定し、ロボティック・プロセス・オートメーション(RPA)を使用してアクションを実行することができます。
watsonxプラットフォームにある基盤モデルのIBMライブラリーを探索し、ビジネスに合わせて自信を持って生成AIを拡張します。
業界をリードするIBMのAI専門知識とソリューション製品群を使用すれば、ビジネスにAIを活用できます。
AIの導入で重要なワークフローと業務を再構築し、エクスペリエンス、リアルタイムの意思決定とビジネス価値を最大化します。