fix(composite): route Kimi Code K3 model IDs

This commit is contained in:
HypoxanthineOvO
2026-08-24 23:09:30 +08:00
parent e2d9b823f6
commit 4347e5555b
4 changed files with 24 additions and 1 deletions
@@ -31,6 +31,7 @@ func TestOpenAICompatibleTextTargetAllowsCompositeProviders(t *testing.T) {
}{
{model: "grok-4.3", platform: service.PlatformGrok},
{model: "kimi-k2-thinking", platform: service.PlatformKimi},
{model: "k3", platform: service.PlatformKimi},
{model: "glm-5.2", platform: service.PlatformZhipu},
{model: "deepseek-v3.2", platform: service.PlatformDeepseek},
}
@@ -139,7 +139,9 @@ func DetectModelPlatform(model string) (string, bool) {
return PlatformGemini, true
case normalized == "grok" || strings.HasPrefix(normalized, "grok-"):
return PlatformGrok, true
case strings.HasPrefix(normalized, "kimi-"),
case normalized == "k3",
normalized == "k3-256k",
strings.HasPrefix(normalized, "kimi-"),
strings.HasPrefix(normalized, "moonshot-"):
return PlatformKimi, true
case strings.HasPrefix(normalized, "glm-"):
@@ -26,9 +26,13 @@ func TestDetectModelPlatform(t *testing.T) {
{name: "grok", model: "grok-4", platform: PlatformGrok, ok: true},
{name: "xai prefix", model: "xai/grok-4", platform: PlatformGrok, ok: true},
{name: "kimi", model: "kimi-k2-thinking", platform: PlatformKimi, ok: true},
{name: "kimi code bare k3", model: "K3", platform: PlatformKimi, ok: true},
{name: "kimi code bare k3 256k", model: "k3-256k", platform: PlatformKimi, ok: true},
{name: "kimi code provider prefix", model: "kimi-code/k3", platform: PlatformKimi, ok: true},
{name: "moonshot prefix", model: "moonshot/moonshot-v1-32k", platform: PlatformKimi, ok: true},
{name: "zhipu", model: "glm-5.2", platform: PlatformZhipu, ok: true},
{name: "deepseek", model: "deepseek-v4-pro", platform: PlatformDeepseek, ok: true},
{name: "unknown k3 alias", model: "k3-preview", ok: false},
{name: "unknown", model: "llama-4-maverick", ok: false},
}
@@ -191,6 +191,22 @@ func TestCompositeRouteResolverIgnoresDisabledRoutesAndFallsBackToDetector(t *te
require.Nil(t, decision.Route)
}
func TestCompositeRouteResolverDetectsKimiCodeBareModels(t *testing.T) {
resolver := NewCompositeRouteResolver(nil)
for _, model := range []string{"k3", "k3-256k", "kimi-code/k3"} {
t.Run(model, func(t *testing.T) {
decision, err := resolver.Resolve(context.Background(), 7, model, CompositeRouteEndpointMessages)
require.NoError(t, err)
require.True(t, decision.Matched)
require.Equal(t, CompositeRouteSourceDetector, decision.Source)
require.Equal(t, PlatformKimi, decision.TargetPlatform)
require.Equal(t, model, decision.UpstreamModel)
})
}
}
func TestCompositeRouteResolverExplicitRoutesCoverBucketTwoProviders(t *testing.T) {
resolver := NewCompositeRouteResolver(compositeRouteRepoStub{
routes: []CompositeModelRoute{