先進的な AI アプリ開発で LangChain のポテンシャルを引き出す
Updated on
LangChain は 2023 年以降、劇的に進化しました。単なる LLM ラッパーとして始まったものが、現在では次のような機能を備えた フル機能の AI アプリケーションフレームワーク になっています。
- LCEL (LangChain Expression Language)
- Runnables
- LangGraph(状態を持つ堅牢なエージェントワークフロー)
- OpenAI function calling
- Tool calling
- 高度なメモリシステム
- 最新の RAG 向けドキュメントパイプライン
この最新版ガイドでは、LangChain を 2025 年の水準で理解 し、最新の OpenAI API を用いて実際に LLM アプリケーションを構築する方法を解説します。
LangChain の基本コンセプト
🌟 今の LangChain: モダンな AI アプリフレームワーク
現代の LLM アプリには、単なるテキスト生成以上のものが必要です。
- tools
- memory
- document retrieval
- state management
- multi-step workflows
- error handling
- determinism
LangChain は、これらのプリミティブを Runnables、LCEL、LangGraph を通じて提供し、信頼性の高いエージェントやワークフローシステムを構築できるようにします。
🔗 LCEL を使った逐次ワークフロー(最新版)
LCEL を使うと、LLM パイプラインを関数のように合成できます。
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
model = ChatOpenAI(model="gpt-4.1")
prompt = ChatPromptTemplate.from_messages([
("system", "You are a helpful assistant."),
("user", "{question}")
])
chain = prompt | model
chain.invoke({"question": "Explain LangChain LCEL in one paragraph."})これは、従来の “SequentialChain” API を置き換えるものです。
LangChain を始める
📦 インストール
pip install langchain langchain-openai langgraph faiss-cpuLangGraph を使う場合:
pip install langgraph💬 LLM と Prompt Template(モダン API)
LangChain は現在、ChatModel インターフェイス を使用します。
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4.1", temperature=0)Prompt Template も引き続き強力です。
from langchain_core.prompts import ChatPromptTemplate
prompt = ChatPromptTemplate.from_template(
"Summarize the following text:\n\n{text}"
)⛓️ LCEL による Chain(旧 “Chains API” の代わり)
Chain は LCEL で構築します。
chain = prompt | llm⚙️ Tools & Agents(2025 年のベストプラクティス)
古い initialize_agent、"ReAct agent"、MiniChain 風スタイルは非推奨になっています。
推奨されるアプローチは次のとおりです。
エージェントワークフローには LangGraph を使う
LangGraph は次の機能を提供します。
- state management
- retry policies
- deterministic edges
- tool calling
- persistence
エージェントノードの例:
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="gpt-4.1",
temperature=0,
streaming=False
)Tool calling の例:
from langchain_core.tools import tool
@tool
def search_wiki(query: str):
"""Search Wikipedia topics."""
import wikipedia
return wikipedia.summary(query)
tools = [search_wiki]LLM との接続:
result = llm.invoke({
"messages": [
{"role": "user", "content": "Find me information about LangChain."}
],
"tools": tools
})🧠 Memory
LangChain の memory は、次のようなものをサポートしています。
- BufferMemory
- ConversationSummaryMemory
- SQL / Redis バックエンドの memory
- Graph-state memory(LangGraph)
例:
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory()
memory.save_context(
{"input": "Hello"},
{"output": "Hi, how can I help?"}
)
memory.load_memory_variables({})📄 データ読み込み、Text Splitter と Retrieval(モダンな RAG)
FAISS + OpenAI embeddings を用いた最新の例:
from langchain_community.document_loaders import TextLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import FAISS
loader = TextLoader("./state_of_the_union.txt")
docs = loader.load()
splitter = RecursiveCharacterTextSplitter(chunk_size=1000)
chunks = splitter.split_documents(docs)
emb = OpenAIEmbeddings()
db = FAISS.from_documents(chunks, emb)
query = "What policies did the president highlight?"
results = db.similarity_search(query)🚀 エンドツーエンドの例
以下は、LCEL、最新の OpenAI API、および retrieval を用いた、完全に実行可能な LangChain パイプラインです。
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_core.prompts import ChatPromptTemplate
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_community.document_loaders import TextLoader
from langchain_community.vectorstores import FAISS
# 1. Load LLM
llm = ChatOpenAI(model="gpt-4.1", temperature=0)
# 2. Load + split documents
loader = TextLoader("./state_of_the_union.txt")
docs = loader.load()
splitter = RecursiveCharacterTextSplitter(chunk_size=800)
chunks = splitter.split_documents(docs)
# 3. Build vectorstore
db = FAISS.from_documents(chunks, OpenAIEmbeddings())
# 4. Retrieval chain
prompt = ChatPromptTemplate.from_messages([
("system", "Answer based on the provided context."),
("user", "{question}\n\nContext: {context}")
])
def retriever(q):
results = db.similarity_search(q, k=3)
return "\n".join([r.page_content for r in results])
chain = (
{
"question": lambda x: x,
"context": lambda x: retriever(x)
}
| prompt
| llm
)
# 5. Run end-to-end
response = chain.invoke("What economic topics were mentioned?")
print(response.content)まとめ
2025 年の LangChain は、もはや単なるツールキットではなく、次のような用途に対応する フル機能の AI アプリケーションフレームワーク です。
- agents
- workflows
- retrieval systems
- tool integrations
- memory を活用した会話アプリ
LCEL、Runnables、LangGraph によって、クリーンで保守しやすく、スケーラブルなアーキテクチャを持つ 本番運用レベルの AI アプリ を構築できます。
このガイドを、強力で競争力のある AI アプリケーションを作るための、最新かつ基盤となるリファレンスとして活用してください。