V10.538 對齊 ai_calls ollama_other provider
All checks were successful
CD Pipeline / deploy (push) Successful in 1m6s
All checks were successful
CD Pipeline / deploy (push) Successful in 1m6s
This commit is contained in:
@@ -85,6 +85,45 @@ _MAX_CONSECUTIVE_FAILURES = 10
|
||||
_failure_counter_lock = threading.Lock()
|
||||
_failure_state = {'count': 0, 'killed': False}
|
||||
|
||||
_AI_CALL_PROVIDER_WHITELIST = frozenset({
|
||||
'gcp_ollama',
|
||||
'ollama_secondary',
|
||||
'ollama_111',
|
||||
'ollama_other',
|
||||
'gemini',
|
||||
'claude',
|
||||
'nim',
|
||||
'openrouter',
|
||||
'nim_via_elephant',
|
||||
})
|
||||
|
||||
|
||||
def _normalize_provider(provider: str) -> str:
|
||||
"""Return an ai_calls.provider value that satisfies the DB CHECK.
|
||||
|
||||
`ollama_other` is telemetry-only: it represents an approved Ollama route
|
||||
whose concrete host was unknown or failed before a successful host was
|
||||
selected. It must not be used as a routing target.
|
||||
"""
|
||||
text = (provider or '').strip()[:32]
|
||||
if text in _AI_CALL_PROVIDER_WHITELIST:
|
||||
return text
|
||||
|
||||
lowered = text.lower()
|
||||
if not lowered or lowered in {'unknown', 'none', 'null', 'ollama', 'ollama_local'}:
|
||||
return 'ollama_other'
|
||||
if lowered.startswith('gemini'):
|
||||
return 'gemini'
|
||||
if lowered.startswith(('claude', 'anthropic')):
|
||||
return 'claude'
|
||||
if lowered.startswith(('nim', 'nvidia', 'meta/')):
|
||||
return 'nim'
|
||||
if lowered.startswith('openrouter'):
|
||||
return 'openrouter'
|
||||
if 'ollama' in lowered:
|
||||
return 'ollama_other'
|
||||
return 'ollama_other'
|
||||
|
||||
|
||||
def _record_failure() -> None:
|
||||
with _failure_counter_lock:
|
||||
@@ -145,7 +184,7 @@ class _CallState:
|
||||
)
|
||||
|
||||
self.caller = caller
|
||||
self.provider = provider
|
||||
self.provider = _normalize_provider(provider)
|
||||
self.model = model
|
||||
self.request_id = request_id
|
||||
self.input_tokens = 0
|
||||
@@ -174,7 +213,7 @@ class _CallState:
|
||||
def set_provider(self, provider: str) -> None:
|
||||
"""更新實際 provider。適用於 Ollama 三主機 retry 後才知道落點的 caller。"""
|
||||
if provider:
|
||||
self.provider = provider[:32]
|
||||
self.provider = _normalize_provider(provider)
|
||||
|
||||
def set_model(self, model: str) -> None:
|
||||
"""更新實際模型。適用於 host-aware downgrade 後才知道落點模型的 caller。"""
|
||||
@@ -387,7 +426,7 @@ def _write_to_db(state: _CallState) -> None:
|
||||
"""),
|
||||
{
|
||||
'caller': state.caller[:64] if state.caller else 'unknown',
|
||||
'provider': (state.provider or 'unknown')[:32],
|
||||
'provider': _normalize_provider(state.provider),
|
||||
'model': (state.model or 'unknown')[:128],
|
||||
'input_tokens': int(state.input_tokens or 0),
|
||||
'output_tokens': int(state.output_tokens or 0),
|
||||
|
||||
Reference in New Issue
Block a user