mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-07-04 01:29:35 +08:00
feat: add 4 new models for siliconflow (#15383)
### What problem does this PR solve? Added 4 new models: deepseek-ai/DeepSeek-V4-Pro deepseek-ai/DeepSeek-V4-Flash Pro/moonshotai/Kimi-K2.6 Pro/zai-org/GLM-5.1 ### Type of change - [x] New Feature (non-breaking change which adds functionality)
This commit is contained in:
@@ -2927,6 +2927,20 @@
|
||||
"model_type": "chat",
|
||||
"is_tools": true
|
||||
},
|
||||
{
|
||||
"llm_name": "Pro/deepseek-ai/DeepSeek-V4-Pro",
|
||||
"tags": "LLM,CHAT,1M",
|
||||
"max_tokens": 1000000,
|
||||
"model_type": "chat",
|
||||
"is_tools": true
|
||||
},
|
||||
{
|
||||
"llm_name": "Pro/deepseek-ai/DeepSeek-V4-Flash",
|
||||
"tags": "LLM,CHAT,1M",
|
||||
"max_tokens": 1000000,
|
||||
"model_type": "chat",
|
||||
"is_tools": true
|
||||
},
|
||||
{
|
||||
"llm_name": "deepseek-ai/DeepSeek-V3.1",
|
||||
"tags": "LLM,CHAT,160",
|
||||
@@ -3116,6 +3130,13 @@
|
||||
"model_type": "chat",
|
||||
"is_tools": true
|
||||
},
|
||||
{
|
||||
"llm_name": "Pro/moonshotai/Kimi-K2.6",
|
||||
"tags": "LLM,CHAT,IMAGE2TEXT,262k",
|
||||
"max_tokens": 262000,
|
||||
"model_type": "chat",
|
||||
"is_tools": true
|
||||
},
|
||||
{
|
||||
"llm_name": "Pro/zai-org/GLM-4.7",
|
||||
"tags": "LLM,CHAT,205k",
|
||||
@@ -3123,6 +3144,13 @@
|
||||
"model_type": "chat",
|
||||
"is_tools": true
|
||||
},
|
||||
{
|
||||
"llm_name": "Pro/zai-org/GLM-5.1",
|
||||
"tags": "LLM,CHAT,205k",
|
||||
"max_tokens": 205000,
|
||||
"model_type": "chat",
|
||||
"is_tools": true
|
||||
},
|
||||
{
|
||||
"llm_name": "deepseek-ai/DeepSeek-V3.2",
|
||||
"tags": "LLM,CHAT,164k",
|
||||
|
||||
@@ -13,6 +13,51 @@
|
||||
"asr": "audio/transcriptions"
|
||||
},
|
||||
"models": [
|
||||
{
|
||||
"name": "Pro/deepseek-ai/DeepSeek-V4-Pro",
|
||||
"max_tokens": 1048576,
|
||||
"model_types": [
|
||||
"chat"
|
||||
],
|
||||
"thinking": {
|
||||
"default_value": true,
|
||||
"clear_thinking": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Pro/deepseek-ai/DeepSeek-V4-Flash",
|
||||
"max_tokens": 1048576,
|
||||
"model_types": [
|
||||
"chat"
|
||||
],
|
||||
"thinking": {
|
||||
"default_value": true,
|
||||
"clear_thinking": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Pro/moonshotai/Kimi-K2.6",
|
||||
"max_tokens": 262144,
|
||||
"model_types": [
|
||||
"chat",
|
||||
"vision"
|
||||
],
|
||||
"thinking": {
|
||||
"default_value": true,
|
||||
"clear_thinking": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Pro/zai-org/GLM-5.1",
|
||||
"max_tokens": 204800,
|
||||
"model_types": [
|
||||
"chat"
|
||||
],
|
||||
"thinking": {
|
||||
"default_value": true,
|
||||
"clear_thinking": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "qwen/qwen3-8b",
|
||||
"max_tokens": 32768,
|
||||
|
||||
@@ -209,3 +209,65 @@ func TestPPIOProviderConfigLoadsIntoProviderManager(t *testing.T) {
|
||||
t.Errorf("SearchByType data count=%d, want 21", len(resp.Data))
|
||||
}
|
||||
}
|
||||
|
||||
func TestSiliconFlowProviderConfigLoadsLatestProModels(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
if err := os.WriteFile(filepath.Join(dir, "siliconflow.json"), readProviderConfig(t, "siliconflow.json"), 0o600); err != nil {
|
||||
t.Fatalf("write siliconflow config: %v", err)
|
||||
}
|
||||
|
||||
pm, err := NewProviderManager(dir)
|
||||
if err != nil {
|
||||
t.Fatalf("NewProviderManager: %v", err)
|
||||
}
|
||||
|
||||
provider := pm.FindProvider("SiliconFlow")
|
||||
if provider == nil {
|
||||
t.Fatal("SiliconFlow provider not found")
|
||||
}
|
||||
if provider.URL["default"] != "https://api.siliconflow.cn/v1" {
|
||||
t.Errorf("default URL=%q", provider.URL["default"])
|
||||
}
|
||||
if provider.URLSuffix.Chat != "chat/completions" {
|
||||
t.Errorf("chat suffix=%q", provider.URLSuffix.Chat)
|
||||
}
|
||||
if _, ok := provider.ModelDriver.(*modeldrivers.SiliconflowModel); !ok {
|
||||
t.Fatalf("ModelDriver=%T, want *models.SiliconflowModel", provider.ModelDriver)
|
||||
}
|
||||
if provider.ModelDriver.Name() != "siliconflow" {
|
||||
t.Errorf("ModelDriver.Name()=%q", provider.ModelDriver.Name())
|
||||
}
|
||||
if len(provider.Models) != 12 {
|
||||
t.Fatalf("SiliconFlow model count=%d, want 12", len(provider.Models))
|
||||
}
|
||||
|
||||
deepSeekV4Pro, err := pm.GetModelByName("SiliconFlow", "Pro/deepseek-ai/DeepSeek-V4-Pro")
|
||||
if err != nil {
|
||||
t.Fatalf("GetModelByName DeepSeek-V4-Pro: %v", err)
|
||||
}
|
||||
if deepSeekV4Pro.MaxTokens != 1048576 {
|
||||
t.Errorf("DeepSeek-V4-Pro max_tokens=%d", deepSeekV4Pro.MaxTokens)
|
||||
}
|
||||
if !deepSeekV4Pro.ModelTypeMap["chat"] {
|
||||
t.Errorf("DeepSeek-V4-Pro model types=%v, want chat", deepSeekV4Pro.ModelTypes)
|
||||
}
|
||||
|
||||
kimiK26, err := pm.GetModelByName("SiliconFlow", "Pro/moonshotai/Kimi-K2.6")
|
||||
if err != nil {
|
||||
t.Fatalf("GetModelByName Kimi-K2.6: %v", err)
|
||||
}
|
||||
if kimiK26.MaxTokens != 262144 {
|
||||
t.Errorf("Kimi-K2.6 max_tokens=%d", kimiK26.MaxTokens)
|
||||
}
|
||||
if !kimiK26.ModelTypeMap["chat"] || !kimiK26.ModelTypeMap["vision"] {
|
||||
t.Errorf("Kimi-K2.6 model types=%v, want chat+vision", kimiK26.ModelTypes)
|
||||
}
|
||||
|
||||
glm51, err := pm.GetModelByName("SiliconFlow", "Pro/zai-org/GLM-5.1")
|
||||
if err != nil {
|
||||
t.Fatalf("GetModelByName GLM-5.1: %v", err)
|
||||
}
|
||||
if glm51.MaxTokens != 204800 {
|
||||
t.Errorf("GLM-5.1 max_tokens=%d", glm51.MaxTokens)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,7 +90,7 @@ def _apply_model_family_policies(
|
||||
if provider == SupportedLiteLLMProvider.HunYuan:
|
||||
for key in ("presence_penalty", "frequency_penalty"):
|
||||
sanitized_gen_conf.pop(key, None)
|
||||
elif "kimi-k2.5" in model_name_lower:
|
||||
elif "kimi-k2.5" in model_name_lower or "kimi-k2.6" in model_name_lower:
|
||||
reasoning = sanitized_gen_conf.pop("reasoning", None)
|
||||
thinking = {"type": "enabled"}
|
||||
if reasoning is not None:
|
||||
|
||||
Reference in New Issue
Block a user