0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[1分でわかる]LangChainってなんだ?

Posted at

結論

「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エージェント・自動化シリーズ、お役に立てたらフォローお願いします!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?