feat:add model provider GPUStack

This commit is contained in:
nullkey
2026-01-07 21:41:25 +08:00
committed by wizardchen
parent f25ed71054
commit 4f74e141e6
5 changed files with 98 additions and 0 deletions
+4
View File
@@ -1697,6 +1697,10 @@ export default {
label: 'Google Gemini',
description: 'gemini-3-flash-preview, gemini-2.5-pro, etc.',
},
gpustack: {
label: 'GPUStack',
description: 'Self-hosted GPU cluster platform, OpenAI-compatible API',
},
},
}
},
+4
View File
@@ -947,6 +947,10 @@ export default {
label: 'Google Gemini',
description: 'gemini-3-flash-preview, gemini-2.5-pro, etc.',
},
gpustack: {
label: 'GPUStack',
description: 'Приватная платформа GPU-кластеров, OpenAI-совместимый API',
},
},
}
},
+28
View File
@@ -1207,6 +1207,34 @@ export default {
label: "Jina AI",
description: "专注于 Embedding 和 Rerank",
},
volcengine: {
label: "火山引擎",
description: "doubao-1-5-pro-32k, doubao-embedding-vision 等",
},
deepseek: {
label: "DeepSeek",
description: "deepseek-chat, deepseek-reasoner 等",
},
hunyuan: {
label: "腾讯混元",
description: "hunyuan-pro, hunyuan-standard, hunyuan-embedding 等",
},
minimax: {
label: "MiniMax",
description: "MiniMax-M2.1, MiniMax-M2.1-lightning 等",
},
mimo: {
label: "小米 MiMo",
description: "mimo-v2-flash",
},
gemini: {
label: "Google Gemini",
description: "gemini-3-flash-preview, gemini-2.5-pro 等",
},
gpustack: {
label: "GPUStack",
description: "私有化 GPU 集群部署平台,OpenAI 兼容 API",
},
},
},
},
+57
View File
@@ -0,0 +1,57 @@
package provider
import (
"fmt"
"github.com/Tencent/WeKnora/internal/types"
)
const (
// GPUStackBaseURL GPUStack API BaseURL (OpenAI 兼容模式)
GPUStackBaseURL = "http://your_gpustack_server_url/v1-openai"
GPUStackEmbeddingBaseURL = "http://your_gpustack_server_url/v1-openai/embeddings"
GPUStackRerankBaseURL = "http://your_gpustack_server_url/v1/rerank"
)
// GPUStackProvider 实现 GPUStack 的 Provider 接口
type GPUStackProvider struct{}
func init() {
Register(&GPUStackProvider{})
}
// Info 返回 GPUStack provider 的元数据
func (p *GPUStackProvider) Info() ProviderInfo {
return ProviderInfo{
Name: ProviderGPUStack,
DisplayName: "GPUStack",
Description: "Choose your deployed model on GPUStack",
DefaultURLs: map[types.ModelType]string{
types.ModelTypeKnowledgeQA: GPUStackBaseURL,
types.ModelTypeEmbedding: GPUStackEmbeddingBaseURL,
types.ModelTypeRerank: GPUStackRerankBaseURL,
types.ModelTypeVLLM: GPUStackBaseURL,
},
ModelTypes: []types.ModelType{
types.ModelTypeKnowledgeQA,
types.ModelTypeEmbedding,
types.ModelTypeRerank,
types.ModelTypeVLLM,
},
RequiresAuth: true, // GPUStack 需要 API Key
}
}
// ValidateConfig 验证 GPUStack provider 配置
func (p *GPUStackProvider) ValidateConfig(config *Config) error {
if config.BaseURL == "" {
return fmt.Errorf("base URL is required for GPUStack provider")
}
if config.APIKey == "" {
return fmt.Errorf("API key is required for GPUStack provider")
}
if config.ModelName == "" {
return fmt.Errorf("model name is required")
}
return nil
}
+5
View File
@@ -39,6 +39,8 @@ const (
ProviderMiniMax ProviderName = "minimax"
// 小米 Mimo
ProviderMimo ProviderName = "mimo"
// GPUStack (私有化部署)
ProviderGPUStack ProviderName = "gpustack"
)
// AllProviders 返回所有注册的提供者名称
@@ -57,6 +59,7 @@ func AllProviders() []ProviderName {
ProviderOpenRouter,
ProviderJina,
ProviderMimo,
ProviderGPUStack,
}
}
@@ -208,6 +211,8 @@ func DetectProvider(baseURL string) ProviderName {
return ProviderMiniMax
case containsAny(baseURL, "xiaomimimo.com"):
return ProviderMimo
case containsAny(baseURL, "gpustack"):
return ProviderGPUStack
default:
return ProviderGeneric
}