Closed16

[Google I/O 2024]What's new in FIrebase + gen AIメモ

izumarthizumarth
gradle
dependencies {
  ...
  implementation("com.google.firebase:firebase-vertexai:16.0.0-alpha02")
}
val generativeModel = Firebase.vertexAI.generativeModel("gemini-1.5-pro")

scope.launch {
  val response = model.generateContent(
    content {
      image(bitmap)
      text("what is the object in the picture?")
    }
  )
}

scope.launch {
  var outputContent = ""

  generativeModel.generateContentStream(inputContent)
          .collect { response ->
            outputContent += response.text
          }
}
izumarthizumarth
  • 次はFirebase Data Connect
  • Firebaseを使ってアプリから直接CloudSQL(Postgresql)につなぐというもの。便利そう!
izumarthizumarth
  • まずCloudSQL側の設定をするためVS Code拡張機能を使って構築もろもろ
  1. ローカル プロジェクト用の新しいディレクトリを作成します。
  2. 新しいディレクトリで VS Code を開きます。
  3. VSIX パッケージとしてバンドルされた拡張機能を Firebase Storage からダウンロードします。
  4. VS Code の [View] メニューから [Extensions] を選択します。
  5. [拡張機能] パネルのタイトルバーで、メニュー アイコン more_horiz をクリックし、VSIX からインストールする...の手順を行います。
izumarthizumarth

firebase CLIでテストを有効化

firebase experiments:enable dataconnect
izumarthizumarth
  • 次にスキーマ作成
  • /dataconnect/schema/schema.gql にスキーマ記載
/dataconnect/schema/schema.gql
# File `/dataconnect/schema/schema.gql`

type User @table(key: "uid") {
   uid: String!
   name: String!
   address: String!
}

# File `/dataconnect/schema/schema.gql`

type Email @table {
   subject: String!
   date: Date!
   text: String!
   from: User!
}

CLIでデプロイ

firebase deploy

# 破壊的な変更の場合
firebase dataconnect:sql:diff
firebase dataconnect:sql:migrate
izumarthizumarth
  • 次にクエリ
  • /dataconnect/connector/queries.gqlに記載。GraphQL
  • これによって拡張機能でconnector.yaml指定箇所にkotlinコード生成
/dataconnect/connector/queries.gql
# File `/dataconnect/connector/queries.gql`

query listEmails @auth(level: PUBLIC) {
  emails {
    id, subject, text, date
    from {
      name
    }
  }
}
izumarthizumarth
  • 生成したコードを取り込んでAndroid側で呼び出せば完成
class MainActivity : ComponentActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    lifecycleScope.launch {
      val connector = MyConnector.instance
      connector.dataConnect.useEmulator() // Remove to connect to production
      try {
        println(connector.listEmails.execute().data.emails)
      } catch (e: Throwable) {
        println("ERROR: $e")
      }
    }
  }
}
izumarthizumarth
  • ちなみにVector Searchとしてptvectorも対応可能
izumarthizumarth
  • 次はFirebase Genkit
  • Firebase Genkit は、本番環境に対応した AI 搭載アプリの構築、デプロイ、モニタリングに役立つオープンソース フレームワーク
  • アプリ デベロッパー向けに設計されており、使い慣れたパターンとパラダイムで強力な AI 機能をアプリに簡単に統合
  • ただ現時点でGo, TypescriptしかないためAndroid Developerとしてはスルー...
    • まあAndroidはAI Edge SDKとかもあるし、ローカルのGemini Nanoとかもあるのでそちらでよいのかも
izumarthizumarth
  • 次はGemini in Firebase
  • これはアプリ組み込みというよりFirebase内でGeminiを使って色々できるようになったとのこと
  • 有効化するとFirebase内にGeiminiペインができてそこで色々質問できる
    • Crashlyticsで分析情報生成とか
    • 一般的な質問だったりとか
このスクラップは2024/05/21にクローズされました