Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

Androidifyで学ぶGeminiAPI

Avatar for Yomogi. Yomogi.
November 18, 2025
7

 Androidifyで学ぶGeminiAPI

Avatar for Yomogi.

Yomogi.

November 18, 2025
Tweet

Transcript

  1. 6

  2. モデルの生成パターン Geminiモデルの生成は2つのAPIプロバイダ経由で取得 Gemini Developer API val model = Firebase.ai(backend =

    GenerativeBackend.googleAI()) .generativeModel("gemini-2.5-flash") Vertex AI Gemini API val model = Firebase.ai(backend = GenerativeBackend.vertexAI()) .generativeModel("gemini-2.5-flash") 10
  3. モデルの生成パターン (Imagenの場合) Geminiモデル同様に2つのAPIプロバイダ経由で取得 Gemini Developer API val ai = Firebase.ai(backend

    = GenerativeBackend.googleAI())                .imagenModel("imagen-4.0-generate-001") Vertex AI Gemini API val ai = Firebase.ai(backend = GenerativeBackend.vertexAI())                .imagenModel("imagen-4.0-generate-001") 11
  4. GeminiAPIへのリクエスト準備 モデル名・SafetySettingsを指定 ImagenSafetySettings(後述)で生成を許可する画像の閾値を設定 private fun createGenerativeImageModel(): ImagenModel { return Firebase.ai(backend

    = GenerativeBackend.vertexAI()).imagenModel( remoteConfigDataSource.imageModelName(), safetySettings = ImagenSafetySettings( safetyFilterLevel = ImagenSafetyFilterLevel.BLOCK_LOW_AND_ABOVE, personFilterLevel = ImagenPersonFilterLevel.ALLOW_ADULT, ), ) } 14
  5. 画像の生成 private suspend fun executeImageGeneration( generativeModel: ImagenModel, prompt: String, ):

    Bitmap { val response = generativeModel.generateImages(prompt) return response.images.first().asBitmap() } 15
  6. プロンプトの生成 override suspend fun generateImageFromPromptAndSkinTone( prompt: String, skinTone: String, ):

    Bitmap { val basePromptTemplate = remoteConfigDataSource.promptImageGenerationWithSkinTone() val imageGenerationPrompt = basePromptTemplate .replace("{prompt}", prompt) .replace("{skinTone}", skinTone) if (remoteConfigDataSource.useImagen()) { val generativeModel = createGenerativeImageModel() return executeImageGeneration( generativeModel, imageGenerationPrompt, ) (以下省略) 16
  7. 画像の生成 private suspend fun executeImageGeneration( generativeModel: ImagenModel, prompt: String, ):

    Bitmap { val response = generativeModel.generateImages(prompt) return response.images.first().asBitmap() } 18
  8. レスポンスから画像を抽出 レスポンスがImagenGenerationResponseの型で返却される public class ImagenGenerationResponse<T> internal constructor(public val images: List<T>,

    public val filteredReason: String?) 生成したimageパラメータの配列で返却されるので、Androidifyでは配列の一つ目を表 示 response.images.first().asBitmap() 19
  9. テキスト生成時の細かい指定 Firebase.ai((省略), safetySettings = listOf( SafetySetting(HarmCategory.HARASSMENT, HarmBlockThreshold.LOW_AND_ABOVE), SafetySetting(HarmCategory.HATE_SPEECH, HarmBlockThreshold.LOW_AND_ABOVE), SafetySetting(HarmCategory.SEXUALLY_EXPLICIT,

    HarmBlockThreshold.LOW_AND_ABOVE), SafetySetting(HarmCategory.DANGEROUS_CONTENT, HarmBlockThreshold.LOW_AND_ABOVE), SafetySetting(HarmCategory.CIVIC_INTEGRITY, HarmBlockThreshold.LOW_AND_ABOVE), ), ) 指定したい属性(HarmCategory)とそれに対する閾値(HarmBlockThreshold)を指定するこ とで細かく制御 27
  10. HarmCategory HARASSMENT : ハラスメント コンテンツ。 HATE_SPEECH : ヘイトスピーチとコンテンツ。 SEXUALLY_EXPLICIT :

    性的描写が露骨なコンテンツ。 DANGEROUS_CONTENT : 危険なコンテンツ。 CIVIC_INTEGRITY : 市民の誠実性を損なう可能性があるコンテンツ。 ※ 非推奨: 代 わりに enableEnhancedCivicAnswers を使用 指定可能な定義一覧 https://ai.google.dev/api/generate-content?hl=ja#v1beta.HarmCategory enableEnhancedCivicAnswersはモデルへのカテゴリーではなくConfigで指定が推奨 29
  11. 指定に使用するクラス public class ImagenSafetySettings( internal val safetyFilterLevel: ImagenSafetyFilterLevel, internal val

    personFilterLevel: ImagenPersonFilterLevel, ) {} ImagenSafetyFilterLevel:暴力的、有害、または不適切なコンテンツをフィルタリング するために使用 ImagenPersonFilterLevel:人物や顔が画像に含まれることを制御するために使用 32
  12. Androidifyでの指定 Firebase.ai((省略), safetySettings = ImagenSafetySettings( safetyFilterLevel = ImagenSafetyFilterLevel.BLOCK_LOW_AND_ABOVE, personFilterLevel =

    ImagenPersonFilterLevel.ALLOW_ADULT, ), ) ImagenSafetyFilterLevel.BLOCK_LOW_AND_ABOVE:最も厳格。最強 ImagenPersonFilterLevel.ALLOW_ADULT:成人向け画像のみを含む画像の生成を許可。 児童の画像は除外。 33
  13. 参考 Gemini API reference https://ai.google.dev/api?hl=ja Androidify https://github.com/android/androidify Firebae AI Logic

    https://firebase.google.com/products/generative-ai https://firebase.google.com/docs/ai-logic Android-AI https://github.com/android/ai-samples 35