Open3
LangChain.js について
ピン留めされたアイテム

LangChain.js で、Gemini APIを利用する📝
npm i @langchain/google-genai @langchain/core
yarn add @langchain/google-genai @langchain/core
pnpm add @langchain/google-genai @langchain/core
LangChainで使用できるGemini のモデルについて📝
LangChainで使用可能なGoogle Geminiのモデル名は、以下の通りです(2025年5月時点の情報に基づく):
- gemini-1.0-pro:安定版のGemini Proモデル。テキスト生成に適しています。
- gemini-1.5-pro:より高度な自然言語処理とマルチモーダル機能(テキスト、画像など)を提供。
- gemini-1.5-flash:高速応答を重視したモデルで、リアルタイムアプリケーションに最適。
- gemini-2.0-flash:最新のGeminiモデルで、高速かつ高性能な処理が可能。
- gemini-2.0-flash-exp-image-generation:画像生成や編集に対応した実験的モデル。
- gemini-pro-vision:画像とテキストのマルチモーダル処理に特化したモデル(ただし、gemini-1.5シリーズへの移行が進んでいる場合あり)。
注意点
- モデル名は、LangChainの
langchain-google-genai
パッケージまたはlangchain-google-vertexai
パッケージを通じて指定します。 - 一部のモデル(例:gemini-2.5-proやgemini-2.5-flash)はプレビュー版として提供される場合があり、モデル名に「-preview-」が含まれることがあります(例:
gemini-2.5-pro-preview-03-25
)。これらはGoogle AI Studioの公式ドキュメントで確認可能です。 - モデル名の指定は、例えば以下のように行います:
from langchain_google_genai import ChatGoogleGenerativeAI llm = ChatGoogleGenerativeAI(model="gemini-1.5-pro")
- 最新のモデル名や利用可能なバージョンは、Google AI StudioやGemini APIの公式ドキュメント(https://ai.google.dev/gemini-api/docs)で確認することをおすすめします。
補足
- Vertex AIを利用する場合、モデル名は
gemini-1.5-flash-002
やgemini-1.5-pro-002
のようにバージョン付きで指定されることがあります。 - モデルによっては、Google Cloud PlatformでVertex AI APIを有効化する必要がある場合があります。
- 画像編集や生成など特定の機能は、対応モデル(例:gemini-2.0-flash-exp-image-generation)に限定されます。
参考・引用

LangChain.js
yarn add langchain
yarn add @langchain/openai
yarn add @langchain/core
実装してみた Sample
openAiLangChain.ts
import { ChatOpenAI } from "@langchain/openai";
import { ChatPromptTemplate } from "@langchain/core/prompts";
import { StringOutputParser } from "@langchain/core/output_parsers";
// OpenAIのAPIキーを設定します
const apiKey = process.env.NEXT_PUBLIC_OPEN_AI_API_KEY;
// console.log("API Key:", apiKey);
const chatModel = new ChatOpenAI({
apiKey,
});
// 1. 一番シンプルに ChatModel を呼び出すパターン
export async function testChat() {
console.log("testChat Call");
const response = await chatModel.invoke("what is LangSmith?");
console.log(response);
}
const prompt = ChatPromptTemplate.fromMessages([
// GPTのペルソナ設定
[
"system",
"あなたは、子供にもわかりやすく、単語の意味をストーリーで教える先生です。",
],
// ユーザーの入力
["user", "{input}"],
]);
const chain = prompt.pipe(chatModel);
// 2. Promptを使って ChatModel を Custom するパターン
export async function testChatChain() {
console.log("testChatChain Call");
const response = await chain.invoke({
input: "東京タワーはどこにありますか?",
});
console.log(response);
}
const outputParser = new StringOutputParser();
const llmChain = prompt.pipe(chatModel).pipe(outputParser);
// 3. outputParser を使って Responseから、回答のみを取り出すパターン
export async function ChatChainLLM(query: string) {
const response = await llmChain.invoke({
input: query,
});
console.log(response);
}

Object String から JSON Stringへの変換 & Parse
AIに作成してもらった回答データが、Object Stringだった際の処理
- 主なステップは、改行や余分な空白を削除する。
- キーに引用符を追加して有効なJSONにする
-
JSON.parse
でパースしてJS Objectに変換する。
let str = `{
clearConversationRating: 0,
smoothRating: 0,
mannerRating: 0,
smileRating: 0,
likeRating: 0,
feedback: "会話の内容が不明瞭であり、スムーズさやトーン・マナー、笑顔度が不足しているため、相互理解や仲良くなる好感度が低い状況です。改善が必要です。"
}`;
function parseDataString(dataString) {
// 改行を削除
dataString = dataString.replace(/\n/g, '');
// 先頭と末尾の空白を削除
dataString = dataString.trim();
// キーに引用符を追加
dataString = dataString.replace(/([a-zA-Z0-9_]+)\s*:/g, '"$1":');
// 有効なJSONとしてパース
let obj = JSON.parse(dataString);
return obj;
}
let obj = parseDataString(str);
console.log(obj);