77 lines
2.1 KiB
Python
77 lines
2.1 KiB
Python
"""Provider detection and registry utilities.
|
|
|
|
This module contains provider-related enums and detection logic.
|
|
"""
|
|
|
|
from enum import Enum
|
|
|
|
|
|
class Provider(Enum):
|
|
OPENAI = "openai"
|
|
VERTEXAI = "vertexai"
|
|
ANTHROPIC = "anthropic"
|
|
ANYSCALE = "anyscale"
|
|
TOGETHER = "together"
|
|
GROQ = "groq"
|
|
MISTRAL = "mistral"
|
|
COHERE = "cohere"
|
|
GEMINI = "gemini"
|
|
GENAI = "genai"
|
|
DATABRICKS = "databricks"
|
|
CEREBRAS = "cerebras"
|
|
DEEPSEEK = "deepseek"
|
|
FIREWORKS = "fireworks"
|
|
WRITER = "writer"
|
|
XAI = "xai"
|
|
UNKNOWN = "unknown"
|
|
BEDROCK = "bedrock"
|
|
PERPLEXITY = "perplexity"
|
|
OPENROUTER = "openrouter"
|
|
|
|
|
|
def get_provider(base_url: str) -> Provider:
|
|
"""
|
|
Detect the provider based on the base URL.
|
|
|
|
Args:
|
|
base_url: The base URL to analyze
|
|
|
|
Returns:
|
|
Provider: The detected provider enum value
|
|
"""
|
|
if "anyscale" in str(base_url):
|
|
return Provider.ANYSCALE
|
|
elif "together" in str(base_url):
|
|
return Provider.TOGETHER
|
|
elif "anthropic" in str(base_url):
|
|
return Provider.ANTHROPIC
|
|
elif "cerebras" in str(base_url):
|
|
return Provider.CEREBRAS
|
|
elif "fireworks" in str(base_url):
|
|
return Provider.FIREWORKS
|
|
elif "groq" in str(base_url):
|
|
return Provider.GROQ
|
|
elif "openai" in str(base_url):
|
|
return Provider.OPENAI
|
|
elif "mistral" in str(base_url):
|
|
return Provider.MISTRAL
|
|
elif "cohere" in str(base_url):
|
|
return Provider.COHERE
|
|
elif "gemini" in str(base_url):
|
|
return Provider.GEMINI
|
|
elif "databricks" in str(base_url):
|
|
return Provider.DATABRICKS
|
|
elif "deepseek" in str(base_url):
|
|
return Provider.DEEPSEEK
|
|
elif "vertexai" in str(base_url):
|
|
return Provider.VERTEXAI
|
|
elif "writer" in str(base_url):
|
|
return Provider.WRITER
|
|
elif "perplexity" in str(base_url):
|
|
return Provider.PERPLEXITY
|
|
elif "x.ai" in str(base_url) or "xai" in str(base_url):
|
|
return Provider.XAI
|
|
elif "openrouter" in str(base_url):
|
|
return Provider.OPENROUTER
|
|
return Provider.UNKNOWN
|