ChatGPTやGemini、ClaudeといったLLM(大規模言語モデル)を活用したAIアプリケーション開発が、近年急速に広がっています。
用途も単純なチャットボットにとどまらず、社内文書の検索や問い合わせ対応チャットボット、データ分析、業務自動化など多岐にわたります。
一方で、LLMのAPIを直接呼び出して開発を進めようとすると、
- プロンプト管理
- 会話履歴の保持
- 外部ツールとの連携
- 複数モデルへの対応
といった処理を、それぞれ個別に実装する必要があります。
アプリケーションが複雑になるほど、こうした実装や管理の負担は増えていきがちです。
この課題に対する選択肢のひとつが、本記事で扱う「LangChain」です。
LangChainは、LLMを中心としたアプリケーション開発に必要な処理を、統一的なかたちで効率よく実装できるよう設計されたオープンソースのフレームワークです。
OpenAIやGoogleなど提供元の異なるモデルを共通のインターフェースで扱えるほか、プロンプトのテンプレート化、複数の処理をつなぐChains、外部ツールを自律的に使うAgent、外部データを検索して回答に活かすRAGといった機能をモジュールとして備えており、複雑になりがちな実装を部品の組み合わせで進められる点が特徴です。
そのため、複数のモデルやツールを組み合わせた開発に取り組むエンジニアや、本格的なLLMアプリの構築を目指す方向けのフレームワークといえます。
本記事では、これからLLMアプリを開発してみたい方、LangChainがどのようなものかまず知りたい方向けに、LangChainの概要や基本機能から、インストール手順、PromptTemplateやLCELの書き方、Agentの基礎までを順を追って解説していきます。
LangChainとは
LangChainは、LLM(大規模言語モデル)を中心としたAIアプリケーション開発を効率化するために設計された、オープンソースのフレームワークです。
ここでは、LangChainがどのようなものか、なぜ必要とされているのか、何ができるのか、具体的にどんなアプリが作れるのか、利用する際に押さえておきたい注意点までを順に整理します。
LangChainの基本
LangChainは、ChatGPTやGemini、ClaudeなどのLLMを使ったアプリケーションを開発する際に利用されるフレームワークです。
LLMを活用したアプリでは、モデルへの指示となるプロンプトの管理、モデルの呼び出し、外部データとの連携、外部ツールとの連携といった要素を扱う必要がありますが、LangChainはこれらを扱いやすくするための仕組みをまとめて提供しています。
対応言語はPythonとTypeScript/JavaScriptの2種類です。
どちらを選んでも構いませんが、この記事では標準的なPythonを中心に解説していきます。
なお、利用できる機能やライブラリの充実度は言語によって多少異なる場合があるため、本格的に開発を進める段階に入ったら、公式ドキュメントで対応状況を確認しておくと安心です。
なぜLangChainが必要なのか?
ここまで、LangChainがどのようなフレームワークかを説明してきましたが、「そもそもなぜ必要なのか」という疑問を持つ方も多いはずです。
ここでは、多くの方が日常的に利用しているChatGPTとの違い、そしてOpenAIなどのAPIを直接利用する開発方法との違いという、2つの観点からLangChainが求められる理由を整理します。
【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 |
|---|---|---|
| 導入 | 簡単 | 少し重い |
| 学習コスト | 低 | 高 |
| モデル変更 | 面倒 | 簡単 |
| Agent | 自作 | 標準 |
| RAG | 自作 | 対応 |
それぞれのメリット・デメリットを整理すると、以下の通りです。
| 方式 | メリット | デメリット |
|---|---|---|
| API直接呼び出し |
|
|
| LangChain |
|
|
LangChainの強みは、モデルの切り替えやツール連携といった複雑になりがちな処理を、自作することなく容易に行える点にあります。
「まずは動くものを試したい」という個人利用や小規模な検証であれば、無理にLangChainを使わなくても問題ありません。
一方で、複数のAIモデルや外部ツールとの連携が必要な、本格的な開発では効率に大きな差が出ます。
LangChainでできること
LangChainを使うと、LLMアプリ開発でよく必要になる処理を、比較的少ない手間で実装しやすくなります。
例えば、複数のLLMやチャットモデルの切り替え、プロンプトのテンプレート化、外部データを使った回答生成、複数処理のワークフロー化、Agentによるツール連携などを実装しやすくなります。
LangChainには、LLMアプリケーション開発を効率化するための機能が複数用意されています。
| 機能・特徴 | 内容 |
|---|---|
| モデル操作 | OpenAIやGoogleなど、複数のLLMやチャットモデルを切り替えて使いやすい |
| プロンプト管理 | プロンプトをテンプレート化し、再利用や管理をしやすくする |
| Retrieval | PDFやWebページ、社内文書などの外部データを使って回答を生成しやすい |
| Chains | 複数の処理を順番につなぎ、一連のワークフローとして構築できる |
| Agents | 状況に応じて検索ツールやAPIなどをLLM自身に選んで使わせることができる |
| Memory | 会話履歴や文脈を保持し、継続的なやり取りに活用できる |
| 外部ツール連携 | 検索、データベース、APIなどと連携したAIアプリケーションを構築しやすい |
これらの機能を組み合わせることで、チャットボットや文書検索、業務自動化など、目的に応じたAIアプリケーションを構築しやすくなります。
LangChainでこんなアプリが作れる|活用事例3選
ここまで紹介してきた機能を組み合わせることで、具体的にどのようなアプリケーションが作れるのか、代表的な活用イメージを3つ紹介します。
事例① 新入社員向け質問チャットボット
自社の就業規則やマニュアルをAIに読み込ませておき、「有給休暇の申請方法は?」といった質問に、社内資料に基づいて自動で答えてくれるチャットボット。
事例② 専門業界特化型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は、AIアプリケーションの開発効率を高めてくれる便利なフレームワークです。
全ての機能を使いこなすにはある程度の慣れが必要となりますが、AIエージェントや業務自動化を実現するための有力な選択肢の一つで言えるでしょう。
ChatGPTとの違いや活用イメージで紹介したように、LangChainを使えば、自社の業務やサービスに合わせたAIアプリケーションを作ることができます。
まずはPromptTemplateやLCELといった基本的な書き方から、実際に試してみることをおすすめします。