feat: add support for gpt-5.5 model in the LLM configuration and tests (#188)
This commit is contained in:
@@ -70,6 +70,7 @@ _MODEL_ENTRIES: list[tuple[str, str, str]] = [
|
|||||||
("claude-haiku-4-5", "claude-haiku-4-5", "custom-anthropic"),
|
("claude-haiku-4-5", "claude-haiku-4-5", "custom-anthropic"),
|
||||||
# Custom OpenAI (third-party OpenAI-compatible endpoints, 3 defaults)
|
# Custom OpenAI (third-party OpenAI-compatible endpoints, 3 defaults)
|
||||||
# Listed BEFORE native openai so MODELS dict defaults to native provider
|
# Listed BEFORE native openai so MODELS dict defaults to native provider
|
||||||
|
("gpt-5.5", "gpt-5.5", "custom-openai"),
|
||||||
("gpt-5.4", "gpt-5.4", "custom-openai"),
|
("gpt-5.4", "gpt-5.4", "custom-openai"),
|
||||||
("gpt-5.3-codex", "gpt-5.3-codex", "custom-openai"),
|
("gpt-5.3-codex", "gpt-5.3-codex", "custom-openai"),
|
||||||
("gpt-5-mini", "gpt-5-mini", "custom-openai"),
|
("gpt-5-mini", "gpt-5-mini", "custom-openai"),
|
||||||
@@ -81,6 +82,7 @@ _MODEL_ENTRIES: list[tuple[str, str, str]] = [
|
|||||||
("claude-sonnet-4-5", "claude-sonnet-4-5", "anthropic"),
|
("claude-sonnet-4-5", "claude-sonnet-4-5", "anthropic"),
|
||||||
("claude-haiku-4-5", "claude-haiku-4-5", "anthropic"),
|
("claude-haiku-4-5", "claude-haiku-4-5", "anthropic"),
|
||||||
# OpenAI
|
# OpenAI
|
||||||
|
("gpt-5.5", "gpt-5.5", "openai"),
|
||||||
("gpt-5.4", "gpt-5.4", "openai"),
|
("gpt-5.4", "gpt-5.4", "openai"),
|
||||||
("gpt-5.4-mini", "gpt-5.4-mini", "openai"),
|
("gpt-5.4-mini", "gpt-5.4-mini", "openai"),
|
||||||
("gpt-5.4-nano", "gpt-5.4-nano", "openai"),
|
("gpt-5.4-nano", "gpt-5.4-nano", "openai"),
|
||||||
@@ -129,6 +131,7 @@ _MODEL_ENTRIES: list[tuple[str, str, str]] = [
|
|||||||
("claude-opus-4.7", "anthropic/claude-opus-4.7", "openrouter"),
|
("claude-opus-4.7", "anthropic/claude-opus-4.7", "openrouter"),
|
||||||
("claude-opus-4.6", "anthropic/claude-opus-4.6", "openrouter"),
|
("claude-opus-4.6", "anthropic/claude-opus-4.6", "openrouter"),
|
||||||
("claude-sonnet-4.6", "anthropic/claude-sonnet-4.6", "openrouter"),
|
("claude-sonnet-4.6", "anthropic/claude-sonnet-4.6", "openrouter"),
|
||||||
|
("gpt-5.5", "openai/gpt-5.5", "openrouter"),
|
||||||
("gpt-5.4", "openai/gpt-5.4", "openrouter"),
|
("gpt-5.4", "openai/gpt-5.4", "openrouter"),
|
||||||
("gpt-5.3-codex", "openai/gpt-5.3-codex", "openrouter"),
|
("gpt-5.3-codex", "openai/gpt-5.3-codex", "openrouter"),
|
||||||
("gemini-3.1-pro", "google/gemini-3.1-pro-preview", "openrouter"),
|
("gemini-3.1-pro", "google/gemini-3.1-pro-preview", "openrouter"),
|
||||||
@@ -139,6 +142,8 @@ _MODEL_ENTRIES: list[tuple[str, str, str]] = [
|
|||||||
("mimo-v2-pro", "xiaomi/mimo-v2-pro", "openrouter"),
|
("mimo-v2-pro", "xiaomi/mimo-v2-pro", "openrouter"),
|
||||||
("grok-4.1-fast", "x-ai/grok-4.1-fast", "openrouter"),
|
("grok-4.1-fast", "x-ai/grok-4.1-fast", "openrouter"),
|
||||||
("qwen3.5-122b", "qwen/qwen3.5-122b-a10b", "openrouter"),
|
("qwen3.5-122b", "qwen/qwen3.5-122b-a10b", "openrouter"),
|
||||||
|
("deepseek-v4-pro", "deepseek/deepseek-v4-pro", "openrouter"),
|
||||||
|
("deepseek-v4-flash", "deepseek/deepseek-v4-flash", "openrouter"),
|
||||||
# Zhipu CodePlan (智谱代码计划 — coding-only endpoint)
|
# Zhipu CodePlan (智谱代码计划 — coding-only endpoint)
|
||||||
("glm-5.1", "glm-5.1", "zhipu-code"),
|
("glm-5.1", "glm-5.1", "zhipu-code"),
|
||||||
("glm-5", "glm-5", "zhipu-code"),
|
("glm-5", "glm-5", "zhipu-code"),
|
||||||
@@ -165,6 +170,9 @@ _MODEL_ENTRIES: list[tuple[str, str, str]] = [
|
|||||||
("qwen-max", "qwen-max", "dashscope"),
|
("qwen-max", "qwen-max", "dashscope"),
|
||||||
("qwq-plus", "qwq-plus", "dashscope"),
|
("qwq-plus", "qwq-plus", "dashscope"),
|
||||||
# DeepSeek
|
# DeepSeek
|
||||||
|
("deepseek-v4-pro", "deepseek-v4-pro", "deepseek"),
|
||||||
|
("deepseek-v4-flash", "deepseek-v4-flash", "deepseek"),
|
||||||
|
# Legacy aliases (deprecated 2026-07-24; route to v4-flash thinking/non-thinking)
|
||||||
("deepseek-r1", "deepseek-reasoner", "deepseek"),
|
("deepseek-r1", "deepseek-reasoner", "deepseek"),
|
||||||
("deepseek-v3", "deepseek-chat", "deepseek"),
|
("deepseek-v3", "deepseek-chat", "deepseek"),
|
||||||
# Moonshot (OpenAI-compatible)
|
# Moonshot (OpenAI-compatible)
|
||||||
@@ -237,7 +245,11 @@ def _apply_auto_config(
|
|||||||
# ccproxy uses Chat Completions which doesn't support reasoning.
|
# ccproxy uses Chat Completions which doesn't support reasoning.
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
_eff = "xhigh" if ("5.4" in model_id or "codex" in model_id) else "high"
|
_eff = (
|
||||||
|
"xhigh"
|
||||||
|
if ("5.4" in model_id or "5.5" in model_id or "codex" in model_id)
|
||||||
|
else "high"
|
||||||
|
)
|
||||||
kwargs["reasoning"] = {"effort": _eff, "summary": "auto"}
|
kwargs["reasoning"] = {"effort": _eff, "summary": "auto"}
|
||||||
|
|
||||||
# Google GenAI: surface thinking traces
|
# Google GenAI: surface thinking traces
|
||||||
|
|||||||
@@ -895,6 +895,12 @@ class TestAutoConfig:
|
|||||||
"summary": "auto",
|
"summary": "auto",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get_chat_model("gpt-5.5", provider="openai")
|
||||||
|
assert mock_init.call_args[1]["reasoning"] == {
|
||||||
|
"effort": "xhigh",
|
||||||
|
"summary": "auto",
|
||||||
|
}
|
||||||
|
|
||||||
@patch("EvoScientist.llm.models.init_chat_model")
|
@patch("EvoScientist.llm.models.init_chat_model")
|
||||||
def test_openai_reasoning_high_fallback(self, mock_init, monkeypatch):
|
def test_openai_reasoning_high_fallback(self, mock_init, monkeypatch):
|
||||||
"""Other OpenAI models get high reasoning effort."""
|
"""Other OpenAI models get high reasoning effort."""
|
||||||
|
|||||||
Reference in New Issue
Block a user