You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Kotlin中为Gemini 2.0 Flash预览图像生成API正确配置响应模态

如何在Kotlin中为Gemini 2.0 Flash预览图像生成API正确配置响应模态

我完全懂你遇到的困扰——不同SDK的API确实容易搞混,尤其是Firebase和官方Google AI SDK的配置方式差异不小。你之前尝试的responseModalities是Firebase AI SDK里的用法,而官方Google AI Kotlin SDK用的是另一种逻辑来指定响应模态。

下面是亲测可用的正确配置步骤:

1. 确认依赖与导入类

首先确保你使用的是官方Google AI Kotlin SDK(而非Firebase版本),并导入正确的类型:

import com.google.ai.client.generativeai.GenerativeModel
import com.google.ai.client.generativeai.type.GenerationConfig
import com.google.ai.client.generativeai.type.ResponseMimeType
import com.google.ai.client.generativeai.type.InputImage

2. 正确配置GenerationConfig

在官方SDK中,我们需要通过MIME类型来指定响应模态,而不是Firebase里的ResponseModality枚举。使用setResponseMimeTypes方法传入文本和图像的MIME类型列表即可:

val generationConfig = GenerationConfig.Builder()
    // 同时指定文本和PNG格式图像响应,若需JPEG可替换为ResponseMimeType.IMAGE_JPEG
    .setResponseMimeTypes(listOf(ResponseMimeType.TEXT, ResponseMimeType.IMAGE_PNG))
    .build()

val imageGenerationModel = GenerativeModel(
    modelName = "gemini-2.0-flash-preview-image-generation",
    apiKey = geminiApiKey,
    generationConfig = generationConfig
)

3. 调用API并处理多模态响应

配置好模型后,你可以像Python示例那样传入图像和文本提示,然后分别处理返回的文本与图像内容:

// 示例:从Uri加载输入图像
val inputImage = InputImage.fromUri(context, yourImageUri)
val prompt = "Edit this image to make it look like a cartoon."

// 调用生成内容API
val response = imageGenerationModel.generateContent(listOf(inputImage, prompt))

// 处理返回的文本
response.text?.let { generatedText ->
    println("生成的说明文本:$generatedText")
}

// 处理返回的图像
response.images?.forEach { generatedImage ->
    // generatedImage为Bitmap类型,可直接用于ImageView显示
    yourImageView.setImageBitmap(generatedImage)
}

为什么之前的方法无效?

  • 你最初尝试的Arrays.asList(ResponseModality.TEXT, ...)是Firebase AI SDK的专属API,和官方Google AI SDK不兼容
  • Gemini建议的responseModalities = listOf(...)可能是旧版本SDK的用法,当前稳定版已改用responseMimeTypes来明确指定响应格式

内容来源于stack exchange

火山引擎 最新活动