LangChainとは
LangChainは、LLM駆動アプリケーションを構築するためのオープンソースフレームワークです。チェーン呼び出し、Agent管理、メモリシステム、ツール統合などのコア機能を提供し、開発者が複雑なAIアプリケーションを迅速に構築できるようにします。LangChainの登場により、AIアプリケーション開発のハードルは大幅に下がりました。
コアコンセプト
- Chain(チェーン):複数のコンポーネントを連結して処理パイプラインを形成します
- Agent(エージェント):どのツールを使用するかを自律的に決定できるAI
- Tool(ツール):Agentが呼び出せる外部機能
- Memory(メモリ):複数の会話間でコンテキストを維持します
- Retriever(レトリーバー):外部ナレッジベースから関連情報を取得します
環境設定
pip install langchain langchain-openai langchain-community
# APIキーの設定
export DEEPSEEK_API_KEY="your-api-key"最初のChainを構築する
from langchain_openai import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from langchain.schema.output_parser import StrOutputParser
# モデルの初期化
llm = ChatOpenAI(
model="deepseek-chat",
base_url="https://api.deepseek.com/v1",
api_key="your-api-key"
)
# プロンプトテンプレートの作成
prompt = ChatPromptTemplate.from_messages([
("system", "あなたは{role}で、{skill}に長けています"),
("user", "{input}")
])
# チェーンの作成
chain = prompt | llm | StrOutputParser()
# 実行
result = chain.invoke({
"role": "Pythonプログラミング指導者",
"skill": "プログラミングの概念をわかりやすく説明する",
"input": "デコレータとは何ですか?"
})
print(result)メモリ付き対話アプリの構築
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain
memory = ConversationBufferMemory(return_messages=True)
conversation = ConversationChain(
llm=llm,
memory=memory,
verbose=True
)
# 複数ターンの対話
conversation.predict(input="私の名前は小明です")
conversation.predict(input="私はプログラミングが好きです")
conversation.predict(input="さっき私の名前は何と言いましたか?")
# モデルは以前の内容を覚えていますRAGアプリの構築
from langchain.document_loaders import WebBaseLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.vectorstores import Chroma
from langchain.embeddings import OpenAIEmbeddings
from langchain.chains import RetrievalQA
# ウェブコンテンツの読み込み
loader = WebBaseLoader("https://docs.python.org/3/tutorial/")
docs = loader.load()
# テキストの分割
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = splitter.split_documents(docs)
# ベクトルストアの作成
vectorstore = Chroma.from_documents(
chunks, OpenAIEmbeddings()
)
# QAチェーンの作成
qa = RetrievalQA.from_chain_type(
llm=llm,
retriever=vectorstore.as_retriever()
)
result = qa.run("Pythonで例外を処理するには?")
print(result)次の学習ステップ
基本概念を習得したら、LangChain Expression Language (LCEL)の新しい構文、LangSmithによるデバッグとトレーシング、LangServeによるAPIサービスのデプロイ、LangGraphによる複雑なAgentワークフローの構築などに深く学ぶことができます。LangChainのエコシステムは急速に発展しているため、最新情報は公式ドキュメントを参照することをお勧めします。