mirror of
https://github.com/mudler/LocalAI.git
synced 2025-05-20 10:35:01 +00:00

* squash past, centralize request middleware PR Signed-off-by: Dave Lee <dave@gray101.com> * migrate bruno request files to examples repo Signed-off-by: Dave Lee <dave@gray101.com> * fix Signed-off-by: Dave Lee <dave@gray101.com> * Update tests/e2e-aio/e2e_test.go Signed-off-by: Ettore Di Giacinto <mudler@users.noreply.github.com> --------- Signed-off-by: Dave Lee <dave@gray101.com> Signed-off-by: Ettore Di Giacinto <mudler@users.noreply.github.com> Co-authored-by: Ettore Di Giacinto <mudler@users.noreply.github.com>
63 lines
1.7 KiB
Go
63 lines
1.7 KiB
Go
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
|
|
}
|
|
|
|
func CheckIfModelExists(bcl *config.BackendConfigLoader, ml *model.ModelLoader, modelName string, looseFilePolicy LooseFilePolicy) (bool, error) {
|
|
filter, err := config.BuildNameFilterFn(modelName)
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
models, err := ListModels(bcl, ml, filter, looseFilePolicy)
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
return (len(models) > 0), nil
|
|
}
|