如何在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




