mirror of
https://github.com/Wei-Shaw/sub2api.git
synced 2026-10-19 16:17:56 +00:00
fix: treat Kimi 1M suffix as client syntax
This commit is contained in:
@@ -714,13 +714,13 @@ func (s *BillingService) getFallbackPricing(model string) *ModelPricing {
|
||||
|
||||
// 月之暗面 Kimi(kimi-k3 / k3 / k3-256k / kimi-k2.6 / kimi-for-coding / kimi-k2.5 / kimi-k2-thinking / kimi-k2)
|
||||
// K2-0905 / K2-0711 官方未保留定价,不进入 fallback。
|
||||
// K3 规则置于 K2 前:API Platform 仅官方 kimi-k3 / kimi-k3[1m](及 / 路径后缀);
|
||||
// K3 规则置于 K2 前:API Platform 仅官方 kimi-k3(及 / 路径后缀);
|
||||
// Code bare aliases 仅精确 k3 / k3-256k 或 /k3|/k3-256k 后缀,避免 kimi-k30 等未知型号误命中。
|
||||
// 注意:kimi-k3[1m] 是 Claude Code 上下文选择语法,不是 Kimi API 模型 ID,不进入 fallback。
|
||||
if strings.Contains(modelLower, "kimi-for-coding") {
|
||||
return s.fallbackPrices["kimi-for-coding"]
|
||||
}
|
||||
if modelLower == "kimi-k3" || modelLower == "kimi-k3[1m]" ||
|
||||
strings.HasSuffix(modelLower, "/kimi-k3") || strings.HasSuffix(modelLower, "/kimi-k3[1m]") ||
|
||||
if modelLower == "kimi-k3" || strings.HasSuffix(modelLower, "/kimi-k3") ||
|
||||
modelLower == "k3" || modelLower == "k3-256k" ||
|
||||
strings.HasSuffix(modelLower, "/k3") || strings.HasSuffix(modelLower, "/k3-256k") {
|
||||
return s.fallbackPrices["kimi-k3"]
|
||||
|
||||
@@ -596,13 +596,6 @@ func TestGetFallbackPricing_FamilyMatching(t *testing.T) {
|
||||
expectedOutput: floatPtr(15e-6),
|
||||
expectedCacheRead: floatPtr(0.30e-6),
|
||||
},
|
||||
{
|
||||
name: "kimi k3 anthropic 1m suffix",
|
||||
model: "kimi-k3[1m]",
|
||||
expectedInput: 3e-6,
|
||||
expectedOutput: floatPtr(15e-6),
|
||||
expectedCacheRead: floatPtr(0.30e-6),
|
||||
},
|
||||
{
|
||||
name: "kimi code bare alias k3",
|
||||
model: "k3",
|
||||
@@ -619,7 +612,7 @@ func TestGetFallbackPricing_FamilyMatching(t *testing.T) {
|
||||
},
|
||||
{
|
||||
name: "kimi k3 path suffix moonshot",
|
||||
model: "moonshot/kimi-k3[1m]",
|
||||
model: "moonshot/kimi-k3",
|
||||
expectedInput: 3e-6,
|
||||
expectedOutput: floatPtr(15e-6),
|
||||
expectedCacheRead: floatPtr(0.30e-6),
|
||||
@@ -753,6 +746,9 @@ func TestGetFallbackPricing_FamilyMatching(t *testing.T) {
|
||||
// kimi-k3 非 Contains:kimi-k30 / 内嵌 foo-kimi-k3-bar 不得误命中。
|
||||
{name: "kimi-k30 unknown no fallback", model: "kimi-k30", expectNilPricing: true},
|
||||
{name: "embedded kimi-k3 unknown no fallback", model: "foo-kimi-k3-bar", expectNilPricing: true},
|
||||
// kimi-k3[1m] 是 Claude Code 上下文选择语法,不是 Kimi API 模型 ID,不命中 fallback。
|
||||
{name: "kimi-k3[1m] not an API model id no fallback", model: "kimi-k3[1m]", expectNilPricing: true},
|
||||
{name: "path kimi-k3[1m] not an API model id no fallback", model: "moonshot/kimi-k3[1m]", expectNilPricing: true},
|
||||
// kimi-k2-0905 / kimi-k2-0711 官方未公布独立价,走 kimi-k2 隐性回退(接受)——
|
||||
// 如未来官方公布独立价,需在 getFallbackPricing 加显式分支。
|
||||
{
|
||||
|
||||
@@ -23,7 +23,6 @@ func TestResolveThinkingProtocol(t *testing.T) {
|
||||
{"kimi-coding", "kimi-coding-v2", ThinkingProtocolPassbackRequired},
|
||||
{"kimi-k2-thinking", "kimi-k2-thinking", ThinkingProtocolPassbackRequired},
|
||||
{"kimi-k3 platform", "kimi-k3", ThinkingProtocolPassbackRequired},
|
||||
{"kimi-k3 anthropic 1m", "kimi-k3[1m]", ThinkingProtocolPassbackRequired},
|
||||
{"kimi code bare k3", "k3", ThinkingProtocolPassbackRequired},
|
||||
{"kimi code bare k3-256k", "k3-256k", ThinkingProtocolPassbackRequired},
|
||||
{"moonshot-v1", "moonshot-v1-32k", ThinkingProtocolPassbackRequired},
|
||||
|
||||
Reference in New Issue
Block a user