1. LLMの紹介
大規模言語モデル(LLM)はLangChainの中核コンポーネントです。LangChain自体は大規模言語モデル機能を提供していませんが、さまざまな一般的な大規模言語モデルをカプセル化し、大規模言語モデルの操作のための標準インターフェースを提供することで、開発者にとって便利になっています。
現在、LangChainは多くの大規模言語モデルをカプセル化し、カスタムモデルもサポートしています。開発者は独自の新しいモデルインターフェースをカプセル化することができます。
- 注:現在、多くのオープンソースおよび商用の大規模モデルが利用可能です。コストやモデルの能力の違いを考慮して、それぞれが異なる選択をするかもしれません。さらに、モデルが頻繁に変更されることがあり、開発者はモデルを変更する際にあまりビジネスコードを修正したくないかもしれません。ここでLangChainの価値が発揮されます。
2. セットアップ
2.1 インストール
LangChainでOpenAI LLMを使用するには、以下のコマンドを実行してOpenAI Pythonパッケージをインストールする必要があります。
pip install openai
2.2 APIキーの設定
OpenAI APIへのアクセスにはAPIキーが必要で、これはOpenAIプラットフォームでアカウントを作成することで取得できます。APIキーを取得したら、次のコマンドを使用して環境変数に設定できます。
export OPENAI_API_KEY="your-api-key"
また、環境変数を設定したくない場合は、次のように初期化時にAPIキーを直接渡すこともできます。
from langchain_openai import OpenAI
llm = OpenAI(openai_api_key="your-api-key")
3. LCELの実装
LangChainでは、LLMはLangChain Expression Language(LCEL)のRunnableインタフェースを実装しています。これは、invoke
、stream
、batch
などのさまざまな関数呼び出しをサポートしていることを意味します。
LLMは、List[BaseMessage]
やPromptValue
を含む、文字列入力または文字列プロンプトに変換可能なオブジェクトを受け入れます。
4. LLMの使用例
4.1 呼び出し
特定のプロンプトでLLMを呼び出すには、次のようにinvoke
関数を使用できます。
llm.invoke("ここにLLMのためのプロンプトを入力してください")
4.2 ストリーミング
LLMからリアルタイムでテキスト出力を取得し処理する方法をストリーミングと呼びます。以下はLLMをストリーミング処理する例です。
for chunk in llm.stream("LLMのストリーミングプロンプトをここに入力してください"):
print(chunk, end="", flush=True)
4.3 バッチ処理
バッチ処理により、LLMに複数の入力を並列処理できます。以下はバッチのプロンプトを処理する例です。
llm.batch(["プロンプト1", "プロンプト2", "プロンプト3"])
4.4 非同期操作
効率を向上させるために、非同期操作をLLMと併用できます。ainvoke
、astream
、abatch
、astream_log
などの非同期操作を使用することで、非同期実行が可能です。以下はLLMを非同期ストリーミング処理に使用する例です。
async for chunk in llm.astream("LLMの非同期ストリーミングプロンプトをここに入力してください"):
print(chunk, end="", flush=True)
これらの例は、LangChainフレームワーク内で自然言語処理タスクにLLMを活用するための多様な方法を示しています。