Hello there, ('ω')ノ
🎯 はじめに:LangChainとは?
LangChain は、LLM(大規模言語モデル) を活用したアプリケーションの開発を
より簡単かつ柔軟に行うためのフレームワーク です。
✅ 主な特徴
- LLMの統合: GPT-3、GPT-4、Claude、PaLM などのモデル対応
- RAG(検索拡張生成): 外部データベース・APIからの情報取得を活用
- エージェント機能: ユーザー入力に応じて自律的にタスクを実行
✅ 主な用途
- チャットボット・対話型AIの構築
- 質問応答(QA)システムの開発
- ドキュメント検索・情報要約
- API連携・タスク自動化
📚 1. LangChainの基本構造と仕組み
📦 ① LangChainの主なコンポーネント
LangChainは、以下の5つの主要コンポーネントで構成されています。
✅ 1. モデル(Model)
- LLM: GPT-3、GPT-4、Claude、PaLM などの大規模言語モデル
- 埋め込みモデル(Embedding Models): ベクトル化によるデータ検索
✅ 2. プロンプトテンプレート(Prompt Template)
- ユーザーの入力から 動的なプロンプト を作成するテンプレート
- プロンプトの再利用やカスタマイズが容易
✅ 3. チェーン(Chain)
- 複数のプロセスを連結 してワークフローを構築
- 例)ユーザー入力 → LLM → 生成結果の加工・保存
✅ 4. エージェント(Agent)
- ユーザーの指示に応じて 自律的にタスクを選択・実行
- API呼び出し、情報検索、外部ツールの使用
✅ 5. メモリ(Memory)
- 会話履歴やコンテキスト情報を保持し、長期的な対話管理
- セッションメモリ を使用して文脈理解を向上
🔗 ② LangChainのワークフローの基本
[ユーザー入力] → [プロンプトテンプレート] → [LLM] → [出力] → [メモリ/外部API]
📝 2. LangChainのインストールとセットアップ
🔥 ① LangChainのインストール
以下のコマンドで必要なパッケージをインストールします。
# LangChainのインストール pip install langchain pip install openai pip install tiktoken
✅ langchain: LangChainのメインパッケージ
✅ openai: OpenAI API へのアクセス
✅ tiktoken: トークン処理用のライブラリ
🔐 ② OpenAI APIキーの取得
- OpenAI でAPIキーを取得
- PythonスクリプトでAPIキーを設定
import openai openai.api_key = "YOUR_OPENAI_API_KEY"
📚 ③ LangChainの基本設定
from langchain.llms import OpenAI # GPT-3.5 or GPT-4 のモデルを選択 llm = OpenAI(model_name="gpt-4", temperature=0.7)
✅ model_name: 使用するLLM(gpt-3.5-turbo、gpt-4 など)
✅ temperature: 応答の創造性レベル(0.0〜1.0)
🔥 3. LangChainでシンプルなチャットボットを作ろう
💬 ① チャットボットの基本構造
LangChainを使った シンプルなチャットボット を構築してみましょう。
📚 ステップ 1:プロンプトテンプレートの定義
from langchain import PromptTemplate # プロンプトテンプレートの作成 template = """ あなたは親切で知識豊富なAIアシスタントです。 ユーザーの質問に対して、正確で簡潔な回答をしてください。 質問: {question} """ prompt = PromptTemplate(input_variables=["question"], template=template)
✅ PromptTemplate: ユーザー入力に基づくプロンプトの作成
✅ input_variables: ユーザーからの入力(例:question)
📚 ステップ 2:LLMの設定
from langchain.llms import OpenAI # LLMモデルの初期化 llm = OpenAI(model_name="gpt-3.5-turbo", temperature=0.7)
✅ model_name: GPT-3.5、GPT-4 などの選択
✅ temperature: 応答の創造性をコントロール
📚 ステップ 3:チェーンの作成
from langchain.chains import LLMChain # LLMチェーンの作成 chain = LLMChain(llm=llm, prompt=prompt) # ユーザー入力の受け取りと回答生成 question = "AIは未来の仕事にどう影響しますか?" response = chain.run(question) print(response)
✅ LLMChain: プロンプト → LLM → 応答のチェーン化
✅ chain.run(): ユーザー入力の処理と応答生成
🎉 【結果の例】
AIは未来の仕事に多大な影響を与えると考えられます。自動化により単純作業が減少し、より創造的・高度な業務に人間が集中できるようになります。
🔗 4. LangChainでQA(質問応答)アプリケーションを作る
📚 ① LangChainでQAシステムの構築
次に、LangChainを活用して 質問応答(QA)システム を構築します。
📚 ステップ 1:ドキュメントの読み込み
from langchain.document_loaders import TextLoader # ドキュメントの読み込み loader = TextLoader("./data/document.txt") documents = loader.load()
✅ TextLoader: テキストドキュメントの読み込み
✅ loader.load(): 読み込み後のデータ取得
📚 ステップ 2:埋め込みモデルの作成
from langchain.embeddings import OpenAIEmbeddings from langchain.vectorstores import FAISS # 埋め込みモデルの作成 embeddings = OpenAIEmbeddings() # FAISSベクトルストアへの格納 db = FAISS.from_documents(documents, embeddings)
✅ OpenAIEmbeddings: OpenAIの埋め込みモデルを使用
✅ FAISS: 高速なベクトル検索エンジン
📚 ステップ 3:検索拡張生成(RAG)の設定
from langchain.chains import RetrievalQA # QAチェーンの作成 qa_chain = RetrievalQA.from_chain_type(llm=llm, retriever=db.as_retriever()) # ユーザーの質問 question = "このドキュメントでAIの定義を説明してください。" response = qa_chain.run(question) print(response)
✅ RetrievalQA: ドキュメント検索+質問応答の組み合わせ
✅ db.as_retriever(): ベクトルストアから情報取得
🎉 【結果の例】
AI(人工知能)は、人間の知的作業を自動化し、データ解析、パターン認識、意思決定支援を行う技術のことです。
🤖 5. LangChainでエージェント(Agent)を構築
⚡️ ① エージェントの概要
エージェント(Agent) は、
ユーザー入力に基づき、自律的にタスクを実行するインテリジェントなモジュール です。
📚 ステップ 1:エージェントの作成
from langchain.agents import load_tools, initialize_agent, AgentType # 外部ツールの読み込み tools = load_tools(["serpapi", "llm-math"], llm=llm) # エージェントの初期化 agent = initialize_agent( tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True ) # ユーザーのクエリ query = "東京タワーの高さは?" response = agent.run(query) print(response)
✅ load_tools(): SERP API や計算APIなどの外部ツール読み込み
✅ initialize_agent(): エージェントの初期化
✅ AgentType.ZERO_SHOT_REACT_DESCRIPTION: ReAct型エージェントの使用
🎉 【結果の例】
東京タワーの高さは333メートルです。
🌐 6. RAG(検索拡張生成)をLangChainで活用する
🔎 ① RAG(Retrieval-Augmented Generation)とは?
RAG(検索拡張生成) は、
LLMと外部情報検索(ベクトル検索) を組み合わせて、
より正確で最新の情報を生成する手法 です。
📚 ステップ 1:RAGのセットアップ
from langchain.chains import RetrievalQA # ベクトルストアからRAG設定 rag_chain = RetrievalQA.from_chain_type(llm=llm, retriever=db.as_retriever()) # ユーザーの質問 question_rag = "最近のAI技術の進歩は?" response_rag = rag_chain.run(question_rag) print(response_rag)
✅ RetrievalQA: 検索と生成を組み合わせたワークフロー
✅ db.as_retriever(): ベクトルストアで情報検索
🎉 【結果の例】
最近のAI技術では、GPT-4などの大規模言語モデル、拡散モデルによる画像生成、マルチモーダルAIの統合が進展しています。
🎁 まとめ:LangChainでLLMアプリケーションを作成しよう!
✅ LangChainは、LLMを活用したアプリケーションの構築を容易にする強力なフレームワーク。
✅ プロンプトテンプレート、チェーン、エージェント、RAG などのコンポーネントを活用できる。
✅ チャットボット、QAシステム、情報検索、エージェント制御など、さまざまな用途に応用可能。
✅ RAG(検索拡張生成)を組み合わせることで、最新情報を取り入れた正確な回答が得られる。
Best regards, (^^ゞ