kakakakakku blog

Weekly Tech Blog: Keep on Learning!

LLM を組み込んだチャットアプリケーションを写経しながら実装できる「ChatGPT/LangChain によるチャットシステム構築[実践]入門」を読んだ

2023年10月18日に出版される新著「ChatGPT/LangChain によるチャットシステム構築[実践]入門」を読んだ & 写経した📕

読者層的には「ChatGPT って最近よく聞くしたまーに使うこともあるけど LangChain って何なのー?」という人や「LLM (Large Language Model) をアプリケーションに組み込むなんて考えたこともなかったけどできるのー?」と感じるような人に特におすすめできるかなーと💡本書を読みながら写経すると,難しいことは考えずに ChatGPT のように LLM を組み込んだアプリケーションをあっという間に構築できてしまって,とにかくワクワクして楽しめる一冊だった❗️

著者の一人 id:yoshidashingo に本書を送っていただきまして出版前に読ませていただきました.

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

📚 目次

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

gihyo.jp

📚 本書で実装するアプリケーション

まずは本書で実装するアプリケーション(と Slack アプリ)を紹介する💡

これを見て「実装してみたいぞ〜」って感じたらすぐに本書を買ってみると良いかと❗️

第6章

ChatGPT のような UI で使えるアプリケーションを実装する❗️UI 回りとホスティングは StreamlitStreamlit Community Cloud を使って,バックエンドは OpenAI の Chat completions APILangChain を使って実装する.また DuckDuckGoWikipedia と組み合わせて外部情報を検索することもできる.何よりも Streamlit 便利すぎでは?

\( 'ω')/ うおお〜

第6章で実装するアプリケーション

第7章

Slack で Bot に質問できる Slack アプリを実装する❗️Slack アプリは Bolt で開発して,バックエンドは同じく OpenAI の Chat completions APILangChain を使って,今度は Serverless Framework を使って AWS Lambda にデプロイする.さらに質問した履歴を管理するために Momento Cache にデータを保存する.

\( 'ω')/ アーキテクチャも本格的で勉強になる〜

第7章で実装する Slack アプリ

第8章

第7章で実装する Slack アプリの追加機能として,任意のドキュメント(今回は JDLA の「生成 AI の利用ガイドライン」を使う)から質問に回答できるようにする.OpenAI の Embeddings API でドキュメントをベクターデータ化して,Pinecone に保存することも体験できる.OpenAI の Chat completions API を社内用などに拡張する例として参考になる.

\( 'ω')/ 実践的だ〜

第8章で実装する Slack アプリ

ちなみに追加課題として kakakakakku blog の記事(2023年9月-10月)を取り込んだら "ある程度は" 回答してくれた💡本書は写経しながら1周した後に自由に実装を変えながら2周目も楽しめちゃうという良さもあるっっっ✔️

📚 素晴らしかったこと

1. ワクワクする楽しさ

最初から語彙力のない表現になってしまうけど(笑)とにかく読み進めながらワクワクする一冊だった❗️

僕自身 ChatGPT / GitHub Copilot などは日々活用していて便利だな〜と感じるけど,LLM をアプリケーションに組み込むという選択肢は敷居が高いと感じていたので,実際に本書を読み進めながら写経をして,アプリケーションと Slack アプリを簡単に構築できてしまう体験は素晴らしくて感動だった👏 他にも LLM を活用したアイデアが思い浮かんできたりもして本当に楽しめた.うまく動いたときは「おおおおおー」って叫んでた🦁

また実装時に組み合わせるテクノロジー(サービス/ツール/ライブラリなど)で使ったことがなかったものもあって,それらに入門できたこともワクワクする理由の一つだった👌本書で出てくる代表的なテクノロジーを以下にザーッと並べておく〜

2. ラストマイルの重要さ

比較的簡単に LLM を組み込んだアプリケーションを構築できるようになったとは言え,プロダクションレベルまで落とし込むには注意点もたくさんあるよ〜という,言わば「ラストマイル」の重要さと難しさが「第9章」に凝縮されていて,とても参考になった.例えば「生成 AI の利用ガイドライン」「評価」「セキュリティ」など.

ちなみに「ラストマイル」という表現は僕の大好きな書籍「ThoughtWorks アンソロジー」から引用している✌

www.oreilly.co.jp

📚 OpenAI API 課金

本書を読み進める(写経)ために OpenAI API に課金をした.今後も使いたく,雑に $10.00 を支払ったけど,実際に本書を読み進めながら最終的に利用したのは $0.08 だった.全然余ってる〜💰笑

help.openai.com

📚 写経と VS Code

以下の GitHub リポジトリに本書のコードが公開されている.

github.com

ただし僕は OpenAI の Chat completions APILangChain も未経験だったので,本書を読みながらすべて写経をしながら実施した.実装を間違えてエラーになることも全然あった.

また本書では環境差異をなくすために AWS Cloud9 を使う前提で執筆されているけど,個人的に Python 回りの開発環境に不安はなく,使い慣れた VS Code で実装(写経)をした.結果的に全く問題なかった👌 むしろ GitHub 回りの設定もできてるし,GitHub Copilot も活用しながら写経できたし,VS Code にして良かった✔️

📚 実施ログ

Slack アプリの「ソケットモード」は使ったことがなかった❗️開発中に超便利〜

Slack: Socket Mode

Momento は気になってたけどまだ試せてなかったから入門できて良かった〜

Momento

Pinecone の Starter プランなら無料で使えてスゴイ〜

Pinecone

📚 少し気になった箇所

  • 第5章
    • ElasticSearchElasticsearch
  • 第6章
    • GitHub リポジトリ名 streamlit-langchain-app と Streamlit タイトル langchain-streamlit-app で微妙に異なる
      • 動作に問題はないけど微妙な命名の差が気になった👀
  • 第7章(図7.1)
    • AWS-LambdaAWS Lambda
  • 第7章(7.15 プログラム)
    • self.interval = CHAT_UPDATE_INTERVAL_SEC も変更箇所なので青字であるべき?

まとめ

2023年10月18日に出版される新著「ChatGPT/LangChain によるチャットシステム構築[実践]入門」を読んだ & 写経した📕

本当に素晴らしい一冊だった.LLM を組み込んだアプリケーションを実装する第一歩を踏み出したいという人におすすめ❗️そして,アプリケーション実装以外に「プロンプトエンジニアリング解説」「OpenAI API 解説」「LangChain 解説」というトピックもあって,初学者でも理解できるようにわかりやすくまとまっているのも良かった.第4章と第5章を読むと LangChain の特徴とスゴさを感じられて,早く試してぇ〜という気持ちになりつつ第6章に入れる.

\( 'ω')/ いつ読むの❓今でしょー❗️

その他

記事を書きながら Momento Vector Index の発表があったりして,テクノロジー(サービス/ツール/ライブラリなど)の変化も早そうだなぁ〜と思ったりもした.

www.gomomento.com