|
|
package application |
|
|
|
|
|
import ( |
|
|
"context" |
|
|
"sync" |
|
|
|
|
|
"github.com/mudler/LocalAI/core/config" |
|
|
"github.com/mudler/LocalAI/core/services" |
|
|
"github.com/mudler/LocalAI/core/templates" |
|
|
"github.com/mudler/LocalAI/pkg/model" |
|
|
) |
|
|
|
|
|
type Application struct { |
|
|
backendLoader *config.ModelConfigLoader |
|
|
modelLoader *model.ModelLoader |
|
|
applicationConfig *config.ApplicationConfig |
|
|
startupConfig *config.ApplicationConfig |
|
|
templatesEvaluator *templates.Evaluator |
|
|
galleryService *services.GalleryService |
|
|
agentJobService *services.AgentJobService |
|
|
watchdogMutex sync.Mutex |
|
|
watchdogStop chan bool |
|
|
p2pMutex sync.Mutex |
|
|
p2pCtx context.Context |
|
|
p2pCancel context.CancelFunc |
|
|
agentJobMutex sync.Mutex |
|
|
} |
|
|
|
|
|
func newApplication(appConfig *config.ApplicationConfig) *Application { |
|
|
return &Application{ |
|
|
backendLoader: config.NewModelConfigLoader(appConfig.SystemState.Model.ModelsPath), |
|
|
modelLoader: model.NewModelLoader(appConfig.SystemState), |
|
|
applicationConfig: appConfig, |
|
|
templatesEvaluator: templates.NewEvaluator(appConfig.SystemState.Model.ModelsPath), |
|
|
} |
|
|
} |
|
|
|
|
|
func (a *Application) ModelConfigLoader() *config.ModelConfigLoader { |
|
|
return a.backendLoader |
|
|
} |
|
|
|
|
|
func (a *Application) ModelLoader() *model.ModelLoader { |
|
|
return a.modelLoader |
|
|
} |
|
|
|
|
|
func (a *Application) ApplicationConfig() *config.ApplicationConfig { |
|
|
return a.applicationConfig |
|
|
} |
|
|
|
|
|
func (a *Application) TemplatesEvaluator() *templates.Evaluator { |
|
|
return a.templatesEvaluator |
|
|
} |
|
|
|
|
|
func (a *Application) GalleryService() *services.GalleryService { |
|
|
return a.galleryService |
|
|
} |
|
|
|
|
|
func (a *Application) AgentJobService() *services.AgentJobService { |
|
|
return a.agentJobService |
|
|
} |
|
|
|
|
|
|
|
|
func (a *Application) StartupConfig() *config.ApplicationConfig { |
|
|
return a.startupConfig |
|
|
} |
|
|
|
|
|
func (a *Application) start() error { |
|
|
galleryService := services.NewGalleryService(a.ApplicationConfig(), a.ModelLoader()) |
|
|
err := galleryService.Start(a.ApplicationConfig().Context, a.ModelConfigLoader(), a.ApplicationConfig().SystemState) |
|
|
if err != nil { |
|
|
return err |
|
|
} |
|
|
|
|
|
a.galleryService = galleryService |
|
|
|
|
|
|
|
|
agentJobService := services.NewAgentJobService( |
|
|
a.ApplicationConfig(), |
|
|
a.ModelLoader(), |
|
|
a.ModelConfigLoader(), |
|
|
a.TemplatesEvaluator(), |
|
|
) |
|
|
|
|
|
err = agentJobService.Start(a.ApplicationConfig().Context) |
|
|
if err != nil { |
|
|
return err |
|
|
} |
|
|
|
|
|
a.agentJobService = agentJobService |
|
|
|
|
|
return nil |
|
|
} |
|
|
|