LangChainとは?
「LangChainって聞いたことはあるけど、何ができるの?」
「生成AIを使ったアプリを作りたいけど、どう始めればいい?」
このような疑問を持っている方は多いのではないでしょうか。
LangChainは、大規模言語モデル(LLM)を活用したアプリケーション開発のためのオープンソース・フレームワークです。2022年10月にHarrison Chase氏によって開発され、現在GitHubで最も急成長しているオープンソースプロジェクトの一つとなっています。
LangChainの概要
LangChainの役割
簡単に言えば、LangChainはChatGPTやGPT-4などのLLMを「つなぎ合わせて」、より高度なアプリケーションを構築するための開発ツールキットです。
- LLMのAPIを直接呼び出す複雑なコードが必要
- 会話の文脈を保持する仕組みを自作する必要がある
- 外部データとの連携を一から実装する必要がある
- 統一されたインターフェースで様々なLLMを簡単に利用可能
- 会話履歴の管理機能が標準で用意されている
- 外部データとの連携機能が充実している
ChatGPTのAPIを直接使うのとは何が違うんですか?
ChatGPT APIだけだと、単発の質問と回答しかできません。LangChainを使うと、複数の処理を連結したり、外部のデータベースと連携したり、会話の文脈を記憶させたりと、より複雑で実用的なアプリケーションを簡単に作れるようになります。
LangChainの主要機能
LangChainには、LLMアプリケーション開発に必要な機能がすべて揃っています。
LangChainの主要機能
1. Chain(チェーン)
複数の処理を鎖のようにつなげて実行する機能です。「Chain」がLangChainの名前の由来でもあります。
- ユーザーから質問を受け取る
- 必要に応じてデータベースを検索
- LLMに質問+検索結果をプロンプトとして渡す
- LLMの回答を受け取り、ユーザーに返却
このような複数ステップの処理を、一つのChainとして定義・管理できます。
2. Memory(メモリ)
会話の履歴や状態を保存し、文脈を継続できるようにする機能です。
通常のLLM APIでは、毎回の会話がリセットされてしまいます。Memoryを使うことで、チャットボットが過去のやり取りを覚えて、文脈に沿った回答ができるようになります。
| 記憶方式 | 特徴 |
|---|---|
| ConversationBufferMemory | 全ての会話履歴を保持 |
| ConversationSummaryMemory | 過去の対話を要約して保存 |
| ConversationBufferWindowMemory | 最新のN件だけを保持 |
3. Retrieval(リトリーバル)
大量のドキュメントから、質問に関連する情報だけを検索・抽出する機能です。
LLMは一度に処理できるテキスト量に制限があります。100ページ以上のドキュメント全文をプロンプトに入れることはできません。
これが、いわゆるRAG(Retrieval-Augmented Generation)の基本的な仕組みです。
4. Agent(エージェント)
LLMが自律的に判断して、必要なツールを使いながらタスクを完了する機能です。
最もワクワクする機能と言えるでしょう。Agentを使うと、LLMが状況に応じて検索エンジンを使ったり、計算を実行したり、データベースにアクセスしたりと、複合的なタスクを自動で処理できます。
5. Model I/O(モデル入出力管理)
異なるLLMプロバイダーを統一されたインターフェースで扱える機能です。
OpenAI、Anthropic Claude、Google Geminiなど、様々なLLMを同じコードスタイルで利用できます。プロジェクトの途中でモデルを変更したい場合も、コードの修正は最小限で済みます。
LangChainの始め方
LangChainはPythonで使用するのが最も一般的です。基本的な使い方を見ていきましょう。
環境構築
まず、必要なパッケージをインストールします。
# 基本パッケージのインストール
pip install langchain
pip install langchain-openai
pip install langchain-community
基本的な使い方
最もシンプルなLangChainの使用例です。
from langchain_openai import ChatOpenAI
from langchain.schema import HumanMessage, SystemMessage
import os
# APIキーの設定
os.environ["OPENAI_API_KEY"] = "your-api-key-here"
# LLMの初期化
llm = ChatOpenAI(model="gpt-4", temperature=0.7)
# メッセージの作成と送信
messages = [
SystemMessage(content="あなたは親切なAIアシスタントです。"),
HumanMessage(content="LangChainについて簡潔に説明してください。")
]
response = llm.invoke(messages)
print(response.content)
会話履歴を保持するチャット
Memoryを使って、会話の文脈を保持する例です。
from langchain_openai import ChatOpenAI
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain
llm = ChatOpenAI(model="gpt-4", temperature=0.7)
# メモリの初期化
memory = ConversationBufferMemory()
# 会話チェーンの作成
conversation = ConversationChain(
llm=llm,
memory=memory,
verbose=True
)
# 会話を続ける
response1 = conversation.predict(input="こんにちは、私の名前は田中です。")
print(response1)
response2 = conversation.predict(input="私の名前を覚えていますか?")
print(response2) # 田中さんと認識して回答
LangChainの学習は、この基本形から始めて、徐々にRetrievalやAgentなどの高度な機能に進んでいくのがおすすめです。公式ドキュメントも充実していますよ。
LangChainの活用事例
LangChainは様々なビジネスシーンで活用されています。
LangChainの活用事例
1. 社内文書検索システム(RAG)
課題: 膨大な社内マニュアルや技術文書から必要な情報を見つけるのに時間がかかる
解決策: LangChainのRetrieval機能を使って、自然言語で質問できる文書検索システムを構築
- 文書検索時間:30分 → 30秒
- 回答精度:95%以上
- 新人教育コストの削減
2. カスタマーサポートチャットボット
課題: 24時間対応が必要だが、人員が限られている
解決策: FAQデータや製品マニュアルを学習させた高度なチャットボットを開発
3. データ分析アシスタント
課題: 非エンジニアがデータ分析を行いたいが、SQLやPythonの知識がない
解決策: Agent機能を使って、自然言語の指示からSQLやPythonコードを自動生成・実行
使い方の例:
「先月の売上データから、地域別の販売数量TOP10を円グラフで出して」
→ Agentが自動でSQL実行、集計、グラフ描画まで処理
LangChainのメリット・デメリット
メリット
- 開発効率の劇的向上:短いコードで実装可能
- 複数LLMの使い分けが簡単:設定変更だけで切り替え可能
- 豊富なコミュニティサポート:ドキュメント充実、issue対応も活発
デメリット・注意点
- 学習コストの存在:基本的なPythonの知識が前提
- バージョンアップの頻度:機能が変更されることがある
LlamaIndexという似たフレームワークも聞いたことがあるのですが、違いは何ですか?
LlamaIndexはRAG特化で、データ検索・取得に強みがあります。一方、LangChainは汎用的なLLMアプリ開発全般をカバーしています。シンプルなRAGを素早く構築したいならLlamaIndex、複雑なワークフローや多機能なアプリを作りたいならLangChainがおすすめです。
比較表:LangChain vs LlamaIndex
| 項目 | LangChain | LlamaIndex |
|---|---|---|
| 得意分野 | 汎用的なLLMアプリ開発 | RAG特化・データ検索 |
| 学習難易度 | 中〜高 | 低〜中 |
| カスタマイズ性 | 非常に高い | 中程度 |
| コミュニティ | 大規模・活発 | 成長中 |
| 主な用途 | チャットボット、エージェント、複合処理 | 文書検索、QAシステム |
まとめ
LangChainの特徴をまとめると以下の通りです。
| 項目 | 内容 |
|---|---|
| 概要 | LLMアプリ開発のためのオープンソース・フレームワーク |
| 主要機能 | Chain、Memory、Retrieval、Agent、Model I/O |
| 言語 | Python(推奨)、JavaScript/TypeScript |
| 主な用途 | チャットボット、RAG、データ分析、エージェント開発 |
| 対応LLM | OpenAI、Anthropic、Google Gemini、ローカルLLMなど |
LangChainは、生成AIを活用した本格的なアプリケーション開発には欠かせないフレームワークになりつつあります。
まずは簡単なチャットボットから始めてみます!
公式ドキュメント(docs.langchain.com)も充実しているので、ぜひ活用してください。