From da6278aae9801ddf753979ed8223439e2eb52a30 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Tue, 7 Oct 2025 00:06:06 +0200 Subject: [PATCH] feat(api): support both /v1 and not on openai routes (#6403) Signed-off-by: Ettore Di Giacinto --- core/http/routes/openai.go | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/core/http/routes/openai.go b/core/http/routes/openai.go index cf7241228..8dc56709f 100644 --- a/core/http/routes/openai.go +++ b/core/http/routes/openai.go @@ -76,25 +76,37 @@ func RegisterOpenAIRoutes(app *fiber.App, app.Post("/embeddings", embeddingChain...) app.Post("/v1/engines/:model/embeddings", embeddingChain...) - // audio - app.Post("/v1/audio/transcriptions", + audioChain := []fiber.Handler{ re.BuildFilteredFirstAvailableDefaultModel(config.BuildUsecaseFilterFn(config.FLAG_TRANSCRIPT)), re.SetModelAndConfig(func() schema.LocalAIRequest { return new(schema.OpenAIRequest) }), re.SetOpenAIRequest, openai.TranscriptEndpoint(application.ModelConfigLoader(), application.ModelLoader(), application.ApplicationConfig()), - ) + } + // audio + app.Post("/v1/audio/transcriptions", audioChain...) + app.Post("/audio/transcriptions", audioChain...) - app.Post("/v1/audio/speech", + audioSpeechChain := []fiber.Handler{ re.BuildFilteredFirstAvailableDefaultModel(config.BuildUsecaseFilterFn(config.FLAG_TTS)), re.SetModelAndConfig(func() schema.LocalAIRequest { return new(schema.TTSRequest) }), - localai.TTSEndpoint(application.ModelConfigLoader(), application.ModelLoader(), application.ApplicationConfig())) + localai.TTSEndpoint(application.ModelConfigLoader(), application.ModelLoader(), application.ApplicationConfig()), + } + + app.Post("/v1/audio/speech", + audioSpeechChain...) + app.Post("/audio/speech", audioSpeechChain...) // images - app.Post("/v1/images/generations", + imageChain := []fiber.Handler{ re.BuildConstantDefaultModelNameMiddleware("stablediffusion"), re.SetModelAndConfig(func() schema.LocalAIRequest { return new(schema.OpenAIRequest) }), re.SetOpenAIRequest, - openai.ImageEndpoint(application.ModelConfigLoader(), application.ModelLoader(), application.ApplicationConfig())) + openai.ImageEndpoint(application.ModelConfigLoader(), application.ModelLoader(), application.ApplicationConfig()), + } + + app.Post("/v1/images/generations", + imageChain...) + app.Post("/images/generations", imageChain...) // List models app.Get("/v1/models", openai.ListModelsEndpoint(application.ModelConfigLoader(), application.ModelLoader(), application.ApplicationConfig()))