feat(providers): add DaoXE OpenAI-compatible gateway

- litellm/llms/openai_like/providers.json: daoxe entry (base_url, env keys, param mappings, supported endpoints)
- litellm/types/utils.py: DAOXE in LlmProviders enum
- provider_endpoints_support.json: DaoXE row (chat_completions + responses), including the interactions flag
- tests/test_litellm/llms/openai_like/test_daoxe_provider.py: registry + endpoint tests

Signed-off-by: seven7763 <seven7763@users.noreply.github.com>
This commit is contained in:
seven7763 2026-09-04 09:44:27 +08:00
parent 7d5b6456ba
commit f252208117
4 changed files with 97 additions and 23 deletions

View file

@ -130,7 +130,10 @@
"param_mappings": {
"max_completion_tokens": "max_tokens"
},
"supported_endpoints": ["/v1/chat/completions", "/v1/responses"]
"supported_endpoints": [
"/v1/chat/completions",
"/v1/responses"
]
},
"tensormesh": {
"base_url": "https://serverless.tensormesh.ai/v1",
@ -140,13 +143,19 @@
"param_mappings": {
"max_completion_tokens": "max_tokens"
},
"supported_endpoints": ["/v1/chat/completions", "/v1/responses"]
"supported_endpoints": [
"/v1/chat/completions",
"/v1/responses"
]
},
"parasail": {
"base_url": "https://api.parasail.io/v1",
"api_key_env": "PARASAIL_API_KEY",
"api_base_env": "PARASAIL_API_BASE",
"supported_endpoints": ["/v1/chat/completions", "/v1/responses"],
"supported_endpoints": [
"/v1/chat/completions",
"/v1/responses"
],
"special_handling": {
"force_store_false": true
}
@ -166,7 +175,10 @@
"param_mappings": {
"max_completion_tokens": "max_tokens"
},
"supported_endpoints": ["/v1/chat/completions", "/v1/responses"]
"supported_endpoints": [
"/v1/chat/completions",
"/v1/responses"
]
},
"meta": {
"base_url": "https://api.meta.ai/v1",
@ -200,5 +212,18 @@
"temperature_max": 1.99
},
"supported_endpoints": ["/v1/chat/completions"]
},
"daoxe": {
"base_url": "https://daoxe.com/v1",
"api_key_env": "DAOXE_API_KEY",
"api_base_env": "DAOXE_API_BASE",
"base_class": "openai_gpt",
"param_mappings": {
"max_completion_tokens": "max_tokens"
},
"supported_endpoints": [
"/v1/chat/completions",
"/v1/responses"
]
}
}

View file

@ -3830,6 +3830,7 @@ class LlmProviders(str, Enum):
INCEPTION = "inception"
TEXT_COMPLETION_INCEPTION = "text-completion-inception"
DEEPSEEK = "deepseek"
DAOXE = "daoxe"
SAMBANOVA = "sambanova"
MARITALK = "maritalk"
VOYAGE = "voyage"

View file

@ -488,9 +488,7 @@
"audio_speech": false,
"moderations": false,
"batches": false,
"rerank": false,
"a2a": false,
"interactions": false
"rerank": false
}
},
"chutes": {
@ -2994,22 +2992,6 @@
"rerank": false
}
},
"charity_engine": {
"display_name": "Charity Engine (`charity_engine`)",
"url": "https://docs.litellm.ai/docs/providers/charity_engine",
"endpoints": {
"chat_completions": true,
"messages": true,
"responses": true,
"embeddings": false,
"image_generations": false,
"audio_transcriptions": false,
"audio_speech": false,
"moderations": false,
"batches": false,
"rerank": false
}
},
"empiriolabs": {
"display_name": "EmpirioLabs (`empiriolabs`)",
"url": "https://docs.litellm.ai/docs/providers/empiriolabs",
@ -3026,6 +3008,24 @@
"rerank": false,
"a2a": false
}
},
"daoxe": {
"display_name": "DaoXE (`daoxe`)",
"url": "https://docs.litellm.ai/docs/providers/daoxe",
"endpoints": {
"chat_completions": true,
"messages": false,
"responses": true,
"embeddings": false,
"image_generations": false,
"audio_transcriptions": false,
"audio_speech": false,
"moderations": false,
"batches": false,
"rerank": false,
"a2a": false,
"interactions": false
}
}
},
"endpoints": {

View file

@ -0,0 +1,48 @@
import litellm
def test_daoxe_in_provider_list():
from litellm import LlmProviders
assert LlmProviders.DAOXE.value == "daoxe"
assert "daoxe" in litellm.provider_list
def test_daoxe_json_config():
from litellm.llms.openai_like.json_loader import JSONProviderRegistry
assert JSONProviderRegistry.exists("daoxe")
provider = JSONProviderRegistry.get("daoxe")
assert provider is not None
assert provider.base_url == "https://daoxe.com/v1"
assert provider.api_key_env == "DAOXE_API_KEY"
assert provider.api_base_env == "DAOXE_API_BASE"
def test_daoxe_provider_resolution():
from litellm.litellm_core_utils.get_llm_provider_logic import get_llm_provider
model, provider, api_key, api_base = get_llm_provider(
model="daoxe/account-model",
custom_llm_provider=None,
api_base=None,
api_key=None,
)
assert model == "account-model"
assert provider == "daoxe"
assert api_key is None
assert api_base == "https://daoxe.com/v1"
def test_daoxe_responses_api_config():
from litellm.llms.openai_like.json_loader import JSONProviderRegistry
from litellm.utils import ProviderConfigManager
assert JSONProviderRegistry.supports_responses_api("daoxe") is True
config = ProviderConfigManager.get_provider_responses_api_config(
provider="daoxe",
model="daoxe/account-model",
)
assert config is not None
assert config.custom_llm_provider == "daoxe"