mirror of
https://github.com/mudler/LocalAI.git
synced 2025-06-29 22:20:43 +00:00
switch to Fiber
This commit is contained in:
parent
f308b6ead9
commit
115766205c
4 changed files with 81 additions and 46 deletions
27
apiv2/localai_fiber.go
Normal file
27
apiv2/localai_fiber.go
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
package apiv2
|
||||||
|
|
||||||
|
import (
|
||||||
|
model "github.com/go-skynet/LocalAI/pkg/model"
|
||||||
|
"github.com/gofiber/fiber/v2"
|
||||||
|
)
|
||||||
|
|
||||||
|
func RegisterNewLocalAIFiberServer(configManager *ConfigManager, loader *model.ModelLoader, app *fiber.App) *LocalAIServer {
|
||||||
|
engine := NewLocalAIEngine(loader)
|
||||||
|
localAI := LocalAIServer{
|
||||||
|
configManager: configManager,
|
||||||
|
loader: loader,
|
||||||
|
engine: &engine,
|
||||||
|
}
|
||||||
|
|
||||||
|
v2Group := app.Group("/v2")
|
||||||
|
var mw []StrictMiddlewareFunc
|
||||||
|
|
||||||
|
// Use our validation middleware to check all requests against the
|
||||||
|
// OpenAPI schema.
|
||||||
|
// v2Group.Use(middleware.OapiRequestValidator(swagger))
|
||||||
|
|
||||||
|
// We now register our petStore above as the handler for the interface
|
||||||
|
RegisterHandlers(v2Group, NewStrictHandler(&localAI, mw))
|
||||||
|
|
||||||
|
return &localAI
|
||||||
|
}
|
|
@ -1,23 +1,23 @@
|
||||||
package apiv2
|
package apiv2
|
||||||
|
|
||||||
import (
|
// import (
|
||||||
"net/http"
|
// "net/http"
|
||||||
|
|
||||||
"github.com/go-skynet/LocalAI/pkg/model"
|
// "github.com/go-skynet/LocalAI/pkg/model"
|
||||||
)
|
// )
|
||||||
|
|
||||||
func NewLocalAINetHTTPServer(configManager *ConfigManager, loader *model.ModelLoader, address string) *LocalAIServer {
|
// func NewLocalAINetHTTPServer(configManager *ConfigManager, loader *model.ModelLoader, address string) *LocalAIServer {
|
||||||
engine := NewLocalAIEngine(loader)
|
// engine := NewLocalAIEngine(loader)
|
||||||
localAI := LocalAIServer{
|
// localAI := LocalAIServer{
|
||||||
configManager: configManager,
|
// configManager: configManager,
|
||||||
loader: loader,
|
// loader: loader,
|
||||||
engine: &engine,
|
// engine: &engine,
|
||||||
}
|
// }
|
||||||
|
|
||||||
var middlewares []StrictMiddlewareFunc
|
// var middlewares []StrictMiddlewareFunc
|
||||||
|
|
||||||
http.Handle("/", Handler(NewStrictHandler(&localAI, middlewares)))
|
// http.Handle("/", Handler(NewStrictHandler(&localAI, middlewares)))
|
||||||
|
|
||||||
http.ListenAndServe(address, nil)
|
// http.ListenAndServe(address, nil)
|
||||||
return &localAI
|
// return &localAI
|
||||||
}
|
// }
|
||||||
|
|
66
main.go
66
main.go
|
@ -69,11 +69,17 @@ func main() {
|
||||||
EnvVars: []string{"ADDRESS"},
|
EnvVars: []string{"ADDRESS"},
|
||||||
Value: ":8080",
|
Value: ":8080",
|
||||||
},
|
},
|
||||||
&cli.StringFlag{
|
// &cli.StringFlag{
|
||||||
Name: "addressv2",
|
// Name: "addressv2",
|
||||||
DefaultText: "Bind address for the API server (DEBUG v2 TEST)",
|
// DefaultText: "Bind address for the API server (DEBUG v2 TEST)",
|
||||||
EnvVars: []string{"ADDRESS_V2"},
|
// EnvVars: []string{"ADDRESS_V2"},
|
||||||
Value: ":8085",
|
// Value: ":8085",
|
||||||
|
// },
|
||||||
|
&cli.BoolFlag{
|
||||||
|
Name: "exp-v2",
|
||||||
|
DefaultText: "Enable the experimental v2 API server",
|
||||||
|
EnvVars: []string{"EXPERIMENTAL_V2"},
|
||||||
|
Value: true,
|
||||||
},
|
},
|
||||||
&cli.StringFlag{
|
&cli.StringFlag{
|
||||||
Name: "image-path",
|
Name: "image-path",
|
||||||
|
@ -141,30 +147,6 @@ It uses llama.cpp, ggml and gpt4all as backend with golang c bindings.
|
||||||
|
|
||||||
loader := model.NewModelLoader(ctx.String("models-path"), ctx.String("templates-path"))
|
loader := model.NewModelLoader(ctx.String("models-path"), ctx.String("templates-path"))
|
||||||
|
|
||||||
if av2 := ctx.String("addressv2"); av2 != "" {
|
|
||||||
|
|
||||||
v2ConfigManager := apiv2.NewConfigManager()
|
|
||||||
registered, cfgErr := v2ConfigManager.LoadConfigDirectory(ctx.String("config-path"))
|
|
||||||
|
|
||||||
if cfgErr != nil {
|
|
||||||
panic("failed to load config directory todo better handler here")
|
|
||||||
}
|
|
||||||
|
|
||||||
for i, reg := range registered {
|
|
||||||
log.Log().Msgf("%d: %+v", i, reg)
|
|
||||||
|
|
||||||
testField, exists := v2ConfigManager.GetConfig(reg)
|
|
||||||
if exists {
|
|
||||||
log.Log().Msgf("!! %s: %s", testField.GetRegistration().Endpoint, testField.GetLocalSettings().ModelPath)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
v2Server := apiv2.NewLocalAINetHTTPServer(v2ConfigManager, loader, ctx.String("addressv2"))
|
|
||||||
|
|
||||||
log.Log().Msgf("NEW v2 test: %+v", v2Server)
|
|
||||||
}
|
|
||||||
|
|
||||||
app, err := api.App(
|
app, err := api.App(
|
||||||
api.WithConfigFile(ctx.String("config-file")),
|
api.WithConfigFile(ctx.String("config-file")),
|
||||||
api.WithJSONStringPreload(ctx.String("preload-models")),
|
api.WithJSONStringPreload(ctx.String("preload-models")),
|
||||||
|
@ -186,6 +168,32 @@ It uses llama.cpp, ggml and gpt4all as backend with golang c bindings.
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if av2 := ctx.String("addressv2"); av2 != "" {
|
||||||
|
if ctx.Bool("exp-v2") {
|
||||||
|
v2ConfigManager := apiv2.NewConfigManager()
|
||||||
|
registered, cfgErr := v2ConfigManager.LoadConfigDirectory(ctx.String("config-path"))
|
||||||
|
|
||||||
|
if cfgErr != nil {
|
||||||
|
panic("failed to load config directory todo better handler here")
|
||||||
|
}
|
||||||
|
|
||||||
|
for i, reg := range registered {
|
||||||
|
log.Log().Msgf("%d: %+v", i, reg)
|
||||||
|
|
||||||
|
testField, exists := v2ConfigManager.GetConfig(reg)
|
||||||
|
if exists {
|
||||||
|
log.Log().Msgf("!! %s: %s", testField.GetRegistration().Endpoint, testField.GetLocalSettings().ModelPath)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// v2Server := apiv2.NewLocalAINetHTTPServer(v2ConfigManager, loader, ctx.String("addressv2"))
|
||||||
|
|
||||||
|
v2Server := apiv2.RegisterNewLocalAIFiberServer(v2ConfigManager, loader, app)
|
||||||
|
|
||||||
|
log.Log().Msgf("NEW v2 test: %+v", v2Server)
|
||||||
|
}
|
||||||
|
|
||||||
return app.Listen(ctx.String("address"))
|
return app.Listen(ctx.String("address"))
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package: apiv2
|
package: apiv2
|
||||||
generate:
|
generate:
|
||||||
models: true
|
models: true
|
||||||
chi-server: true
|
fiber-server: true
|
||||||
strict-server: true
|
strict-server: true
|
||||||
output: apiv2/localai.gen.go
|
output: apiv2/localai.gen.go
|
||||||
output-options:
|
output-options:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue