From d063ee599b40e2de13c9a9ba8e06ceaf33eed4b4 Mon Sep 17 00:00:00 2001 From: Xingyao Wang Date: Thu, 18 Dec 2025 20:50:49 -0600 Subject: [PATCH] chore: set default model to claude-opus-4-5-20251101 (#12093) Co-authored-by: openhands --- enterprise/enterprise_local/convert_to_env.py | 2 +- enterprise/server/constants.py | 1 + frontend/__tests__/routes/llm-settings.test.tsx | 4 ++-- frontend/src/mocks/settings-handlers.ts | 2 ++ frontend/src/services/settings.ts | 2 +- frontend/src/utils/verified-models.ts | 4 +++- openhands/core/config/llm_config.py | 2 +- openhands/utils/llm.py | 1 + 8 files changed, 12 insertions(+), 6 deletions(-) diff --git a/enterprise/enterprise_local/convert_to_env.py b/enterprise/enterprise_local/convert_to_env.py index 54e2c5d71b..cbd04b6449 100644 --- a/enterprise/enterprise_local/convert_to_env.py +++ b/enterprise/enterprise_local/convert_to_env.py @@ -116,7 +116,7 @@ lines.append('POSTHOG_CLIENT_KEY=test') lines.append('ENABLE_PROACTIVE_CONVERSATION_STARTERS=true') lines.append('MAX_CONCURRENT_CONVERSATIONS=10') lines.append('LITE_LLM_API_URL=https://llm-proxy.eval.all-hands.dev') -lines.append('LITELLM_DEFAULT_MODEL=litellm_proxy/claude-sonnet-4-20250514') +lines.append('LITELLM_DEFAULT_MODEL=litellm_proxy/claude-opus-4-5-20251101') lines.append(f'LITE_LLM_API_KEY={lite_llm_api_key}') lines.append('LOCAL_DEPLOYMENT=true') lines.append('DB_HOST=localhost') diff --git a/enterprise/server/constants.py b/enterprise/server/constants.py index 74176d19a1..e2020ba2b9 100644 --- a/enterprise/server/constants.py +++ b/enterprise/server/constants.py @@ -25,6 +25,7 @@ USER_SETTINGS_VERSION_TO_MODEL = { 2: 'claude-3-7-sonnet-20250219', 3: 'claude-sonnet-4-20250514', 4: 'claude-sonnet-4-20250514', + 5: 'claude-opus-4-5-20251101', } LITELLM_DEFAULT_MODEL = os.getenv('LITELLM_DEFAULT_MODEL') diff --git a/frontend/__tests__/routes/llm-settings.test.tsx b/frontend/__tests__/routes/llm-settings.test.tsx index 8cb1239c0a..3942cc8fc1 100644 --- a/frontend/__tests__/routes/llm-settings.test.tsx +++ b/frontend/__tests__/routes/llm-settings.test.tsx @@ -72,7 +72,7 @@ describe("Content", () => { await waitFor(() => { expect(provider).toHaveValue("OpenHands"); - expect(model).toHaveValue("claude-sonnet-4-20250514"); + expect(model).toHaveValue("claude-opus-4-5-20251101"); expect(apiKey).toHaveValue(""); expect(apiKey).toHaveProperty("placeholder", ""); @@ -190,7 +190,7 @@ describe("Content", () => { const agent = screen.getByTestId("agent-input"); const condensor = screen.getByTestId("enable-memory-condenser-switch"); - expect(model).toHaveValue("openhands/claude-sonnet-4-20250514"); + expect(model).toHaveValue("openhands/claude-opus-4-5-20251101"); expect(baseUrl).toHaveValue(""); expect(apiKey).toHaveValue(""); expect(apiKey).toHaveProperty("placeholder", ""); diff --git a/frontend/src/mocks/settings-handlers.ts b/frontend/src/mocks/settings-handlers.ts index e0d7b1ed11..00de1e9c5d 100644 --- a/frontend/src/mocks/settings-handlers.ts +++ b/frontend/src/mocks/settings-handlers.ts @@ -49,9 +49,11 @@ export const SETTINGS_HANDLERS = [ "anthropic/claude-sonnet-4-20250514", "anthropic/claude-sonnet-4-5-20250929", "anthropic/claude-haiku-4-5-20251001", + "anthropic/claude-opus-4-5-20251101", "openhands/claude-sonnet-4-20250514", "openhands/claude-sonnet-4-5-20250929", "openhands/claude-haiku-4-5-20251001", + "openhands/claude-opus-4-5-20251101", "sambanova/Meta-Llama-3.1-8B-Instruct", ]), ), diff --git a/frontend/src/services/settings.ts b/frontend/src/services/settings.ts index 1191e0ea68..e4a04b1e87 100644 --- a/frontend/src/services/settings.ts +++ b/frontend/src/services/settings.ts @@ -3,7 +3,7 @@ import { Settings } from "#/types/settings"; export const LATEST_SETTINGS_VERSION = 5; export const DEFAULT_SETTINGS: Settings = { - llm_model: "openhands/claude-sonnet-4-20250514", + llm_model: "openhands/claude-opus-4-5-20251101", llm_base_url: "", agent: "CodeActAgent", language: "en", diff --git a/frontend/src/utils/verified-models.ts b/frontend/src/utils/verified-models.ts index 5b2e19e9ef..dcf5f72517 100644 --- a/frontend/src/utils/verified-models.ts +++ b/frontend/src/utils/verified-models.ts @@ -19,6 +19,7 @@ export const VERIFIED_MODELS = [ "claude-haiku-4-5-20251001", "claude-opus-4-20250514", "claude-opus-4-1-20250805", + "claude-opus-4-5-20251101", "gemini-2.5-pro", "o4-mini", "deepseek-chat", @@ -80,6 +81,7 @@ export const VERIFIED_OPENHANDS_MODELS = [ "gpt-5-mini-2025-08-07", "claude-opus-4-20250514", "claude-opus-4-1-20250805", + "claude-opus-4-5-20251101", "gemini-2.5-pro", "o3", "o4-mini", @@ -91,4 +93,4 @@ export const VERIFIED_OPENHANDS_MODELS = [ ]; // Default model for OpenHands provider -export const DEFAULT_OPENHANDS_MODEL = "openhands/claude-sonnet-4-20250514"; +export const DEFAULT_OPENHANDS_MODEL = "openhands/claude-opus-4-5-20251101"; diff --git a/openhands/core/config/llm_config.py b/openhands/core/config/llm_config.py index 0089f9b279..8a5f704b36 100644 --- a/openhands/core/config/llm_config.py +++ b/openhands/core/config/llm_config.py @@ -50,7 +50,7 @@ class LLMConfig(BaseModel): completion_kwargs: Custom kwargs to pass to litellm.completion. """ - model: str = Field(default='claude-sonnet-4-20250514') + model: str = Field(default='claude-opus-4-5-20251101') api_key: SecretStr | None = Field(default=None) base_url: str | None = Field(default=None) api_version: str | None = Field(default=None) diff --git a/openhands/utils/llm.py b/openhands/utils/llm.py index 1686babd96..876a890001 100644 --- a/openhands/utils/llm.py +++ b/openhands/utils/llm.py @@ -60,6 +60,7 @@ def get_supported_llm_models(config: OpenHandsConfig) -> list[str]: 'openhands/gpt-5-2025-08-07', 'openhands/gpt-5-mini-2025-08-07', 'openhands/claude-opus-4-20250514', + 'openhands/claude-opus-4-5-20251101', 'openhands/gemini-2.5-pro', 'openhands/o3', 'openhands/o4-mini',