mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-30 06:41:51 +00:00
chore(models): swap qwen3.6-plus → qwen3.7-max in openrouter+nous lists (#32809)
Updates curated picker lists for both the OpenRouter fallback snapshot (`OPENROUTER_MODELS`) and the Nous Portal list (`_PROVIDER_MODELS['nous']`). Regenerates website/static/api/model-catalog.json via `scripts/build_model_catalog.py` to keep the docs-hosted manifest in sync (drift guard in `test_in_repo_lists_match_manifest`). tests/hermes_cli/test_models.py fixtures updated — they pinned the old model id as their live-fetch sample.
This commit is contained in:
parent
8b69ec03af
commit
ccd3d04fc5
3 changed files with 14 additions and 14 deletions
|
|
@ -37,7 +37,7 @@ OPENROUTER_MODELS: list[tuple[str, str]] = [
|
||||||
("anthropic/claude-sonnet-4.6", ""),
|
("anthropic/claude-sonnet-4.6", ""),
|
||||||
("moonshotai/kimi-k2.6", "recommended"),
|
("moonshotai/kimi-k2.6", "recommended"),
|
||||||
("openrouter/pareto-code", "auto-routes to cheapest coder meeting openrouter.min_coding_score"),
|
("openrouter/pareto-code", "auto-routes to cheapest coder meeting openrouter.min_coding_score"),
|
||||||
("qwen/qwen3.6-plus", ""),
|
("qwen/qwen3.7-max", ""),
|
||||||
("anthropic/claude-haiku-4.5", ""),
|
("anthropic/claude-haiku-4.5", ""),
|
||||||
("openai/gpt-5.5", ""),
|
("openai/gpt-5.5", ""),
|
||||||
("openai/gpt-5.5-pro", ""),
|
("openai/gpt-5.5-pro", ""),
|
||||||
|
|
@ -166,7 +166,7 @@ _PROVIDER_MODELS: dict[str, list[str]] = {
|
||||||
"anthropic/claude-opus-4.6",
|
"anthropic/claude-opus-4.6",
|
||||||
"anthropic/claude-sonnet-4.6",
|
"anthropic/claude-sonnet-4.6",
|
||||||
"moonshotai/kimi-k2.6",
|
"moonshotai/kimi-k2.6",
|
||||||
"qwen/qwen3.6-plus",
|
"qwen/qwen3.7-max",
|
||||||
"anthropic/claude-haiku-4.5",
|
"anthropic/claude-haiku-4.5",
|
||||||
"openai/gpt-5.5",
|
"openai/gpt-5.5",
|
||||||
"openai/gpt-5.5-pro",
|
"openai/gpt-5.5-pro",
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ import hermes_cli.models as _models_mod
|
||||||
|
|
||||||
LIVE_OPENROUTER_MODELS = [
|
LIVE_OPENROUTER_MODELS = [
|
||||||
("anthropic/claude-opus-4.6", "recommended"),
|
("anthropic/claude-opus-4.6", "recommended"),
|
||||||
("qwen/qwen3.6-plus", ""),
|
("qwen/qwen3.7-max", ""),
|
||||||
("nvidia/nemotron-3-super-120b-a12b:free", "free"),
|
("nvidia/nemotron-3-super-120b-a12b:free", "free"),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
@ -70,7 +70,7 @@ class TestFetchOpenRouterModels:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def read(self):
|
def read(self):
|
||||||
return b'{"data":[{"id":"anthropic/claude-opus-4.6","pricing":{"prompt":"0.000015","completion":"0.000075"}},{"id":"qwen/qwen3.6-plus","pricing":{"prompt":"0.000000325","completion":"0.00000195"}},{"id":"nvidia/nemotron-3-super-120b-a12b:free","pricing":{"prompt":"0","completion":"0"}}]}'
|
return b'{"data":[{"id":"anthropic/claude-opus-4.6","pricing":{"prompt":"0.000015","completion":"0.000075"}},{"id":"qwen/qwen3.7-max","pricing":{"prompt":"0.000000325","completion":"0.00000195"}},{"id":"nvidia/nemotron-3-super-120b-a12b:free","pricing":{"prompt":"0","completion":"0"}}]}'
|
||||||
|
|
||||||
monkeypatch.setattr(_models_mod, "_openrouter_catalog_cache", None)
|
monkeypatch.setattr(_models_mod, "_openrouter_catalog_cache", None)
|
||||||
with patch("hermes_cli.models.urllib.request.urlopen", return_value=_Resp()):
|
with patch("hermes_cli.models.urllib.request.urlopen", return_value=_Resp()):
|
||||||
|
|
@ -78,7 +78,7 @@ class TestFetchOpenRouterModels:
|
||||||
|
|
||||||
assert models == [
|
assert models == [
|
||||||
("anthropic/claude-opus-4.6", "recommended"),
|
("anthropic/claude-opus-4.6", "recommended"),
|
||||||
("qwen/qwen3.6-plus", ""),
|
("qwen/qwen3.7-max", ""),
|
||||||
("nvidia/nemotron-3-super-120b-a12b:free", "free"),
|
("nvidia/nemotron-3-super-120b-a12b:free", "free"),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
@ -106,14 +106,14 @@ class TestFetchOpenRouterModels:
|
||||||
def read(self):
|
def read(self):
|
||||||
# opus-4.6 advertises tools → kept
|
# opus-4.6 advertises tools → kept
|
||||||
# nano-image has explicit supported_parameters that OMITS tools → dropped
|
# nano-image has explicit supported_parameters that OMITS tools → dropped
|
||||||
# qwen3.6-plus advertises tools → kept
|
# qwen3.7-max advertises tools → kept
|
||||||
return (
|
return (
|
||||||
b'{"data":['
|
b'{"data":['
|
||||||
b'{"id":"anthropic/claude-opus-4.6","pricing":{"prompt":"0.000015","completion":"0.000075"},'
|
b'{"id":"anthropic/claude-opus-4.6","pricing":{"prompt":"0.000015","completion":"0.000075"},'
|
||||||
b'"supported_parameters":["temperature","tools","tool_choice"]},'
|
b'"supported_parameters":["temperature","tools","tool_choice"]},'
|
||||||
b'{"id":"google/gemini-3-pro-image-preview","pricing":{"prompt":"0.00001","completion":"0.00003"},'
|
b'{"id":"google/gemini-3-pro-image-preview","pricing":{"prompt":"0.00001","completion":"0.00003"},'
|
||||||
b'"supported_parameters":["temperature","response_format"]},'
|
b'"supported_parameters":["temperature","response_format"]},'
|
||||||
b'{"id":"qwen/qwen3.6-plus","pricing":{"prompt":"0.000000325","completion":"0.00000195"},'
|
b'{"id":"qwen/qwen3.7-max","pricing":{"prompt":"0.000000325","completion":"0.00000195"},'
|
||||||
b'"supported_parameters":["tools","temperature"]}'
|
b'"supported_parameters":["tools","temperature"]}'
|
||||||
b']}'
|
b']}'
|
||||||
)
|
)
|
||||||
|
|
@ -125,7 +125,7 @@ class TestFetchOpenRouterModels:
|
||||||
[
|
[
|
||||||
("anthropic/claude-opus-4.6", ""),
|
("anthropic/claude-opus-4.6", ""),
|
||||||
("google/gemini-3-pro-image-preview", ""),
|
("google/gemini-3-pro-image-preview", ""),
|
||||||
("qwen/qwen3.6-plus", ""),
|
("qwen/qwen3.7-max", ""),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
monkeypatch.setattr(_models_mod, "_openrouter_catalog_cache", None)
|
monkeypatch.setattr(_models_mod, "_openrouter_catalog_cache", None)
|
||||||
|
|
@ -134,7 +134,7 @@ class TestFetchOpenRouterModels:
|
||||||
|
|
||||||
ids = [mid for mid, _ in models]
|
ids = [mid for mid, _ in models]
|
||||||
assert "anthropic/claude-opus-4.6" in ids
|
assert "anthropic/claude-opus-4.6" in ids
|
||||||
assert "qwen/qwen3.6-plus" in ids
|
assert "qwen/qwen3.7-max" in ids
|
||||||
# Image-only model advertised supported_parameters WITHOUT tools → must be dropped.
|
# Image-only model advertised supported_parameters WITHOUT tools → must be dropped.
|
||||||
assert "google/gemini-3-pro-image-preview" not in ids
|
assert "google/gemini-3-pro-image-preview" not in ids
|
||||||
|
|
||||||
|
|
@ -158,7 +158,7 @@ class TestFetchOpenRouterModels:
|
||||||
return (
|
return (
|
||||||
b'{"data":['
|
b'{"data":['
|
||||||
b'{"id":"anthropic/claude-opus-4.6","pricing":{"prompt":"0.000015","completion":"0.000075"}},'
|
b'{"id":"anthropic/claude-opus-4.6","pricing":{"prompt":"0.000015","completion":"0.000075"}},'
|
||||||
b'{"id":"qwen/qwen3.6-plus","pricing":{"prompt":"0.000000325","completion":"0.00000195"}}'
|
b'{"id":"qwen/qwen3.7-max","pricing":{"prompt":"0.000000325","completion":"0.00000195"}}'
|
||||||
b']}'
|
b']}'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -168,7 +168,7 @@ class TestFetchOpenRouterModels:
|
||||||
|
|
||||||
ids = [mid for mid, _ in models]
|
ids = [mid for mid, _ in models]
|
||||||
assert "anthropic/claude-opus-4.6" in ids
|
assert "anthropic/claude-opus-4.6" in ids
|
||||||
assert "qwen/qwen3.6-plus" in ids
|
assert "qwen/qwen3.7-max" in ids
|
||||||
|
|
||||||
|
|
||||||
class TestOpenRouterToolSupportHelper:
|
class TestOpenRouterToolSupportHelper:
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"updated_at": "2026-05-11T16:41:16Z",
|
"updated_at": "2026-05-26T20:49:36Z",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"source": "hermes-agent repo",
|
"source": "hermes-agent repo",
|
||||||
"docs": "https://hermes-agent.nousresearch.com/docs/reference/model-catalog"
|
"docs": "https://hermes-agent.nousresearch.com/docs/reference/model-catalog"
|
||||||
|
|
@ -33,7 +33,7 @@
|
||||||
"description": "auto-routes to cheapest coder meeting openrouter.min_coding_score"
|
"description": "auto-routes to cheapest coder meeting openrouter.min_coding_score"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "qwen/qwen3.6-plus",
|
"id": "qwen/qwen3.7-max",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -157,7 +157,7 @@
|
||||||
"id": "moonshotai/kimi-k2.6"
|
"id": "moonshotai/kimi-k2.6"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "qwen/qwen3.6-plus"
|
"id": "qwen/qwen3.7-max"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "anthropic/claude-haiku-4.5"
|
"id": "anthropic/claude-haiku-4.5"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue