From 49b03c36eb3b7ebc5519bf5099b704e83365fdce Mon Sep 17 00:00:00 2001 From: Xi Zhang <106144707+X-iZhang@users.noreply.github.com> Date: Sat, 25 Apr 2026 00:52:55 +0200 Subject: [PATCH] feat: add support for gpt-5.5 model in the LLM configuration and tests (#188) --- EvoScientist/llm/models.py | 14 +++++++++++++- tests/test_llm.py | 6 ++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/EvoScientist/llm/models.py b/EvoScientist/llm/models.py index 2cb77a7..a7faa52 100644 --- a/EvoScientist/llm/models.py +++ b/EvoScientist/llm/models.py @@ -70,6 +70,7 @@ _MODEL_ENTRIES: list[tuple[str, str, str]] = [ ("claude-haiku-4-5", "claude-haiku-4-5", "custom-anthropic"), # Custom OpenAI (third-party OpenAI-compatible endpoints, 3 defaults) # 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.3-codex", "gpt-5.3-codex", "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-haiku-4-5", "claude-haiku-4-5", "anthropic"), # OpenAI + ("gpt-5.5", "gpt-5.5", "openai"), ("gpt-5.4", "gpt-5.4", "openai"), ("gpt-5.4-mini", "gpt-5.4-mini", "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.6", "anthropic/claude-opus-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.3-codex", "openai/gpt-5.3-codex", "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"), ("grok-4.1-fast", "x-ai/grok-4.1-fast", "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) ("glm-5.1", "glm-5.1", "zhipu-code"), ("glm-5", "glm-5", "zhipu-code"), @@ -165,6 +170,9 @@ _MODEL_ENTRIES: list[tuple[str, str, str]] = [ ("qwen-max", "qwen-max", "dashscope"), ("qwq-plus", "qwq-plus", "dashscope"), # 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-v3", "deepseek-chat", "deepseek"), # Moonshot (OpenAI-compatible) @@ -237,7 +245,11 @@ def _apply_auto_config( # ccproxy uses Chat Completions which doesn't support reasoning. pass 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"} # Google GenAI: surface thinking traces diff --git a/tests/test_llm.py b/tests/test_llm.py index 2d92d6a..d1f3dfa 100644 --- a/tests/test_llm.py +++ b/tests/test_llm.py @@ -895,6 +895,12 @@ class TestAutoConfig: "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") def test_openai_reasoning_high_fallback(self, mock_init, monkeypatch): """Other OpenAI models get high reasoning effort."""