diff --git a/litellm/main.py b/litellm/main.py index acd2ba5135..bb53739dbb 100644 --- a/litellm/main.py +++ b/litellm/main.py @@ -258,6 +258,7 @@ async def acompletion( or custom_llm_provider == "openrouter" or custom_llm_provider == "deepinfra" or custom_llm_provider == "perplexity" + or custom_llm_provider == "groq" or custom_llm_provider == "text-completion-openai" or custom_llm_provider == "huggingface" or custom_llm_provider == "ollama" @@ -810,6 +811,7 @@ def completion( or custom_llm_provider == "custom_openai" or custom_llm_provider == "deepinfra" or custom_llm_provider == "perplexity" + or custom_llm_provider == "groq" or custom_llm_provider == "anyscale" or custom_llm_provider == "mistral" or custom_llm_provider == "openai" @@ -819,7 +821,7 @@ def completion( # note: if a user sets a custom base - we should ensure this works # allow for the setting of dynamic and stateful api-bases api_base = ( - api_base # for deepinfra/perplexity/anyscale we check in get_llm_provider and pass in the api base from there + api_base # for deepinfra/perplexity/anyscale/groq we check in get_llm_provider and pass in the api base from there or litellm.api_base or get_secret("OPENAI_API_BASE") or "https://api.openai.com/v1" @@ -2241,6 +2243,7 @@ async def aembedding(*args, **kwargs): or custom_llm_provider == "openrouter" or custom_llm_provider == "deepinfra" or custom_llm_provider == "perplexity" + or custom_llm_provider == "groq" or custom_llm_provider == "ollama" or custom_llm_provider == "vertex_ai" ): # currently implemented aiohttp calls for just azure and openai, soon all. @@ -2735,6 +2738,7 @@ async def atext_completion(*args, **kwargs): or custom_llm_provider == "openrouter" or custom_llm_provider == "deepinfra" or custom_llm_provider == "perplexity" + or custom_llm_provider == "groq" or custom_llm_provider == "text-completion-openai" or custom_llm_provider == "huggingface" or custom_llm_provider == "ollama" diff --git a/litellm/utils.py b/litellm/utils.py index 8b469294cb..4468d7c501 100644 --- a/litellm/utils.py +++ b/litellm/utils.py @@ -4862,6 +4862,10 @@ def get_llm_provider( # deepinfra is openai compatible, we just need to set this to custom_openai and have the api_base be https://api.endpoints.anyscale.com/v1 api_base = "https://api.deepinfra.com/v1/openai" dynamic_api_key = get_secret("DEEPINFRA_API_KEY") + elif custom_llm_provider == "groq": + # groq is openai compatible, we just need to set this to custom_openai and have the api_base be https://api.groq.com/openai/v1 + api_base = "https://api.groq.com/openai/v1" + dynamic_api_key = get_secret("GROQ_API_KEY") elif custom_llm_provider == "mistral": # mistral is openai compatible, we just need to set this to custom_openai and have the api_base be https://api.mistral.ai api_base = "https://api.mistral.ai/v1" @@ -4899,6 +4903,9 @@ def get_llm_provider( elif endpoint == "api.mistral.ai/v1": custom_llm_provider = "mistral" dynamic_api_key = get_secret("MISTRAL_API_KEY") + elif endpoint == "api.groq.com/openai/v1": + custom_llm_provider = "groq" + dynamic_api_key = get_secret("GROQ_API_KEY") return model, custom_llm_provider, dynamic_api_key, api_base # check if model in known model provider list -> for huggingface models, raise exception as they don't have a fixed provider (can be togetherai, anyscale, baseten, runpod, et.)