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のエコシステムは急速に発展しているため、最新情報は公式ドキュメントを参照することをお勧めします。