結論
「LLMアプリ開発のjQuery」
LLMを使ったアプリケーションを開発するためのオープンソースフレームワーク。RAG、エージェント、チャットボットを素早く構築できる。
一言で言うと
┌─────────────────────────────────────────────────────────┐
│ │
│ LangChain = LLMアプリ開発フレームワーク │
│ │
│ 「LLMとツールを繋いで、複雑なAIアプリを作る」 │
│ │
│ ・2022年10月リリース │
│ ・Python / JavaScript(TypeScript) │
│ ・オープンソース(MIT License) │
│ ・LLMアプリ開発のデファクトスタンダード │
│ │
└─────────────────────────────────────────────────────────┘
Difyとの違い
┌─────────────────────────────────────────────────────────┐
│ │
│ 【LangChain】 │
│ コードを書いてLLMアプリを構築 │
│ → 開発者向け、柔軟性◎ │
│ │
│ 【Dify】 │
│ ノーコードでLLMアプリを構築 │
│ → 非開発者も使える、手軽さ◎ │
│ │
│ ──────────────────────────────────────────── │
│ │
│ 例えるなら: │
│ LangChain = WordPressのコードを直接書く │
│ Dify = WordPressの管理画面で作る │
│ │
│ → 両方使う人も多い │
│ (プロトタイプはDify、本番はLangChain) │
│ │
└─────────────────────────────────────────────────────────┘
LangChainのコア概念
┌─────────────────────────────────────────────────────────┐
│ │
│ 【1. Models(モデル)】 │
│ LLMへの統一インターフェース │
│ OpenAI, Claude, Gemini, Ollama等を同じ書き方で │
│ │
│ 【2. Prompts(プロンプト)】 │
│ プロンプトテンプレートの管理 │
│ 変数の埋め込み、再利用 │
│ │
│ 【3. Chains(チェーン)】 │
│ 複数のステップを連結 │
│ 入力 → 処理A → 処理B → 出力 │
│ │
│ 【4. Memory(メモリ)】 │
│ 会話履歴の保持 │
│ LLMは本来ステートレス、メモリで文脈維持 │
│ │
│ 【5. Agents(エージェント)】 │
│ LLMが自律的にツールを選んで実行 │
│ 「どのツールを使うか」をLLMが判断 │
│ │
│ 【6. Retrieval(検索)】 │
│ RAGのための検索機能 │
│ ベクトルDB連携、ドキュメントローダー │
│ │
└─────────────────────────────────────────────────────────┘
アーキテクチャ
┌─────────────────────────────────────────────────────────┐
│ │
│ LangChain Ecosystem │
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ langchain │ │
│ │ Chains, Agents, Retrieval, Memory │ │
│ └─────────────────────────────────────────────────┘ │
│ │ │
│ ┌──────────┬───────────┴───────────┬──────────┐ │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ ┌────┐ ┌────────────┐ ┌────────────┐ ┌────────┐ │
│ │core│ │langchain- │ │langchain- │ │LangGraph│ │
│ │ │ │openai │ │anthropic │ │(Agent) │ │
│ └────┘ └────────────┘ └────────────┘ └────────┘ │
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ LangSmith (Observability) │ │
│ │ ログ・評価・デバッグ・モニタリング │ │
│ └─────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘
コード例(RAG)
# pip install langchain langchain-openai chromadb
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
from langchain_community.document_loaders import DirectoryLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.chains import RetrievalQA
# 1. ドキュメント読み込み
loader = DirectoryLoader("./docs", glob="**/*.txt")
docs = loader.load()
# 2. チャンク分割
splitter = RecursiveCharacterTextSplitter(
chunk_size=1000,
chunk_overlap=200
)
splits = splitter.split_documents(docs)
# 3. ベクトルDB作成
embeddings = OpenAIEmbeddings()
vectordb = Chroma.from_documents(splits, embeddings)
# 4. RAGチェーン作成
llm = ChatOpenAI(model="gpt-4o-mini")
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
retriever=vectordb.as_retriever()
)
# 5. 質問
result = qa_chain.invoke({"query": "返品ポリシーは?"})
print(result)
LangChain vs LangGraph
┌─────────────────────────────────────────────────────────┐
│ │
│ 【LangChain】 │
│ ・線形ワークフロー向け │
│ ・シンプルなChain構築 │
│ ・素早いプロトタイピング │
│ │
│ 【LangGraph】(2024年〜) │
│ ・複雑なエージェント向け │
│ ・状態管理、ループ、分岐 │
│ ・本番環境での信頼性 │
│ ・Human-in-the-Loop対応 │
│ │
│ ──────────────────────────────────────────── │
│ │
│ 使い分け: │
│ ・シンプルなRAG/チャット → LangChain │
│ ・複雑なマルチエージェント → LangGraph │
│ ・両方組み合わせるのが一般的 │
│ │
└─────────────────────────────────────────────────────────┘
主要な連携先
【LLMプロバイダー】
・OpenAI (GPT-4, GPT-4o)
・Anthropic (Claude)
・Google (Gemini)
・Ollama (ローカルLLM)
・Azure OpenAI
・AWS Bedrock
【ベクトルDB】
・Pinecone
・Chroma
・Weaviate
・Qdrant
・pgvector
【ドキュメントローダー】
・PDF, Word, Excel
・Notion, Confluence
・Webページ
・YouTube字幕
・...100種類以上
LangSmith(観測プラットフォーム)
┌─────────────────────────────────────────────────────────┐
│ │
│ 【LangSmithとは】 │
│ │
│ LangChainの公式観測・評価プラットフォーム │
│ │
│ ・トレース: 各ステップの入出力を記録 │
│ ・デバッグ: どこで失敗したか可視化 │
│ ・評価: 回答品質の定量評価 │
│ ・モニタリング: 本番環境の監視 │
│ │
│ 【設定】 │
│ │
│ export LANGCHAIN_TRACING_V2=true │
│ export LANGCHAIN_API_KEY=your-key │
│ │
│ → これだけでトレースが有効に │
│ │
└─────────────────────────────────────────────────────────┘
ユースケース
┌─────────────────────────────────────────────────────────┐
│ │
│ 【RAGアプリケーション】 │
│ ・社内文書Q&A │
│ ・製品マニュアル検索 │
│ ・法律・医療文書分析 │
│ │
│ 【AIエージェント】 │
│ ・Web検索エージェント │
│ ・コード生成エージェント │
│ ・データ分析エージェント │
│ │
│ 【チャットボット】 │
│ ・カスタマーサポート │
│ ・社内ヘルプデスク │
│ ・教育アシスタント │
│ │
│ 【ワークフロー自動化】 │
│ ・メール要約・返信 │
│ ・レポート生成 │
│ ・データ抽出・変換 │
│ │
└─────────────────────────────────────────────────────────┘
強みと弱み
【強み】
✓ 柔軟性が高い(何でもカスタマイズ可能)
✓ 豊富な連携先(LLM、ベクトルDB、ツール)
✓ 活発なコミュニティ
✓ 本番環境での実績
✓ LangSmithによる観測・評価
【弱み】
✗ 学習曲線がある(概念が多い)
✗ コーディングが必要
✗ 抽象化レイヤーによるオーバーヘッド
✗ バージョン間の変更が多い
関連ツールとの関係
┌─────────────────────────────────────────────────────────┐
│ │
│ 【LangChainの上に乗るツール】 │
│ │
│ Flowise: LangChainをノーコードで使う │
│ Dify: LangChain的な機能をノーコードで提供 │
│ │
│ 【LangChainと並ぶフレームワーク】 │
│ │
│ LlamaIndex: RAG特化(LangChainと併用も多い) │
│ Haystack: エンタープライズRAG向け │
│ │
│ 【LangChainと連携するプロトコル】 │
│ │
│ MCP: LangChainエージェントにツール追加 │
│ A2A: LangChainエージェント同士を連携 │
│ │
└─────────────────────────────────────────────────────────┘
こんな人におすすめ
┌─────────────────────────────────────────────────────────┐
│ │
│ ✓ LLMアプリを本格的に開発したい │
│ ✓ RAGやエージェントを細かくカスタマイズしたい │
│ ✓ 複数のLLMプロバイダーを切り替えたい │
│ ✓ PythonまたはJavaScriptでコードを書ける │
│ │
│ ──────────────────────────────────────────── │
│ │
│ ✗ 向いていない人 │
│ ・コードを書きたくない → Dify、Flowise │
│ ・とにかく早く作りたい → Difyでプロトタイプ │
│ │
└─────────────────────────────────────────────────────────┘
まとめ
| 項目 | 内容 |
|---|---|
| 正式名称 | LangChain |
| リリース | 2022年10月 |
| 言語 | Python, JavaScript |
| 用途 | LLMアプリ開発 |
| 主要機能 | Chains, Agents, RAG, Memory |
| 観測 | LangSmith |
| エージェント | LangGraph |
参考リンク
AIエージェント・自動化シリーズ、お役に立てたらフォローお願いします!