Google Cloudの生成AIで「ファッションにコメントするアプリ」を作成
まず中井氏は、生成AIを含むGoogle Cloudのさまざまなサービスを利用して作ったデモアプリの動作について説明を行った。このアプリは、チャット風のインターフェイスを備え、画像をアップロードすると、その画像について生成AIが適切なコメントをテキストで返す機能を持っている。
このアプリは、アップロードされた写真からファッションに関する情報を読み取り、その内容を褒めるコメントを生成する仕組みである。中井氏は自身の写真をアップロードしてアプリの動作を説明し、その際、ストライプのシャツ、時計、スウェットシャツに小さなGoogle Cloudのロゴがあることなどを認識して、それに関するポジティブなコメントが返される動作を披露した。
GoogleはGeminiという新しい基盤モデルを発表した。Geminiは画像とテキストを同時に処理することが可能になるが、中井氏が本アプリを開発した時には、Geminiはまだ公開されていなかったため、別の方法で作っている。Google CloudにあるVertex AIのVisual CaptioningやVisual Q&Aというサービスを使って、画像内の内容に関する情報を抽出し、大規模言語モデルのPaLM APIを使って、コメントの文章を生成している。
中井氏は、Google Cloudのコンソール画面を開いて各サービスの動作を説明した。Visual Captioningは、画像の内容を分析して、どんな要素が含まれているかを示すもの。中井氏は、バスケットに盛られたフルーツや野菜、飲料、食材などが混在する写真をアップロードしVisual Captioningによって「a basket filled with fruits and vegetables sits on a table」などの説明文が表示される様子を見せた。
Visual Q&Aは、画像に対して質問ができる。同じ画像に対して「names of fruit in this picture」という質問を投げかけると、「apples, grapes, lemons, oranges」との回答を得られた。フルーツの情報だけを抜き出すことができた。
先に中井氏が紹介した、写真に写った人のファッションを褒めるアプリの処理に置き換えると、Visual Captioningでどんな写真なのかの説明を出力し、Visual Q&Aによってその中からファッションアイテムを抜き出すこととなる。
大規模言語モデル「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を組み合わせることで、もっと面白いことができるはずです。皆さんのアイディアで、新しいアプリを作って楽しんでいただければと思います」と呼びかけた。
コーディング作業を支援するサービスDuet AI for Developers
中井氏はもう一つの話題として、Duet AI for Developersについて言及した。これは、生成AIや大規模言語モデルがコーディング作業を支援するサービスであり、さまざまなIDEに対応したプラグインを通じて利用可能である。中井氏はDuet AI for Developersが提供する機能についていくつか説明した。
たとえば、他人が書いたコードをいきなり読んで理解するのは難しいが、PaLM APIを利用することで、そのコードがどのような処理を行っているのかを説明するテキストが自動で生成できる。また、コードの自動生成では、コードを書き始めると、AIがその続きを予想して自動で表示するので、AIの提案が自分の考えと一致していれば、それを受け入れて作業時間を大幅に短縮できる。また、特定の機能を実行する関数について、何をしたいかの説明を書くだけで、その内容を実装した関数が自動的に生成される機能もある。
自分が書いたコードにAIがコメントを追加する機能もある。一人でコーディングしている時、コメントのために頭を切り替える時間を惜しむことがあるが、まずコードを書き上げた後、コメントの作成をAIに依頼することが可能である。
リファクタリングを自動化することも可能だ。自分でコードを書いた後、落ち着いて一晩寝てから見直すと、改善の余地が見つかることがある。AIがこの気づきを自動で行い、コードをよりシンプルで読みやすい形に書き直すことができる。
テストコードの作成も可能であり、関数で実装したAPIを呼び出し、その動作を検証するテストコードを自動で生成できる。また、コードが実行する機能について簡潔な仕様書の形式で説明することもできる。
中井氏は最後に、デベロッパーや実務担当者向けに、最新情報、テクノロジーと専門知識へのアクセス、Google Cloud に関するスキル向上に役立つ限定特典を提供するGoogle Cloud Innovatorsなどの取り組みを案内し、次のようにコメントした。
「生成AIの登場は新しく、その最適な利用方法はまだ確立されていません。未発見の応用がまだ多数存在すると思いますので、新しいものを創造するチャンスです。ぜひGoogle Cloud上でどのようなAPIや機能が提供されているかを調べてみて、どの機能を組み合わせられるか、いろいろなチャレンジをしていただければと思います」と呼びかけた。