Skip to content

Commit 36a5c7d

Browse files
committed
chore(dependencies): update dependencies and refactor SSE handling
- Update various dependencies to newer versions, including OkHttp, Retrofit, and GitHub API. - Replace RxJava2 with RxJava3 in SSE processing. - Add new DTOs and utility classes for custom SSE handling. - Refactor SSE processing logic and remove unused imports.
1 parent cc27aac commit 36a5c7d

File tree

5 files changed

+76
-25
lines changed

5 files changed

+76
-25
lines changed

build.gradle.kts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -413,11 +413,13 @@ project(":core") {
413413
testFramework(TestFrameworkType.Bundled)
414414
}
415415

416-
implementation("com.squareup.okhttp3:okhttp:4.4.1")
417-
implementation("com.squareup.okhttp3:okhttp-sse:4.4.1")
416+
implementation("io.reactivex.rxjava3:rxjava:3.1.10")
418417

419-
implementation("com.squareup.retrofit2:converter-jackson:2.9.0")
420-
implementation("com.squareup.retrofit2:converter-gson:2.9.0")
418+
implementation("com.squareup.okhttp3:okhttp:4.12.0")
419+
implementation("com.squareup.okhttp3:okhttp-sse:4.12.0")
420+
421+
implementation("com.squareup.retrofit2:converter-jackson:2.11.0")
422+
implementation("com.squareup.retrofit2:converter-gson:2.11.0")
421423
implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.14.2")
422424
implementation("com.fasterxml.jackson.core:jackson-databind:2.14.2")
423425

@@ -428,27 +430,25 @@ project(":core") {
428430

429431
implementation("com.nfeld.jsonpathkt:jsonpathkt:2.0.1")
430432

431-
implementation("org.jetbrains:markdown:0.6.1")
433+
implementation("org.jetbrains:markdown:0.7.3")
432434

433435
// chocolate factory
434436
// follow: https://onnxruntime.ai/docs/get-started/with-java.html
435437
// implementation("com.microsoft.onnxruntime:onnxruntime:1.18.0")
436438
// implementation("ai.djl.huggingface:tokenizers:0.29.0")
437-
// implementation("cc.unitmesh:cocoa-core:1.0.0")
439+
implementation("cc.unitmesh:cocoa-core:1.0.0")
438440
// implementation("cc.unitmesh:document:1.0.0")
439441

440442
// kanban
441-
implementation("org.kohsuke:github-api:1.314")
442-
implementation("org.gitlab4j:gitlab4j-api:5.3.0")
443+
implementation("org.kohsuke:github-api:1.326")
444+
implementation("org.gitlab4j:gitlab4j-api:5.8.0")
443445

444446
// template engine
445447
implementation("org.apache.velocity:velocity-engine-core:2.3")
446448

447449
// token count
448450
implementation("com.knuddels:jtokkit:1.0.0")
449451

450-
implementation("org.apache.commons:commons-text:1.12.0")
451-
452452
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3")
453453
// junit
454454
testImplementation("io.kotest:kotest-assertions-core:5.7.2")

core/src/main/kotlin/cc/unitmesh/devti/llms/custom/CustomSSEProcessor.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,9 @@ import com.intellij.openapi.diagnostic.logger
1212
import com.intellij.openapi.project.Project
1313
import com.nfeld.jsonpathkt.JsonPath
1414
import com.nfeld.jsonpathkt.extension.read
15-
import com.theokanning.openai.completion.chat.ChatCompletionResult
16-
import com.theokanning.openai.service.SSE
17-
import io.reactivex.BackpressureStrategy
18-
import io.reactivex.Flowable
19-
import io.reactivex.FlowableEmitter
15+
import io.reactivex.rxjava3.core.BackpressureStrategy
16+
import io.reactivex.rxjava3.core.Flowable
17+
import io.reactivex.rxjava3.core.FlowableEmitter
2018
import kotlinx.coroutines.Dispatchers
2119
import kotlinx.coroutines.channels.awaitClose
2220
import kotlinx.coroutines.flow.Flow
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package cc.unitmesh.devti.llms.custom
2+
3+
import com.fasterxml.jackson.annotation.JsonAlias
4+
import com.fasterxml.jackson.annotation.JsonInclude
5+
import com.fasterxml.jackson.annotation.JsonProperty
6+
import com.fasterxml.jackson.databind.JsonNode
7+
8+
data class ChatFunctionCall(
9+
val name: String? = null,
10+
val arguments: JsonNode? = null,
11+
)
12+
13+
data class ChatMessage(
14+
val role: String,
15+
@JsonInclude
16+
val content: String? = null,
17+
val name: String? = null,
18+
@JsonProperty("function_call")
19+
val functionCall: ChatFunctionCall? = null,
20+
)
21+
22+
data class ChatCompletionChoice(
23+
val index: Int? = null,
24+
@JsonAlias("delta")
25+
val message: ChatMessage? = null,
26+
@JsonProperty("finish_reason")
27+
val finishReason: String? = null,
28+
)
29+
30+
data class Usage(
31+
@JsonProperty("prompt_tokens")
32+
val promptTokens: Long = 0,
33+
@JsonProperty("completion_tokens")
34+
val completionTokens: Long = 0,
35+
@JsonProperty("total_tokens")
36+
val totalTokens: Long = 0,
37+
)
38+
39+
data class ChatCompletionResult(
40+
val id: String? = null,
41+
val `object`: String? = null,
42+
val created: Long = 0,
43+
val model: String? = null,
44+
val choices: List<ChatCompletionChoice>,
45+
val usage: Usage? = null,
46+
)

core/src/main/kotlin/cc/unitmesh/devti/llms/custom/ResponseBodyCallback.kt

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,7 @@
2222
package cc.unitmesh.devti.llms.custom
2323

2424
import com.intellij.openapi.diagnostic.logger
25-
import com.theokanning.openai.service.OpenAiService
26-
import com.theokanning.openai.service.SSE
27-
import com.theokanning.openai.service.SSEFormatException
28-
import io.reactivex.FlowableEmitter
25+
import io.reactivex.rxjava3.core.FlowableEmitter
2926
import okhttp3.Call
3027
import okhttp3.Callback
3128
import okhttp3.Response
@@ -85,7 +82,7 @@ class ResponseBodyCallback(private val emitter: FlowableEmitter<SSE>, private va
8582
val eventName = line!!.substring(6).trim { it <= ' ' }
8683
if (eventName == "ping") {
8784
// skip ping event and data
88-
emitter.onNext(sse)
85+
emitter.onNext(sse!!)
8986
emitter.onNext(sse)
9087
}
9188

@@ -111,7 +108,7 @@ class ResponseBodyCallback(private val emitter: FlowableEmitter<SSE>, private va
111108
}
112109

113110
else -> {
114-
throw SSEFormatException("Invalid sse format! '$line'")
111+
throw AutoDevHttpException("Invalid sse format! '$line'", response.code)
115112
}
116113
}
117114
}
@@ -137,8 +134,4 @@ class ResponseBodyCallback(private val emitter: FlowableEmitter<SSE>, private va
137134
override fun onFailure(call: Call, e: IOException) {
138135
emitter.onError(e)
139136
}
140-
141-
companion object {
142-
private val mapper = OpenAiService.defaultObjectMapper()
143-
}
144137
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package cc.unitmesh.devti.llms.custom
2+
3+
class SSE(val data: String) {
4+
fun toBytes(): ByteArray {
5+
return String.format("data: %s\n\n", this.data).toByteArray()
6+
}
7+
8+
val isDone: Boolean
9+
get() = DONE_DATA.equals(this.data, ignoreCase = true)
10+
11+
companion object {
12+
private const val DONE_DATA = "[DONE]"
13+
}
14+
}

0 commit comments

Comments
 (0)