yao/llmprovider/presets.go
Max 8c34aa12ef feat(llm): enhance connector handling and model configuration
- Integrated logging for connector resolution failures, providing clearer diagnostics during fallback scenarios.
- Simplified connector ID extraction in various components, ensuring accurate handling of model identifiers.
- Updated model configuration to support new parameters and capabilities, improving overall provider management.
- Enhanced OpenAPI settings to reflect changes in model options and connector behavior, ensuring better alignment with upstream API requirements.
2026-05-02 10:52:10 +08:00

69 lines
1.6 KiB
Go

package llmprovider
import (
_ "embed"
"strings"
"gopkg.in/yaml.v3"
)
//go:embed presets.yml
var presetsYAML []byte
var presets []ProviderPreset
func init() {
presets = loadPresets()
}
func loadPresets() []ProviderPreset {
var list []ProviderPreset
if err := yaml.Unmarshal(presetsYAML, &list); err != nil {
panic("llmprovider: failed to parse presets.yml: " + err.Error())
}
return list
}
// GetPresets returns a copy of the embedded preset list.
func GetPresets() []ProviderPreset {
out := make([]ProviderPreset, len(presets))
copy(out, presets)
return out
}
// GetPresetsForLocale returns presets filtered by locale.
// Presets with empty Locale are always included (global).
// Presets with a non-empty Locale are included only when it matches.
func GetPresetsForLocale(locale string) []ProviderPreset {
norm := strings.ToLower(locale)
var out []ProviderPreset
for _, p := range presets {
if p.Locale == "" || strings.ToLower(p.Locale) == norm {
out = append(out, p)
}
}
return out
}
// GetPreset returns the preset for the given key, or nil if not found.
func GetPreset(key string) *ProviderPreset {
for i := range presets {
if presets[i].Key == key {
cp := presets[i]
return &cp
}
}
return nil
}
// RegisterPreset adds or updates a dynamic preset in the global list.
// New entries are prepended so they appear first; existing entries are updated in place.
func RegisterPreset(p ProviderPreset) {
for i := range presets {
if presets[i].Key == p.Key {
presets[i] = p
return
}
}
presets = append([]ProviderPreset{p}, presets...)
}