Add 5 AI providers using openai_like (#18362)

* Add 5 AI providers using `openai_like`:

* Synthetic.new
* Apertis / Stima.tech
* NanoGPT
* Poe
* Chutes.ai

* Update additional missing locations
This commit is contained in:
Matt Cowger 2025-12-23 02:05:54 -08:00 committed by GitHub
parent c47079ba3a
commit 69897bea48
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 153 additions and 3 deletions

View File

@ -556,6 +556,11 @@ openai_compatible_endpoints: List = [
"https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
"https://api.moonshot.ai/v1",
"https://api.publicai.co/v1",
"https://api.synthetic.new/openai/v1",
"https://api.stima.tech/v1",
"https://nano-gpt.com/api/v1",
"https://api.poe.com/v1",
"https://llm.chutes.ai/v1/",
"https://api.v0.dev/v1",
"https://api.morphllm.com/v1",
"https://api.lambda.ai/v1",
@ -599,12 +604,16 @@ openai_compatible_providers: List = [
"novita",
"meta_llama",
"publicai", # PublicAI - JSON-configured provider
"synthetic", # Synthetic - JSON-configured provider
"apertis", # Apertis - JSON-configured provider
"nano-gpt", # Nano-GPT - JSON-configured provider
"poe", # Poe - JSON-configured provider
"chutes", # Chutes - JSON-configured provider
"featherless_ai",
"nscale",
"nebius",
"dashscope",
"moonshot",
"publicai",
"v0",
"helicone",
"morph",
@ -630,6 +639,11 @@ openai_text_completion_compatible_providers: List = (
"dashscope",
"moonshot",
"publicai",
"synthetic",
"apertis",
"nano-gpt",
"poe",
"chutes",
"v0",
"lambda_ai",
"hyperbolic",

View File

@ -270,6 +270,21 @@ def get_llm_provider( # noqa: PLR0915
elif endpoint == "platform.publicai.co/v1":
custom_llm_provider = "publicai"
dynamic_api_key = get_secret_str("PUBLICAI_API_KEY")
elif endpoint == "https://api.synthetic.new/openai/v1":
custom_llm_provider = "synthetic"
dynamic_api_key = get_secret_str("SYNTHETIC_API_KEY")
elif endpoint == "https://api.stima.tech/v1":
custom_llm_provider = "apertis"
dynamic_api_key = get_secret_str("STIMA_API_KEY")
elif endpoint == "https://nano-gpt.com/api/v1":
custom_llm_provider = "nano-gpt"
dynamic_api_key = get_secret_str("NANOGPT_API_KEY")
elif endpoint == "https://api.poe.com/v1":
custom_llm_provider = "poe"
dynamic_api_key = get_secret_str("POE_API_KEY")
elif endpoint == "https://llm.chutes.ai/v1/":
custom_llm_provider = "chutes"
dynamic_api_key = get_secret_str("CHUTES_API_KEY")
elif endpoint == "https://api.v0.dev/v1":
custom_llm_provider = "v0"
dynamic_api_key = get_secret_str("V0_API_KEY")

View File

@ -25,5 +25,40 @@
"param_mappings": {
"max_completion_tokens": "max_tokens"
}
},
"synthetic": {
"base_url": "https://api.synthetic.new/openai/v1",
"api_key_env": "SYNTHETIC_API_KEY",
"param_mappings": {
"max_completion_tokens": "max_tokens"
}
},
"apertis": {
"base_url": "https://api.stima.tech/v1",
"api_key_env": "STIMA_API_KEY",
"param_mappings": {
"max_completion_tokens": "max_tokens"
}
},
"nano-gpt": {
"base_url": "https://nano-gpt.com/api/v1",
"api_key_env": "NANOGPT_API_KEY",
"param_mappings": {
"max_completion_tokens": "max_tokens"
}
},
"poe": {
"base_url": "https://api.poe.com/v1",
"api_key_env": "POE_API_KEY",
"param_mappings": {
"max_completion_tokens": "max_tokens"
}
},
"chutes": {
"base_url": "https://llm.chutes.ai/v1/",
"api_key_env": "CHUTES_API_KEY",
"param_mappings": {
"max_completion_tokens": "max_tokens"
}
}
}
}

View File

@ -3014,6 +3014,12 @@ class LlmProviders(str, Enum):
AMAZON_NOVA = "amazon_nova"
A2A_AGENT = "a2a_agent"
LANGGRAPH = "langgraph"
SYNTHETIC = "synthetic"
APERTIS = "apertis"
NANOGPT = "nano-gpt"
POE = "poe"
CHUTES = "chutes"
# Create a set of all provider values for quick lookup

View File

@ -137,6 +137,22 @@
"a2a": true
}
},
"apertis": {
"display_name": "Apertis (`apertis`)",
"endpoints": {
"chat_completions": true,
"messages": false,
"responses": false,
"embeddings": true,
"image_generations": false,
"audio_transcriptions": false,
"audio_speech": false,
"moderations": false,
"batches": false,
"rerank": false,
"a2a": false
}
},
"assemblyai": {
"display_name": "AssemblyAI (`assemblyai`)",
"url": "https://docs.litellm.ai/docs/pass_through/assembly_ai",
@ -358,6 +374,22 @@
"a2a": true
}
},
"chutes": {
"display_name": "Chutes (`chutes`)",
"endpoints": {
"chat_completions": true,
"messages": false,
"responses": false,
"embeddings": true,
"image_generations": false,
"audio_transcriptions": false,
"audio_speech": false,
"moderations": false,
"batches": false,
"rerank": false,
"a2a": false
}
},
"clarifai": {
"display_name": "Clarifai (`clarifai`)",
"url": "https://docs.litellm.ai/docs/providers/clarifai",
@ -1226,6 +1258,22 @@
"a2a": true
}
},
"nanogpt": {
"display_name": "NanoGPT (`nanogpt`)",
"endpoints": {
"chat_completions": true,
"messages": false,
"responses": false,
"embeddings": true,
"image_generations": false,
"audio_transcriptions": false,
"audio_speech": false,
"moderations": false,
"batches": false,
"rerank": false,
"a2a": false
}
},
"nebius": {
"display_name": "Nebius AI Studio (`nebius`)",
"url": "https://docs.litellm.ai/docs/providers/nebius",
@ -1507,6 +1555,22 @@
"a2a": true
}
},
"poe": {
"display_name": "Poe (`poe`)",
"endpoints": {
"chat_completions": true,
"messages": false,
"responses": false,
"embeddings": true,
"image_generations": false,
"audio_transcriptions": false,
"audio_speech": false,
"moderations": false,
"batches": false,
"rerank": false,
"a2a": false
}
},
"publicai": {
"display_name": "PublicAI (`publicai`)",
"url": "https://docs.litellm.ai/docs/providers/publicai",
@ -1676,6 +1740,22 @@
"a2a": true
}
},
"synthetic": {
"display_name": "Synthetic (`synthetic`)",
"endpoints": {
"chat_completions": true,
"messages": true,
"responses": true,
"embeddings": true,
"image_generations": false,
"audio_transcriptions": false,
"audio_speech": false,
"moderations": false,
"batches": false,
"rerank": false,
"a2a": false
}
},
"text-completion-codestral": {
"display_name": "Text Completion Codestral (`text-completion-codestral`)",
"url": "https://docs.litellm.ai/docs/providers/codestral",
@ -2068,4 +2148,4 @@
}
}
}
}
}