LangChainは、大規模なモデルに基づいたAIアプリケーションを構築するためのモジュールやツールを提供するオープンソースのPython AIアプリケーション開発フレームワークです。LangChainを使用することで、開発者は簡単に大規模言語モデル(LLMs)と統合し、テキスト生成、質問応答、翻訳、および対話などのタスクを完了することができます。LangChainは、AIアプリケーション開発の障壁を下げ、誰もが自分自身の創造的なアプリケーションをLLMに基づいて構築できるようにします。
LangChainの特徴:
- LLMとPrompt: LangChainは、すべてのLLM大規模モデルのAPIを抽象化し、大規模モデルのアクセスAPIを統一し、プロンプトテンプレート管理メカニズムを提供します。
- Chain: LangChainは、コンテキストベースの質問応答システム、SQLクエリの自然言語生成などの一般的なシナリオを、ワークフローのようにステップバイステップで実行されるように準備されたモジュールにカプセル化します。
- LCEL: LangChain Expression Language(LCEL)は、新しいバージョンのLangChainの中核的な機能であり、ワークフローオーケストレーションの問題を解決するために使用されます。LCEL式を通じて、我々は柔軟にAIタスク処理フローをカスタマイズできます、つまり、「Chain」を柔軟にカスタマイズできます。
- Retrieval Augmented Generation (RAG): 大規模言語モデル(LLMs)は新しい情報を理解せず、新しい質問に答えることができないため、LLMに新しい情報を取り込んで生成されたコンテンツの品質を向上させることができます。このモードはRAGモード(Retrieval Augmented Generation)と呼ばれます。
- Agents: 大規模言語モデル(LLMs)をベースにした設計パターンは、ユーザー要件に基づいて外部システムやデバイスを自動的に呼び出し、タスクを完了するためにLLMの自然言語理解と推論能力を利用します。例えば、ユーザーが「明日休みを取る」と入力すると、大規模言語モデル(LLM)は自動的に休暇システムを呼び出して休暇申請を開始します。
- Model Memory: 大規模言語モデル(LLM)が以前の会話内容を覚えることを可能にする、モデルメモリという機能。
LangChainフレームワークコンポーネント
LangChainフレームワークは、次のコンポーネントを含んでいます。
- LangChainライブラリ: PythonおよびJavaScriptライブラリ。インターフェースのランタイム基盤と様々なコンポーネントの統合、準備されたチェーンやエージェントの実装を含みます。
- LangChainテンプレート: LangChainが提供する公式のAIタスクテンプレート。
- LangServe: FastAPIをベースにしており、LangChainで定義されたチェーンをREST APIとして公開できます。
- LangSmith: 開発プラットフォームであり、LangChainのデバッグとタスクモニタリングをサポートするクラウドサービスです。
LangChainライブラリ (ライブラリ)
LangChainライブラリ自体には、いくつかの異なるパッケージが含まれています。
-
langchain-core
: 基本的な抽象化とLangChain式言語を含みます。 -
langchain-community
: LangChainに統合されたサードパーティのコンポーネントがメインです。 -
langchain
: 主にチェーン、エージェント、およびリトリーバル戦略を含みます。
Langchainタスク処理フロー
上記のイメージに示されているように、LangChainはプロンプトを処理するためのプロンプトテンプレート管理ツールセットを提供しています。それからプロンプトを大規模モデルに渡し、最終的に大規模モデルから返された結果を処理します。
LangChainによる大規模モデルのカプセル化は、主にLLMとチャットモデルの2種類があります。
- LLM - テキスト入力を受け取り、テキスト結果を返す質問応答モデルです。
- チャットモデル - 対話形式で一連の対話メッセージを受け取り、対話メッセージを返す対話モデルです。
コアコンセプト
1. LLMs
LangChainによってカプセル化された基本モデルで、テキスト入力を受け取り、テキスト結果を返します。
2. チャットモデル
対話シナリオに特化した対話モデルで、LLMsとは異なります。これらのモデルは、対話メッセージを受け取り、会話形式で対話メッセージを返します。
3. メッセージ
チャットモデルのメッセージの内容を指します。メッセージタイプには、HumanMessage、AIMessage、SystemMessage、FunctionMessage、ToolMessageなどがあります。
4. プロンプト
LangChainは、プロンプト管理に使用される特定のツールセットをカプセル化し、プロンプトコンテンツを簡単にフォーマットできるようにします。
5. 出力パーサー
上記の画像で述べられているように、LangChainが大規模モデル(LLM)から返されたテキストコンテンツを受け取った後、専用の出力パーサーを使用してテキストコンテンツをフォーマットすることができます。JSONの解析やLLMの出力をPythonオブジェクトに変換するなどが含まれます。
5. 情報取得機能
LangChainは大規模モデル(LLM)にプライベートデータを簡単にインポートし、モデルの応答の品質を向上させるために、文書データの読み込み、セグメンテーション、保存、および取得を容易にする情報取得フレームワーク(Retrievers)をカプセル化しています。
6. ベクトルストア
プライベートデータの意味的類似性検索をサポートするために、LangChainはさまざまなベクトルデータベースをサポートしています。
7. エージェント
エージェントは通常、大規模モデル(LLM)を決定エンジンとして設計されたアプリケーションを指し、ユーザーの入力に基づいてユーザータスクを自動的に完了するために外部システムやハードウェアデバイスを呼び出します。大規模モデル(LLM)を中心とした設計パターンです。
アプリケーションシナリオ
- チャットボット: 賢いチャットアシスタント、顧客サービスチャットボット、対話型チャットボットの構築
- 知識ベースのQ&A: 知識グラフと統合してオープンドメインの質問応答サービスを提供する
- インテリジェントライティング: 記事執筆、創造的執筆、テキスト要約など