mirror of
https://github.com/mudler/LocalAI.git
synced 2025-06-29 14:14:59 +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
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
// import (
|
||||
// "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 {
|
||||
engine := NewLocalAIEngine(loader)
|
||||
localAI := LocalAIServer{
|
||||
configManager: configManager,
|
||||
loader: loader,
|
||||
engine: &engine,
|
||||
}
|
||||
// func NewLocalAINetHTTPServer(configManager *ConfigManager, loader *model.ModelLoader, address string) *LocalAIServer {
|
||||
// engine := NewLocalAIEngine(loader)
|
||||
// localAI := LocalAIServer{
|
||||
// configManager: configManager,
|
||||
// loader: loader,
|
||||
// engine: &engine,
|
||||
// }
|
||||
|
||||
var middlewares []StrictMiddlewareFunc
|
||||
// var middlewares []StrictMiddlewareFunc
|
||||
|
||||
http.Handle("/", Handler(NewStrictHandler(&localAI, middlewares)))
|
||||
// http.Handle("/", Handler(NewStrictHandler(&localAI, middlewares)))
|
||||
|
||||
http.ListenAndServe(address, nil)
|
||||
return &localAI
|
||||
}
|
||||
// http.ListenAndServe(address, nil)
|
||||
// return &localAI
|
||||
// }
|
||||
|
|
66
main.go
66
main.go
|
@ -69,11 +69,17 @@ func main() {
|
|||
EnvVars: []string{"ADDRESS"},
|
||||
Value: ":8080",
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "addressv2",
|
||||
DefaultText: "Bind address for the API server (DEBUG v2 TEST)",
|
||||
EnvVars: []string{"ADDRESS_V2"},
|
||||
Value: ":8085",
|
||||
// &cli.StringFlag{
|
||||
// Name: "addressv2",
|
||||
// DefaultText: "Bind address for the API server (DEBUG v2 TEST)",
|
||||
// EnvVars: []string{"ADDRESS_V2"},
|
||||
// Value: ":8085",
|
||||
// },
|
||||
&cli.BoolFlag{
|
||||
Name: "exp-v2",
|
||||
DefaultText: "Enable the experimental v2 API server",
|
||||
EnvVars: []string{"EXPERIMENTAL_V2"},
|
||||
Value: true,
|
||||
},
|
||||
&cli.StringFlag{
|
||||
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"))
|
||||
|
||||
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(
|
||||
api.WithConfigFile(ctx.String("config-file")),
|
||||
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
|
||||
}
|
||||
|
||||
// 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"))
|
||||
},
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package: apiv2
|
||||
generate:
|
||||
models: true
|
||||
chi-server: true
|
||||
fiber-server: true
|
||||
strict-server: true
|
||||
output: apiv2/localai.gen.go
|
||||
output-options:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue