mirror of
https://github.com/affaan-m/ECC.git
synced 2026-11-11 18:46:05 +00:00
fix(llm): normalize model environment values
This commit is contained in:
1 parent
e4b9451c68
commit
effa074f7d
7 files changed
+179
-26
No files matched your search
@@ -16,6 +16,7 @@ from llm.core.interface import (
|
||||
)
|
||||
from llm.core.types import LLMInput, LLMOutput, ModelInfo, ProviderType, ToolCall
|
||||
from llm.providers.constants import EMPTY_FILTERED_RESPONSE_ERROR
|
||||
from llm.providers.model_config import read_model_env
|
||||
from llm.providers.openai_compat import to_openai_message_param
|
||||
|
||||
ASTRAFLOW_BASE_URL = "https://api.umodelverse.ai/v1"
|
||||
@@ -54,8 +55,8 @@ class _AstraflowBaseProvider(LLMProvider):
|
||||
) -> None:
|
||||
self.api_key = api_key or os.environ.get(self.api_key_env) or ""
|
||||
self.base_url = base_url or os.environ.get(self.base_url_env, self.default_base_url)
|
||||
env_model = os.environ.get(self.model_env)
|
||||
fallback_model = os.environ.get(self.fallback_model_env) if self.fallback_model_env else None
|
||||
env_model = read_model_env(self.model_env)
|
||||
fallback_model = read_model_env(self.fallback_model_env) if self.fallback_model_env else None
|
||||
self.default_model = default_model or env_model or fallback_model or DEFAULT_ASTRAFLOW_MODEL
|
||||
self.client = OpenAI(api_key=self.api_key, base_url=self.base_url, _enforce_credentials=False)
|
||||
self._models = [
|
||||
|
||||
@@ -16,6 +16,7 @@ from llm.core.interface import (
|
||||
)
|
||||
from llm.core.types import LLMInput, LLMOutput, ModelInfo, ProviderType, ToolCall
|
||||
from llm.providers.constants import EMPTY_FILTERED_RESPONSE_ERROR
|
||||
from llm.providers.model_config import read_model_env
|
||||
from llm.providers.openai_compat import to_openai_message_param
|
||||
|
||||
ATLAS_BASE_URL = "https://api.atlascloud.ai/v1"
|
||||
@@ -68,7 +69,7 @@ class AtlasProvider(LLMProvider):
|
||||
or ""
|
||||
)
|
||||
self.base_url = base_url or os.environ.get(self.base_url_env, self.default_base_url)
|
||||
env_model = os.environ.get(self.model_env)
|
||||
env_model = read_model_env(self.model_env)
|
||||
self.default_model = default_model or env_model or DEFAULT_ATLAS_MODEL
|
||||
self.client = OpenAI(api_key=self.api_key, base_url=self.base_url, _enforce_credentials=False)
|
||||
self._models = [
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
"""Model environment parsing shared by the resolver and provider adapters."""
|
||||
|
||||
import os
|
||||
|
||||
|
||||
def read_model_env(name: str) -> str | None:
|
||||
"""Read a model ID, treating surrounding whitespace and quotes as config syntax."""
|
||||
value = os.environ.get(name, "").strip()
|
||||
if len(value) >= 2 and value[0] == value[-1] and value[0] in {"'", '"'}:
|
||||
value = value[1:-1].strip()
|
||||
return value or None
|
||||
@@ -19,6 +19,7 @@ from llm.core.types import (
|
||||
ProviderType,
|
||||
ToolCall,
|
||||
)
|
||||
from llm.providers.model_config import read_model_env
|
||||
|
||||
|
||||
class OllamaProvider(LLMProvider):
|
||||
@@ -30,7 +31,7 @@ class OllamaProvider(LLMProvider):
|
||||
default_model: str | None = None,
|
||||
) -> None:
|
||||
self.base_url = base_url or os.environ.get("OLLAMA_BASE_URL", "http://localhost:11434")
|
||||
self.default_model = default_model or os.environ.get("OLLAMA_MODEL", "llama3.2")
|
||||
self.default_model = default_model or read_model_env("OLLAMA_MODEL") or "llama3.2"
|
||||
self._models = [
|
||||
ModelInfo(
|
||||
name="llama3.2",
|
||||
|
||||
@@ -10,6 +10,7 @@ from llm.core.types import ProviderType
|
||||
from llm.providers.astraflow import AstraflowCNProvider, AstraflowProvider
|
||||
from llm.providers.atlas import AtlasProvider
|
||||
from llm.providers.claude import ClaudeProvider
|
||||
from llm.providers.model_config import read_model_env
|
||||
from llm.providers.ollama import OllamaProvider
|
||||
from llm.providers.openai import OpenAIProvider
|
||||
|
||||
@@ -78,19 +79,19 @@ def _resolve_default_model(
|
||||
provider_type: ProviderType, provider_cls: type[LLMProvider], saved_model: str | None,
|
||||
) -> str | None:
|
||||
for name in _MODEL_ENV_VARS[provider_cls]:
|
||||
model = os.environ.get(name)
|
||||
model = read_model_env(name)
|
||||
if model:
|
||||
return model
|
||||
|
||||
env_provider = _strip_env_value(os.environ.get("LLM_PROVIDER", "")).lower()
|
||||
if not env_provider or env_provider == provider_type.value:
|
||||
env_model = _strip_env_value(os.environ.get("LLM_MODEL", ""))
|
||||
env_model = read_model_env("LLM_MODEL")
|
||||
if env_model:
|
||||
return env_model
|
||||
return saved_model or None
|
||||
|
||||
|
||||
def get_provider(provider_type: ProviderType | str | None = None, **kwargs: str) -> LLMProvider:
|
||||
def get_provider(provider_type: ProviderType | str | None = None, **kwargs: str | None) -> LLMProvider:
|
||||
"""Create a provider, honoring the model selected by llm-select.
|
||||
|
||||
Built-in model defaults prefer explicit kwargs, then existing provider-specific
|
||||
|
||||
Reference in new issue
Block a user