fix(models): bind provider detection to DNS labels (#5961)

This commit is contained in:
RaresKeY
2026-08-16 23:25:46 +01:00
committed by GitHub
parent 71f30fcc9d
commit e4046aa41f
2 changed files with 20 additions and 6 deletions
+11 -6
View File
@@ -290,17 +290,22 @@ def detect_vendor(base_url: Any = "", endpoint_kind: Any = "") -> str:
return kind_map[kind] return kind_map[kind]
parsed = urlparse(compact_str(base_url)) parsed = urlparse(compact_str(base_url))
host = (parsed.hostname or "").lower() host = (parsed.hostname or "").lower().rstrip(".")
port = parsed.port port = parsed.port
if host.endswith("openrouter.ai"):
def host_matches(domain: str) -> bool:
domain = domain.lower().rstrip(".")
return host == domain or host.endswith(f".{domain}")
if host_matches("openrouter.ai"):
return VENDOR_OPENROUTER return VENDOR_OPENROUTER
if host.endswith("openai.com"): if host_matches("openai.com"):
return VENDOR_OPENAI return VENDOR_OPENAI
if host.endswith("anthropic.com"): if host_matches("anthropic.com"):
return VENDOR_ANTHROPIC return VENDOR_ANTHROPIC
if host.endswith("googleapis.com"): if host_matches("googleapis.com"):
return VENDOR_GOOGLE return VENDOR_GOOGLE
if host.endswith("ollama.com") or port == 11434: if host_matches("ollama.com") or port == 11434:
return VENDOR_OLLAMA return VENDOR_OLLAMA
if port == 1234: if port == 1234:
return VENDOR_LMSTUDIO return VENDOR_LMSTUDIO
+9
View File
@@ -30,6 +30,15 @@ def test_detect_vendor_uses_endpoint_kind_then_host_and_common_local_ports():
assert detect_vendor("http://localhost:7000/v1") == VENDOR_GENERIC_OPENAI assert detect_vendor("http://localhost:7000/v1") == VENDOR_GENERIC_OPENAI
def test_detect_vendor_requires_a_dns_label_boundary():
assert detect_vendor("https://api.openai.com./v1") == VENDOR_OPENAI
assert detect_vendor("https://notopenai.com/v1") == VENDOR_GENERIC_OPENAI
assert detect_vendor("https://fakeopenrouter.ai/v1") == VENDOR_GENERIC_OPENAI
assert detect_vendor("https://notgoogleapis.com/v1") == VENDOR_GENERIC_OPENAI
assert detect_vendor("https://evilanthropic.com/v1") == VENDOR_GENERIC_OPENAI
assert detect_vendor("https://fakeollama.com/v1") == VENDOR_GENERIC_OPENAI
def test_generic_openai_reader_keeps_basic_model_payload_unknown(): def test_generic_openai_reader_keeps_basic_model_payload_unknown():
records = generic_openai.records_from_payload( records = generic_openai.records_from_payload(
{ {