Skip to content

Commit 11b068e

Browse files
fix(client): bad assistants v2 deserialization (#146)
1 parent 4cc3073 commit 11b068e

File tree

6 files changed

+25
-10
lines changed

6 files changed

+25
-10
lines changed

openai-java-core/src/main/kotlin/com/openai/core/handlers/SseHandler.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
// File generated from our OpenAPI spec by Stainless.
2+
13
@file:JvmName("SseHandler")
24

35
package com.openai.core.handlers
@@ -117,13 +119,14 @@ private class SseState(
117119
}
118120

119121
@JvmSynthetic
120-
internal inline fun <reified T> Handler<StreamResponse<SseMessage>>.mapJson():
121-
Handler<StreamResponse<T>> =
122+
internal inline fun <reified T> Handler<StreamResponse<SseMessage>>.mapJson(
123+
includeEventAndData: Boolean = false
124+
): Handler<StreamResponse<T>> =
122125
object : Handler<StreamResponse<T>> {
123126
override fun handle(response: HttpResponse): StreamResponse<T> =
124127
this@mapJson.handle(response).map {
125128
try {
126-
it.json<T>()
129+
it.json<T>(includeEventAndData)
127130
} catch (e: Exception) {
128131
throw OpenAIException("Error reading response", e)
129132
}

openai-java-core/src/main/kotlin/com/openai/core/http/SseMessage.kt

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
// File generated from our OpenAPI spec by Stainless.
2+
13
package com.openai.core.http
24

35
import com.fasterxml.jackson.databind.json.JsonMapper
@@ -39,7 +41,17 @@ private constructor(
3941
fun build(): SseMessage = SseMessage(jsonMapper!!, event, data, id, retry)
4042
}
4143

42-
inline fun <reified T> json(): T = jsonMapper.readerFor(jacksonTypeRef<T>()).readValue(jsonNode)
44+
inline fun <reified T> json(includeEventAndData: Boolean = false): T {
45+
var jsonNode = jsonNode
46+
if (includeEventAndData) {
47+
val newJsonNode = jsonMapper.createObjectNode()
48+
event?.let { newJsonNode.put("event", event) }
49+
newJsonNode.replace("data", jsonNode)
50+
jsonNode = newJsonNode
51+
}
52+
53+
return jsonMapper.readerFor(jacksonTypeRef<T>()).readValue(jsonNode)
54+
}
4355

4456
private val jsonNode by lazy {
4557
try {

openai-java-core/src/main/kotlin/com/openai/services/async/beta/ThreadServiceAsyncImpl.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ internal constructor(
211211

212212
private val createAndRunStreamingHandler: Handler<StreamResponse<AssistantStreamEvent>> =
213213
sseHandler(clientOptions.jsonMapper)
214-
.mapJson<AssistantStreamEvent>()
214+
.mapJson<AssistantStreamEvent>(includeEventAndData = true)
215215
.withErrorHandler(errorHandler)
216216

217217
/** Create a thread and run it in one request. */

openai-java-core/src/main/kotlin/com/openai/services/async/beta/threads/RunServiceAsyncImpl.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ internal constructor(
8282

8383
private val createStreamingHandler: Handler<StreamResponse<AssistantStreamEvent>> =
8484
sseHandler(clientOptions.jsonMapper)
85-
.mapJson<AssistantStreamEvent>()
85+
.mapJson<AssistantStreamEvent>(includeEventAndData = true)
8686
.withErrorHandler(errorHandler)
8787

8888
/** Create a run. */
@@ -299,7 +299,7 @@ internal constructor(
299299

300300
private val submitToolOutputsStreamingHandler: Handler<StreamResponse<AssistantStreamEvent>> =
301301
sseHandler(clientOptions.jsonMapper)
302-
.mapJson<AssistantStreamEvent>()
302+
.mapJson<AssistantStreamEvent>(includeEventAndData = true)
303303
.withErrorHandler(errorHandler)
304304

305305
/**

openai-java-core/src/main/kotlin/com/openai/services/blocking/beta/ThreadServiceImpl.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ internal constructor(
197197

198198
private val createAndRunStreamingHandler: Handler<StreamResponse<AssistantStreamEvent>> =
199199
sseHandler(clientOptions.jsonMapper)
200-
.mapJson<AssistantStreamEvent>()
200+
.mapJson<AssistantStreamEvent>(includeEventAndData = true)
201201
.withErrorHandler(errorHandler)
202202

203203
/** Create a thread and run it in one request. */

openai-java-core/src/main/kotlin/com/openai/services/blocking/beta/threads/RunServiceImpl.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ internal constructor(
7575

7676
private val createStreamingHandler: Handler<StreamResponse<AssistantStreamEvent>> =
7777
sseHandler(clientOptions.jsonMapper)
78-
.mapJson<AssistantStreamEvent>()
78+
.mapJson<AssistantStreamEvent>(includeEventAndData = true)
7979
.withErrorHandler(errorHandler)
8080

8181
/** Create a run. */
@@ -278,7 +278,7 @@ internal constructor(
278278

279279
private val submitToolOutputsStreamingHandler: Handler<StreamResponse<AssistantStreamEvent>> =
280280
sseHandler(clientOptions.jsonMapper)
281-
.mapJson<AssistantStreamEvent>()
281+
.mapJson<AssistantStreamEvent>(includeEventAndData = true)
282282
.withErrorHandler(errorHandler)
283283

284284
/**

0 commit comments

Comments
 (0)