feat:add model provider GPUStack
This commit is contained in:
@@ -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',
|
||||
},
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
@@ -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',
|
||||
},
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
@@ -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",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user