ChatGPTやGeminiをはじめとするLLM(大規模言語モデル)の普及により、AIを活用したアプリ開発が急速に進んでいます。
しかし、LLMのAPIを直接使って開発しようとすると、「プロンプト管理」「会話履歴の保持」「外部ツール・独自データ連携」といった処理を個別で実装する必要があり、開発が複雑化しがちです。
この課題を解決するのが、オープンソースのLLM開発フレームワーク「LangChain(ラングチェーン)」です。
LangChainを使えば、複雑な処理をモジュール(部品)として組み合わせるだけで、効率的に高度なLLMアプリを構築できます。
本記事では、LangChainの基本概要や主要機能(Prompt, LCEL, Agent等)から、Pythonでの具体的な使い方まで初心者向けにわかりやすく解説します。
LangChainとは
LLM(大規模言語モデル)開発を効率化するフレームワーク
LangChainは、LLM(大規模言語モデル)を中心としたAIアプリケーション開発を効率化するために設計された、オープンソースのフレームワークです。
LLMを活用したアプリでは、モデルへの指示となるプロンプトの管理、モデルの呼び出し、外部データとの連携、外部ツールとの連携といった要素を扱う必要がありますが、LangChainはこれらを扱いやすくするための仕組みをまとめて提供しています。
対応言語はPythonとTypeScript/JavaScriptの2種類です。
どちらを選んでも構いませんが、この記事では標準的なPythonを中心に解説していきます。
なお、利用できる機能やライブラリの充実度は言語によって多少異なる場合があるため、本格的に開発を進める段階に入ったら、公式ドキュメントで対応状況を確認しておくと安心です。
なぜLangChainが必要なのか?
LangChainはChatGPTなどの既存のツールでは対応しきれない時や、OpenAIなどのAPIを直接利用して開発する際に必要とされます。
【ChatGPTとの違い】
ChatGPTのようなWebサービスは、質問への回答や文章作成といった用途であれば、それだけで十分に活用できます。
しかし、AIを自社のサービスや業務システムに組み込みたい場合には、Web版のChatGPTだけでは対応しきれない制約がいくつか存在します。
| 比較ポイント | ChatGPT | LangChainで開発する場合 |
|---|---|---|
| ① モデルの選択自由度 | OpenAIのモデルしか使えない | ChatGPTに加えて、GeminiやClaudeなど複数のモデルを自由に使い分けられる |
| ② セキュリティ(インフラ) | OpenAIの外部サービス上で動く | 自社サーバーなど、社内専用の環境で動かせる |
| ③ 既存システムとの連携 | ChatGPT単体で完結してしまう | 自社の既存Webサイトやアプリの中に、AI機能として組み込める |
| ④ 自由なカスタマイズ | 追加できる機能に限りがある | 自社の就業規則を参照して回答するなど、独自機能を自由に追加できる |
ChatGPTはOpenAIの提供する環境やモデルの範囲内で動作するサービスです。
LangChainは既存のシステムに組み込みながら、自社独自の機能を加えることができます。
つまり、ChatGPTは個人が手軽に利用するためのサービスであるのに対し、LangChainは自社の業務やシステムに合わせてAIを組み込むための開発手段です。
社内の問い合わせ対応を自動化したい、自社サービスにAIチャット機能を追加したいといった目的がある場合は、LangChainのような開発の選択肢が必要になってきます。
【API直接利用との違い】
開発者の視点で比較しておきたいのが、OpenAIなどのAPIを直接利用して開発する方法との違いです。
ここでいう「API直接利用」とは、LangChainのような仕組みを使わず、OpenAIなどが提供するAPIに対して、プログラムから直接やり取りを行う開発方法のことです。
それぞれのメリット・デメリットを整理すると、以下の通りです。
| 方式 | メリット | デメリット |
|---|---|---|
| API直接呼び出し |
|
|
| LangChain |
|
|
LangChainの強みは、モデルの切り替えやツール連携といった複雑になりがちな処理を、自作することなく容易に行える点にあります。
「まずは動くものを試したい」という個人利用や小規模な検証であれば、無理にLangChainを使わなくても問題ありません。
一方で、複数のAIモデルや外部ツールとの連携が必要な、本格的な開発では効率に大きな差が出ます。
LangChainでできること・主要機能
LangChainを使うと、LLMアプリ開発で必要になる処理を少ない手間で実装できます。
例えば、複数のLLMやチャットモデルの切り替え、プロンプトのテンプレート化、外部データを使った回答生成、複数処理のワークフロー化、Agentによるツール連携などを実装しやすくなります。
LangChainには、LLMアプリケーション開発を効率化するための機能が複数用意されています。
| 機能・特徴 | 内容 |
|---|---|
| モデル操作(Model I/O) | OpenAIやGoogleなど、複数のLLMやチャットモデルを切り替えて使いやすい |
| プロンプト管理(Model I/O) | プロンプトをテンプレート化し、再利用や管理をしやすくする |
| Retrieval / RAG | PDFやWebページ、社内文書などの外部データを使って回答を生成しやすい |
| Chains | 複数の処理を順番につなぎ、一連のワークフローとして構築できる |
| Agents | 状況に応じて検索ツールやAPIなどをLLM自身に選んで使わせることができる |
| Memory | 会話履歴や文脈を保持し、継続的なやり取りに活用できる |
| 外部ツール連携 | 検索、データベース、APIなどと連携したAIアプリケーションを構築しやすい |
これらの機能を組み合わせることで、チャットボットや文書検索、業務自動化など、目的に応じたAIアプリケーションを構築しやすくなります。
LangChainでこんなアプリが作れる|活用事例3選
ここまで紹介してきた機能を組み合わせることで、具体的にどのようなアプリケーションが作れるのか、代表的な活用イメージを3つ紹介します。
事例① 新入社員向け質問チャットボット
自社の就業規則やマニュアルをAIに読み込ませておき、「有給休暇の申請方法は?」といった質問に、社内資料に基づいて自動で答えてくれるチャットボット。
LangChainの最も代表的な活用例はRAG(検索拡張生成)の構築です。社内マニュアルや独自PDFなどの外部データをLLMに参照させることで、ChatGPT単体では答えられない最新情報や固有データに基づいた回答が可能になります。
事例② 専門業界特化型AIアシスタント
業界特有の専門用語やルール(医療、法律、不動産など)を学習データとして持たせ、その業界に精通した相談相手として使えるAIアシスタント。
事例③ 自律型業務自動化ロボット
カレンダーやメールと連携させ、空き時間を自動で調整したり、進捗状況を自動でとりまとめて報告してくれる業務アシスタント。
このように、自社専用のAIを作ることができる点がChatGPTとLangChainの大きな違いです。
LangChainを使う前に知っておくべき注意点
LangChainは、複雑になりがちなAIアプリ開発を効率化するフレームワークですが、すべてのケースで必要になるわけではありません。
たとえば、小規模な処理や単純なAPI呼び出しだけで済む場合は、LangChainを導入せずに実装したほうがシンプルなこともあります。
また、機能が多い分、ある程度の学習コストがかかるほか、バージョン変更にともなう仕様変更への対応が必要になる場合もあります。
LangChainを導入するかどうかは、プロジェクトの規模や実装したい機能を踏まえ、API直接呼び出しと使い分ける視点を持っておくとよいでしょう。
LangChainのインストール方法
Python版とTypeScript版の選び方とインストール手順
Python環境でインストールする場合は、以下のコマンドを実行します。 なお、Pythonの環境構築やパッケージ管理に不慣れな方は、事前に仮想環境を用意しておくとスムーズです。
pip install langchain
pip install langchain-openaiインストールが完了したら、.envに使用するモデルのAPIキー(サービスを利用するための認証情報)を環境変数として設定しましょう。
export OPENAI_API_KEY=xxxxxTypeScriptの場合は、以下のコマンドでインストールできます。
npm install langchain
npm install @langchain/openai公式GitHubで最新情報をキャッチアップする方法
公式リポジトリを確認する際は、以下の項目を中心に見るといいでしょう。
- README
- examples
- releases
- migration
特に、v1以降はAgent APIの変更が多いため、Migration Guide確認が重要となります。
LangChainの基本的な使い方
ここからは、実際のコードを見ながら、LangChainの基本的な使い方を紹介します。
プロンプトをテンプレート化するPromptTemplateと、複数の処理をつなぐLCELという2つの書き方を扱います。
PromptTemplateの使い方
上述したように、PromptTemplateを使用することによって、繰り返し利用する可能性のあるテキストフォーマットをテンプレート化することができます。
from langchain_core.prompts import ChatPromptTemplate
template = ChatPromptTemplate.from_template("こんにちは、{name}さん")
prompt = template.format(name="太郎")
print(prompt)こんにちは、太郎さんこれを呼び出したモデルと組み合わせることにより、特定のフォーマットに基づいたプロンプト生成を容易に行うことができます。
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
# テンプレートを作成
template = ChatPromptTemplate.from_template("{place}の県庁所在地は?")
prompt = template.format(name="北海道")
# モデルの呼び出し
chat = ChatOpenAI(model="gpt-5-nano")
output = chat.invoke([HumanMessage(content=prompt)])
print(output)LCEL(|記号)を使ったシンプルな書き方
LCELは、Chainsをより簡潔に記述することのできる新たな記法です。
以下のように、パイプ記号(|)を使用して記述します。
chain = prompt | modelfrom langchain_openai import ChatOpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
template = PromptTemplate.from_template("{place}の県庁所在地は?")
chat = ChatOpenAI(model="gpt-5-nano")
chain = template | chat
output = chain. invoke({"place": "北海道"})
print(output)LangChain Agentとは?AIに自分で考えて動く仕組み
AIに自分で考えて動いてもらう仕組みとは
入力テキストの内容や状況に応じて行うべき処理を自動で判断し、適切にツールを使い分けてくれる機能です。
あらかじめ定義されたフローに従うのではなく、リアルタイムで状況を判断して処理を実行します。
Agentは、モデル自身が次に行うべきアクションを自動で判断し、与えられたツールを使用して目的が完了するまで繰り返し処理を行う機能です。
Agentが利用する外部機能をToolと呼び、標準で用意されているツールから自作ツールまで、幅広く活用することができます。
以下は、LangChainで用意されているツールの一例です。
Agentを使用することにより、以下のような複雑な流れも自動で判断して処理してくれるようになります。
質問 → 天気情報が必要 → 天気APIを呼ぶ → 摂氏を取得 → 計算ツールを呼ぶ → 華氏へ変換 → 回答生成
Agentの仕組みを支えるReActとは
LangChain Agentの考え方の基礎となっているのが、ReAct(Reason + Act)です。
ReActとは、人が試行錯誤しながら作業を進めるように、考えることと行動することを繰り返しながらタスクを解決する仕組みのことを言います。
ReActの基本サイクルは、以下の3つで構成されます。
得られるまで
繰り返す
| 工程 | 内容 |
|---|---|
| 思考(Thought) | 与えられたタスクに対し、AIが今何をすべきかを論理的に考える |
| 行動(Action) | 思考結果に基づき、外部ツールを使用する指示を出す |
| 観察(Observation) | 返ってきた結果やデータを読み取る |
これらの工程を、Thought → Action → Observation → Thought → … といった流れで、目的の回答が得られるまで繰り返し実行します。
LangChain Agentの作り方|ツールと連携させる実践方法
ここからは、簡単なToolを登録してAgentに利用させる例を紹介します。
Google検索や計算機能をエージェントに組み込む手順
Agentで使用するツールは、標準で用意されているツールを利用する方法と、自作のツールを利用する方法の2通りがあります。
以下は、ツールを作成する場合のサンプルコードです。
@tool
def multiply(a: int, b: int) -> int:
"""
2つの整数を掛け算する
"""
return a * b@toolはデコレータと呼ばれる書き方で、関数の前に付けるだけで、その関数をAgentが利用できるツールとして登録することができます。
ツールの準備が完了したら、続いて使用したいモデルを準備します。
model = ChatOpenAI(
model="gpt-4o"
)準備が完了したら、ツールとモデルをAgentへ登録します。
agent = create_agent(
model=model,
tools=[multiply]
)あとは、実行したいプロンプトをAgentに渡せばOKです。
response = agent.invoke(
{
"messages": [
{
"role": "user",
"content": "23×47を計算してください"
}
]
}
)
print(response)また、使用したいツールが複数ある場合は、以下のようにカンマで区切って記述することで合わせて登録できます。
agent = create_agent(
model=model,
tools=[
search_tool,
multiply
]
)これにより、複数のツールを組み合わせた処理を実行できます。
ツールの使い過ぎによる「無限ループ」とその対策
Agentは便利である反面、ツールを必要以上に呼び出し続けてしまう「無限ループ」に陥る問題も抱えています。
例えば、特定の情報を検索した際に取得した情報量が十分でないと判断した場合、AIが何度も同じ検索を繰り返してしまうことがあります。
ループが止まらなければ、その分だけツールの呼び出し回数も増え続けるため、APIの利用料が想定以上にかさんでしまう可能性もあります。
そのため、実運用では実行回数の制限を設けたり、タイムアウトを設定するといった対策を取ることが重要となります。
具体的に取れる主な方法は以下の通りです。
- 最大実行回数を制限する
- タイムアウトを設定する
- 使用するツールの数を増やしすぎない
- Toolの説明文を適切に書く
ツールの過剰使用は処理面だけでなく、APIの利用料などコスト面でも影響が出る可能性があるため、十分な対策が必要です。
LangChainに関するよくある質問(FAQ)
Q. LangChainは無料で利用できますか?
A. LangChain自体はオープンソース(OSS)のため無料で利用できます。ただし、バックエンドで呼び出すOpenAI(ChatGPT)などのAPI利用料金は別途発生します。
Q. Python以外の言語(TypeScript/JavaScriptなど)でも使えますか?
A. はい。LangChainはPython版(langchain)だけでなく、TypeScript/JavaScript版(langchain/js)も公式から提供されています。
Q. LangChainとChatGPT APIの直接利用の違いは何ですか?
A. ChatGPT APIを単体で使う場合、会話履歴の管理や外部データベース検索などの処理を自作する必要があります。LangChainを利用することで、これらの複雑な処理を数行のコードで簡単に実装できるようになります。
まとめ
LangChainは、AIアプリケーションの開発効率を高めてくれる便利なフレームワークです。
全ての機能を使いこなすにはある程度の慣れが必要となりますが、AIエージェントや業務自動化を実現するための有力な選択肢の一つで言えるでしょう。
ChatGPTとの違いや活用イメージで紹介したように、LangChainを使えば、自社の業務やサービスに合わせたAIアプリケーションを作ることができます。
まずはPromptTemplateやLCELといった基本的な書き方から、実際に試してみることをおすすめします。