-
Notifications
You must be signed in to change notification settings - Fork 5
[4.D.2] Provider factory + env var wiring (get_provider, ModelSelector) #544
Copy link
Copy link
Open
Labels
enhancementNew feature or requestNew feature or requestphase-4Phase 4: Multi-Agent CoordinationPhase 4: Multi-Agent Coordination
Description
Parent
Part of #542 — Multi-provider LLM support
Depends on
#543 — OpenAI adapter must exist first
What
Wire the provider factory and ModelSelector to support OpenAI-compatible providers via environment variables. No CLI changes yet (that is #545).
Files to modify
codeframe/adapters/llm/__init__.py— extendget_provider()codeframe/adapters/llm/base.py— extendModelSelectordefaultscodeframe/core/runtime.py— read provider from env, pass toget_provider()tests/adapters/test_llm.py— extend existing tests
Implementation notes
get_provider() factory:
def get_provider(provider_type: str = "anthropic", **kwargs) -> LLMProvider:
if provider_type in ("openai", "ollama", "vllm", "compatible"):
from codeframe.adapters.llm.openai import OpenAIProvider
return OpenAIProvider(
api_key=os.environ.get("OPENAI_API_KEY", ""),
model=kwargs.get("model", os.environ.get("CODEFRAME_LLM_MODEL", "gpt-4o")),
base_url=os.environ.get("OPENAI_BASE_URL"),
)
# existing anthropic + mock paths unchangedNew env vars to document:
CODEFRAME_LLM_PROVIDER=openai # selects provider (default: anthropic)
CODEFRAME_LLM_MODEL=qwen2.5-coder # overrides model for all purposes
OPENAI_API_KEY=... # required when provider=openai
OPENAI_BASE_URL=http://... # optional, for local models
ModelSelector defaults: When provider is openai, default model should be gpt-4o (overrideable via CODEFRAME_LLM_MODEL or purpose-specific vars). Existing Anthropic defaults unchanged.
runtime.py: Where get_provider("anthropic") is hardcoded today, read CODEFRAME_LLM_PROVIDER env var instead.
Acceptance criteria
-
CODEFRAME_LLM_PROVIDER=openai uv run cf work start <id> --executeuses OpenAI provider -
OPENAI_BASE_URL=http://localhost:11434/v1routes to Ollama - No flags set → Anthropic behavior unchanged
- Tests cover all three paths: anthropic, openai, mock
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or requestphase-4Phase 4: Multi-Agent CoordinationPhase 4: Multi-Agent Coordination