mirror of
https://github.com/BerriAI/litellm.git
synced 2026-09-30 01:52:18 +00:00
Address review feedback for SiliconFlow provider
- Add provider_endpoints_support.json entry (fixes the code-quality provider-documentation check). - Register the China mainland endpoint api.siliconflow.cn/v1 so api_base-only provider detection works for mainland users. - Expand supported OpenAI params (user, seed, parallel_tool_calls, stream_options, max_completion_tokens). - Make the provider-info test hermetic by patching get_secret_str instead of os.environ.
This commit is contained in:
parent
ca8e9f1bcf
commit
91a5125874
5 changed files with 34 additions and 1 deletions
|
|
@ -768,6 +768,7 @@ openai_compatible_endpoints: List = [
|
|||
"api.featherless.ai/v1",
|
||||
"inference.api.nscale.com/v1",
|
||||
"api.siliconflow.com/v1",
|
||||
"api.siliconflow.cn/v1",
|
||||
"api.studio.nebius.ai/v1",
|
||||
"https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
|
||||
"https://api.moonshot.ai/v1",
|
||||
|
|
|
|||
|
|
@ -314,6 +314,9 @@ def get_llm_provider( # noqa: PLR0915
|
|||
elif endpoint == "api.siliconflow.com/v1":
|
||||
custom_llm_provider = "siliconflow"
|
||||
dynamic_api_key = litellm.SiliconFlowConfig.get_api_key()
|
||||
elif endpoint == "api.siliconflow.cn/v1":
|
||||
custom_llm_provider = "siliconflow"
|
||||
dynamic_api_key = litellm.SiliconFlowConfig.get_api_key()
|
||||
elif endpoint == "dashscope-intl.aliyuncs.com/compatible-mode/v1":
|
||||
custom_llm_provider = "dashscope"
|
||||
dynamic_api_key = get_secret_str("DASHSCOPE_API_KEY")
|
||||
|
|
|
|||
|
|
@ -43,10 +43,13 @@ class SiliconFlowConfig(OpenAIGPTConfig):
|
|||
def get_supported_openai_params(self, model: str) -> list:
|
||||
return [
|
||||
"max_tokens",
|
||||
"max_completion_tokens",
|
||||
"n",
|
||||
"temperature",
|
||||
"top_p",
|
||||
"seed",
|
||||
"stream",
|
||||
"stream_options",
|
||||
"logprobs",
|
||||
"top_logprobs",
|
||||
"frequency_penalty",
|
||||
|
|
@ -56,4 +59,6 @@ class SiliconFlowConfig(OpenAIGPTConfig):
|
|||
"logit_bias",
|
||||
"tools",
|
||||
"tool_choice",
|
||||
"parallel_tool_calls",
|
||||
"user",
|
||||
]
|
||||
|
|
|
|||
|
|
@ -32,6 +32,24 @@
|
|||
}
|
||||
},
|
||||
"providers": {
|
||||
"siliconflow": {
|
||||
"display_name": "SiliconFlow (`siliconflow`)",
|
||||
"url": "https://docs.litellm.ai/docs/providers/siliconflow",
|
||||
"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,
|
||||
"a2a": true,
|
||||
"interactions": true
|
||||
}
|
||||
},
|
||||
"a2a": {
|
||||
"display_name": "A2A (Agent-to-Agent) (`a2a`)",
|
||||
"url": "https://docs.litellm.ai/docs/providers/a2a",
|
||||
|
|
|
|||
|
|
@ -51,7 +51,13 @@ class TestSiliconFlowConfig:
|
|||
assert SiliconFlowConfig.API_BASE_URL == "https://api.siliconflow.com/v1"
|
||||
|
||||
def test_get_openai_compatible_provider_info(self):
|
||||
with patch.dict(os.environ, {"SILICONFLOW_API_KEY": "sk-secret"}, clear=False):
|
||||
def fake_secret(name, *args, **kwargs):
|
||||
return "sk-secret" if name == "SILICONFLOW_API_KEY" else None
|
||||
|
||||
with patch(
|
||||
"litellm.llms.siliconflow.chat.transformation.get_secret_str",
|
||||
side_effect=fake_secret,
|
||||
):
|
||||
api_base, api_key = self.config._get_openai_compatible_provider_info(
|
||||
api_base=None, api_key=None
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue