Skip to content

Error when using Gemini OpenAI API #412

Open
@MUKAPP

Description

@MUKAPP

Description

When using the Gemini OpenAI API, an error occurs, but the packet capture shows that the request is normal.

Error during chat completion
com.aallam.openai.api.exception.OpenAIHttpException: Illegal input: Field 'id' is required for type with serial name 'com.aallam.openai.api.chat.ChatCompletion', but it was missing at path: $
	at com.aallam.openai.client.internal.http.HttpTransport.handleException(HttpTransport.kt:52)
	at com.aallam.openai.client.internal.http.HttpTransport.perform(HttpTransport.kt:23)
	at com.aallam.openai.client.internal.http.HttpTransport$perform$1.invokeSuspend(Unknown Source:15)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:101)
	at android.os.Handler.handleCallback(Handler.java:959)
	at android.os.Handler.dispatchMessage(Handler.java:100)
	at android.os.Looper.loopOnce(Looper.java:249)
	at android.os.Looper.loop(Looper.java:337)
	at android.app.ActivityThread.main(ActivityThread.java:9590)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:593)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:935)
Caused by: io.ktor.serialization.JsonConvertException: Illegal input: Field 'id' is required for type with serial name 'com.aallam.openai.api.chat.ChatCompletion', but it was missing at path: $
	at io.ktor.serialization.kotlinx.KotlinxSerializationConverter.deserialize(KotlinxSerializationConverter.kt:77)
	at io.ktor.serialization.ContentConverterKt$deserialize$$inlined$map$1$2.emit(Emitters.kt:51)
	at kotlinx.coroutines.flow.FlowKt__BuildersKt$asFlow$$inlined$unsafeFlow$3.collect(SafeCollector.common.kt:111)
	at io.ktor.serialization.ContentConverterKt$deserialize$$inlined$map$1.collect(SafeCollector.common.kt:109)
	at kotlinx.coroutines.flow.FlowKt__ReduceKt.firstOrNull(Reduce.kt:239)
	at kotlinx.coroutines.flow.FlowKt.firstOrNull(Unknown Source:1)
	at io.ktor.serialization.ContentConverterKt.deserialize(ContentConverter.kt:99)
	at io.ktor.client.plugins.contentnegotiation.ContentNegotiationKt.ContentNegotiation$lambda$13$convertResponse(ContentNegotiation.kt:234)
	at io.ktor.client.plugins.contentnegotiation.ContentNegotiationKt.access$ContentNegotiation$lambda$13$convertResponse(ContentNegotiation.kt:1)
	at io.ktor.client.plugins.contentnegotiation.ContentNegotiationKt$ContentNegotiation$2$2.invokeSuspend(ContentNegotiation.kt:249)
	at io.ktor.client.plugins.contentnegotiation.ContentNegotiationKt$ContentNegotiation$2$2.invoke(Unknown Source:19)
	at io.ktor.client.plugins.contentnegotiation.ContentNegotiationKt$ContentNegotiation$2$2.invoke(Unknown Source:10)
	at io.ktor.client.plugins.api.TransformResponseBodyHook$install$1.invokeSuspend(KtorCallContexts.kt:105)
	at io.ktor.client.plugins.api.TransformResponseBodyHook$install$1.invoke(Unknown Source:11)
	at io.ktor.client.plugins.api.TransformResponseBodyHook$install$1.invoke(Unknown Source:6)
	at io.ktor.util.pipeline.DebugPipelineContext.proceedLoop(DebugPipelineContext.kt:79)
	at io.ktor.util.pipeline.DebugPipelineContext.proceed(DebugPipelineContext.kt:57)
	at io.ktor.client.HttpClient$4.invokeSuspend(HttpClient.kt:1379)
	at io.ktor.client.HttpClient$4.invoke(Unknown Source:11)
	at io.ktor.client.HttpClient$4.invoke(Unknown Source:6)
	at io.ktor.util.pipeline.DebugPipelineContext.proceedLoop(DebugPipelineContext.kt:79)
	at io.ktor.util.pipeline.DebugPipelineContext.proceed(DebugPipelineContext.kt:57)
	at io.ktor.client.plugins.logging.ReceiveHook$Context.proceed(Logging.kt:289)
	at io.ktor.client.plugins.logging.LoggingKt$Logging$2$3.invokeSuspend(Logging.kt:209)
	at io.ktor.client.plugins.logging.LoggingKt$Logging$2$3.invoke(Unknown Source:13)
	at io.ktor.client.plugins.logging.LoggingKt$Logging$2$3.invoke(Unknown Source:6)
	at io.ktor.client.plugins.logging.ReceiveHook$install$1.invokeSuspend(Logging.kt:297)
	at io.ktor.client.plugins.logging.ReceiveHook$install$1.invoke(Unknown Source:11)
	at io.ktor.client.plugins.logging.ReceiveHook$install$1.invoke(Unknown Source:6)

Steps to Reproduce

  1. It's just sending a request to the Gemini OpenAI API.

Environment

  • openai-kotlin version: 4.0.0-beta01
  • Kotlin version: 2.1.0
  • OS: Android 15

Additional Info

Captured packet request image:
image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions