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 = emptyList(), val stream: Boolean = false, val tools: List? = 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? = 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? = 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, )