This commit is contained in:
c0p1l0tcyb3r 2026-11-07 03:38:04 +00:00 • committed by GitHub
commit 673f32191d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 141 additions and 0 deletions

View file

@ -1073,6 +1073,7 @@ openai_compatible_endpoints: Final[list[str]] = [
"https://api.stima.tech/v1",
"https://nano-gpt.com/api/v1",
"https://api.poe.com/v1",
"https://api.llm-broker.net/api/v1",
"https://llm.chutes.ai/v1/",
"https://api.v0.dev/v1",
"https://api.morphllm.com/v1",
@ -1143,6 +1144,7 @@ openai_compatible_providers: Final[list[str]] = [
"apertis", # Apertis - JSON-configured provider
"nano-gpt", # Nano-GPT - JSON-configured provider
"poe", # Poe - JSON-configured provider
"llm_broker",
"chutes", # Chutes - JSON-configured provider
"parasail", # Parasail - JSON-configured provider
"libertai", # LibertAI - JSON-configured provider
@ -1206,6 +1208,7 @@ openai_text_completion_compatible_providers: Final[list] = [ # providers that s
"apertis",
"nano-gpt",
"poe",
"llm_broker",
"chutes",
"v0",
"lambda_ai",

View file

@ -51,6 +51,11 @@
"max_completion_tokens": "max_tokens"
}
},
"llm_broker": {
"base_url": "https://api.llm-broker.net/api/v1",
"api_key_env": "LLM_BROKER_API_KEY",
"api_base_env": "LLM_BROKER_API_BASE"
},
"poe": {
"base_url": "https://api.poe.com/v1",
"api_key_env": "POE_API_KEY",

View file

@ -3344,6 +3344,23 @@
"generateContent": false
}
},
"llm_broker": {
"display_name": "LLM Broker (`llm_broker`)",
"url": "https://llm-broker.net/quickstart",
"endpoints": {
"chat_completions": true,
"messages": false,
"responses": false,
"embeddings": false,
"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",

View file

@ -2321,6 +2321,24 @@
],
"default_model_placeholder": "gpt-3.5-turbo"
},
{
"provider": "LLM_BROKER",
"provider_display_name": "LLM Broker",
"litellm_provider": "llm_broker",
"credential_fields": [
{
"key": "api_key",
"label": "API Key",
"placeholder": null,
"tooltip": null,
"required": true,
"field_type": "password",
"options": null,
"default_value": null
}
],
"default_model_placeholder": "llm_broker/taylor"
},
{
"provider": "LM_STUDIO",
"provider_display_name": "Lm Studio",

View file

@ -4777,6 +4777,7 @@ class LlmProviders(str, Enum):
APERTIS = "apertis"
NANOGPT = "nano-gpt"
POE = "poe"
LLM_BROKER = "llm_broker"
CHUTES = "chutes"
NEOSANTARA = "neosantara"
AIAND = "aiand"

View file

@ -3344,6 +3344,23 @@
"generateContent": false
}
},
"llm_broker": {
"display_name": "LLM Broker (`llm_broker`)",
"url": "https://llm-broker.net/quickstart",
"endpoints": {
"chat_completions": true,
"messages": false,
"responses": false,
"embeddings": false,
"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",

View file

@ -0,0 +1,80 @@
"""
Tests for the LLM Broker provider configuration.
"""
import json
import os
import litellm
class TestLLMBrokerProviderConfig:
def test_in_provider_list(self):
from litellm import LlmProviders
assert LlmProviders.LLM_BROKER.value == "llm_broker"
assert "llm_broker" in litellm.provider_list
def test_json_config(self):
from litellm.llms.openai_like.json_loader import JSONProviderRegistry
cfg = JSONProviderRegistry.get("llm_broker")
assert cfg is not None
assert cfg.base_url == "https://api.llm-broker.net/api/v1"
assert cfg.api_key_env == "LLM_BROKER_API_KEY"
assert cfg.api_base_env == "LLM_BROKER_API_BASE"
def test_prefix_resolution(self, monkeypatch):
from litellm.litellm_core_utils.get_llm_provider_logic import get_llm_provider
monkeypatch.setenv("LLM_BROKER_API_KEY", "env-key")
monkeypatch.delenv("LLM_BROKER_API_BASE", raising=False)
model, provider, api_key, api_base = get_llm_provider(model="llm_broker/taylor")
assert (model, provider) == ("taylor", "llm_broker")
assert api_base == "https://api.llm-broker.net/api/v1"
assert api_key == "env-key"
def test_explicit_key_and_base_win_over_env(self, monkeypatch):
from litellm.litellm_core_utils.get_llm_provider_logic import get_llm_provider
monkeypatch.setenv("LLM_BROKER_API_KEY", "env-key")
_, provider, api_key, api_base = get_llm_provider(
model="llm_broker/taylor",
api_base="https://custom.example.com/v1",
api_key="caller-key",
)
assert provider == "llm_broker"
assert api_key == "caller-key"
assert api_base == "https://custom.example.com/v1"
def test_api_base_env_override(self, monkeypatch):
from litellm.litellm_core_utils.get_llm_provider_logic import get_llm_provider
monkeypatch.setenv("LLM_BROKER_API_BASE", "https://eu.example.com/v1")
_, _, _, api_base = get_llm_provider(model="llm_broker/taylor")
assert api_base == "https://eu.example.com/v1"
def test_api_base_autodetection_keeps_caller_key(self, monkeypatch):
from litellm.litellm_core_utils.get_llm_provider_logic import get_llm_provider
monkeypatch.setenv("LLM_BROKER_API_KEY", "env-key")
_, provider, api_key, _ = get_llm_provider(
model="taylor",
api_base="https://api.llm-broker.net/api/v1",
api_key="caller-key",
)
assert provider == "llm_broker"
assert api_key == "caller-key"
def test_support_matrix_lists_chat_only(self):
root = os.path.dirname(os.path.dirname(litellm.__file__))
with open(os.path.join(root, "provider_endpoints_support.json")) as f:
providers = json.load(f)["providers"]
endpoints = providers["llm_broker"]["endpoints"]
assert endpoints["chat_completions"] is True
assert not any(v for k, v in endpoints.items() if k != "chat_completions")