Spaces:
Configuration error
Configuration error
| package embedded | |
| import ( | |
| "embed" | |
| "fmt" | |
| "slices" | |
| "strings" | |
| "github.com/mudler/LocalAI/pkg/downloader" | |
| "github.com/rs/zerolog/log" | |
| "github.com/mudler/LocalAI/pkg/assets" | |
| "gopkg.in/yaml.v3" | |
| ) | |
| var modelShorteners map[string]string | |
| //go:embed model_library.yaml | |
| var modelLibrary []byte | |
| //go:embed models/* | |
| var embeddedModels embed.FS | |
| func ModelShortURL(s string) string { | |
| if _, ok := modelShorteners[s]; ok { | |
| s = modelShorteners[s] | |
| } | |
| return s | |
| } | |
| func init() { | |
| err := yaml.Unmarshal(modelLibrary, &modelShorteners) | |
| if err != nil { | |
| log.Error().Err(err).Msg("error while unmarshalling embedded modelLibrary") | |
| } | |
| } | |
| func GetRemoteLibraryShorteners(url string, basePath string) (map[string]string, error) { | |
| remoteLibrary := map[string]string{} | |
| uri := downloader.URI(url) | |
| err := uri.DownloadWithCallback(basePath, func(_ string, i []byte) error { | |
| return yaml.Unmarshal(i, &remoteLibrary) | |
| }) | |
| if err != nil { | |
| return nil, fmt.Errorf("error downloading remote library: %s", err.Error()) | |
| } | |
| return remoteLibrary, err | |
| } | |
| // ExistsInModelsLibrary checks if a model exists in the embedded models library | |
| func ExistsInModelsLibrary(s string) bool { | |
| f := fmt.Sprintf("%s.yaml", s) | |
| a := []string{} | |
| for _, j := range assets.ListFiles(embeddedModels) { | |
| a = append(a, strings.TrimPrefix(j, "models/")) | |
| } | |
| return slices.Contains(a, f) | |
| } | |
| // ResolveContent returns the content in the embedded model library | |
| func ResolveContent(s string) ([]byte, error) { | |
| if ExistsInModelsLibrary(s) { | |
| return embeddedModels.ReadFile(fmt.Sprintf("models/%s.yaml", s)) | |
| } | |
| return nil, fmt.Errorf("cannot find model %s", s) | |
| } | |