From e8b1421ebe3b3a181780b1b00eff1ebd7cdcb83a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 22 Jun 2026 12:01:26 +0000 Subject: [PATCH] chore: sync workflow templates from Workflows repo Automated sync from stranske/Workflows Template hash: c11e0664a4d8 Changes synced from sync-manifest.yml --- tools/llm_provider.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/tools/llm_provider.py b/tools/llm_provider.py index 0ca08fdf0..b698780c0 100644 --- a/tools/llm_provider.py +++ b/tools/llm_provider.py @@ -40,6 +40,8 @@ DEFAULT_MODEL = "codex-mini-latest" ANTHROPIC_API_KEY_ENV = "CLAUDE_API_STRANSKE" SHORT_ANALYSIS_CONFIDENCE_CAP = 0.4 +DEFAULT_OPENAI_ANALYSIS_MODEL = "gpt-5.4" +DEFAULT_ANTHROPIC_ANALYSIS_MODEL = "claude-sonnet-4-6" def _configured_langchain_model(provider: str, *, fallback: str) -> str: @@ -598,7 +600,7 @@ def _get_client(self): logger.warning("LangChain client helper not available") return None - model_name = _configured_langchain_model("openai", fallback="gpt-5.1-codex") + model_name = _configured_langchain_model("openai", fallback=DEFAULT_OPENAI_ANALYSIS_MODEL) resolved = build_chat_client(provider="openai", model=model_name) if resolved: self._model_name = resolved.model @@ -638,7 +640,7 @@ def analyze_completion( model_name=getattr( self, "_model_name", - _configured_langchain_model("openai", fallback="gpt-5.1-codex"), + _configured_langchain_model("openai", fallback=DEFAULT_OPENAI_ANALYSIS_MODEL), ), raw_confidence=result.raw_confidence, confidence_adjusted=result.confidence_adjusted, @@ -670,7 +672,7 @@ def _get_client(self): return None model_name = _configured_langchain_model( - "anthropic", fallback="claude-sonnet-4-5-20250929" + "anthropic", fallback=DEFAULT_ANTHROPIC_ANALYSIS_MODEL ) resolved = build_chat_client(provider="anthropic", model=model_name) if resolved: @@ -722,7 +724,7 @@ def analyze_completion( self, "_model_name", _configured_langchain_model( - "anthropic", fallback="claude-sonnet-4-5-20250929" + "anthropic", fallback=DEFAULT_ANTHROPIC_ANALYSIS_MODEL ), ), raw_confidence=result.raw_confidence, @@ -975,8 +977,8 @@ def get_llm_provider(force_provider: str | None = None) -> LLMProvider: Options: "github-models", "openai", "anthropic", "regex-fallback" Returns a FallbackChainProvider that tries: - 1. Anthropic claude-sonnet-4-5 (if CLAUDE_API_STRANSKE set) - Best reasoning - 2. OpenAI gpt-5.1-codex (if OPENAI_API_KEY set) - Purpose-built for code analysis + 1. Anthropic configured slot model (if CLAUDE_API_STRANSKE set) - Best reasoning + 2. OpenAI configured slot model (if OPENAI_API_KEY set) - Code analysis 3. GitHub Models gpt-4.1 (if GITHUB_TOKEN set) - Always available, reliable 4. Regex fallback (always available) - 30% confidence baseline """ @@ -1003,8 +1005,8 @@ def get_llm_provider(force_provider: str | None = None) -> LLMProvider: return provider providers = [ - AnthropicProvider(), # Primary: claude-sonnet-4-5 for best reasoning - OpenAIProvider(), # Secondary: gpt-5.1-codex for code-optimized analysis + AnthropicProvider(), # Primary: configured Anthropic slot model + OpenAIProvider(), # Secondary: configured OpenAI slot model GitHubModelsProvider(), # Tertiary: gpt-4.1 via GITHUB_TOKEN (always available) RegexFallbackProvider(), # Last resort: 30% confidence pattern matching ]