feat: add Kimi K2.7 model option (#1515)

* feat: add Kimi K2.7 model option

Surface Moonshot's newly released Kimi K2.7 in the model picker, routed
through Fireworks following the existing kimi-k2pN convention, with the
same none/low/medium/high reasoning efforts (default high) as K2.6.

Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>

* fix: correct Kimi K2.7 Fireworks model id to kimi-k2p7-code

Fireworks now hosts the K2.7 release as
accounts/fireworks/models/kimi-k2p7-code (the `kimi-k2p7` slug 404s).
Point the model option and its test at the live model id.

Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>

* fix: drop unsupported "none" effort for Kimi K2.7

Kimi K2.7 Code is a thinking-only model — Moonshot documents that it does
not support non-thinking mode (passing thinking={"type":"disabled"} or
reasoning_effort="none" errors). Removing "none" from the advertised
efforts so the picker can't send an invalid Fireworks request.

Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>

---------

Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
This commit is contained in:
Johannes du Plessis 2026-06-13 08:10:04 -07:00 • committed by GitHub
parent bd5d5b24d4
commit 38dcc37040
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 20 additions and 0 deletions

View file

@ -35,6 +35,13 @@ SUPPORTED_MODELS: list[ModelOption] = [
"default_effort": "medium",
"supports_images": True,
},
{
"id": "fireworks:accounts/fireworks/models/kimi-k2p7-code",
"label": "Kimi K2.7",
"efforts": ["low", "medium", "high"],
"default_effort": "high",
"supports_images": False,
},
{
"id": "fireworks:accounts/fireworks/models/kimi-k2p6",
"label": "Kimi K2.6",

View file

@ -25,6 +25,19 @@ def test_provider_model_kwargs_for_fireworks() -> None:
assert kwargs["model_kwargs"] == {"reasoning_effort": "high"}
def test_kimi_k2p7_is_supported() -> None:
kimi_k2p7 = next(
(m for m in SUPPORTED_MODELS if m["id"].endswith("kimi-k2p7-code")),
None,
)
assert kimi_k2p7 is not None
assert kimi_k2p7["efforts"] == ["low", "medium", "high"]
assert "none" not in kimi_k2p7["efforts"]
assert kimi_k2p7["default_effort"] == "high"
kwargs = provider_model_kwargs(kimi_k2p7["id"], "high", max_tokens=16_000)
assert kwargs["model_kwargs"] == {"reasoning_effort": "high"}
def test_provider_model_kwargs_for_fireworks_none_disables_reasoning() -> None:
kwargs = provider_model_kwargs(
"fireworks:accounts/fireworks/models/deepseek-v4-pro",