🤖

ChatGPT/LangChainによるチャットシステム構築[実践]入門

2023/10/15に公開

本書籍を全ての章を読み思ったこと。それはこの一冊があればとりあえず入門から今抑えなければならないことは大体網羅できる。そう感じました。

ChatGPT、正確にはOpen AIとLangChain本の紹介となります。私が知るにLangChainとOpen AIを用いたチャットシステム構築の本格的な実践入門書籍としては初になるんじゃないでしょうか。
今回は、そんな書籍のレビューと実際に書籍通りチャットシステム構築をする中で感じたこと、さらなるチューニングについてをご紹介していきます。

紹介する書籍

2023年10月18日発売(書籍/電子)の「ChatGPT/LangChainによるチャットシステム構築[実践]入門」になります。
下記にリンクを貼っておきますので、興味を持たれた方はぜひチェックをお願いします
https://gihyo.jp/book/2023/978-4-297-13839-4

著者の紹介

本書籍なのですが、今LLM界隈でも情報のキャッチアップとアウトプットの先頭に立たれているお二人が執筆しております。

吉田 真吾 さん

https://x.com/yoshidashingo?s=20

まず1人目は、みなさんおなじみにAWS Serverless Heroで有名な吉田 真吾さんですね。いつもお世話になっております笑!
現サイダス社のCTOをしながら、Section-9という会社のCEOをされています。
いち早く、商用サービスに組み込んだりと情報のキャッチアップとサービス化がものすごく早かったです。
そんな商用サービスでの活用について知見がある中で本書籍を執筆されている為、商用化についてを考えるときの基礎になる書籍であるように感じます。

https://www.cydas.co.jp/news/press/202304_people-gpt/

https://www.cydas.co.jp/news/press/20230509_ai-guideline/

https://speakerdeck.com/yoshidashingo/chatgpt-and-langchain

実は、それだけではなく昨年からOpenAI社が提供している大規模言語モデルを活用したサービスChatGPTが出てきたことにより、その情報のキャッチアップと共有する場所として、ChatGPT Community(JP)を立ち上げ今も毎回たくさんの登壇者、参加者がコミュニティを訪れています。

ぜひ、ChatGPT、Open AI周りの知見を共有、キャッチアップされたい方は本コミュニティへの参加をお勧めします。

https://chatgpt.connpass.com/

大嶋 勇樹 さん

https://x.com/oshima_123?s=20

2人目の詩筆者が、大嶋 勇樹さんです。ネクストスキル合同会社代表を務めながら自身でもアプリケーション設計やクラウド、コンテナを活用した基盤整備、セミナー、研修講師として活動されている方です。
実はudemyでもとても人気な講師で、ベストセラー講座を量産している方でもあります。

https://www.udemy.com/user/da-dao-yong-shu/

また、studycoというコミュニティを運営されており、先日、書籍の発売を記念して行われたイベントではたくさんの参加者がいらっしゃいました。
私も聞いていたのですが、LLMの現状を的確に分かりやすく説明されており大変勉強になりました。

studycoとは
https://www.studyco.io/

studycoコミュニティのイベントページ
https://studyco.connpass.com/

書籍の発売を記念して行われたイベント
https://studyco.connpass.com/event/295516/

お話しされていた登壇資料
https://speakerdeck.com/os1ma/shu-ji-chu-ban-ji-nian-langchainkaraxue-bullmwoshi-tutaapurikesiyonnogong-fu


そんなお二人がタックを組まれて執筆した本書籍、楽しみしかありません!
ということで読んでみました!

書籍全体を通しての感想

1章から3章

導入から始まり、ChatGPTを業務利用した際の注意点から始まりさまざまなユースケースから始まります。
注目すべき内容としては、 業務利用時に注意するべき点を日本ディープラーニング協会公開しており、下記にその内容が記載されている点が書かれていたことです。
これから会社でChatGPTを公式に業務利用する方がいる場合は必見ですね。

https://www.jdla.org/news/20230501001/

ここから話は、LangChainとは何か。LLMとは何か。プロンプトエンジニアリング??とは何か。について触れていきます。
筆者が感じた事、言葉の定義、公表されている論文についても触れている点が面白いなと感じました。
そして本書籍、ChatGPTを題材に挙げているので、もちろんChatGPTにも問いかけをしつつ筆者の補足、訂正、再リクエストをする場面などもあり、これは新しい書籍の形になるなとも思いました。

また、巷でよく聞くZero-shotプロンプティングや、Few-shotプロンプティングなどといったプロンプトエンジニアリングのデザインパターンの基本も抑えられるよう設計されています。本当に今から学ぶこれから学ぶ人にとっては分かりやすい記述でした。
ChatGPTのAPI利用についてのセクションでは、経験則から分かったことを踏まえ(例えば、トークンの使用量は日本語より英語の方が少ないとか)書かれていたのも良かったです。
その後、Chat Completions APIを触れていくのですが、本書籍ローカル環境を汚すことなく試すことができます。(何か試すときにローカルのセットアップからやっていたら大変ですもんね。。)
ここがものすごくありがたかったです。
ここで使用するのは、 Google Colaboratoryです。
これが超便利で、ラウザ上で Python を記述、実行できます。
書籍では、Google Colaboratoryを利用し、Chat Completions APIを試しながら、そのリクエスト/エスポンスの構造、設定できるオプションなどについて触れていきます。

めちゃくちゃ分かりやすかったのが、Functions callingのセクション。2023年6月13日にChat Completions APIに追加された新機能なわけだが、それを実例ベースで分かりやすく解説してくれています。
(APIレベルで、ここまで詳しく説明されていることに感動しました。)

4章 langChainの基礎

ここは必見ですね。LangChainのドキュメントはあるものの、それらの内容をかいつまんで分かりやすく説明している章になります。特にlangChainを使用しアプリを開発する中で重要なChainsについてとMemoryについては、実例、図をもとに解説しています。

https://docs.langchain.com/docs/

ちなみにMemoryの章ではLangChainを活用し、LLM側と会話したときに今までしていた会話の内容(会話履歴)を保存することで、LLMの回答が過去のやり取りを踏まえ回答してくれるという内容だったのですが、ここでその保存先についてが触れられています。
というのは、メモリの保存先を指定しないとデフォルトでPythonインスタンス変数(メモリ上)に保存されてしまいます。つまりプロセスが死ねば会話履歴が消失するということですね。
そこで、さまざまな選択肢が挙げられていた(例えば、SQL LiteやAWS DynamoDB等)のですが、本書で取り扱っているものでMementoというサービスを使ったパターンというのが触れられています。

Momentoとは
https://jp.gomomento.com/

Momentoの最新の詳細(2023年10月15日時点)
https://speakerdeck.com/yoshiitaka/momentotoha-jaws-fesat-2023-oji-risetusiyon

実際に、MomentoをMemoryの保存先として使っている事例も著者である真吾さんが書かれていたりします。
https://jp.gomomento.com/case-studies/cydas/

これはやばいぞ第5章

RAGやRAGに使えるLangChainのモジュールである「Data connection」、Agentについてを図解しつつ説明しているのが5章になります。
何がやばいか、それはLangChainを使った時の例とData connectionの各要素の繋がりについてがめちゃくちゃ分かりやすいからになります。ここを読むためだけに本書籍買っても損はしないはず。

6章を通してできたもの(外部検索、履歴を踏まえた応答をするWebアプリの実装)

第6章では、ChatGPTのようなWebアプリケーションを実際に作ってみることができます。
ちなみに本章の開発環境には、AWS Cloud9を利用しています。
どんなものが実際にできたのかを紹介します。

ちなみに作成するものは、DuckDuckgoとwikipediaで検索をかけ、ChatGPT APIからのレスポンスと含めてユーザ側へ返すチャットアプリになります。
また、後半進めていくとこのチャットアプリにmemoryを追加して、会話の履歴を元に受け答えしてくれるようなチャットへと変わっていくそんなシナリオとなっています。

書籍を進めていく点での注意事項は、Cloud9上のPythonのバージョン、環境構築には気をつけましょう。
ちゃんと書籍にも付録があるので、注意しながら進めていきます。
途中、>> ~/. bashrcという記述がありますが、おそらくこれは、>> ~/.bashrcなので、ここは注意してください。

実際の完成物

Memoryを利用し直前の会話の記憶をもとに会話出来ていることがわかりますね!

本書を通してできたもの (第7章~8章)

7章、8章では6章の拡張として、ストリーム形式で履歴を踏まえた応答をするSlackアプリを実装する形となります。7章でそのSlackアプリを。8章では社内文章に関する質問に対して答えてくれるSlackアプリを作り上げます。

使用するものは、Slack Bolt for PythonとLangChainをAWS Lamda上で実行しOpen AI Chat Completions APIをLLMとし、Momentoを会話の履歴を保存しておくMemoryとして利用します。
8章ではVector DatabaseとしてPineconeを使います。

https://www.pinecone.io/

つまり完全なフルサーバレスアーキテクチャで今話題のチャットアプリが作成できるということですね!最高!

ここからは書籍のお楽しみ。実際に書籍を手に取ってやってみましょう。
本書籍、slackの設定からコードの説明までとても丁寧に書かれており、初心者でも安心してアプリを作成することが出来ます。

9章に書かれていたもの

この章は一番大事かもしれません。何が書いてあるのか。それはLLMアプリの本番リリースに向けて考慮しなければいけないことが書かれています。
例えば、企業で生成AIを活用するには、どうすればよいのかや、自社のガイドライン作成について、LLM部分の評価、テスト等。最近ですとLangSmithと呼ばれるlangChainから2023年7月18日にリリースされたLangChainの実行時のトレースをしてくれるサービスなんてものをどう活用するのかについて記載されています。

https://www.langchain.com/langsmith

また、LLMを活用したチャットサービスのセキュリティという観点でも考察がされており、エンタープライズの会社さんに取ってはこれらの情報はかなり気になるポイントなのではないでしょうか。

書籍を読んでの感想を一言。

本書籍、全ての章を読み思ったこと。それはこの一冊があればとりあえず入門から今抑えなければならないことは大体網羅できる。そう思いました。これが感想ですね!

さあ次のステップ。Momento Vector Indexを利用しよう

実は、今回書籍で紹介されていたMomentoというサービス。書籍の中では、会話の履歴部分であるMemoryにMomento Cacheを利用していました。

https://jp.gomomento.com/

ただ、実はMomentoから先週、Momento Vector Indexというものが登場しています。
これは、本書籍の8章で使用していたPineconeに置き換わるもので、Vector Databaseを完全なサーバレスという形で提供しています。

https://www.gomomento.com/blog/momento-vector-index-integration-with-langchains-python-framework

そして、LangChainからも使用することができ、そのドキュメントが下記となります。

https://python.langchain.com/docs/integrations/vectorstores/momento_vector_index

次回は、8章で作成したものをOpen AIをAWS Bedrockで、Vector DatabaseをMomento Vector Indexで解像したものを作りブログを書く予定です!お楽しみに!

最後に本日紹介した書籍

https://gihyo.jp/book/2023/978-4-297-13839-4

Discussion