見出し画像

ChatGPT/LangChainによるチャットシステム構築[実践]入門を読みました

そのうちOpenAIを組み込んで何か個人アプリ作りたいなぁと思い、年末年始で「ChatGPT/LangChainによるチャットシステム構築[実践]入門」を読んで、一通り写経しました。


LangChainとは

LangChainはOpenAIを使うためのOSSライブラリ、Python用とTypeScript用がある。TypeScript版は実装されていない機能もあるので、Python版の方がおすすめらしい。
結構簡単にOpenAIの機能呼び出せるイメージでした。例えばドキュメントを読み込ませてその内容について問い合わせる場合、Document loadersという機能があり、JSON、Markdown、PDF等読み込める。

感想

なるべく環境構築や環境依存でつまづかないように工夫がされており、筆者はPython触った経験はほぼないのですが、最後まで割とすんなりいけました。Python読みやすいですね。ただ、ライブラリのバージョン依存が結構あり、何も考えず最新版ライブラリ入れると、関数が変わってたりしたので、GitHubページに記載の通り、バージョン固定で入れるのが良いと思いました。

第7章以降はAWS上のCloud9で進めるのですが、Cloud9自体の操作に慣れていなく、pyenvで仮想環境構築するところでCloud9上だと、Amazon Linux2上のopensslのバージョンの問題で構築するまでにすごい手間取って、一回構築して途中まで進めたのですが、結局WSL2上のVS Codeでやったらすんなりうまくいった。
あと、Pythonの仮想環境を立ち上げるのを毎回忘れてその日最初の起動でエラーになったりしてた。みんなどうしているのかな。
全体を通して、SaaS使ったデプロイやデータ保護に関する注意点の記載等もあり、出来上がった物も読み込ませたドキュメントの内容についてChatGPTが回答してくれるSlackアプリと、かなり実践的なものであり、満足度は高かったです。

書籍内で使用したクラウドシステム等

Google corabo

第5章まではGoogle corabo上でPythonのコードを動かしたのですが、Google corabo、便利ですね。ちょっとコードの勉強するくらいだとすごく簡単に環境準備できる。

Slack Bolt

第 7章、第 8章でSlack botを作るのですが、その中でSlack Boltを使いました。Slack BoltはSlackのアプリを開発するためのフレームワークであり、初めて触ったのですが、これも便利だなーと思いました。Slack AppでStreamで出力されるのは面白かった。

Stream出力で回答を表示
Slack Block Kitを使って下部にディスクレーマーを表示している

Serverless Framework

Serverless Frameworkは、クラウド上でサーバーレスアプリケーションを構築、デプロイ、管理するためのツールです。
Slack Appから呼ばれる関数をAWS Lambda上に作るので、これも今回初めて触ったのですが、Lambdaのメトリクス情報とかも見れてすげーって思いました。

Pinecone

ChatGPTを利用して何か社内システムを作ろうとする時にいの一番に出てくるのが、社内のドキュメントを読み込ませていい感じに回答してくれるヤツ。だったりするのですが、既存のドキュメントを格納するのには、情報をベクターデータにして、それを格納するベクトルデータベースが必要であり、Pineconeはフルマネージドなベクトルデータベースサービスになります。ベクトルデータベースサービスはPinecone以外にもAzure Congnitive SearchやAmazon Kendraがあります。

Momento Cache

ChatGPTとの会話のやり取りを記録しておくChache DBとしてMomento Cacheを使いました。

かかったコスト

上記のクラウドシステムは殆どが無償、あるいはFreeプランの範囲内でできました。OpenAIとAWS Lambdaの料金はかかるのですが、書籍の内容を一通り試した後確認したら

  • OpenAI:0.1$程度(ChatGPTのモデルは、gpt-3.5-turboを使用)

  • AWS:0.3$程度(殆どがServerless Framework用のデプロイprofile作った時のAWS Configの料金っぽい)

でした!

さいごに

LangChainのTypeScript版も触ってみたいな。

この記事が気に入ったらサポートをしてみませんか?