11package com.cjcrafter.openai
22
3- import com.cjcrafter.openai.chat.ChatRequest
4- import com.cjcrafter.openai.chat.ChatResponse
5- import com.cjcrafter.openai.chat.ChatResponseChunk
6- import com.cjcrafter.openai.chat.ChatUser
3+ import ChatChoiceChunkAdapter
4+ import com.cjcrafter.openai.chat.*
75import com.cjcrafter.openai.exception.OpenAIError
86import com.cjcrafter.openai.exception.WrappedIOError
7+ import com.cjcrafter.openai.gson.ChatUserAdapter
8+ import com.cjcrafter.openai.gson.FinishReasonAdapter
99import com.google.gson.Gson
1010import com.google.gson.GsonBuilder
1111import com.google.gson.JsonObject
@@ -39,10 +39,8 @@ class OpenAI @JvmOverloads constructor(
3939 private val client : OkHttpClient = OkHttpClient ()
4040) {
4141
42- private val mediaType: MediaType = " application/json; charset=utf-8" .toMediaType()
43- private val gson: Gson = GsonBuilder ()
44- .registerTypeAdapter(ChatUser ::class .java, JsonSerializer <ChatUser > { src, _, context -> context!! .serialize(src!! .name.lowercase())!! })
45- .create()
42+ private val mediaType = " application/json; charset=utf-8" .toMediaType()
43+ private val gson = createGson()
4644
4745 private fun buildRequest (request : Any ): Request {
4846 val json = gson.toJson(request)
@@ -178,7 +176,7 @@ class OpenAI @JvmOverloads constructor(
178176
179177 val rootObject = JsonParser .parseString(jsonResponse).asJsonObject
180178 if (cache == null )
181- cache = ChatResponseChunk (rootObject)
179+ cache = gson.fromJson (rootObject, ChatResponseChunk :: class .java )
182180 else
183181 cache!! .update(rootObject)
184182
@@ -188,4 +186,16 @@ class OpenAI @JvmOverloads constructor(
188186 }
189187 })
190188 }
189+
190+ companion object {
191+
192+ @JvmStatic
193+ fun createGson (): Gson {
194+ return GsonBuilder ()
195+ .registerTypeAdapter(ChatUser ::class .java, ChatUserAdapter ())
196+ .registerTypeAdapter(FinishReason ::class .java, FinishReasonAdapter ())
197+ .registerTypeAdapter(ChatChoiceChunk ::class .java, ChatChoiceChunkAdapter ())
198+ .create()
199+ }
200+ }
191201}
0 commit comments