LangChain

AIフレームワーク | IT用語集

この用語をシェア

概要

LangChainは、大規模言語モデル(LLM)を活用したアプリケーション開発フレームワークです。複雑なAIアプリケーションの構築を支援し、RAG(Retrieval Augmented Generation)やエージェントシステムの開発を可能にします。モジュール化されたアーキテクチャにより、様々なLLMプロバイダーやデータソースを統合し、高度な言語処理アプリケーションを構築できます。

詳細説明

主な特徴

  • モジュール設計:コンポーネントベースの柔軟なアーキテクチャ
  • マルチプロバイダー対応:OpenAI、Claude、Llama等の様々なLLMに対応
  • RAG機能:外部データソースとの統合による知識拡張
  • エージェント機能:自動的なタスク実行とツール使用
  • メモリ機能:会話履歴の保持と文脈理解
  • チェーン機能:複数のLLM呼び出しの連鎖

主要コンポーネント

  • Models:LLMやチャットモデルのラッパー
  • Prompts:プロンプトテンプレートと管理
  • Chains:LLM呼び出しの連鎖と制御
  • Agents:動的な意思決定とツール使用
  • Memory:会話履歴とコンテキスト管理
  • Vector Stores:ベクトルデータベースとの統合

使用例

基本的なLLM使用

from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain

# LLMの初期化
llm = OpenAI(temperature=0.7)

# プロンプトテンプレートの作成
template = """
あなたは{role}です。
以下の質問に答えてください:

質問: {question}

回答:
"""

prompt = PromptTemplate(
    input_variables=["role", "question"],
    template=template
)

# チェーンの作成
chain = LLMChain(llm=llm, prompt=prompt)

# 実行
response = chain.run(
    role="プロフェッショナルなITコンサルタント",
    question="AIプロジェクトの成功要因は何ですか?"
)
print(response)

RAG(Retrieval Augmented Generation)の実装

from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import FAISS
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.chains import RetrievalQA
from langchain.llms import OpenAI
from langchain.document_loaders import TextLoader

# ドキュメントの読み込み
loader = TextLoader("company_documents.txt")
documents = loader.load()

# テキストの分割
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000,
    chunk_overlap=200
)
texts = text_splitter.split_documents(documents)

# 埋め込みベクトルの作成
embeddings = OpenAIEmbeddings()
vectorstore = FAISS.from_documents(texts, embeddings)

# RAGチェーンの作成
qa_chain = RetrievalQA.from_chain_type(
    llm=OpenAI(temperature=0),
    chain_type="stuff",
    retriever=vectorstore.as_retriever()
)

# 質問の実行
query = "弊社のAIサービスについて教えてください"
result = qa_chain.run(query)
print(result)

エージェント機能の実装

from langchain.agents import create_react_agent, AgentExecutor
from langchain.tools import Tool
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
import requests

# カスタムツールの定義
def search_web(query):
    """Web検索を実行するツール"""
    # 実際の検索APIを呼び出す
    return f"検索結果: {query}に関する情報"

def calculate(expression):
    """数式を計算するツール"""
    try:
        result = eval(expression)
        return f"計算結果: {result}"
    except Exception as e:
        return f"計算エラー: {str(e)}"

# ツールの作成
tools = [
    Tool(
        name="WebSearch",
        func=search_web,
        description="インターネットで情報を検索します"
    ),
    Tool(
        name="Calculator",
        func=calculate,
        description="数式を計算します"
    )
]

# エージェントの作成
llm = OpenAI(temperature=0)
agent = create_react_agent(llm, tools)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

# エージェントの実行
result = agent_executor.run(
    "2023年のAI市場規模を調べて、前年比の成長率を計算してください"
)
print(result)

メモリ機能付きチャットボット

from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain
from langchain.llms import OpenAI

# メモリの作成
memory = ConversationBufferMemory()

# 会話チェーンの作成
llm = OpenAI(temperature=0.7)
conversation = ConversationChain(
    llm=llm,
    memory=memory,
    verbose=True
)

# 会話の実行
print("チャットボットとの会話を開始します...")
while True:
    user_input = input("あなた: ")
    if user_input.lower() == "quit":
        break
    
    response = conversation.predict(input=user_input)
    print(f"ボット: {response}")

関連技術

  • OpenAI API:GPTモデルとの統合
  • Claude API:AnthropicのClaude統合
  • Vector Databases:Pinecone、Chroma、FAISS
  • Hugging Face:オープンソースモデル統合
  • LangSmith:LangChainアプリケーションの監視
  • Streamlit:WebアプリケーションのUI

適用分野

  • カスタムチャットボット・AI助手
  • 文書検索・質問応答システム
  • 知識管理システム
  • 自動化エージェント
  • コンテンツ生成・要約
  • 多言語翻訳・通訳
  • データ分析・レポート生成

メリット・デメリット

メリット

  • モジュール化された設計による柔軟性
  • 多様なLLMプロバイダーとの統合
  • RAGによる知識拡張が容易
  • 豊富なツールと統合オプション
  • 活発な開発コミュニティ
  • 包括的なドキュメント

デメリット

  • 学習コストが高い
  • 頻繁なAPI変更
  • 複雑なアプリケーションでの性能問題
  • デバッグが困難な場合がある
  • 依存関係の管理が複雑

関連Webサイト

この用語についてもっと詳しく

LangChainに関するご質問や、システム導入のご相談など、お気軽にお問い合わせください。