39 lines
1.3 KiB
Kotlin
39 lines
1.3 KiB
Kotlin
package com.rainy.token.data.proxy
|
||
|
||
/**
|
||
* 模型名 → Provider + Region 路由。
|
||
*
|
||
* 约定前缀:
|
||
* - wbcn- / workbuddy-cn / codebuddy- → WorkBuddy 国内版
|
||
* - wbintl- / workbuddy-intl → WorkBuddy 国际版
|
||
* - traecn- / trae-cn / trae- → Trae CN
|
||
* - traeintl- / trae-intl → Trae INTL
|
||
* - 其余默认 OpenAI 兼容透传(Sub2API)
|
||
*/
|
||
class ProviderRouter {
|
||
|
||
data class Route(
|
||
val kind: ProviderKind,
|
||
val region: ProviderRegion?,
|
||
)
|
||
|
||
fun route(model: String): Route {
|
||
val m = model.trim().lowercase()
|
||
return when {
|
||
m.startsWith("wbcn-") || m.startsWith("workbuddy-cn") || m.startsWith("codebuddy-") ->
|
||
Route(ProviderKind.WORKBUDDY_CN, ProviderRegion.CN)
|
||
|
||
m.startsWith("wbintl-") || m.startsWith("workbuddy-intl") || m.startsWith("workbuddy-") ->
|
||
Route(ProviderKind.WORKBUDDY_INTL, ProviderRegion.INTL)
|
||
|
||
m.startsWith("traeintl-") || m.startsWith("trae-intl") ->
|
||
Route(ProviderKind.TRAE_INTL, ProviderRegion.INTL)
|
||
|
||
m.startsWith("traecn-") || m.startsWith("trae-cn") || m.startsWith("trae-") ->
|
||
Route(ProviderKind.TRAE_CN, ProviderRegion.CN)
|
||
|
||
else -> Route(ProviderKind.OPENAI_COMPATIBLE, null)
|
||
}
|
||
}
|
||
}
|