Skip to content

Commit 193a9fe

Browse files
committed
fix(config): correctly parse usecases from strings
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
1 parent 74ee146 commit 193a9fe

File tree

2 files changed

+27
-25
lines changed

2 files changed

+27
-25
lines changed

core/config/model_config.go

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -514,30 +514,30 @@ func (c *ModelConfig) GetModelConfigFile() string {
514514
return c.modelConfigFile
515515
}
516516

517-
type ModelConfigUsecases int
517+
type ModelConfigUsecase int
518518

519519
const (
520-
FLAG_ANY ModelConfigUsecases = 0b000000000000
521-
FLAG_CHAT ModelConfigUsecases = 0b000000000001
522-
FLAG_COMPLETION ModelConfigUsecases = 0b000000000010
523-
FLAG_EDIT ModelConfigUsecases = 0b000000000100
524-
FLAG_EMBEDDINGS ModelConfigUsecases = 0b000000001000
525-
FLAG_RERANK ModelConfigUsecases = 0b000000010000
526-
FLAG_IMAGE ModelConfigUsecases = 0b000000100000
527-
FLAG_TRANSCRIPT ModelConfigUsecases = 0b000001000000
528-
FLAG_TTS ModelConfigUsecases = 0b000010000000
529-
FLAG_SOUND_GENERATION ModelConfigUsecases = 0b000100000000
530-
FLAG_TOKENIZE ModelConfigUsecases = 0b001000000000
531-
FLAG_VAD ModelConfigUsecases = 0b010000000000
532-
FLAG_VIDEO ModelConfigUsecases = 0b100000000000
533-
FLAG_DETECTION ModelConfigUsecases = 0b1000000000000
520+
FLAG_ANY ModelConfigUsecase = 0b000000000000
521+
FLAG_CHAT ModelConfigUsecase = 0b000000000001
522+
FLAG_COMPLETION ModelConfigUsecase = 0b000000000010
523+
FLAG_EDIT ModelConfigUsecase = 0b000000000100
524+
FLAG_EMBEDDINGS ModelConfigUsecase = 0b000000001000
525+
FLAG_RERANK ModelConfigUsecase = 0b000000010000
526+
FLAG_IMAGE ModelConfigUsecase = 0b000000100000
527+
FLAG_TRANSCRIPT ModelConfigUsecase = 0b000001000000
528+
FLAG_TTS ModelConfigUsecase = 0b000010000000
529+
FLAG_SOUND_GENERATION ModelConfigUsecase = 0b000100000000
530+
FLAG_TOKENIZE ModelConfigUsecase = 0b001000000000
531+
FLAG_VAD ModelConfigUsecase = 0b010000000000
532+
FLAG_VIDEO ModelConfigUsecase = 0b100000000000
533+
FLAG_DETECTION ModelConfigUsecase = 0b1000000000000
534534

535535
// Common Subsets
536-
FLAG_LLM ModelConfigUsecases = FLAG_CHAT | FLAG_COMPLETION | FLAG_EDIT
536+
FLAG_LLM ModelConfigUsecase = FLAG_CHAT | FLAG_COMPLETION | FLAG_EDIT
537537
)
538538

539-
func GetAllModelConfigUsecases() map[string]ModelConfigUsecases {
540-
return map[string]ModelConfigUsecases{
539+
func GetAllModelConfigUsecases() map[string]ModelConfigUsecase {
540+
return map[string]ModelConfigUsecase{
541541
// Note: FLAG_ANY is intentionally excluded from this map
542542
// because it's 0 and would always match in HasUsecases checks
543543
"FLAG_CHAT": FLAG_CHAT,
@@ -561,23 +561,25 @@ func stringToFlag(s string) string {
561561
return "FLAG_" + strings.ToUpper(s)
562562
}
563563

564-
func GetUsecasesFromYAML(input []string) *ModelConfigUsecases {
564+
func GetUsecasesFromYAML(input []string) *ModelConfigUsecase {
565565
if len(input) == 0 {
566566
return nil
567567
}
568568
result := FLAG_ANY
569569
flags := GetAllModelConfigUsecases()
570570
for _, str := range input {
571-
flag, exists := flags[stringToFlag(str)]
572-
if exists {
573-
result |= flag
571+
for _, flag := range []string{stringToFlag(str), str} {
572+
f, exists := flags[flag]
573+
if exists {
574+
result |= f
575+
}
574576
}
575577
}
576578
return &result
577579
}
578580

579581
// HasUsecases examines a ModelConfig and determines which endpoints have a chance of success.
580-
func (c *ModelConfig) HasUsecases(u ModelConfigUsecases) bool {
582+
func (c *ModelConfig) HasUsecases(u ModelConfigUsecase) bool {
581583
if (c.KnownUsecases != nil) && ((u & *c.KnownUsecases) == u) {
582584
return true
583585
}
@@ -587,7 +589,7 @@ func (c *ModelConfig) HasUsecases(u ModelConfigUsecases) bool {
587589
// GuessUsecases is a **heuristic based** function, as the backend in question may not be loaded yet, and the config may not record what it's useful at.
588590
// In its current state, this function should ideally check for properties of the config like templates, rather than the direct backend name checks for the lower half.
589591
// This avoids the maintenance burden of updating this list for each new backend - but unfortunately, that's the best option for some services currently.
590-
func (c *ModelConfig) GuessUsecases(u ModelConfigUsecases) bool {
592+
func (c *ModelConfig) GuessUsecases(u ModelConfigUsecase) bool {
591593
if (u & FLAG_CHAT) == FLAG_CHAT {
592594
if c.TemplateConfig.Chat == "" && c.TemplateConfig.ChatMessage == "" && !c.TemplateConfig.UseTokenizerTemplate {
593595
return false

core/config/model_config_filter.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ func BuildNameFilterFn(filter string) (ModelConfigFilterFn, error) {
2222
}, nil
2323
}
2424

25-
func BuildUsecaseFilterFn(usecases ModelConfigUsecases) ModelConfigFilterFn {
25+
func BuildUsecaseFilterFn(usecases ModelConfigUsecase) ModelConfigFilterFn {
2626
if usecases == FLAG_ANY {
2727
return NoFilterFn
2828
}

0 commit comments

Comments
 (0)