Skip to content

第1章 はじめに

1.1 本書の目的と対象読者

本書は、ChatGPTなどの大規模言語モデル(LLM)を使って、より実用的で複雑なシステムを作りたいと考えているエンジニアに向けた入門書です。これまでにPythonを使ったプログラミングの経験があり、AIエージェントの仕組みを体系的に学びたい方を対象としています。AIに関する専門的な数学の知識や、難しい統計学の知識は必要ありません。

現在のAI開発では、単にAIとチャットをするだけでなく、社内のデータベースから情報を探させたり、特定の業務ルールに従って自動で作業を進めさせたりするシステム(AIエージェント)の需要が高まっています。しかし、このようなシステムを作るためには、プログラムからAIを正しく制御する方法を学ぶ必要があります。

本書では、AIアプリケーション開発のデファクトスタンダード(業界の標準)となっている「LangChain」と、より複雑な動作を制御するための「LangGraph」という2つのライブラリの使い方をやさしく解説します。本書を読み終えることで、自分で考え、ツールを使いこなしながら仕事を進める賢いAIアシスタントを開発できるようになることを目指します。さらに、本書では単にコードの書き方を説明するだけでなく、「なぜその構成にする必要があるのか」という設計の考え方についても丁寧に説明します。これにより、技術の流行が変わっても応用できる、息の長い開発の基礎力を身につけることができます。

1.2 LLMアプリケーション開発における課題

LLMは非常に優秀ですが、一般的なシステム開発で使われるプログラムとは異なる特徴を持っています。最も大きな違いは、LLMの出力が「確率」に基づいて決定されるため、毎回同じ入力をしても常に同じ出力が得られるとは限らないという点です。このため、従来のプログラムのように「もしこうなら、こう処理する」という厳密なルールだけで制御しようとすると、思い通りの動きをしてくれないことがあります。

また、LLM単体では「過去の会話の内容を覚えておくこと」や「現在のリアルタイムな情報を知ること」ができません。例えば、昨日の天気をLLMに尋ねても、学習データに含まれていない最近の情報には答えることができません。さらに、社内のデータベースにある顧客情報や売上データなどを参照して計算することも、LLMだけでは不可能です。

これらの課題を解決するためには、プログラム側で会話の履歴を管理し、必要に応じてインターネットや社内システムから情報を検索してLLMに手渡す仕組み(RAG:検索拡張生成)を作る必要があります。しかし、これらの仕組みを一からすべて手作業で実装しようとすると、プログラムのコードが複雑になり、開発やメンテナンスが非常に難しくなってしまいます。さらに、エラーが発生したときの処理や、AIの返答が不適切だった場合の軌道修正など、実際の運用で考慮すべき点も多岐にわたります。これらの複雑な周辺機能の実装負荷を減らし、本来の業務ロジックの開発に集中できるようにするための仕組みが強く求められています。

1.3 LangChainとLangGraphが解決する領域

こうしたLLMアプリ開発の課題を解決するために作られたのが、LangChainとLangGraphです。LangChainは、LLMと外部システムを繋ぐための「部品」を豊富に提供するフレームワークです。例えば、LLMに質問する前のプロンプトを整理する部品、LLMからの回答をプログラムで扱いやすいJSON形式などに変換する部品、ベクトルデータベースから必要な情報を検索する部品などが用意されています。これらの部品を「LCEL(ランチェーン・エクスプレッション・ランゲージ)」という共通の記述方法で繋ぎ合わせることで、データの流れをきれいに整理したプログラムを素早く作ることができます。

しかし、LangChain単体では、処理が一方通行になりがちであるという弱点がありました。現実の業務では、「AIに作業を依頼し、その結果にエラーがあれば修正させて、もう一度実行する」というような、何度もぐるぐる回るループ処理が多く存在します。この循環する複雑な処理の流れと、その過程で変化するデータを管理するために登場したのがLangGraphです。

LangGraphを使うことで、処理の分岐やループを「グラフ構造(点と線で表されるネットワーク)」として綺麗に定義でき、AIが自律的に状況を判断して動くシステム(AIエージェント)を安全に開発できるようになります。これにより、開発者は複雑なエラーハンドリングや状態遷移の管理から解放され、AIにどのような仕事を実行させるかという肝心なロジックの開発に集中できるようになります。