Google Cloud上にAIチャットアプリを作った話 (Cloud Run + Vertex AI with Gemini Pro)
はじめに
Zennでキャンペーンが開催中でテーマが「Google Cloud」とのことです。
キャンペーンに参加するために、昨年書いた記事をGoogle Cloudに焦点をあててリライトします。
この記事の内容
普段の業務では私はAWSを使うことが多いですし、一般的なアプリを作るのであれば多くのケースでAWSを採用します。ですが、社内用のAIチャットアプリを作るにあたってGoogle Cloudを採用しました。その理由と、実際に使ってみて感じたGoogle Cloudのメリットを書いていきたいと思います。
作ったもの
社内ドキュメントをソースとするAIチャットアプリを作りました。
アーキテクチャ
こんな感じのアーキテクチャでGoogleCloudからCloud RunとVertexAI(Gemini Pro)を使っています。
Google Cloudを採用した理由
Cloud Runを使いたかったから。
コンテナで作ったWebアプリを簡単にデプロイできてWebSocketに対応しているCloud Runを使うためというのが、Google Cloudを使った理由です。生成AIを使ったアプリ開発をするに当たり、生成AIの能力は重要ですがアプリの作りやすさのも重要です。
AI系のプログラミングをする場合に主力の言語がPythonを使うことが多いですが、従来PythonはあまりWebアプリ開発に向いた言語ではありません。しかし、昨今はStreamlitなどのFrameworkを使うことで、Pythonで手軽にWebアプリを作ることができるようになりました。
しかし、多くの簡単にWebアプリをデプロイできる系のサービスはWebSocketに対応していません。例えば、AWS App Runnerは次のようなIssueが初期に作られているにも関わらず、2024年2月現在WebSocketには対応していません。
これに対して、Cloud RunはWebSocketに対応しています。しかも、とても簡単にデプロイができます。Google Cloudの方もCloud RunでStreamlitを動かす記事を書いていたりします。
また、Cloud Runはコンテナサービスにも関わらず最小インスタンス数を0にできます。つまり利用料を0にできるということです。使わなければ無料と言うのはアプリを維持する上でかなりのメリットだと思っています。
(なお、Gemini Proがプレビュー期間で無料ということもあり、先月のアプリ全体の利用料は500円弱でした)
Google Cloudを使って感じたその他のメリット
それでは、実際に使ってみて感じたCloud Run以外のメリットを書いていきたいと思います。
VertexAIの課金体系が比較的わかりやすい
ChatGPTを始めとする多くの生成AIのサービスの課金は、トークン単位です。このトークンというのは初心者からすると何のことか良く分からず、結局どのくらい利用すれば何円お金がかかるのか良く分かりません。
それに対して、Google CloudのVertexAIでは1,000文字単位で課金されます。非常に分かりやすいです。アプリを作るときにAIに入力する文字数をどのくらいまで減らせばどのくらい費用を抑えられるのかの計算が非常に楽です。
AIの精度はもちろん重要ですが、実際にアプリを運用するとなるとコストも当然重要な観点ですので、その点VertexAIは使いやすいと感じます。
Gemini Proの料金が安い
最新のAIであるGemini Proは、お値段もお高いかと思われがちですが、何故か安いです。無料期間終了後でも、1,000文字あたりの金額が出力は従来のモデルの半額、入力は四分の一です。
おそらく安くすることでユーザーを獲得しようとしているのだと思われますので、遠慮なく使わせていただきましょう。Google認証が構築しやすい
Google Cloudは、Googleのサービスですので、Googleでの認証の構築がし易いです。当たり前ですが。
複雑なユーザー管理をしたりする場合は別ですが、利用者を社員に絞りたいといった単純な要件であれば、簡単に対応できます。
最後に
そんな感じで、生成AI系の小規模なアプリを作るにはGoogle Cloudがかなり良いですという紹介でした。
注意点として、あくまでこれは生成AIを使った小規模なチャットアプリの話であり、規模が大きい場合や複雑な業務アプリの場合などは状況に応じたサービス選定が必要ですので、その点はご注意ください。
NCDC株式会社( ncdc.co.jp/ )のエンジニアチームです。 募集中のエンジニアのポジションや、採用している技術スタックの紹介などはこちら( github.com/ncdcdev/recruitment )をご覧ください! ※エンジニア以外も記事を投稿することがあります
Discussion