Skip to content

Commit 8042591

Browse files
fix(streaming): support assistants (#106)
1 parent c980a8e commit 8042591

File tree

2 files changed

+14
-61
lines changed

2 files changed

+14
-61
lines changed

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

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -39,27 +39,21 @@ internal fun sseHandler(jsonMapper: JsonMapper): Handler<StreamResponse<SseMessa
3939
continue
4040
}
4141

42-
if (message.event == null) {
43-
val error =
44-
message
45-
.json<JsonValue>()
46-
.asObject()
47-
.getOrNull()
48-
?.get("error")
49-
if (error != null) {
50-
val errorMessage =
51-
error.asString().getOrNull()
52-
?: error
53-
.asObject()
54-
.getOrNull()
55-
?.get("message")
56-
?.asString()
57-
?.getOrNull()
58-
?: "An error occurred during streaming"
59-
throw OpenAIException(errorMessage)
60-
}
61-
yield(message)
42+
val error =
43+
message.json<JsonValue>().asObject().getOrNull()?.get("error")
44+
if (error != null) {
45+
val errorMessage =
46+
error.asString().getOrNull()
47+
?: error
48+
.asObject()
49+
.getOrNull()
50+
?.get("message")
51+
?.asString()
52+
?.getOrNull()
53+
?: "An error occurred during streaming"
54+
throw OpenAIException(errorMessage)
6255
}
56+
yield(message)
6357
}
6458
}
6559
}

openai-java-core/src/test/kotlin/com/openai/core/handlers/SseHandlerTest.kt

Lines changed: 0 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import com.openai.core.http.Headers
44
import com.openai.core.http.HttpResponse
55
import com.openai.core.http.SseMessage
66
import com.openai.core.jsonMapper
7-
import com.openai.errors.OpenAIException
87
import java.io.ByteArrayInputStream
98
import java.io.InputStream
109
import java.nio.charset.StandardCharsets
@@ -22,25 +21,6 @@ class SseHandlerTest {
2221
internal val expectedMessages: List<SseMessage>? = null,
2322
internal val expectedException: Exception? = null
2423
) {
25-
DATA_MISSING_EVENT(
26-
buildString {
27-
append("data: {\"foo\":true}\n")
28-
append("\n")
29-
},
30-
listOf(sseMessageBuilder().data("{\"foo\":true}").build())
31-
),
32-
MULTIPLE_DATA_MISSING_EVENT(
33-
buildString {
34-
append("data: {\"foo\":true}\n")
35-
append("\n")
36-
append("data: {\"bar\":false}\n")
37-
append("\n")
38-
},
39-
listOf(
40-
sseMessageBuilder().data("{\"foo\":true}").build(),
41-
sseMessageBuilder().data("{\"bar\":false}").build()
42-
)
43-
),
4424
DATA_JSON_ESCAPED_DOUBLE_NEW_LINE(
4525
buildString {
4626
append("data: {\n")
@@ -80,27 +60,6 @@ class SseHandlerTest {
8060
append("\n")
8161
},
8262
listOf(sseMessageBuilder().data("{\"content\":\"известни\"}").build())
83-
),
84-
STRING_ERROR_PROPERTY(
85-
buildString {
86-
append("data: {\"error\":\"ERROR!\"}\n")
87-
append("\n")
88-
},
89-
expectedException = OpenAIException("ERROR!")
90-
),
91-
ERROR_PROPERTY_WITH_MESSAGE(
92-
buildString {
93-
append("data: {\"error\":{\"message\":\"ERROR!\"}}\n")
94-
append("\n")
95-
},
96-
expectedException = OpenAIException("ERROR!")
97-
),
98-
ERROR_PROPERTY_MALFORMED(
99-
buildString {
100-
append("data: {\"error\":42}\n")
101-
append("\n")
102-
},
103-
expectedException = OpenAIException("An error occurred during streaming")
10463
)
10564
}
10665

0 commit comments

Comments
 (0)