LangChain で複数の入力を持つチェーンにメモリを追加するにはどうすればよいですか?

Langchain De Fu Shuno Ru Liwo Chitsuchennimemoriwo Zhui Jiasurunihadousurebayoidesuka



チャットボットと大規模言語モデルは世界中で何百万もの人々に使用されており、これらのモデルはコマンドに応じてテキストを生成できます。 LangChain は、開発者がそのようなモデルやボットを構築できるようにする最も効果的かつ効率的なフレームワークの 1 つです。ユーザーが入力としてプロンプトまたはクエリを与えると、モデルはコマンドを理解してから、最も関連性が高いまたはコマンドに似ていると思われるテキストを生成します。

このガイドでは、LangChain で複数の入力を持つチェーンにメモリを追加するプロセスを説明します。

LangChain で複数の入力を持つチェーンにメモリを追加するにはどうすればよいですか?

LLM またはチャットボットにメモリを追加して、最新のメッセージやデータを保存し、モデルがコマンドのコンテキストを理解できるようにすることができます。 LangChain で複数の入力を使用してチェーンにメモリを追加するプロセスを学習するには、次の手順を実行するだけです。







ステップ 1: モジュールをインストールする

まず、言語モデルを構築するためのさまざまな依存関係がある LangChain フレームワークをインストールします。



pip インストール ラングチェーン



chromadb をインストールして、メモリで使用されるデータを Chroma ベクター ストアに保存します。





pip インストール chromadb

Tiktoken は、大きなドキュメントの小さなチャンクを作成して簡単に管理できるようにするために使用されるトークナイザーです。



pipインストールtiktoken

OpenAI は、OpenAI() メソッドを使用してチェーンと LLM を構築するために使用できるモジュールです。

pip インストール openai

ステップ 2: 環境のセットアップとデータのアップロード

このプロセスに必要なモジュールをすべてインストールした後の次のステップは、 環境をセットアップする OpenAI アカウントの API キーを使用します。

輸入 あなた
輸入 ゲットパス

あなた [ 「OPENAI_API_KEY」 = ゲットパス ゲットパス ( 「OpenAI API キー:」 )

ファイル ライブラリを使用してドキュメントをアップロードし、LangChain フレームワークでチェーンを構築します。

から グーグル。 輸入 ファイル

アップロードされた = ファイル。 アップロード ( )

ステップ 3: ライブラリをインポートする

ドキュメントが正常にアップロードされたら、必要なライブラリを Langchain モジュールからインポートするだけです。

から ラングチェーン。 埋め込み オープンナイ 輸入 OpenAI埋め込み

から ラングチェーン。 埋め込み 密着 輸入 Cohereエンベディング

から ラングチェーン。 テキストスプリッター 輸入 文字テキストスプリッター

から ラングチェーン。 ベクトルストア elastic_vector_search 輸入 弾性ベクトル検索

から ラングチェーン。 ベクトルストア 輸入 彩度

から ラングチェーン。 ドキュメントストア 書類 輸入 書類

ステップ 4: Chroma データベースを使用してメモリを構築する

ここで、前にアップロードしたドキュメントの埋め込みとトークンを保存するベクトル空間の構築を開始します。

開ける ( 「組合の状態.txt」 として f:
労働組合の状態 = f. 読む ( )
テキストスプリッター = 文字テキストスプリッター ( チャンクサイズ = 1000 チャンク_オーバーラップ = 0 )
テキスト = テキストスプリッター。 分割テキスト ( 労働組合の状態

埋め込み = OpenAI埋め込み ( )

ドキュメントのテキストと埋め込みを保存するために Chroma データベースを構成します。

ドキュメントサーチ = 彩度。 from_texts (

テキスト 埋め込み メタデータ = [ { 'ソース' : 私 } のために 範囲 ( のみ ( テキスト ) )

)

クエリ変数でコマンドを要求してメモリをテストし、similarity_search() メソッドを実行します。

クエリ = 「NATOはいつ結成されたのですか」

ドキュメント = ドキュメントサーチ。 類似性検索 ( クエリ )

ステップ 5: プロンプト テンプレートの構成

このステップでは、次のライブラリをインポートしてプロンプトのテンプレートを構成するプロセスについて説明します。

から ラングチェーン。 質問に答える 輸入 ロード_qa_chain

から ラングチェーン。 llms 輸入 OpenAI

から ラングチェーン。 プロンプト 輸入 プロンプトテンプレート

から ラングチェーン。 メモリ 輸入 会話バッファメモリ

その後、クエリのテンプレートまたは構造を構成し、メモリがモデルに追加されたらチェーンを実行するだけです。

テンプレート = 「」「あなたは人間と会話するモデルです
長い文書と質問から抽出されたチャンクを基に、最終的な回答を作成します。

{コンテクスト}

{履歴}
人間: {入力}
チャットボット:「」


プロンプト = プロンプトテンプレート (
入力変数 = [ 「ヒスト」 '入力' 'コンテクスト' テンプレート = テンプレート
)
メモリ = 会話バッファメモリ ( メモリキー = 「ヒスト」 入力キー = '入力' )
= ロード_qa_chain (
OpenAI ( 温度 = 0 ) チェーンタイプ = 'もの' メモリ = メモリ プロンプト = プロンプト
)

ステップ 6: メモリをテストする

ここでは、クエリ変数を使用して質問し、パラメータを指定してchain() メソッドを実行することでモデルをテストします。

クエリ = 「NATOはいつ結成されたのですか」

( { 「入力ドキュメント」 : ドキュメント '入力' : クエリ } return_only_outputs = 真実

モデルによって与えられた答えが最近メモリに保存されたため、バッファ メモリに保存されているデータを出力します。

印刷する ( 鎖。 メモリ バッファ

LangChain で複数の入力を持つチェーンにメモリを追加する方法は以上です。

結論

LangChain の複数の入力を持つチェーンにメモリを追加するには、テキストと埋め込みを保存するモジュールとベクター ストアをインストールするだけです。その後、ローカル システムからデータ/ドキュメントをアップロードし、データを保存するために必要なライブラリをインポートして、LLM 用のメモリを構築します。最新のメッセージをバッファ メモリに保存し、チェーンにテキスト メッセージを送信するようにプロンプ​​ト テンプレートを構成します。このガイドでは、LangChain で複数の入力を持つチェーンにメモリを追加するプロセスについて詳しく説明しました。