LangChainとは
LLMアプリケーションの構築を、部品の組み合わせ(チェーン)として簡単にするPython/JavaScriptフレームワーク
ひとことで言うと
AIアプリを部品の組み合わせのように作れる、開発用のフレームワーク。
概要
LangChainとは、LLMを使ったアプリケーションを構築するためのオープンソースのフレームワーク。 プロンプトの組み立て、外部データソースとの連携、ツール呼び出し、複数ステップの処理の連結(チェーン)等を、あらかじめ用意された部品(コンポーネント)を組み合わせる形で実装できるようにする。 RAGパイプラインの構築や、AIエージェントの実装によく利用され、Python版・JavaScript版が提供されている。 対応するLLMプロバイダ・ベクトルデータベース・ツールの種類が非常に多く、様々な外部サービスと連携するLLMアプリケーションの試作を素早く行える点が広く使われる理由の1つになっている。
背景
LLM活用が広がるにつれ、プロンプト管理・外部データ連携・ツール呼び出しといった、多くのLLMアプリケーションに共通する処理を毎回ゼロから実装する非効率が生じていた。 LangChainは、こうした共通処理を再利用可能な部品として提供することで開発を効率化するために開発された。
歴史
2022年10月: Harrison ChaseがLangChainを公開。 LLMアプリケーション開発の共通基盤として急速に普及し、その後の派生プロジェクト(LangGraph等)を含むエコシステムに発展した。
アーキテクチャ
プロンプトテンプレート、LLM呼び出しのラッパー、外部データ取得用のリトリーバー、ツール呼び出し、これらを連結するチェーンといったコンポーネント群から構成される。 各コンポーネントは共通のインターフェースを持ち、組み合わせて1つの処理フローを構築できる。
コード例
LCELによるチェーンの構築(概念例)
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
prompt = ChatPromptTemplate.from_template("{topic}について3行で説明してください")
model = ChatOpenAI(model="gpt-4o-mini")
chain = prompt | model
result = chain.invoke({"topic": "RAG"})
print(result.content)利点
- RAG・ツール呼び出し等、LLMアプリケーションでよく使われる処理を部品として再利用できる
- 対応するLLMプロバイダ・データソース・ツールの種類が豊富で、エコシステムが大きい
- LCEL(LangChain Expression Language)により、コンポーネントをパイプ演算子で簡潔に連結できる
欠点
- 抽象化の層が多く、内部の挙動を細かく制御・デバッグしたい場合に複雑さを感じることがある
- バージョンアップの頻度が高く、APIの変更に追従する保守コストがかかりやすい
- 単純な処理に対しても、フレームワーク特有の概念(チェーン・リトリーバー等)を学ぶ必要がある
比較
関連用語
よくある質問
LangChainとLangGraphはどちらを使うべき?
単純なチェーン処理であればLangChainのコンポーネントで十分な場合が多いが、条件分岐やループを伴う複雑なエージェントの状態管理が必要な場合はLangGraphが向くとされる。
LangChainはPython以外でも使える?
Python版のほかJavaScript/TypeScript版(LangChain.js)も提供されており、Node.js環境のアプリケーションからも利用できる。
参考文献
- Official WebsiteLangChain
- GitHublangchain-ai/langchain