Shikata Ga Nai

Private? There is no such things.

第15回:LangChainでLLMアプリケーションを作ってみよう

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, (^^ゞ