🧠

Firebase Extensions + PaLM API で 要約アプリを作ってみた

2023/06/23に公開

こんにちは、SRE ディビジョンの小堀内です。
2023 年 5 月 に開催された Google I/O 2023 では Firebase に関する内容も発表されました。

What's new at Google I/O 2023 - The Firebase Blog

今回は、この発表の中から

New AI Extensions powered by the PaLM API(PaLM APIを利用した新しいAI拡張機能)

に関する内容を紹介していきます。

記事概要

本記事では、Firebase Extensions と PaLM API について説明・検証を行い、そのまとめとして、簡単な要約アプリを Flutter on the Web で作っていきます。

Firebase Extensions とは

firebase-extensions
Firebase Extensions は、アプリに新しい機能をすぐに追加できる、事前にパッケージ化されたサーバーレスソリューションです。
一言で言うと Firebase 専用の拡張機能です。

これらは Cloud Functions、Firestore、Cloud Storage など Firebase の機能と統合され、開発者がコードを書く量を減らして、複雑なシナリオを効率的に処理するのを手助けします。

Extensions の例としては、リサイズ可能な画像の生成、メール送信、データベースの自動クリーンアップなどがあります。

firebase-extensions-hub

このように Firebase に特化した数多くの拡張機能が用意されています。
使用したことがないものばかりなので、興味があるものについては今後触っていきたいと思います。

Extensions にどんな拡張機能があるのか詳しく知りたい方は、Firebase Extensions Hub を参照することをおすすめします。

PaLM API とは

PaLM API は、Google の次世代モデル PaLM 2 がベースとなっている API です。

PaLM は、自然言語処理(Natural Language Processing, NLP)の技術を活用して、テキストの生成、要約、分類などの処理が可能です。

具体的には、PaLM APIを通じて、次のような高度な自然言語処理機能にアクセスすることができます。

  • コンテンツ生成
    • 新しいテキストや記事を生成する機能。
  • 要約
    • 長いテキストを短く、要点を抑えた形で要約する機能。
  • 分類
    • テキストをカテゴリーやタグに分類する機能。

これらの機能は、開発者が簡潔でニュアンスのある指示を行うことで、独自のアプリケーションやサービスに組み込むことができます。

以降では、Firebase Extensions を通して PaLM API を使用し、Google の大規模言語モデルの高度な機能にアクセスしていきます。

実際に触ってみる

それでは、実際に Firebase プロジェクトに PaLM API をインストールしてさまざまなことを試していきます。

PaLM API をインストール

まずは、Firebase Extensions の検索欄から PaLM API を検索して Firebase にインストールしていきます。
PaLM API で検索を行うと、

  • Chatbot with PaLM API
  • Summarize Text with PaLM API
  • Language Tasks with PaLM API
  • Semantic Search with Vertex AI
  • Call PaLM API Securely

の 5 種類の拡張機能がヒットしますが、
今回は Summarize Text with PaLM API を使用します。
Install ボタンを押下することで対象の Firebase プロジェクトへ 拡張機能の追加が行われます。

palm-api

Firestore の設定

上記でインストールした Summarize Text with PaLM API は、

特定のフィールド名を持つドキュメントが Firestore の特定のコレクションへ、追加された時に、PaLM API を使用した Cloud Functions 関数が実行される仕組み

となっています。

そのため、Summarize Text with PaLM API をインストールする際に、Cloud Functions のトリガーとなる Firestore コレクション・ドキュメントの設定を行う必要があります。

今回は、次の条件でトリガーの設定を行います。
palm-api-conf

Collection Name Text field Response Field(結果が格納されるフィールド)
text_documents text summary

つまり、この Firebase プロジェクトの Firestore に対して、

text フィールドを持つドキュメントが text_documents コレクションに追加された時に、Cloud Functions 経由で PaLM API にてテキストを要約し、その結果を summary フィールドに格納する

ということになります。

指定したドキュメントが要約されるか確認してみる

上記で設定した、Cloud Functions トリガー発火のために text フィールドを保持するドキュメントを text_documents コレクションに追加します。

add-document

すると、text フィールドに指定したテキストが数秒後に summary フィールドに要約された形で格納されました。
ちょうどいい具合に短くしてくれています。

result-document

before after
I lived in Iwate for a long time. I recommend it as a place with a lot of nature and very easy to live in. I encourage everyone to come and visit. Iwate is a great place to live with lots of nature and easy to live.

要約アプリを作ってみる

ここまで、Firebase Extensions を通して PaLM API(Summarize Text with PaLM API) を使用する方法を説明してきました。
最後に、まとめとして Summarize Text with PaLM API を用いた簡単な要約アプリを作っていきます。

構成

要約アプリの構成図を次に示します。
architecture

  • Flutter(フロントエンド)
    • クライアントアプリとして UI を提供
    • UI に入力された内容を Firebase Firestore の text_documents コレクションにドキュメントを追加するリクエストを送る
    • Firebase Firestore から 要約結果を受け取る
  • Firebase(バックエンド)
    • Extensions により Summarize Text with PaLM API をインストール
      • API インストールにより、自動的に Firestore をトリガーとした Cloud Functions 関数がデプロイされる
    • フロントエンドからのドキュメント追加リクエストにより Firestore へのドキュメント追加を行う
      • ドキュメント追加により、PaLM API 経由で要約を行う Cloud Functions 関数が実行される
    • クライアントに要約結果を送る

完成

とても簡易的ではありますが、入力したテキストを要約するアプリが出来上がりました。
app

サンプルコード

https://github.com/cloud-ace/zenn-palm-api-sample

まとめ

Firebase Extensions を初めて触ったのですが、こんなに簡単にバックエンドの実装をしてくれることに驚きました。
今回の PaLM API をはじめとして、最近では様々な技術が抽象化されてきており、実装詳細まで知らなくてもサービスが簡単に作れてしまいます。
ですが、抽象化された箇所についても詳細まで理解することで、別の技術に応用できたりするとも考えているので、これからもどの分野に対しても常に貪欲に学び続ける姿勢を大切にしていきたいと思います。

Discussion