LangChainは、Pythonで開発されたオープンソースのフレームワークで、言語モデル(LLM: Large Language Models)を最大限に活用するためのツールキットです。ChatGPTのような大規模言語モデルを活用して、単なる質問応答だけではなく、より高度で複雑なタスクを実現できる仕組みを提供します。この記事では、LangChainの基本的な仕組みや具体的な活用例をPython初心者にもわかりやすく解説します。
※この記事は、ChatGPTの出力を基に作成しています。
LangChainとは?
LangChainは、**「言語モデルを複数のツールやデータと組み合わせて使う」**ためのフレームワークです。これにより、例えば以下のような機能が実現できます:
- 外部データの活用:独自のデータベースやドキュメントを言語モデルで利用可能に。
- 複雑なワークフローの構築:複数のタスクをステップごとに処理して自動化。
- ツールの統合:Web検索や計算ツールを組み込んで柔軟に対応。
Python初心者でも、シンプルな構文を学ぶだけでこれらの機能を使いこなせるのがLangChainの魅力です。
LangChainの基本的な仕組み
LangChainの基本構成を以下に紹介します。
1. LLMs(言語モデル)
ChatGPTやGPT-4などの言語モデルを簡単に操作できます。
from langchain.llms import OpenAI
llm = OpenAI(model="gpt-4", temperature=0.7)
response = llm("Pythonとは何ですか?")
print(response)
2. Prompts(プロンプト管理)
言語モデルへの指示文(プロンプト)をテンプレート化して管理。
from langchain.prompts import PromptTemplate
template = PromptTemplate(
input_variables=["topic"],
template="あなたは専門家です。「{topic}」について説明してください。"
)
print(template.format(topic="AI"))
3. Chains(チェーン)
複数の処理を「鎖(チェーン)」のように繋げて実行。
from langchain.chains import LLMChain
chain = LLMChain(llm=llm, prompt=template)
result = chain.run("Pythonの基礎")
print(result)
4. Memory(記憶)
会話の文脈や履歴を記憶する仕組みを提供。
5. Tools(ツール)
Web検索や計算機能を統合して多機能な応答が可能。
LangChainで実現できること
LangChainを使うことで、以下のようなタスクを実現できます。
1. ドキュメント検索ボット
社内マニュアルや製品情報などを検索できるボットを構築。
from langchain.chains import RetrievalQA
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
vectorstore = FAISS.load_local("path/to/vectorstore", OpenAIEmbeddings())
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
retriever=vectorstore.as_retriever(),
return_source_documents=True
)
query = "この製品の安全対策について教えてください"
result = qa_chain.run(query)
print(result)
2. カスタムチャットボット
特定分野に特化したチャットボットを構築可能。
from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory()
conversation = ConversationChain(llm=llm, memory=memory)
print(conversation.run("Pythonで変数の使い方を教えてください。"))
3. データの自動要約
ニュースやレポートを要約して、重要なポイントを抽出。
from langchain.prompts import PromptTemplate
summary_prompt = PromptTemplate(
input_variables=["text"],
template="以下の文章を簡潔に要約してください:\n\n{text}"
)
news_article = "今日、新しいAI技術が発表されました。この技術は..."
summary = LLMChain(llm=llm, prompt=summary_prompt).run(news_article)
print(summary)
4. 計算やデータ処理
計算機能を統合し、複雑なタスクを処理。
from langchain.agents import initialize_agent, Tool
from langchain.tools import tool
@tool
def calculate_age(birth_year: int):
current_year = 2025
return f"あなたの年齢は {current_year - birth_year} 歳です。"
tools = [Tool(name="AgeCalculator", func=calculate_age)]
agent = initialize_agent(tools, llm, agent="zero-shot-react-description")
response = agent.run("1990年生まれですが、2025年に何歳になりますか?")
print(response)
5. ワークフローの自動化
複数の処理を連結して、自動化されたワークフローを構築。
from langchain.chains import SequentialChain
summary_chain = LLMChain(llm=llm, prompt=summary_prompt)
translate_prompt = PromptTemplate(
input_variables=["summary"],
template="次の文章を日本語に翻訳してください:\n\n{summary}"
)
translate_chain = LLMChain(llm=llm, prompt=translate_prompt)
workflow = SequentialChain(
chains=[summary_chain, translate_chain],
input_variables=["text"],
output_variables=["translation"]
)
article = "The new AI technology was announced today..."
result = workflow.run({"text": article})
print(result)
LangChainの魅力
LangChainを使うことで、以下のようなメリットがあります:
- 効率的なタスク処理:複雑なタスクを簡潔に実装。
- 柔軟な拡張性:外部ツールやデータと統合可能。
- 初心者にもわかりやすい設計:シンプルな構文で高度な機能を実現。
LangChainを活用すれば、Python初心者でも高度なAIツールを作成できます。まずは簡単なチェーンを作成し、慣れてきたら複雑なワークフローに挑戦してみましょう!