この記事はLangChainのJavaScriptバージョンのドキュメンテーションを翻訳したものです。
LangChain は、言語モデルを活用したアプリケーションを開発するためのフレームワークです。私たちは、最も強力で差別化されたアプリケーションは、単に API 経由で言語モデルを呼び出すだけでなく、以下の特徴を備えると考えています。
- データ感知型: 言語モデルを他のデータソースに接続する
- エージェント型: 言語モデルが環境と対話できるようにする
LangChain フレームワークは、上記の原則を考慮して設計されています。
はじめに
以下のガイドをチェックして、LangChain を使用して言語モデルアプリケーションを作成する手順を確認してください。
コンポーネント
LangChain は、いくつかの主要なモジュールのサポートを提供しています。各モジュールには、いくつかの例と概念に慣れるためのリンクがあります。各例は、使用されているモジュールの API ドキュメントにもリンクしています。
これらのモジュールは以下のとおりです(複雑さの順):
- Schema: ライブラリ全体で使用されるインターフェースや基本クラスが含まれます。
- Models: LLM、チャットモデル、埋め込みモデルなどとの統合が含まれます。
- Prompts: プロンプトテンプレートやアウトプットパーサー、例の選択などの機能が含まれます。
- Indexes: データを言語モデルと対話可能な形式に準備するためのパターンや機能が含まれます(ドキュメントローダー、ベクトルストア、テキストスプリッター、リトリーバーなど)。
- Memory: メモリは、チェーンやエージェントの呼び出し間で状態を保持する概念です。LangChain は、メモリの標準インターフェース、さまざまな実装、エンドツーエンドの例を提供しています。
- Chains: チェーンは、単一の LLM 呼び出しを超えて進むもので、複数の呼び出し(LLM または他のユーティリティ)のシーケンスです。LangChain は、チェーンの標準インターフェース、他のツールとの統合、一般的なアプリケーションのエンドツーエンドチェーンを提供しています。
- Agents: エージェントは、アクションの選択、アクションの実行、観測の受け取りなどの処理を行うLLMです。LangChain は、エージェントの標準インターフェース、さまざまなエージェントの選択肢、エンドツーエンドの例を提供しています。
API リファレンス
LangChain のすべてのモジュールの API リファレンス、エクスポートされたクラスと関数の詳細なドキュメントは、以下からご覧いただけます。
本番環境
プロトタイピングから本番環境への移行にあたり、以下のリソースを開発中です。
- デプロイメント: アプリケーションを本番環境にデプロイする方法に関するリソース
- イベント/コールバック: LangChain モジュールが公開するイベントに関するリソース
- トレーシング: アプリケーションのログ出力やデバッグにトレーシングを使用する方法に関するリソース
追加のリソース
アプリケーションの開発に役立つと思われる追加のリソースのコレクションです。
- LangChainHub: LangChainHub は、他のプロンプト、チェーン、エージェントを共有および探索するための場所です。
- Discord: LangChain に関するディスカッションの場として、Discord に参加してください。
- 本番サポート: LangChains を本番環境に移行する際に、より包括的なサポートを提供するためのフォームを準備しています。フォームに記入していただくと、専用のサポート Slack チャンネルを設定します。
サポートされている環境
LangChain は TypeScript で書かれており、次の環境で使用することができます。
- Node.js (ESM と CommonJS) – 18.x、19.x、20.x
- Cloudflare Workers
- Vercel / Next.js(ブラウザ、サーバーレス、エッジ関数)
- Supabase Edge Functions
- ブラウザ
- Deno
クイックスタート
もしも Node.js で LangChain を素早く始めたい場合は、このリポジトリをクローンして README の手順に従って依存関係が設定されたボイラープレートプロジェクトを作成してください。
もしくは、ご自身でセットアップを行いたい場合や他の環境で LangChain を実行したい場合は、以下の手順をご覧ください。
インストール
LangChain をインストールするには、以下のコマンドを使用します。
npm install -S langchain
または、以下のコマンドを使用してインストールすることもできます。
yarn add langchain
pnpm add langchain
TypeScript
LangChain は TypeScript で書かれており、すべての公開APIに対して型定義が提供されています。
ライブラリの読み込み
ESM
LangChain は、Node.js 環境を対象とした ESM ビルドを提供しています。次の構文を使用してインポートします。
import { OpenAI } from "langchain/llms/openai";
TypeScript を ESM プロジェクトで使用している場合は、tsconfig.json を以下のように更新することをおすすめします。
{ "compilerOptions": { ... "target": "ES2020", // or higher "module": "nodenext", } }
CommonJS
LangChain は、Node.js 環境を対象とした CommonJS ビルドを提供しています。次の構文を使用してインポートします。
const { OpenAI } = require("langchain/llms/openai");
Cloudflare Workers
LangChain は Cloudflare Workers でも使用することができます。次の構文を使用してインポートします。
import { OpenAI } from "langchain/llms/openai";
Vercel / Next.js
LangChain は Vercel / Next.js でも使用することができます。フロントエンドコンポーネント、サーバーレス関数、エッジ関数のいずれでも LangChain を利用できます。次の構文を使用してインポートします。
import { OpenAI } from "langchain/llms/openai";
Deno / Supabase Edge Functions
LangChain は Deno / Supabase Edge Functions でも使用することができます。次の構文を使用してインポートします。
import { OpenAI } from "https://esm.sh/langchain/llms/openai";
なお、Supabase Edge Functions で LangChain を使用する方法については、Supabase テンプレートを参考にしてください。
ブラウザ
LangChain はブラウザでも使用することができます。CI では、LangChain を Webpack や Vite とバンドルしてテストしていますが、他のバンドラでも動作するはずです。次の構文を使用してインポートします。
import { OpenAI } from "langchain/llms/openai";
<0.0.52 からのアップデート
バージョン 0.0.52 以前の LangChain からアップデートする場合は、インポートのパスを新しい構造に更新する必要があります。
以前は次のようにしていた場合、
import { OpenAI } from "langchain/llms";
次のように変更する必要があります。
import { OpenAI } from "langchain/llms/openai";
これは、以下の 6 つのモジュールについて適用され、各統合ごとにサブモジュールに分割されました。結合されたモジュールは非推奨であり、Node.js 以外では機能せず、将来のバージョンで削除されます。
- langchain/llms を使用していた場合は、LLMs を参照して更新されたインポートパスを確認してください。
- langchain/chat_models を使用していた場合は、Chat Models を参照して更新されたインポートパスを確認してください。
- langchain/embeddings を使用していた場合は、Embeddings を参照して更新されたインポートパスを確認してください。
- langchain/vectorstores を使用していた場合は、Vector Stores を参照して更新されたインポートパスを確認してください。
- langchain/document_loaders を使用していた場合は、Document Loaders を参照して更新されたインポートパスを確認してください。
- langchain/retrievers を使用していた場合は、Retrievers を参照して更新されたインポートパスを確認してください。
その他のモジュールはこの変更の影響を受けず、引き続き同じパスからインポートできます。
また、新しい環境をサポートするために必要ないくつかの破壊的な変更があります。
- import { Calculator } from “langchain/tools”; は、import { Calculator } from “langchain/tools/calculator”; に移動しました。
- import { loadLLM } from “langchain/llms”; は、import { loadLLM } from “langchain/llms/load”; に移動しました。
- import { loadAgent } from “langchain/agents”; は、import { loadAgent } from “langchain/agents/load”; に移動しました。
- import { loadPrompt } from “langchain/prompts”; は、import { loadPrompt } from “langchain/prompts/load”; に移動しました。
- import { loadChain } from “langchain/chains”; は、import { loadChain } from “langchain/chains/load”; に移動しました。
サポートされていない環境: Node.js 16
LangChain は Node.js 16 をサポートしていませんが、それでも Node.js 16 上で LangChain を実行したい場合は、このセクションの手順に従う必要があります。ただし、将来的にこれらの手順が機能しなくなる可能性があるため、サポートは保証されません。
次のいずれかの方法で fetch をグローバルに利用できるようにする必要があります。
NODE_OPTIONS='--experimental-fetch' node ...
のようにアプリケーションを実行するか、node-fetch
をインストールし、こちらの手順に従います。
さらに、structuredClone
をポリフィルする必要があります。たとえば、core-js
をインストールし、こちらの手順に従ってください。
Node.js 18+ をご利用の場合は、特に何もする必要はありません。