Skip to content
LangChain: OpenAI API でアプリを素早く構築する

先進的な 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 は、これらのプリミティブを RunnablesLCELLangGraph を通じて提供し、信頼性の高いエージェントやワークフローシステムを構築できるようにします。


🔗 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-cpu

LangGraph を使う場合:

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 アプリケーションを作るための、最新かつ基盤となるリファレンスとして活用してください。