最近、社内で「LangChainについて勉強しておいて」と言われました。
正直、最初は「ChatGPT API を叩けば良いんじゃないの…?」と思っていました。
でも、実際に触りながら調べていく中で、
「LLMを“アプリとして使う”にはもう一段階必要なんだな」
と理解できてきたので、その内容をまとめてみます。
LangChain とは?
一言で言うと、
LLM(大規模言語モデル)をアプリケーションに組み込むための“つなぎのフレームワーク”です。
ChatGPT の API は「入力 → 出力」の1回のやり取りは対応できますが、
アプリとして組み込むとなると、もう少し周辺要素が必要になります。
例えば:
- プロンプト管理(複数環境・本番運用に対応したい)
- 社内ドキュメントやファイルの参照
- 会話の文脈や履歴を保持
- 複数ステップの処理(要約 → 整形 → 再生成 など)
LangChainは、これらを共通のパターンとしてまとめています。
LLMの「前後の処理」を扱うための部品セットというイメージです。
参考:
- LangChain公式ドキュメント
https://python.langchain.com/
なぜ必要なのか
ChatGPT API だけだと、「テキストを投げる → テキストが返る」 しかできません。
現実のアプリ開発では、もう少し構造が必要です。
| 必要なこと | 例 |
|---|---|
| プロンプトの整理 | コード中にベタ書きすると破綻する |
| 状態の保持 | チャットボット・会話型UIなど |
| 外部データの参照 | 社内Wiki、FAQ、マニュアル |
| 複数処理の接続 | 推論 → 要約 → 整形 など |
LangChainはこれらを 一貫した方法で組めるようにします。
特に 「プロンプトが管理資産になる」 というのは使ってみると実感しやすい部分です。
実際に触ってみた(最小コード例)
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
llm = OpenAI(model_name="gpt-3.5-turbo", temperature=0.7)
prompt = PromptTemplate(
input_variables=["topic"],
template="以下のテーマを初心者向けにやさしく説明してください:{topic}"
)
chain = LLMChain(llm=llm, prompt=prompt)
print(chain.run("LangChain"))
分かったこと
-
PromptTemplateによってプロンプトの再利用性が上がる -
LLMChainによって「入力→出力」という処理が部品化できる
→ 「プロンプトをコードの外側に出す文化」 に近いように感じた。
RAG(外部データ参照)について
例えば、「社内Confluenceを検索して回答してほしい」という場合に必要なのが RAG です。
質問
→ ベクトルDBで類似文書を検索
→ 関連情報をLLMに渡す
→ 回答生成
LangChainはこの流れを 標準機能として提供しています。
まとめ
| 観点 | 内容 |
|---|---|
| LangChainとは | LLMとアプリをつなぐためのフレームワーク |
| 必要な理由 | プロンプト / 状態 / 外部データ / 処理フローを整理するため |
| 実務メリット | コードの保守性・再利用性・拡張性が上がる |
| RAGの役割 | 「検索してから生成する」ことで外部知識を使わせる |
ChatGPT API だけでは見えなかった、「アプリとしての構造」 が見えてきました。