refactor(llmx-impl-openai): 重构 OpenAI 模型服务和响应处理 #51

Merged
gewuyou merged 1 commits from dev into test 2025-05-11 22:45:29 +08:00
2 changed files with 7 additions and 6 deletions

View File

@ -54,19 +54,20 @@ class OpenAiModelServiceImpl(
extractContent = { json -> extractContent = { json ->
val node = objectMapper.readTree(json) val node = objectMapper.readTree(json)
val type = node["type"]?.asText() val type = node["type"]?.asText()
val response = node["response"]
val data = response ?: node
when (type) { when (type) {
"response.output_text.delta" -> { "response.output_text.delta" -> {
val outputTextDelta = objectMapper.treeToValue(node, OutputTextDelta::class.java) val outputTextDelta = objectMapper.treeToValue(data, OutputTextDelta::class.java)
ChatResponsePart(content = outputTextDelta.delta) ChatResponsePart(content = outputTextDelta.delta)
} }
"response.output_text.done" -> { "response.output_text.done" -> {
val outputTextDone = objectMapper.treeToValue(node, OutputTextDone::class.java) val outputTextDone = objectMapper.treeToValue(data, OutputTextDone::class.java)
ChatResponsePart(content = outputTextDone.text, done = true) ChatResponsePart(content = outputTextDone.text, done = true)
} }
"response.completed" -> { "response.completed" -> {
val completed = objectMapper.treeToValue(node, FullResponse::class.java) val completed = objectMapper.treeToValue(data, FullResponse::class.java)
val usage = completed.usage?.let { val usage = completed.usage?.let {
Usage( Usage(
promptTokens = it.inputTokens ?: 0, promptTokens = it.inputTokens ?: 0,

View File

@ -6,8 +6,8 @@ import com.fasterxml.jackson.annotation.JsonProperty
data class SseEvent<T>( data class SseEvent<T>(
@JsonProperty("type") @JsonProperty("type")
val type: String, val type: String,
@JsonProperty("data") @JsonProperty("response")
val data: T val response: T
) )
/** response.created, response.in_progress, response.completed 共用结构 */ /** response.created, response.in_progress, response.completed 共用结构 */