大規模言語モデル「PaLM 2」を使ってチャットの返答文を自動生成
中井氏はここでGoogle Cloudにおける生成AI関連サービスについて説明した。サービス群は大きく2種類に分類される。1つが、生成AIやMLの専門知識が不要で、一般ユーザーが容易に利用できるアプリケーションレイヤーのサービス。もう一つが、個々の機能をAPIとして提供し、これらを組み合わせて新たなアプリケーションを開発できるようにするもの。今回のデモアプリでは画像処理やテキスト処理を使ったが、ほかにも多様なデータタイプに対応したAPIが提供されている。なかでも最近注目されているのが、大規模言語モデルのPaLM APIだ。
Visual CaptioningとVisual Q&Aによって抽出した情報から、チャットにポジティブなメッセージを返すには、PaLM APIを使う。言語モデル「PaLM 2」は多言語に対応しており、たとえば、日本語のダジャレの面白さを英語で説明することも可能だ。
LLMの応答は入力するプロンプトによって変化する。適切なプロンプトを発見するためにはプロトタイピングが必要だ。中井氏は、Vertex AI Workbenchのノートブック環境を使って対話的にプロトタイピングするやり方を説明した。この環境では、Google Cloudのプロジェクト上にJupyterLabのUI環境を立ち上げてノートブックを動かすことができる。
この環境ではGoogle CloudのAPIを呼び出すためのSDKが組み込まれているため、追加のインストールは不要。必要なモジュールをインポートし、すぐにAPIを呼び出すことが可能である。また、APIを呼び出す際の認証設定が表面上必要ない点も便利である。プロジェクト外部からAPIを呼び出す場合、認証処理は複雑で手間がかかるが、このノートブックは既にプロジェクト上で動作しているため、自動で必要な認証処理が行われる。
この環境に、Visual CaptioningとVisual Q&Aの処理を盛り込む。Visual Q&Aに対する質問のプロンプト部分は「question='details of the fashion items in the picture.'」となっている。「この写真のファッションアイテムの詳細情報を教えて」という意味だ。中井氏は、この質問文は試行錯誤の末にできたものだと説明した。
「最初『details』というキーワードなしに質問すると適切な情報が返らなったのですが、試行錯誤した結果『details』を入れるとうまく情報が取り出せることがわかりました。このようなプロンプトの内容をいろいろ試行錯誤できるのがノートブックのいいところです」(中井氏)
PaLM APIによるコメント生成の部分については「ファッションアドバイザーの立場で、以下のように記述される人物を褒め称える文章を作ってください。ファッションアイテムに言及しながら、その人物に語りかけるように、数行の文章を作ってください。個人を特定する名前は使用しないでください。」というプロンプトで指示している。これも試行錯誤の末発見したものだ。
なお、このプロンプトの「記述」と「ファッションアイテム」に、Visual CaptioningとVisual Q&Aで抽出した情報が入るようになっている。抽出した情報は英語だが、コメント生成を依頼する文章が日本語となっているため、特に言語の指示を出さなくても生成されるコメントは日本語となる。
バックエンドの処理は以上で、続いて中井氏は、Google Cloud上にデプロイする方法を説明した。Google Cloud上では、PythonのコードをDockerイメージにしてCloud Runでデプロイし、アクセス数に応じてオートスケールする環境を構築できる。
フロントエンドでは、APIに対して画像データをBase64エンコードで送信し、Cloud Runで動作するバックエンドからJSON形式で応答を受け取る処理を行う。中井氏はこのプロセスをJavaScriptで構築し、Firebase Hostingを使用してデプロイした。さらに、中井氏はフロントエンド開発における画像処理の注意点として、データの圧縮を挙げた。エンドユーザーが大容量の画像ファイルをアップロードする可能性があり、それがバックエンドの処理に影響を与える可能性があるため、圧縮の処理を盛り込んだ。
中井氏はGitHubで、このアプリのノートブックとソースコードを公開していることを伝え、「ぜひ皆さんも、このアプリをデプロイして楽しんでください。さらに、Google CloudのさまざまなAPIを組み合わせることで、もっと面白いことができるはずです。皆さんのアイディアで、新しいアプリを作って楽しんでいただければと思います」と呼びかけた。