mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2026-09-22 16:00:51 +00:00
llmman (https://github.com/llmmanorg/llmman) is a local model runner serving Ollama- and OpenAI-compatible routes on 127.0.0.1:17434. Register it in the agent provider catalog next to Ollama and extend every Ollama special case (no API key, verification skipped, OpenClaw placeholder key, manual initial model) to cover it as well.
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", "llmman":
|
|
apiKey = provider
|
|
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
|
|
}
|