はじめに
業務でLLMを活用していくためには,検索拡張生成(RAG)やAIエージェントといった技術が必要になってくると考えられる。これらの技術の基礎知識と実践経験を積むために,西見公宏・吉田真吾・大嶋勇樹 著「LangChainとLangGraphによるRAG・AIエージェント[実践]入門」を読むことにした。
本記事は,第4章 「LangChainの基礎」におけるLLM / Chat modelに関する読書メモである。
- 本書の紹介ページ
第4章 LangChainの基礎
本章では,LLMアプリケーション開発のフレームワークであるLangChainについて説明している。
4.1 LangChainの概要
なぜLangChainを学ぶのか
LLMを使ったアプリケーション開発に使えるフレームワークには,
- LangChain https://www.langchain.com/
- LlamaIndex https://github.com/run-llama/llama_index
- Semantic Kernel https://learn.microsoft.com/ja-jp/semantic-kernel/
などが挙げられる。
LangChainはの公式のドキュメントやクックブックには,論文などで提案された手法の実践例が多数掲載されており,LLMの発展的な手法を学ぶことができる,と本書では紹介している。
LangChainの全体像
LangChainの全体像は,以下から構成される。
- 各種コンポーネントを提供するパッケージ群
- エコシステム
- LangChain Templates
LangChainの各種コンポーネントを提供するパッケージ群
LangChainは,コア機能はlangchain-coreというパッケージで,周辺機能は別のパッケージが提供する。
- langchain-core
- LangChain Expressional Language (LECL)などを提供する。LECLは,処理の連鎖(Chain)を表現する記述方法である。
- partners(langchain-openaiなど)とlangchain-community
4.2 LLM / Chat model
本節では,LangChainでの言語モデルの使用方法を提供するモジュールである,LLMとChat modelを紹介する。
Chat model
Chat modelは,チャット形式の言語モデルをLangChainで扱うためのコンポーネントである。
サンプルコードは以下の通りである。
from langchain_core.messages import AIMessage, HumanMessage, SystemMessage from langchain_openai import ChatOpenAI model = ChatOpenAI(model="gpt-4o-mini", temperature=0) messages = [ SystemMessage("You are a helpful assistant."), HumanMessage("こんにちは!私はジョンと言います"), AIMessage(content="こんにちは、ジョンさん!どのようにお手伝いできますか?"), HumanMessage(content="私の名前がわかりますか?"), ] ai_message = model.invoke(messages) print(ai_message.content)
messageの構成要素は,Chat Completion APIの要素のうち,以下のように対応している。
| Chat model | Chat Completion API |
|---|---|
| SystemMessage | "role": "system" |
| HumanMessage | "role": "user" |
| AIMessage | "role": "assistant" |
LLMとChat modelの継承関係
LangChainのLLMとChat modelの継承関係は下図のようになっている。LLMとChat modelのそれぞれが,BaseLLMとBaseChatModelに継承される。これらはいずれも,BaseLanguageModelおよびRunnableに継承されている。

BaseLLMやBaseChatModelによって,OpenAI以外のClaudeやGeminiにも対応できるようになっている。
まとめと感想
LangChainの導入部分について理解した。実際にコードを動かして挙動を確認するのはこれからであるが,LangChain内のパッケージの継承関係を理解することで,これらのパッケージを使いこなしていきたい。