fix: ensure production uses DB-configured model/provider from UI
- Migration 026: update seed defaults from ollama to vllm/AxionML - Migration 031: fix existing rows still on old ollama defaults - Helm values: set OLLAMA_BASE_URL to cluster ollama endpoint (was empty) - Extractor: guard against switching to ollama when base_url is empty - OllamaClient: validate base_url on construction to fail fast
This commit is contained in:
@@ -140,6 +140,11 @@ class OllamaClient:
|
||||
max_retries: int | None = None,
|
||||
http_client: httpx.AsyncClient | None = None,
|
||||
) -> None:
|
||||
if not config.base_url or not config.base_url.startswith(("http://", "https://")):
|
||||
raise ValueError(
|
||||
f"OllamaClient requires a valid base_url (got {config.base_url!r}). "
|
||||
"Set OLLAMA_BASE_URL environment variable."
|
||||
)
|
||||
self._config = config
|
||||
self._max_retries = max_retries if max_retries is not None else config.max_retries
|
||||
self._base_delay = config.retry_base_delay
|
||||
|
||||
+39
-23
@@ -486,17 +486,25 @@ async def main() -> None:
|
||||
model_changed = new_cfg.model != extractor_client._config.model
|
||||
|
||||
if provider_changed or model_changed:
|
||||
logger.info(
|
||||
"Extractor provider switch: old_provider=%s new_provider=%s "
|
||||
"model=%s variant=%s",
|
||||
old_provider, new_provider,
|
||||
new_resolved.model_name, new_resolved.variant_id,
|
||||
)
|
||||
await extractor_client.close()
|
||||
extractor_client = build_llm_client(
|
||||
new_resolved, config.ollama, config.vllm,
|
||||
)
|
||||
extractor_provider = new_provider
|
||||
# Guard: don't switch to ollama if base_url is empty
|
||||
if new_provider == "ollama" and not config.ollama.base_url:
|
||||
logger.warning(
|
||||
"DB resolved provider=ollama but OLLAMA_BASE_URL is empty — "
|
||||
"keeping current %s client. Fix the agent config in the UI.",
|
||||
extractor_provider,
|
||||
)
|
||||
else:
|
||||
logger.info(
|
||||
"Extractor provider switch: old_provider=%s new_provider=%s "
|
||||
"model=%s variant=%s",
|
||||
old_provider, new_provider,
|
||||
new_resolved.model_name, new_resolved.variant_id,
|
||||
)
|
||||
await extractor_client.close()
|
||||
extractor_client = build_llm_client(
|
||||
new_resolved, config.ollama, config.vllm,
|
||||
)
|
||||
extractor_provider = new_provider
|
||||
else:
|
||||
# Same provider and model — just update config in-place
|
||||
extractor_client._config = new_cfg # type: ignore[assignment]
|
||||
@@ -517,18 +525,26 @@ async def main() -> None:
|
||||
cls_model_changed = new_cls_cfg.model != classifier_client._config.model
|
||||
|
||||
if cls_provider_changed or cls_model_changed:
|
||||
logger.info(
|
||||
"Classifier provider switch: old_provider=%s new_provider=%s "
|
||||
"model=%s variant=%s",
|
||||
old_cls_provider, new_cls_provider,
|
||||
new_cls_resolved.model_name, new_cls_resolved.variant_id,
|
||||
)
|
||||
if classifier_client is not extractor_client:
|
||||
await classifier_client.close()
|
||||
classifier_client = build_llm_client(
|
||||
new_cls_resolved, config.ollama, config.vllm,
|
||||
)
|
||||
classifier_provider = new_cls_provider
|
||||
# Guard: don't switch to ollama if base_url is empty
|
||||
if new_cls_provider == "ollama" and not config.ollama.base_url:
|
||||
logger.warning(
|
||||
"DB resolved classifier provider=ollama but OLLAMA_BASE_URL is empty — "
|
||||
"keeping current %s client. Fix the agent config in the UI.",
|
||||
classifier_provider,
|
||||
)
|
||||
else:
|
||||
logger.info(
|
||||
"Classifier provider switch: old_provider=%s new_provider=%s "
|
||||
"model=%s variant=%s",
|
||||
old_cls_provider, new_cls_provider,
|
||||
new_cls_resolved.model_name, new_cls_resolved.variant_id,
|
||||
)
|
||||
if classifier_client is not extractor_client:
|
||||
await classifier_client.close()
|
||||
classifier_client = build_llm_client(
|
||||
new_cls_resolved, config.ollama, config.vllm,
|
||||
)
|
||||
classifier_provider = new_cls_provider
|
||||
elif classifier_client is extractor_client and new_cls_cfg.model != extractor_client._config.model:
|
||||
classifier_client = build_llm_client(
|
||||
new_cls_resolved, config.ollama, config.vllm,
|
||||
|
||||
Reference in New Issue
Block a user