mirror of
https://github.com/mudler/LocalAI.git
synced 2025-05-31 07:54:59 +00:00
feat: Centralized Request Processing middleware (#3847)
* squash past, centralize request middleware PR Signed-off-by: Dave Lee <dave@gray101.com> * migrate bruno request files to examples repo Signed-off-by: Dave Lee <dave@gray101.com> * fix Signed-off-by: Dave Lee <dave@gray101.com> * Update tests/e2e-aio/e2e_test.go Signed-off-by: Ettore Di Giacinto <mudler@users.noreply.github.com> --------- Signed-off-by: Dave Lee <dave@gray101.com> Signed-off-by: Ettore Di Giacinto <mudler@users.noreply.github.com> Co-authored-by: Ettore Di Giacinto <mudler@users.noreply.github.com>
This commit is contained in:
parent
c330360785
commit
3cddf24747
53 changed files with 240975 additions and 821 deletions
|
@ -1,8 +1,9 @@
|
|||
package schema
|
||||
|
||||
type ElevenLabsTTSRequest struct {
|
||||
Text string `json:"text" yaml:"text"`
|
||||
ModelID string `json:"model_id" yaml:"model_id"`
|
||||
Text string `json:"text" yaml:"text"`
|
||||
ModelID string `json:"model_id" yaml:"model_id"`
|
||||
LanguageCode string `json:"language_code" yaml:"language_code"`
|
||||
}
|
||||
|
||||
type ElevenLabsSoundGenerationRequest struct {
|
||||
|
@ -12,3 +13,17 @@ type ElevenLabsSoundGenerationRequest struct {
|
|||
Temperature *float32 `json:"prompt_influence,omitempty" yaml:"prompt_influence,omitempty"`
|
||||
DoSample *bool `json:"do_sample,omitempty" yaml:"do_sample,omitempty"`
|
||||
}
|
||||
|
||||
func (elttsr *ElevenLabsTTSRequest) ModelName(s *string) string {
|
||||
if s != nil {
|
||||
elttsr.ModelID = *s
|
||||
}
|
||||
return elttsr.ModelID
|
||||
}
|
||||
|
||||
func (elsgr *ElevenLabsSoundGenerationRequest) ModelName(s *string) string {
|
||||
if s != nil {
|
||||
elsgr.ModelID = *s
|
||||
}
|
||||
return elsgr.ModelID
|
||||
}
|
||||
|
|
|
@ -2,10 +2,11 @@ package schema
|
|||
|
||||
// RerankRequest defines the structure of the request payload
|
||||
type JINARerankRequest struct {
|
||||
Model string `json:"model"`
|
||||
BasicModelRequest
|
||||
Query string `json:"query"`
|
||||
Documents []string `json:"documents"`
|
||||
TopN int `json:"top_n"`
|
||||
Backend string `json:"backend"`
|
||||
}
|
||||
|
||||
// DocumentResult represents a single document result
|
||||
|
|
|
@ -6,11 +6,11 @@ import (
|
|||
)
|
||||
|
||||
type BackendMonitorRequest struct {
|
||||
Model string `json:"model" yaml:"model"`
|
||||
BasicModelRequest
|
||||
}
|
||||
|
||||
type TokenMetricsRequest struct {
|
||||
Model string `json:"model" yaml:"model"`
|
||||
BasicModelRequest
|
||||
}
|
||||
|
||||
type BackendMonitorResponse struct {
|
||||
|
@ -26,7 +26,7 @@ type GalleryResponse struct {
|
|||
|
||||
// @Description TTS request body
|
||||
type TTSRequest struct {
|
||||
Model string `json:"model" yaml:"model"` // model name or full path
|
||||
BasicModelRequest
|
||||
Input string `json:"input" yaml:"input"` // text input
|
||||
Voice string `json:"voice" yaml:"voice"` // voice audio file or speaker id
|
||||
Backend string `json:"backend" yaml:"backend"`
|
||||
|
@ -36,10 +36,19 @@ type TTSRequest struct {
|
|||
|
||||
// @Description VAD request body
|
||||
type VADRequest struct {
|
||||
Model string `json:"model" yaml:"model"` // model name or full path
|
||||
BasicModelRequest
|
||||
Audio []float32 `json:"audio" yaml:"audio"` // model name or full path
|
||||
}
|
||||
|
||||
type VADSegment struct {
|
||||
Start float32 `json:"start" yaml:"start"`
|
||||
End float32 `json:"end" yaml:"end"`
|
||||
}
|
||||
|
||||
type VADResponse struct {
|
||||
Segments []VADSegment `json:"segments" yaml:"segments"`
|
||||
}
|
||||
|
||||
type StoresSet struct {
|
||||
Store string `json:"store,omitempty" yaml:"store,omitempty"`
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ package schema
|
|||
type PredictionOptions struct {
|
||||
|
||||
// Also part of the OpenAI official spec
|
||||
Model string `json:"model" yaml:"model"`
|
||||
BasicModelRequest `yaml:",inline"`
|
||||
|
||||
// Also part of the OpenAI official spec
|
||||
Language string `json:"language"`
|
||||
|
|
22
core/schema/request.go
Normal file
22
core/schema/request.go
Normal file
|
@ -0,0 +1,22 @@
|
|||
package schema
|
||||
|
||||
// This file and type represent a generic request to LocalAI - as opposed to requests to LocalAI-specific endpoints, which live in localai.go
|
||||
type LocalAIRequest interface {
|
||||
ModelName(*string) string
|
||||
}
|
||||
|
||||
type BasicModelRequest struct {
|
||||
Model string `json:"model" yaml:"model"`
|
||||
// TODO: Should this also include the following fields from the OpenAI side of the world?
|
||||
// If so, changes should be made to core/http/middleware/request.go to match
|
||||
|
||||
// Context context.Context `json:"-"`
|
||||
// Cancel context.CancelFunc `json:"-"`
|
||||
}
|
||||
|
||||
func (bmr *BasicModelRequest) ModelName(s *string) string {
|
||||
if s != nil {
|
||||
bmr.Model = *s
|
||||
}
|
||||
return bmr.Model
|
||||
}
|
|
@ -1,8 +1,8 @@
|
|||
package schema
|
||||
|
||||
type TokenizeRequest struct {
|
||||
BasicModelRequest
|
||||
Content string `json:"content"`
|
||||
Model string `json:"model"`
|
||||
}
|
||||
|
||||
type TokenizeResponse struct {
|
||||
|
|
|
@ -2,7 +2,7 @@ package schema
|
|||
|
||||
import "time"
|
||||
|
||||
type Segment struct {
|
||||
type TranscriptionSegment struct {
|
||||
Id int `json:"id"`
|
||||
Start time.Duration `json:"start"`
|
||||
End time.Duration `json:"end"`
|
||||
|
@ -11,6 +11,6 @@ type Segment struct {
|
|||
}
|
||||
|
||||
type TranscriptionResult struct {
|
||||
Segments []Segment `json:"segments"`
|
||||
Text string `json:"text"`
|
||||
Segments []TranscriptionSegment `json:"segments"`
|
||||
Text string `json:"text"`
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue