推論能力をアプリに:ソフトウェアエンジニアが知るべきLangChain.jsの活用法と実装例


推論能力をアプリに:ソフトウェアエンジニアが知るべきLangChain.jsの活用法と実装例

langchain-ai/langchainjs

2025-10-17

「やあ、君!我々は今、情報という名の広大な海をさまよっている。手に入れたデータをただ眺めるだけでは、真の知恵にはたどり着けない…」

「そうだね、先輩!クライアントからは『もっと賢いアプリケーションを作ってくれ!』って言われてるけど、ただのAIモデルじゃ、「文脈(コンテキスト)」を理解して行動する「推論(リーズニング)」が難しいんですよね…」

LangChain.jsは、まさにこの課題を解決するためのフレームワークです。大規模言語モデル(LLM)を単なるテキスト生成ツールとしてではなく、コンテキスト(文脈)を理解した推論アプリケーション、つまり「賢い」ソフトウェアを構築するための基盤を提供します。

LangChain.jsを使うと、複雑なLLMのワークフローを簡単に構築・管理できます。

チェーン(Chains)
複数のステップ(例
プロンプト、LLM呼び出し、出力解析)を連結し、一連の処理として実行できます。これにより、単発の質問応答だけでなく、複雑なタスク処理(例
文書要約→質問応答→結果の整形)が可能になります。

エージェント(Agents)
LLMに「思考」させ、どのツール(Tools)を使うべきか(例
Google検索、コード実行、DBアクセス)を決定させることができます。これにより、アプリケーションが外部の情報源や能力を利用して、リアルタイムで正確な答えを導き出す「冒険家」になれます。

データの活用
外部データ(PDF、Webページ、DBなど)を取り込み、LLMがそのデータを基に回答できるようにする機能(Retrieval)が容易になります。

「つまり、このライブラリが、私たちのアプリケーションに「知性」と「道具を使う能力」を与えてくれるってことですね!」

まずは、あなたのプロジェクトにLangChain.jsを連れてくる必要があります。Node.js環境を想定して進めますね。

Node.jsのプロジェクトで、npmを使ってコアパッケージをインストールします。

# プロジェクトに移動
$ cd your-project

# LangChain.jsのコアパッケージをインストール
$ npm install @langchain/core @langchain/openai
# ※ OpenAIモデルを使う場合、@langchain/openaiパッケージも必要です

「先輩、APIキーを金庫から持ってきました!これがないとモデルが動けません!」

「よし、それを環境変数という形で設定するんだ。コードの中に直接書くのは危険だからな!」

プロジェクトのルートディレクトリに.envファイルを作成し、必要なAPIキーを設定します。

# .env ファイル
OPENAI_API_KEY="sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

そして、プロジェクトで.envファイルを読み込むための設定も忘れずに行いましょう(例
dotenvパッケージなど)。

ここでは、最も基本的な「LLM呼び出し」と、応用的な「チェーン」のサンプルを見ていきましょう。

「最初はウォーミングアップだ。LLMに直接メッセージを送ってみよう!」

これは、最もシンプルにLLMの機能を使う方法です。

import { OpenAI } from "@langchain/openai";

// 環境変数からAPIキーを読み込みます
const model = new OpenAI({}); 

async function simpleCall() {
  const prompt = "ソフトウェアエンジニアとして、LangChain.jsを学ぶべき理由を3つ、簡潔に教えてください。";
  
  // LLMを呼び出し
  const result = await model.invoke(prompt);
  
  console.log("--- LLMからの応答 ---");
  console.log(result);
  // 出力: 1. 複雑なワークフローの構築 2. 外部データとの連携 3. エージェント機能の実装
}

simpleCall();

「次に、ただ質問するだけでなく、プロンプトテンプレートとLLMを「チェーン」で繋ぎ、役割を割り当ててみよう。これにより、毎回同じ形式で賢い回答を得られるぞ!」

このコードでは、質問の形式を固定し、ユーザーの入力をテンプレートにはめ込んでからLLMに送ります。

import { OpenAI } from "@langchain/openai";
import { PromptTemplate } from "@langchain/core/prompts";
import { StringOutputParser } from "@langchain/core/output_parsers";
import { RunnableSequence } from "@langchain/core/runnables"; // チェーンを作るためのクラス

// 1. モデルの準備
const model = new OpenAI({ temperature: 0.7 });

// 2. プロンプトテンプレートの準備
const reviewPrompt = PromptTemplate.fromTemplate(
  "あなたはベテランの技術評論家です。以下の技術トレンド「{topic}」について、ポジティブな点とネガティブな点をそれぞれ1つずつ、箇条書きでレビューしてください。"
);

// 3. 出力パーサーの準備 (文字列として出力させる)
const outputParser = new StringOutputParser();

// 4. チェーンの構築
const reviewChain = RunnableSequence.from([
  reviewPrompt, // プロンプトテンプレート
  model,        // LLM
  outputParser  // 出力パーサー
]);

async function runChain() {
  const topic = "サーバーレス・コンテナ技術";
  
  console.log(`--- トピック: ${topic} のレビューを開始 ---`);
  
  // チェーンを実行し、トピックをインプットとして渡す
  const result = await reviewChain.invoke({ topic: topic });
  
  console.log(result);
  /*
  --- 結果例 ---
  ポジティブな点: 
  - 運用コストの大幅な削減とスケーラビリティの確保が可能。
  ネガティブな点:
  - ベンダーロックインのリスクがあり、コールドスタート問題が発生する可能性がある。
  */
}

runChain();

LangChain.jsは、ソフトウェアエンジニアがコンテキストを考慮した推論アプリケーションを構築するための強力なツールセットを提供します。

エンジニアの腕の見せ所
チェーンやエージェントを組み合わせることで、複雑で現実的な問題を解決するロジックをLLMの上に構築できます。

生産性の向上
標準化されたインターフェースにより、プロンプト管理や入出力の処理が格段に楽になります。

「これで君も立派な『推論アプリケーション冒険家』だ!さあ、このLangChain.jsを手に、次の賢いアプリケーションという名の宝を探しに出かけよう!」

「はい、先輩!このライブラリがあれば、どんな情報も使いこなせそうです!」


langchain-ai/langchainjs