【LangChainドキュメンテーション・JS版】概要とインストール

この記事は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 リファレンス、エクスポートされたクラスと関数の詳細なドキュメントは、以下からご覧いただけます。

API Reference

本番環境

プロトタイピングから本番環境への移行にあたり、以下のリソースを開発中です。

  • デプロイメント: アプリケーションを本番環境にデプロイする方法に関するリソース
  • イベント/コールバック: 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+ をご利用の場合は、特に何もする必要はありません。