mirror of
https://github.com/BerriAI/litellm.git
synced 2026-11-14 09:03:16 +00:00
Merge 069a645419 into 85bc58085e
This commit is contained in:
commit
33ea21e983
5 changed files with 80 additions and 0 deletions
|
|
@ -685,6 +685,7 @@ qwen_ai_platform_models: Set = set()
|
|||
moonshot_models: Set = set()
|
||||
publicai_models: Set = set()
|
||||
darkbloom_models: Set = set()
|
||||
token_kiosk_models: Final[Set[str]] = set()
|
||||
openinfer_models: Final[Set[str]] = set()
|
||||
kyma_models: Final[set[str]] = set() # mutable-ok: populated when the shared model catalog loads
|
||||
streamlake_models: Final[Set[str]] = set()
|
||||
|
|
@ -979,6 +980,8 @@ def _populate_provider_model_sets(model_cost_map: Mapping[str, Mapping[str, obje
|
|||
publicai_models.add(key)
|
||||
elif value.get("litellm_provider") == "darkbloom":
|
||||
darkbloom_models.add(key)
|
||||
elif value.get("litellm_provider") == "token_kiosk":
|
||||
token_kiosk_models.add(key)
|
||||
elif value.get("litellm_provider") == "openinfer":
|
||||
openinfer_models.add(key)
|
||||
elif value.get("litellm_provider") == "kyma":
|
||||
|
|
@ -1165,6 +1168,7 @@ model_list = list(
|
|||
| moonshot_models
|
||||
| publicai_models
|
||||
| darkbloom_models
|
||||
| token_kiosk_models
|
||||
| openinfer_models
|
||||
| kyma_models
|
||||
| streamlake_models
|
||||
|
|
@ -1299,6 +1303,7 @@ def _build_models_by_provider() -> dict:
|
|||
"moonshot": moonshot_models,
|
||||
"publicai": publicai_models,
|
||||
"darkbloom": darkbloom_models,
|
||||
"token_kiosk": token_kiosk_models,
|
||||
"openinfer": openinfer_models,
|
||||
"kyma": kyma_models,
|
||||
"streamlake": streamlake_models,
|
||||
|
|
|
|||
|
|
@ -1131,6 +1131,7 @@ openai_compatible_providers: Final[list[str]] = [
|
|||
"lm_studio",
|
||||
"galadriel",
|
||||
"zerogpu",
|
||||
"token_kiosk",
|
||||
"github_copilot", # GitHub Copilot Chat API
|
||||
"chatgpt", # ChatGPT subscription API
|
||||
"novita",
|
||||
|
|
|
|||
|
|
@ -314,5 +314,14 @@
|
|||
"supports_function_calling": true,
|
||||
"supports_reasoning": true
|
||||
}
|
||||
},
|
||||
"token_kiosk": {
|
||||
"base_url": "https://api-token-kiosk.gaib.ai/v1",
|
||||
"api_key_env": "TOKEN_KIOSK_API_KEY",
|
||||
"api_base_env": "TOKEN_KIOSK_API_BASE",
|
||||
"provider_info": {
|
||||
"supports_function_calling": true,
|
||||
"supports_reasoning": true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4775,6 +4775,7 @@ class LlmProviders(str, Enum):
|
|||
INFERENCEAPIS = "inferenceapis"
|
||||
HOSTINGER_ROUTER = "hostinger_router"
|
||||
ZEROGPU = "zerogpu"
|
||||
TOKEN_KIOSK = "token_kiosk"
|
||||
DARKBLOOM = "darkbloom"
|
||||
META = "meta"
|
||||
SAIL = "sail"
|
||||
|
|
|
|||
64
tests/unit/llms/openai_like/test_token_kiosk_provider.py
Normal file
64
tests/unit/llms/openai_like/test_token_kiosk_provider.py
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
import json
|
||||
from typing import Final
|
||||
|
||||
import pytest
|
||||
import respx
|
||||
|
||||
import litellm
|
||||
from litellm.litellm_core_utils.get_llm_provider_logic import get_llm_provider
|
||||
|
||||
|
||||
def test_token_kiosk_resolves_environment_and_explicit_credentials(monkeypatch: pytest.MonkeyPatch) -> None:
|
||||
monkeypatch.setenv("TOKEN_KIOSK_API_KEY", "fake-token-kiosk-key")
|
||||
assert get_llm_provider(model="token_kiosk/claude-3-5-sonnet") == (
|
||||
"claude-3-5-sonnet",
|
||||
"token_kiosk",
|
||||
"fake-token-kiosk-key",
|
||||
"https://api-token-kiosk.gaib.ai/v1",
|
||||
)
|
||||
assert get_llm_provider(
|
||||
model="token_kiosk/claude-3-5-sonnet",
|
||||
api_key="explicit-key",
|
||||
api_base="https://custom-router.example/v1",
|
||||
) == (
|
||||
"claude-3-5-sonnet",
|
||||
"token_kiosk",
|
||||
"explicit-key",
|
||||
"https://custom-router.example/v1",
|
||||
)
|
||||
|
||||
|
||||
def test_token_kiosk_chat_completion_dispatch() -> None:
|
||||
with respx.mock() as upstream:
|
||||
route: Final = upstream.post("https://api-token-kiosk.gaib.ai/v1/chat/completions").respond(
|
||||
200,
|
||||
json={
|
||||
"id": "chatcmpl-token-kiosk-test",
|
||||
"object": "chat.completion",
|
||||
"created": 1724000000,
|
||||
"model": "claude-3-5-sonnet",
|
||||
"choices": [
|
||||
{
|
||||
"index": 0,
|
||||
"message": {"role": "assistant", "content": "Hello from Token Kiosk!"},
|
||||
"finish_reason": "stop",
|
||||
}
|
||||
],
|
||||
"usage": {
|
||||
"prompt_tokens": 10,
|
||||
"completion_tokens": 5,
|
||||
"total_tokens": 15,
|
||||
},
|
||||
},
|
||||
)
|
||||
response: Final = litellm.completion(
|
||||
model="token_kiosk/claude-3-5-sonnet",
|
||||
api_key="test-key",
|
||||
messages=[{"role": "user", "content": "Hello"}],
|
||||
)
|
||||
|
||||
assert route.called
|
||||
assert route.calls.last.request.headers["authorization"] == "Bearer test-key"
|
||||
body = json.loads(route.calls.last.request.content)
|
||||
assert body["model"] == "claude-3-5-sonnet"
|
||||
assert response.choices[0].message.content == "Hello from Token Kiosk!"
|
||||
Loading…
Add table
Reference in a new issue