57 lines
1.4 KiB
Kotlin
57 lines
1.4 KiB
Kotlin
package com.rainy.token.data.proxy
|
||
|
||
import kotlinx.serialization.json.JsonElement
|
||
|
||
/**
|
||
* 网关对外的最小 OpenAI 兼容模型。
|
||
* 后续按协议(Chat Completions / Responses / Anthropic)扩展。
|
||
*/
|
||
data class ProxyChatRequest(
|
||
val model: String,
|
||
val messages: List<ProxyChatMessage> = emptyList(),
|
||
val stream: Boolean = false,
|
||
val tools: List<JsonElement>? = null,
|
||
val toolChoice: JsonElement? = null,
|
||
val reasoningEffort: String? = null,
|
||
val maxTokens: Int? = null,
|
||
)
|
||
|
||
data class ProxyChatMessage(
|
||
val role: String,
|
||
val content: String? = null,
|
||
val toolCalls: List<JsonElement>? = null,
|
||
val toolCallId: String? = null,
|
||
val name: String? = null,
|
||
)
|
||
|
||
data class ProxyModel(
|
||
val id: String,
|
||
val provider: ProviderKind,
|
||
val region: ProviderRegion? = null,
|
||
)
|
||
|
||
/** 流式/非流式统一输出块,由 StreamNormalizer 归一。 */
|
||
sealed interface ProxyChatChunk {
|
||
data class Done(
|
||
val text: String? = null,
|
||
val usage: ProxyUsage? = null,
|
||
) : ProxyChatChunk
|
||
|
||
data class Delta(
|
||
val text: String? = null,
|
||
val reasoning: String? = null,
|
||
val toolCalls: List<JsonElement>? = null,
|
||
) : ProxyChatChunk
|
||
|
||
data class Error(
|
||
val message: String,
|
||
val code: Int? = null,
|
||
) : ProxyChatChunk
|
||
}
|
||
|
||
data class ProxyUsage(
|
||
val promptTokens: Long? = null,
|
||
val completionTokens: Long? = null,
|
||
val totalTokens: Long? = null,
|
||
)
|