Spaces:
Configuration error
Configuration error
package services | |
import ( | |
"github.com/mudler/LocalAI/core/config" | |
"github.com/mudler/LocalAI/pkg/model" | |
) | |
type LooseFilePolicy int | |
const ( | |
LOOSE_ONLY LooseFilePolicy = iota | |
SKIP_IF_CONFIGURED | |
SKIP_ALWAYS | |
ALWAYS_INCLUDE | |
) | |
func ListModels(bcl *config.BackendConfigLoader, ml *model.ModelLoader, filter config.BackendConfigFilterFn, looseFilePolicy LooseFilePolicy) ([]string, error) { | |
var skipMap map[string]interface{} = map[string]interface{}{} | |
dataModels := []string{} | |
// Start with known configurations | |
for _, c := range bcl.GetBackendConfigsByFilter(filter) { | |
// Is this better than looseFilePolicy <= SKIP_IF_CONFIGURED ? less performant but more readable? | |
if (looseFilePolicy == SKIP_IF_CONFIGURED) || (looseFilePolicy == LOOSE_ONLY) { | |
skipMap[c.Model] = nil | |
} | |
if looseFilePolicy != LOOSE_ONLY { | |
dataModels = append(dataModels, c.Name) | |
} | |
} | |
// Then iterate through the loose files if requested. | |
if looseFilePolicy != SKIP_ALWAYS { | |
models, err := ml.ListFilesInModelPath() | |
if err != nil { | |
return nil, err | |
} | |
for _, m := range models { | |
// And only adds them if they shouldn't be skipped. | |
if _, exists := skipMap[m]; !exists && filter(m, nil) { | |
dataModels = append(dataModels, m) | |
} | |
} | |
} | |
return dataModels, nil | |
} | |