kakakakakku blog

Weekly Tech Blog: Keep on Learning!

LangChain / LangGraph を活用した RAG そして AI エージェントを体験しながら学べる新著「LangChain と LangGraph による RAG・AI エージェント[実践]入門」を読んだ

2024年11月9日に出版される新著「LangChain と LangGraph による RAG・AI エージェント[実践]入門」を読んだ📕

RAG そして AI エージェントとは!?という疑問に対して理解を深めることができて,実際に Python コードを実行しながら体験もできる.さらに最近の論文解説すらもあって,一石二鳥🐓いや一石三鳥って言えるほどにたくさん学べる素晴らしい一冊だった❗️

他には LLM アプリケーションを実装する前の基礎知識を整理できたり,RAG / Advanced RAG・LangChain・LangSmith の解説なども充実している.本書を手に取ったときは 496 ページもあって厚さに驚いたけど,納得のボリューム感だった.

もし「普段 ChatGPT などに質問することはあるけど自分で LLM アプリケーションを実装するなんて無理〜🙅‍♂️」と感じていたり,「LangChain という名前はちょっと聞いたことがあるけど LangGraph ってなんだろう?」「そもそも AI エージェントって何?」って思う人に特におすすめできる👌

本書は著者の一人 id:yoshidashingo に送っていただきました📕

去年に続き出版おめでとうございます \( 'ω')/

📚 目次

どの章も勉強になったけど,個人的には AI エージェントに関連する開発をしたことがなく,AI エージェント関連の「第8章〜第12章」を重点的に読んで体験してみて本当に良かった❗️

  • 第1章: LLM アプリケーション開発の基礎
  • 第2章: OpenAI のチャット API の基礎
  • 第3章: プロンプトエンジニアリング
  • 第4章: LangChain の基礎
  • 第5章: LangChain Expression Language(LCEL)徹底解説
  • 第6章: Advanced RAG
  • 第7章: LangSmith を使った RAG アプリケーションの評価
  • 第8章: AI エージェントとは
  • 第9章: LangGraph で作る AI エージェント実践入門
  • 第10章: 要件定義書生成 AI エージェントの開発
  • 第11章: エージェントデザインパターン
  • 第12章: LangChain/LangGraph で実装するエージェントデザインパターン

👇️詳細な目次は以下にある

gihyo.jp

本書に出てくるコード類は以下の GitHub リポジトリに公開されている👾

github.com

ちなみに本書の前半部分は,2023年10月18日に出版された「ChatGPT/LangChain によるチャットシステム構築[実践]入門」の大型アップデートという位置付けになっていて,一部は「このあたりは去年読んだ気がするな〜」と思い出しつつキャッチアップできたのも良かった😀

kakakakakku.hatenablog.com

📚 読書ログ

本書全体をザーッと読みつつ,気になったところ(第6章・第9章・第10章・第12章の一部)は実際に Google Colab で体験しながら「へぇ〜」「この実装はなんだろう〜」「なるほどな〜」とブツブツ言いながら進めていた(笑)全体の読書ログを載せると多すぎるから今回は AI エージェント関連の章に興味を持ってもらえるように紹介したいと思う❗️

第8章: AI エージェントとは

第8章には AI エージェントの解説(概念・基礎研究・フレームワーク・ツールなど)が載っていて,理解を深めつつ,トレンドを知ることができる.そして第9章以降の体験も進めていくと AI エージェントを理解できたな〜と感じられるけど,それでも改めて「AI エージェントってなんだろう」と感じることもあると思う(実際に僕自身があった).例えば AWS の用語集的なサイトにも解説が載っていて,複数の情報を読み比べしてみるのも良いと思う👌

aws.amazon.com

他にも「その仕事、AI エージェントがやっておきました。」という書籍も2023年12月に出版されていて,読んでみたいな〜と思ったりもした💡

第9章: LangGraph で作る AI エージェント実践入門

第9章からは LLM を活用したワークフローを構築できるライブラリ「LangGraph」を使って「Q&A アプリケーション」を体験する.Google Colab を使ってノートブックを実行すれば良く,特にハマるポイントもなかった👏(ある程度は Python に慣れておくとコードまで理解しやすいとは思う)

www.langchain.com

以下に 生成AIについて教えてください と質問した実行結果を載せておく📝

結果 (messages) を見ると ChatGPT に質問したのと同じでは?と感じてしまうけど,内部構造に着目すると質問内容を考慮して「生成AI製品エキスパート」から回答が返されていて (currect_role),さらに回答に対する品質チェック (judgement_reason) をしていることもわかってスゴイ❗️以下にテキストも載せておく.

{'query': '生成AIについて教えてください',
 'current_role': '生成AI製品エキスパート',
 'messages': ['生成AI製品エキスパートとしてお答えします。\n\n生成AIとは、人工知能の一分野であり、テキスト、画像、音声、動画などのコンテンツを自動的に生成する技術を指します。これには、自然言語処理(NLP)、コンピュータビジョン、音声合成などの技術が含まれます。生成AIは、ディープラーニングを基盤としており、大量のデータを学習することで、新しいコンテンツを創り出す能力を持っています。\n\n代表的な生成AIのモデルには、OpenAIのGPTシリーズやDALL-E、GoogleのBERT、DeepMindのWaveNetなどがあります。これらのモデルは、文章の自動生成、画像の生成、音声の合成など、さまざまな応用が可能です。\n\n生成AIの利点としては、クリエイティブな作業の効率化や新しいアイデアの創出が挙げられます。一方で、フェイクニュースの生成や著作権の問題など、倫理的な課題も存在します。生成AIの技術は急速に進化しており、今後も多くの分野での応用が期待されています。'],
 'current_judge': True,
 'judgement_reason': '回答は生成AIについての基本的な情報を網羅しており、技術の概要、代表的なモデル、利点、そして倫理的な課題についても触れています。内容は正確であり、質問に対して適切に答えています。'}

そして,個人的な追加課題としてカレーのレシピを教えてください と質問した実行結果を載せておく📝

今度は「一般知識エキスパート」から回答が返されていた❗️

{'query': 'カレーのレシピを教えてください',
 'current_role': '一般知識エキスパート',
 'messages': ['カレーのレシピをお教えします。ここでは、基本的なチキンカレーのレシピを紹介しますが、好みに応じて具材やスパイスを調整してください。\n\n**材料:**\n- 鶏もも肉: 500g(一口大に切る)\n- 玉ねぎ: 2個(みじん切り)\n- にんにく: 2片(みじん切り)\n- 生姜: 1片(みじん切り)\n- トマト: 2個(みじん切り)\n- カレー粉: 大さじ2\n- クミンパウダー: 小さじ1\n- コリアンダーパウダー: 小さじ1\n- ターメリックパウダー: 小さじ1/2\n- ガラムマサラ: 小さじ1\n- 塩: 適量\n- コショウ: 適量\n- ヨーグルト: 大さじ2\n- ココナッツミルクまたは水: 200ml\n- サラダ油またはギー: 大さじ2\n- フレッシュコリアンダー: 適量(飾り用)\n\n**作り方:**\n\n1. フライパンにサラダ油またはギーを熱し、玉ねぎを透明になるまで炒めます。\n2. にんにくと生姜を加え、香りが立つまで炒めます。\n3. トマトを加え、柔らかくなるまで炒めます。\n4. カレー粉、クミンパウダー、コリアンダーパウダー、ターメリックパウダーを加え、スパイスの香りが立つまで炒めます。\n5. 鶏肉を加え、全体にスパイスが絡むように炒めます。\n6. ヨーグルトを加え、さらに炒めます。\n7. ココナッツミルクまたは水を加え、沸騰させます。火を弱め、蓋をして15-20分煮込みます。\n8. 塩とコショウで味を調え、最後にガラムマサラを加えます。\n9. 器に盛り付け、フレッシュコリアンダーを飾って完成です。\n\nこのレシピは基本的なものですが、好みに応じて野菜や他のスパイスを追加してアレンジすることもできます。お楽しみください!'],
 'current_judge': True,
 'judgement_reason': '回答はユーザーの質問に対して適切で、詳細なチキンカレーのレシピを提供しています。材料と作り方が明確に記載されており、ユーザーがレシピを実行するのに十分な情報が含まれています。また、好みに応じてアレンジする提案もあり、柔軟性があります。'}

LangGraph でグラフ構造を出力した画像も載せておく.

さらに第7章で詳しく学んだ「LangSmith」を組み込んで内部構造のトレースも設定した❗️

www.langchain.com

以下のように AI エージェントの内部構造を LangSmith でも確認できた👌楽しすぎる \( 'ω')/

第10章: 要件定義書生成 AI エージェントの開発

第10章ではさらに実践的な「要件定義書生成 AI エージェント」を体験する.正直最初は「真面目なテーマだ...😅」と思ってしまったけど(笑)実際に取り組んでみると AI エージェントの内部構造の深さに驚かされた🔥

同じく Google Colab を使って スマートフォン向けの健康管理アプリを開発したい というコマンドを実行する.以下に実行結果を載せておく📝

# 健康管理アプリ要件文書

## 1. プロジェクト概要
本プロジェクトは、スマートフォン向けの健康管理アプリを開発することを目的としています。このアプリは、ユーザーが日々の健康状態を効果的に管理し、ストレス、食事、運動、そして全体的な健康維持をサポートすることを目指します。ターゲットユーザーは、ストレス管理に関心のある中小企業経営者、食事と運動に関心のあるITエンジニア、ウォーキングを日課とする退職者、家族全員の健康管理を行う専業主婦、そして運動データの分析に興味がある大学生です。

## 2. 主要機能
1. **ストレス管理機能**
   - ストレスレベルのトラッキング(心拍数、睡眠パターンのモニタリング)
   - リラクゼーションエクササイズ(呼吸法、瞑想ガイド)
   - 通知機能(休憩促進、ストレスリマインダー)
   - 日記機能(感情や出来事の記録)
   - 目標設定と進捗管理
   - コミュニティサポート

2. **食事管理機能**
   - 栄養素の詳細分析(カロリー、タンパク質、脂質、炭水化物、ビタミン、ミネラル)
   - 食事の写真認識による自動入力

3. **運動管理機能**
   - 多様な運動の記録(ランニング、ウォーキング、ヨガ、筋トレ)
   - リアルタイムのフィードバック(心拍数、消費カロリー)
   - パーソナライズされたアドバイス(AIによる食事と運動の提案)
   - 進捗の可視化(グラフやチャート)

4. **ウォーキングサポート機能**
   - 歩数計、距離と時間の記録、カロリー計算
   - 地図機能(歩いたルートの確認)
   - 簡単な健康アドバイス

5. **家族管理機能**
   - 家族全員の健康データの一元管理
   - 簡易入力機能(食事の写真認識)

6. **運動データ分析機能**
   - リアルタイムのパフォーマンス分析
   - トレーニング効果の評価
   - フォームの分析
   - 疲労と回復のモニタリング
   - パーソナライズされたトレーニングプラン

## 3. 非機能要件
- **ユーザビリティ**: シンプルで直感的なインターフェース、音声ガイド、チュートリアルの提供
- **パフォーマンス**: リアルタイムでのデータ処理とフィードバック
- **セキュリティ**: ユーザーデータの安全な保存とプライバシー保護
- **互換性**: iOSおよびAndroidプラットフォームでの動作

## 4. 制約条件
- 開発期間は6ヶ月以内
- 予算は500万円以内
- プライバシー規制(GDPR、個人情報保護法)への準拠

## 5. ターゲットユーザー
- 中小企業経営者(ストレス管理に関心)
- ITエンジニア(食事と運動に関心)
- 退職者(ウォーキングを日課)
- 専業主婦(家族の健康管理)
- 大学生(運動データの分析に興味)

## 6. 優先順位
1. ストレス管理機能
2. 食事管理機能
3. 運動管理機能
4. ウォーキングサポート機能
5. 家族管理機能
6. 運動データ分析機能

## 7. リスクと軽減策
- **技術的リスク**: 新技術の導入による開発遅延
  - 軽減策: 技術調査とプロトタイプの早期開発
- **市場リスク**: 競合アプリとの差別化不足
  - 軽減策: ユーザーインタビューを基にした独自機能の強化
- **法的リスク**: プライバシー規制への不適合
  - 軽減策: 法務専門家の監修とコンプライアンスチェック

この要件文書は、健康管理アプリの開発における基本的な指針を提供し、プロジェクトの成功に向けた基盤を築くことを目的としています。

内部構造としては スマートフォン向けの健康管理アプリを開発したい という要件に対してペルソナ(典型的なユーザー像)を決めて,ペルソナに対してインタビューをして,引き出した情報を評価しながら最終的な実行結果を出力する😃スゴイ(語彙力のなさ...)

ペルソナ自体も AI エージェントのワークフローとして決まるようになっていて,今回実行したときは以下の5名になっていた.

  • 中小企業経営者(ストレス管理に関心)
  • ITエンジニア(食事と運動に関心)
  • 退職者(ウォーキングを日課)
  • 専業主婦(家族の健康管理)
  • 大学生(運動データの分析に興味)

第11章: エージェントデザインパターン

第11章では Agent Design Pattern Catalogue: A Collection of Architectural Patterns for Foundation Model based Agents という2024年の論文で紹介されている「18種類」のエージェントデザインパターンが解説されていた📝もちろん論文を読むこともできるけど,図解を含めてポイントを理解しやすいように日本語で噛み砕いて解説されている点に価値があると感じた😀デザインパターンは日々のプロンプトエンジニアリングにも活用できる気がして「あ〜こうやってプロプティングすれば良いんだ〜」という気付きにもなった💡

arxiv.org

第12章: LangChain/LangGraph で実装するエージェントデザインパターン

さらに第12章では LangChain / LangGraph を使って以下のデザインパターンを体験する.個人的には「5. セルフリフレクション」「6. クロスリフレクション」という振り返りをするデザインパターンは目からウロコだった.

  • [1] パッシブゴールクリエイター
  • [2] プロンプト/レスポンス最適化
  • [3] シングルパスプランジェネレーター
  • [4] マルチパスプランジェネレーター
  • [5] セルフリフレクション
  • [6] クロスリフレクション
  • [7] 役割ベースの協調

📚 まとめ

2024年11月9日に出版される新著「LangChain と LangGraph による RAG・AI エージェント[実践]入門」を読んだ📕

日々 ChatGPT などを活用してはいるけど,実際に LLM アプリケーションを実装することに距離を感じていた僕はまさに本書にピッタリの読者層で,LLM 関連の理解をアップデートできて本当に良かった❗️2023年に「ChatGPT/LangChain によるチャットシステム構築[実践]入門」を読んで体験したときに感じた「ワクワクする楽しさ」とはまた違った感覚で,実用的な(ディスラプティブな)アプリケーションが生まれそうな「スゴさ」を感じながら本書を読んでいた.

ちなみに LangChain に関しては2024年4月の Technology RadarHold に位置付けられていて,ネガティブなコメントもたまに見るけど,本書の第4章では非推奨になった構文の説明も入っているし,実際に LangChain を使ってみて判断するのが良いと思う👌

www.thoughtworks.com

改めて出版おめでとうございます \( 'ω')/

2024年11月9日出版ですッッッ📅 気になったら買いましょう〜

📚 関連記事

Generative Agents Tech Blog の記事📝 LLM の歴史的な進化を振り返りつつ,なぜ本書を執筆したのかという背景がまとまっていた.Agentic アプリケーション❗️さらにフォームから応募すると輪読会・もくもく会のサポートまでお願いできるとのことでスゴイ〜 \( 'ω')/

blog.generative-agents.co.jp

AI エージェントを学ぶのに参考になるスライド📝

speakerdeck.com

📚 関連リンク

github.com

github.com