ちょっと話題の記事

LLMアプリ開発を体系的に学ぶには最適の入門書「ChatGPT/LangChainによるチャットシステム構築[実践]入門」

2023.10.29

こんにちは、つくぼし(tsukuboshi0755)です!

ChatGPTから始まった第四次AIブームは、まだまだとどまる事を知らないですね。

さらにAzure OpenAI ServiceやAmazon Bedrock等の生成AIサービスが主要クラウド上で出揃った事で、エンタープライズ業界でも徐々にLarge Language Models(以下LLM)を用いたシステム開発の需要が高まってきています。

しかし普段はAWSインフラ関連の業務を専門とする私を含め、LLMアプリ開発初心者のエンジニアにとって、生成AIを活かして一からシステムを開発するのは、まだまだハードルが高いように感じられます。

特に以下のような点で、まだ理解が追いついていないと感じているエンジニアの方が多いのではないでしょうか?

  • LLMを使うと何ができるのか?
  • ChatGPTのAPIを触ってみたいが、どのように使えばいいのか?
  • LangChainとは何か、どのように使えばいいのか?
  • LLMを使う事で、実際にどのようなアプリを作れるのか?
  • LLMアプリを本番リリースする際に、どのような注意点があるのか?

そんな中、最近発売された「ChatGPT/LangChainによるチャットシステム構築[実践]入門」は、上記の点について触れつつ、LLMを使ったシステム開発を体系的に学ぶには最適の入門書だと思ったので、今回紹介させていただきます!

前提条件

本書を読むために必要な前提条件が2点あるので、先に紹介します。

Pythonの基礎知識

本書は基本的にPythonで動くコードについて解説されているため、Pythonの基礎知識が必要になります。

Pythonの基本的な文法については解説されていないため、ご注意ください。

各種クラウドサービスへの登録

本書では、OpenAIのAPIやAWS等のクラウドサービスを使って、セットアップを行う手順が解説されています。

クレジットカードでの登録が前提となり、デモを実施する際に数百円~数千円程度の課金が発生する可能性があるのでご注意ください。

ソフトウェアバージョン

本書に記載されているコードは、以下のソフトウェアバージョンを使用しています。

ソフトウェア バージョン
Python 3.10
LangChain 0.0.292

特にLangChainは非常にアップデートが活発であるため、バージョンによっては本書で紹介されているコードが動かなくなる可能性があるのでご注意ください。

本書の構成

本書は以下のような構成になっています。

  • 第1章 大規模言語モデル(LLM)を使ったアプリケーションを開発したい!
  • 第2章 プロンプトエンジニアリング
  • 第3章 ChatGPTをAPIから利用するために
  • 第4章 LangChainの基礎
  • 第5章 LangChainの活用
  • 第6章 外部検索、履歴を踏まえた応答をするWebアプリの実装
  • 第7章 ストリーム形式で履歴を踏まえた応答をするSlackアプリの実装
  • 第8章 社内文書に答えるSlackアプリの実装
  • 第9章 LLMアプリの本番リリースに向けて

なお本書にはありませんが、本記事では書評を書きやすくするために、便宜的に各章を以下のセクションにまとめて項目を少なくしております。
(あくまで個人的にまとめただけのセクションなのでご注意ください)

  1. 第1~2章 LLM/プロンプトエンジニアリングの概要
  2. 第3~5章 LLMアプリ開発に必要な技術
  3. 第6~8章 LLMアプリ開発の実践例
  4. 第9章 LLMアプリの本番リリースに向けた注意点

この後、上記の各セクションの特徴について、簡単に紹介していきます。

第1~2章 LLM/プロンプトエンジニアリングの概要

以下の章が該当します。

  • 第1章 大規模言語モデル(LLM)を使ったアプリケーションを開発したい!
  • 第2章 プロンプトエンジニアリング

このセクションでは、LLMを用いたシステムを開発するにあたり、最低限必要な前提知識について説明されています。


まず第1章では、ChatGPTの基本的な使い方について解説されています。

  • ChatGPTとの対話方法
  • ChatGPTにおけるプロンプトの工夫
  • ChatGPTを使ったプログラミング
  • ChatGPTの有料プラン機能

また現時点で公開されているLLMアプリについても紹介されており、LLMが既に様々なサービスで活用されている事例を知る事ができます。

次に第2章では、LLMアプリの開発に必要なプロンプトエンジニアリングの知識について、DAIR.AIがオープンソースとして公開している以下のガイドを元に解説されています。

なおこちらのガイドは現在日本語訳もありますが、日本語訳が出る前に本ガイドに沿って検証した記事がありますので、必要に応じてぜひご参照ください。

第3~5章 LLMアプリ開発に必要な技術

以下の章が該当します。

  • 第3章 ChatGPTをAPIから利用するために
  • 第4章 LangChainの基礎
  • 第5章 LangChainの活用

このセクションでは、LLアプリを開発する際に用いられる主要な技術スタックについて、Google Colaboratoryによるデモを交えながら説明されています。

個人的には、このセクションがLLMアプリの開発を知る上で一番重要な章だと感じたので、ぜひ読者の方々にも記載されているコードを自身で試してみる事をオススメします。


まず第3章では、OpenAIの文章生成APIであるChat Completitions APIの使い方について、以下のOpen AIの公式ドキュメントを元に解説されています。

主にAPIの呼び出し方と、Function callingについて説明されています。

続いて第4~5章では、LLMアプリを開発する際のフレームワークであるLangChainの使い方について、以下のLangChainの公式ドキュメントを元に解説されています。

LangChainはLLMアプリを開発するフレームワークの中で特に幅広い分野を扱っているため、LangChainを学ぶ事でLLMシステム開発に必要な技術を体系的に学ぶ事ができます。

ちなみにLangChainの公式ドキュメントでは以下のモジュール群で整理されているのですが、本書では以下について重要なモジュール群を理解しやすい順番に整理し直した上で解説されています。

  • Model I/O
    • Prompts
      • Prompt templates
      • Example selectors
    • Language models
      • LLMs
      • Chat models
    • Output parsers
  • Data connection
    • Document loaders
    • Document transformers
      • Text splitters
      • Post retrieval
    • Text embedding models
    • Vector stores
    • Retrievers
  • Chains
  • Agents
    • Agent types
    • Toos
    • Toolkits
  • Memory
  • Callbacks

さらにAI活用を検討する際に、よく見かけるRAG(Retrieval Augmented Generation)やReAct(Synergizing Reasoning and Acting in Language Models)の概念についても、第4~5章で触れられています。

参考:RAGの図

上記のAPIやモジュール、概念についてまだあまり知らないという方々にとって、本セクションはぜひ一読する価値があると思います!

第6~8章 LLMアプリ開発の実践例

以下の章が該当します。

  • 第6章 外部検索、履歴を踏まえた応答をするWebアプリの実装
  • 第7章 ストリーム形式で履歴を踏まえた応答をするSlackアプリの実装
  • 第8章 社内文書に答えるSlackアプリの実装

このセクションでは、実際にAWS Cloud9とGitHubを開発環境として使用し、3つのLLMアプリ(チャットシステム)を開発していきます。

各章では以下のツールについても解説されているので、チャットシステムを開発しながら合わせて学ぶ事ができます。

一度読み通す事で、チャットシステムを開発する際に良く使うツールについても一通りおさえる事ができます。

第9章 LLMアプリの本番リリースに向けた注意点

以下の章が該当します。

  • 第9章 LLMアプリの本番リリースに向けて

第9章では、実際に企業で生成AIを活用する際のポイントについて、主に以下の点が解説されています。

  • 自社ガイドラインの作成
  • サービスの企画・設計
  • サービスのテスト・評価
  • セキュリティ対策
  • 個人情報の取扱い

LLMアプリ開発はアップデートも多くまだ発展途上段階であるため、実際にLLMアプリを本番リリースを検討する場合、この章はかなり参考になると思います。

最後に

今回は「ChatGPT/LangChainによるチャットシステム構築[実践]入門」を紹介しました。

LLMアプリ開発については完全に初心者の私が本書を読んでみた所、以下の点が良かったと感じました。

  • 現時点では数少ない、OpenAI API/LangChainに関する日本語解説本
  • LLM開発に関する情報が程よくまとまっているので、初学者にも読みやすい
  • 手を動かしながらLLMアプリを構築することで、理論が深まる

この本を一度通して読む事で、生成AIを使ったシステム開発の概要を掴めるのでオススメです。

今後LLMアプリ開発の需要はさらに高まっていくと考えられますが、まだその分野に触れた事がないエンジニアにとってはとても良い本だと思うので、ぜひ購入を検討してみてはいかがでしょうか。

以上、つくぼし(tsukuboshi0755)でした!