fix(ai): remove 188 ollama provider
This commit is contained in:
@@ -5,7 +5,7 @@ AI Provider 版本探測 — 為每個 Provider 提供 get_version()
|
||||
|
||||
Provider:
|
||||
- ollama : 34.143.170.20 GCP-A Ollama (primary) — 2026-05-03 ogt: ADR-110 GCP-A Primary
|
||||
- ollama_188 : 192.168.0.188 Ollama (fallback)
|
||||
- ollama_local : 192.168.0.111 / 110 proxy Ollama (local fallback)
|
||||
- gemini : Google Gemini API (版本 = model name)
|
||||
- claude : Anthropic Claude (版本 = model name)
|
||||
- openclaw_nemo : OpenClaw NemoTron (版本 = OPENCLAW_DEFAULT_MODEL)
|
||||
@@ -31,7 +31,7 @@ TAIPEI_TZ = timezone(timedelta(hours=8))
|
||||
class ProviderVersionInfo:
|
||||
"""AI Provider 版本快照"""
|
||||
|
||||
provider: str # "ollama" / "ollama_188" / "gemini" / "claude" / "openclaw_nemo"
|
||||
provider: str # "ollama" / "ollama_local" / "gemini" / "claude" / "openclaw_nemo"
|
||||
model: str
|
||||
version: str # version string 或 tag(Ollama 用 modified_at,其他用 model name)
|
||||
digest: str | None = None # SHA256 digest(僅 Ollama 有)
|
||||
@@ -43,7 +43,7 @@ class ProviderVersionInfo:
|
||||
# =============================================================================
|
||||
|
||||
async def probe_ollama_version(url: str, model: str) -> ProviderVersionInfo:
|
||||
"""探測 Ollama(GCP-A 或 188):GET /api/tags 取 model digest + modified_at
|
||||
"""探測 Ollama(GCP-A/GCP-B 或本地 111):GET /api/tags 取 model digest + modified_at
|
||||
|
||||
Args:
|
||||
url: Ollama base URL,例如 "http://34.143.170.20:11434"(GCP-A Primary)
|
||||
@@ -58,15 +58,12 @@ async def probe_ollama_version(url: str, model: str) -> ProviderVersionInfo:
|
||||
"""
|
||||
import httpx
|
||||
|
||||
# 2026-05-03 ogt: ADR-110 GCP-A Primary — 擴展 provider 判斷邏輯支援 GCP 三層容災
|
||||
# 188 保留 ollama_188 命名(CPU-only 主機,雖移出 routing chain 但仍可被 probe)
|
||||
# 2026-05-06 Codex: 188 不再作為 Ollama provider;local fallback 一律標示 ollama_local。
|
||||
_GCP_OLLAMA_IPS = {"34.143.170.20", "34.21.145.224"}
|
||||
if any(ip in url for ip in _GCP_OLLAMA_IPS):
|
||||
provider_name = "ollama"
|
||||
elif "192.168.0.111" in url:
|
||||
elif "192.168.0.111" in url or "192.168.0.110:11437" in url:
|
||||
provider_name = "ollama_local"
|
||||
elif "192.168.0.188" in url:
|
||||
provider_name = "ollama_188"
|
||||
else:
|
||||
provider_name = "ollama_remote"
|
||||
|
||||
@@ -179,7 +176,7 @@ async def probe_claude_version() -> ProviderVersionInfo:
|
||||
async def probe_openclaw_nemo_version() -> ProviderVersionInfo:
|
||||
"""OpenClaw NemoTron:版本字串從 settings.OPENCLAW_DEFAULT_MODEL 讀取
|
||||
|
||||
NemoTron 運行在 OpenClaw 188 節點(使用 Ollama 推理),
|
||||
NemoTron 運行在 OpenClaw 節點,
|
||||
透過 OPENCLAW_URL /api/tags 探測,模型名稱即版本識別。
|
||||
|
||||
Returns:
|
||||
@@ -195,18 +192,18 @@ async def probe_openclaw_nemo_version() -> ProviderVersionInfo:
|
||||
|
||||
# OpenClaw 底層是 Ollama,使用 OPENCLAW_URL 的 host:port 加上 Ollama port
|
||||
# OPENCLAW_URL 是 8088(OpenClaw API),Ollama 通常在 11434
|
||||
# 188 的 Ollama URL 若有設定則直接用 OLLAMA_FALLBACK_URL
|
||||
ollama_188_url = settings.OLLAMA_FALLBACK_URL
|
||||
if not ollama_188_url:
|
||||
# OpenClaw 底層 tags 來源優先使用本地 fallback Ollama URL。
|
||||
ollama_local_url = settings.OLLAMA_FALLBACK_URL
|
||||
if not ollama_local_url:
|
||||
# fallback:從 OPENCLAW_URL host 構建 Ollama URL
|
||||
from urllib.parse import urlparse
|
||||
parsed = urlparse(settings.OPENCLAW_URL)
|
||||
ollama_188_url = f"{parsed.scheme}://{parsed.hostname}:11434"
|
||||
ollama_local_url = f"{parsed.scheme}://{parsed.hostname}:11434"
|
||||
|
||||
import httpx
|
||||
|
||||
async with httpx.AsyncClient(timeout=5.0) as client:
|
||||
resp = await client.get(f"{ollama_188_url}/api/tags")
|
||||
resp = await client.get(f"{ollama_local_url}/api/tags")
|
||||
resp.raise_for_status()
|
||||
models = resp.json().get("models", [])
|
||||
|
||||
@@ -220,7 +217,7 @@ async def probe_openclaw_nemo_version() -> ProviderVersionInfo:
|
||||
)
|
||||
|
||||
# model 不在清單時:version 用 model name,digest=None
|
||||
logger.warning("openclaw_nemo_model_not_in_tags", model=model, url=ollama_188_url)
|
||||
logger.warning("openclaw_nemo_model_not_in_tags", model=model, url=ollama_local_url)
|
||||
return ProviderVersionInfo(
|
||||
provider="openclaw_nemo",
|
||||
model=model,
|
||||
@@ -257,7 +254,7 @@ async def probe_all_providers() -> list[ProviderVersionInfo]:
|
||||
raw = await asyncio.gather(*tasks, return_exceptions=True)
|
||||
|
||||
results: list[ProviderVersionInfo] = []
|
||||
provider_labels = ["ollama", "ollama_188", "gemini", "claude", "openclaw_nemo"]
|
||||
provider_labels = ["ollama", "ollama_local", "gemini", "claude", "openclaw_nemo"]
|
||||
for label, outcome in zip(provider_labels, raw, strict=True):
|
||||
if isinstance(outcome, ProviderVersionInfo):
|
||||
results.append(outcome)
|
||||
|
||||
Reference in New Issue
Block a user