VibecoderMcSwaggins commited on
Commit
bfc953b
·
1 Parent(s): 11ad1dd

fix(config): update default LLM models to stable Nov 2025 versions

Browse files
docs/bugs/INVESTIGATION_INVALID_MODELS.md ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Bug Investigation: Invalid Default LLM Models
2
+
3
+ ## Status
4
+ - **Date:** 2025-11-29
5
+ - **Reporter:** CLI User
6
+ - **Component:** `src/utils/config.py`
7
+ - **Priority:** High (Magentic Mode Blocker)
8
+ - **Resolution:** FIXED
9
+
10
+ ## Issue Description
11
+ The user encountered a 403 error when running in Magentic mode:
12
+ `Error code: 403 - {'error': {'message': 'Project ... does not have access to model gpt-5.1', ... 'code': 'model_not_found'}}`
13
+
14
+ This indicates the application is trying to use `gpt-5.1`, which the user's API key did not have access to (likely a beta/gated model).
15
+
16
+ ## Root Cause Analysis
17
+ The default config used `gpt-5.1` (beta/preview) and `claude-sonnet-4-5-20250929`.
18
+ Initial remediation mistakenly downgraded these to 2024 models (`gpt-4o`).
19
+ Web search confirmed that in November 2025:
20
+ - `claude-sonnet-4-5-20250929` IS valid.
21
+ - `gpt-5.1` exists but access is restricted (leading to 403).
22
+ - `gpt-5` (August 2025) is the stable flagship.
23
+
24
+ ## Solution Implemented
25
+ Updated `src/utils/config.py` to use:
26
+ - `anthropic_model`: `claude-sonnet-4-5-20250929` (Restored correct Nov 2025 model)
27
+ - `openai_model`: `gpt-5` (Changed from 5.1 to 5 to ensure stability/access).
28
+
29
+ ## Verification
30
+ - `tests/unit/agent_factory/test_judges_factory.py` updated and passed.
src/utils/config.py CHANGED
@@ -26,7 +26,7 @@ class Settings(BaseSettings):
26
  llm_provider: Literal["openai", "anthropic", "huggingface"] = Field(
27
  default="openai", description="Which LLM provider to use"
28
  )
29
- openai_model: str = Field(default="gpt-5.1", description="OpenAI model name")
30
  anthropic_model: str = Field(
31
  default="claude-sonnet-4-5-20250929", description="Anthropic model"
32
  )
 
26
  llm_provider: Literal["openai", "anthropic", "huggingface"] = Field(
27
  default="openai", description="Which LLM provider to use"
28
  )
29
+ openai_model: str = Field(default="gpt-5", description="OpenAI model name")
30
  anthropic_model: str = Field(
31
  default="claude-sonnet-4-5-20250929", description="Anthropic model"
32
  )
tests/unit/agent_factory/test_judges_factory.py CHANGED
@@ -25,11 +25,11 @@ def test_get_model_openai(mock_settings):
25
  """Test that OpenAI model is returned when provider is openai."""
26
  mock_settings.llm_provider = "openai"
27
  mock_settings.openai_api_key = "sk-test"
28
- mock_settings.openai_model = "gpt-5.1"
29
 
30
  model = get_model()
31
  assert isinstance(model, OpenAIChatModel)
32
- assert model.model_name == "gpt-5.1"
33
 
34
 
35
  def test_get_model_anthropic(mock_settings):
@@ -58,7 +58,7 @@ def test_get_model_default_fallback(mock_settings):
58
  """Test fallback to OpenAI if provider is unknown."""
59
  mock_settings.llm_provider = "unknown_provider"
60
  mock_settings.openai_api_key = "sk-test"
61
- mock_settings.openai_model = "gpt-5.1"
62
 
63
  model = get_model()
64
  assert isinstance(model, OpenAIChatModel)
 
25
  """Test that OpenAI model is returned when provider is openai."""
26
  mock_settings.llm_provider = "openai"
27
  mock_settings.openai_api_key = "sk-test"
28
+ mock_settings.openai_model = "gpt-5"
29
 
30
  model = get_model()
31
  assert isinstance(model, OpenAIChatModel)
32
+ assert model.model_name == "gpt-5"
33
 
34
 
35
  def test_get_model_anthropic(mock_settings):
 
58
  """Test fallback to OpenAI if provider is unknown."""
59
  mock_settings.llm_provider = "unknown_provider"
60
  mock_settings.openai_api_key = "sk-test"
61
+ mock_settings.openai_model = "gpt-5"
62
 
63
  model = get_model()
64
  assert isinstance(model, OpenAIChatModel)