mirror of
https://hubproxy.babadafafafafa.cn/https://github.com/1Panel-dev/1Panel.git
synced 2026-09-20 16:13:59 +08:00
* feat: Optimize application upgrade logic * feat: Optimize application upgrade logic * feat: Optimize application upgrade logic
67 lines
1.7 KiB
Go
67 lines
1.7 KiB
Go
package provider
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
type OpenClawProviderPatch struct {
|
|
PrimaryModel string
|
|
ProviderKey string
|
|
ModelID string
|
|
APIKey string
|
|
BaseURL string
|
|
APIType string
|
|
AuthHeader bool
|
|
}
|
|
|
|
func BuildOpenClawProviderPatch(provider, modelName, apiType, authMode, baseURL, apiKey string) (*OpenClawProviderPatch, error) {
|
|
if modelName == "" {
|
|
return nil, fmt.Errorf("model is required")
|
|
}
|
|
resolvedAPIType := apiType
|
|
if _, ok := FindAPIConfig(provider, resolvedAPIType); !ok {
|
|
resolvedAPIType = DefaultAPIType(provider)
|
|
}
|
|
if IsImageAPIType(resolvedAPIType) || IsEmbeddingAPIType(resolvedAPIType) {
|
|
return nil, fmt.Errorf("api type %s does not support text generation", resolvedAPIType)
|
|
}
|
|
resolvedAuthMode, err := ResolveAuthMode(provider, resolvedAPIType, authMode)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
usesBearer := resolvedAuthMode == AuthModeBearer
|
|
modelID := NormalizeModelID(provider, modelName)
|
|
providerKey := provider
|
|
preserveQualifiedModel := false
|
|
switch provider {
|
|
case "gemini":
|
|
providerKey = "google"
|
|
resolvedAPIType = "google-generative-ai"
|
|
usesBearer = false
|
|
case "moonshot", "kimi":
|
|
providerKey = "moonshot"
|
|
resolvedAPIType = "openai-completions"
|
|
usesBearer = false
|
|
case "ollama":
|
|
apiKey = "ollama"
|
|
usesBearer = false
|
|
case "openai", "openrouter", "anthropic":
|
|
preserveQualifiedModel = strings.Contains(modelName, "/")
|
|
}
|
|
|
|
primaryModel := providerKey + "/" + modelID
|
|
if preserveQualifiedModel {
|
|
primaryModel = modelName
|
|
}
|
|
return &OpenClawProviderPatch{
|
|
PrimaryModel: primaryModel,
|
|
ProviderKey: providerKey,
|
|
ModelID: modelID,
|
|
APIKey: apiKey,
|
|
BaseURL: baseURL,
|
|
APIType: resolvedAPIType,
|
|
AuthHeader: usesBearer,
|
|
}, nil
|
|
}
|