mirror of
https://github.com/mudler/LocalAI.git
synced 2026-01-04 01:30:08 -06:00
* feat(backend gallery): add meta packages So we can have meta packages such as "vllm" that automatically installs the corresponding package depending on the GPU that is being currently detected in the system. Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * feat: use a metadata file Signed-off-by: Ettore Di Giacinto <mudler@localai.io> --------- Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
38 lines
1.1 KiB
Go
38 lines
1.1 KiB
Go
package startup
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"strings"
|
|
|
|
"github.com/mudler/LocalAI/core/config"
|
|
"github.com/mudler/LocalAI/core/gallery"
|
|
"github.com/mudler/LocalAI/core/system"
|
|
)
|
|
|
|
func InstallExternalBackends(galleries []config.Gallery, backendPath string, downloadStatus func(string, string, string, float64), backends ...string) error {
|
|
var errs error
|
|
systemState, err := system.GetSystemState()
|
|
if err != nil {
|
|
return fmt.Errorf("failed to get system state: %w", err)
|
|
}
|
|
for _, backend := range backends {
|
|
switch {
|
|
case strings.HasPrefix(backend, "oci://"):
|
|
backend = strings.TrimPrefix(backend, "oci://")
|
|
|
|
if err := gallery.InstallBackend(backendPath, &gallery.GalleryBackend{
|
|
URI: backend,
|
|
}, downloadStatus); err != nil {
|
|
errs = errors.Join(err, fmt.Errorf("error installing backend %s", backend))
|
|
}
|
|
default:
|
|
err := gallery.InstallBackendFromGallery(galleries, systemState, backend, backendPath, downloadStatus)
|
|
if err != nil {
|
|
errs = errors.Join(err, fmt.Errorf("error installing backend %s", backend))
|
|
}
|
|
}
|
|
}
|
|
return errs
|
|
}
|