的字段’license’是必需的
我在Android Studio中创建新项目时尝试使用Gemini API Starter模板的代码。
默认模板使用的是很久之前就已废弃的“gemini-pro”模型(他们没有更新模板),所以我将其改成了gemini-1.5-flash。
但我一直遇到解析错误:
com.google.ai.client.generativeai.type.SerializationException: 尝试从服务器反序列化响应时出现问题。2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at com.google.ai.client.generativeai.type.GoogleGenerativeAIException$Companion.from(Exceptions.kt:39)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at com.google.ai.client.generativeai.GenerativeModel.generateContent(GenerativeModel.kt:88)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at com.google.ai.client.generativeai.GenerativeModel$generateContent$1.invokeSuspend(Unknown Source:15)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:115)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:103)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W Caused by: io.ktor.serialization.JsonConvertException: 非法输入:类型序列化名称为'com.google.ai.client.generativeai.internal.api.server.CitationSources'的字段'license'是必需的,但在路径$.candidates[0].citationMetadata.citationSources[0]处缺失2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at io.ktor.serialization.kotlinx.KotlinxSerializationConverter.deserialize(KotlinxSerializationConverter.kt:90)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at io.ktor.serialization.ContentConverterKt$deserialize$$inlined$map$1$2.emit(Emitters.kt:224)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at kotlinx.coroutines.flow.FlowKt__BuildersKt$asFlow$$inlined$unsafeFlow$3.collect(SafeCollector.common.kt:116)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at io.ktor.serialization.ContentConverterKt$deserialize$$inlined$map$1.collect(SafeCollector.common.kt:113)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at kotlinx.coroutines.flow.FlowKt__ReduceKt.firstOrNull(Reduce.kt:243)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at kotlinx.coroutines.flow.FlowKt.firstOrNull(Unknown Source:1)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at io.ktor.serialization.ContentConverterKt.deserialize(ContentConverter.kt:123)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at io.ktor.client.plugins.contentnegotiation.ContentNegotiation.convertResponse$ktor_client_content_negotiation(ContentNegotiation.kt:230)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at io.ktor.client.plugins.contentnegotiation.ContentNegotiation$Plugin$install$2.invokeSuspend(ContentNegotiation.kt:262)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at io.ktor.client.plugins.contentnegotiation.ContentNegotiation$Plugin$install$2.invoke(Unknown Source:13)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at io.ktor.client.plugins.contentnegotiation.ContentNegotiation$Plugin$install$2.invoke(Unknown Source:6)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:120)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:78)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at io.ktor.client.HttpClient$4.invokeSuspend(HttpClient.kt:177)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at io.ktor.client.HttpClient$4.invoke(Unknown Source:11)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at io.ktor.client.HttpClient$4.invoke(Unknown Source:6)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:120)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:78)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at io.ktor.util.pipeline.SuspendFunctionGun.proceedWith(SuspendFunctionGun.kt:88)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at io.ktor.client.plugins.HttpCallValidator$Companion$install$2.invokeSuspend(HttpCallValidator.kt:142)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at io.ktor.client.plugins.HttpCallValidator$Companion$install$2.invoke(Unknown Source:13)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at io.ktor.client.plugins.HttpCallValidator$Companion$install$2.invoke(Unknown Source:6)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:120)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at io.ktor.util.pipeline.SuspendFunctionGun.proceed(SuspendFunctionGun.kt:78)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at io.ktor.util.pipeline.SuspendFunctionGun.execute$ktor_utils(SuspendFunctionGun.kt:98)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at io.ktor.util.pipeline.Pipeline.execute(Pipeline.kt:77)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at io.ktor.client.call.HttpClientCall.bodyNullable(HttpClientCall.kt:88)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at com.google.ai.client.generativeai.internal.api.APIController.generateContent(APIController.kt:198)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at com.google.ai.client.generativeai.internal.api.APIController$generateContent$1.invokeSuspend(Unknown Source:15)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W ... 6 more2024-12-03 22:11:32.349 7350-7395 System.err com.ayusch.genaitest W Caused by: kotlinx.serialization.MissingFieldException: 类型序列化名称为'com.google.ai.client.generativeai.internal.api.server.CitationSources'的字段'license'是必需的,但在路径$.candidates[0].citationMetadata.citationSources[0]处缺失2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue(StreamingJsonDecoder.kt:93)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at kotlinx.serialization.encoding.AbstractDecoder.decodeSerializableValue(AbstractDecoder.kt:43)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at kotlinx.serialization.encoding.AbstractDecoder.decodeSerializableElement(AbstractDecoder.kt:70)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableElement(StreamingJsonDecoder.kt:165)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at kotlinx.serialization.encoding.CompositeDecoder$DefaultImpls.decodeSerializableElement$default(Decoding.kt:533)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at kotlinx.serialization.internal.CollectionLikeSerializer.readElement(CollectionSerializers.kt:80)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at kotlinx.serialization.internal.AbstractCollectionSerializer.readElement$default(CollectionSerializers.kt:51)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at kotlinx.serialization.internal.AbstractCollectionSerializer.merge(CollectionSerializers.kt:36)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at kotlinx.serialization.internal.AbstractCollectionSerializer.deserialize(CollectionSerializers.kt:43)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue(StreamingJsonDecoder.kt:70)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at kotlinx.serialization.encoding.AbstractDecoder.decodeSerializableValue(AbstractDecoder.kt:43)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at kotlinx.serialization.encoding.AbstractDecoder.decodeSerializableElement(AbstractDecoder.kt:70)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableElement(StreamingJsonDecoder.kt:165)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at com.google.ai.client.generativeai.internal.api.server.CitationMetadata$$serializer.deserialize(Types.kt:59)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at com.google.ai.client.generativeai.internal.api.server.CitationMetadata$$serializer.deserialize(Types.kt:59)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue(StreamingJsonDecoder.kt:70)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at kotlinx.serialization.encoding.AbstractDecoder.decodeSerializableValue(AbstractDecoder.kt:43)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at kotlinx.serialization.encoding.AbstractDecoder.decodeNullableSerializableElement(AbstractDecoder.kt:79)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at com.google.ai.client.generativeai.internal.api.server.Candidate$$serializer.deserialize(Types.kt:51)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at com.google.ai.client.generativeai.internal.api.server.Candidate$$serializer.deserialize(Types.kt:51)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue(StreamingJsonDecoder.kt:70)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at kotlinx.serialization.encoding.AbstractDecoder.decodeSerializableValue(AbstractDecoder.kt:43)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at kotlinx.serialization.encoding.AbstractDecoder.decodeSerializableElement(AbstractDecoder.kt:70)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableElement(StreamingJsonDecoder.kt:165)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at kotlinx.serialization.encoding.CompositeDecoder$DefaultImpls.decodeSerializableElement$default(Decoding.kt:533)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at kotlinx.serialization.internal.CollectionLikeSerializer.readElement(CollectionSerializers.kt:80)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at kotlinx.serialization.internal.AbstractCollectionSerializer.readElement$default(CollectionSerializers.kt:51)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at kotlinx.serialization.internal.AbstractCollectionSerializer.merge(CollectionSerializers.kt:36)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at kotlinx.serialization.internal.AbstractCollectionSerializer.deserialize(CollectionSerializers.kt:43)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue(StreamingJsonDecoder.kt:70)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at kotlinx.serialization.encoding.AbstractDecoder.decodeSerializableValue(AbstractDecoder.kt:43)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at kotlinx.serialization.encoding.AbstractDecoder.decodeNullableSerializableElement(AbstractDecoder.kt:79)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at com.google.ai.client.generativeai.internal.api.GenerateContentResponse$$serializer.deserialize(Response.kt:26)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at com.google.ai.client.generativeai.internal.api.GenerateContentResponse$$serializer.deserialize(Response.kt:26)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue(StreamingJsonDecoder.kt:70)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at kotlinx.serialization.json.Json.decodeFromString(Json.kt:107)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at io.ktor.serialization.kotlinx.KotlinxSerializationConverter.deserialize(KotlinxSerializationConverter.kt:82)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W ... 36 more2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W Caused by: kotlinx.serialization.MissingFieldException: 类型序列化名称为'com.google.ai.client.generativeai.internal.api.server.CitationSources'的字段'license'是必需的,但缺失2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at kotlinx.serialization.internal.PluginExceptionsKt.throwMissingFieldException(PluginExceptions.kt:20)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at com.google.ai.client.generativeai.internal.api.server.CitationSources.<init>(Types.kt:64)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at com.google.ai.client.generativeai.internal.api.server.CitationSources$$serializer.deserialize(Types.kt:64)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at com.google.ai.client.generativeai.internal.api.server.CitationSources$$serializer.deserialize(Types.kt:64)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W at kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue(StreamingJsonDecoder.kt:70)2024-12-03 22:11:32.350 7350-7395 System.err com.ayusch.genaitest W ... 72 more
有人遇到过这个问题吗?
我看到一个类似的提问,API没有返回所需的字段,但据说已经修复了(是另一个字段):Gemini Api Android: SerializationException when deserializing response from server
提前感谢
回答:
我将generativeai
依赖从0.2.2升级到了0.9.0,现在它可以工作了。你可以试试这个 👍