routers

package
v0.0.0-...-df6d72d Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 24, 2024 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrNoModels = errors.New("no models configured for router")

Functions

This section is empty.

Types

type Config

type Config struct {
	LanguageRouters []LangRouterConfig `yaml:"language" validate:"required,gte=1,dive"` // the list of language routers
}

func (*Config) BuildLangRouters

func (c *Config) BuildLangRouters(tel *telemetry.Telemetry) ([]*LangRouter, error)

type LangRouter

type LangRouter struct {
	Config *LangRouterConfig
	// contains filtered or unexported fields
}

func NewLangRouter

func NewLangRouter(cfg *LangRouterConfig, tel *telemetry.Telemetry) (*LangRouter, error)

func (*LangRouter) Chat

func (*LangRouter) ChatStream

func (r *LangRouter) ChatStream(
	ctx context.Context,
	req *schemas.ChatStreamRequest,
	respC chan<- *schemas.ChatStreamMessage,
)

func (*LangRouter) ID

func (r *LangRouter) ID() RouterID

type LangRouterConfig

type LangRouterConfig struct {
	ID              string                      `yaml:"id" json:"routers" validate:"required"`                                       // Unique router ID
	Enabled         bool                        `yaml:"enabled" json:"enabled" validate:"required"`                                  // Is router enabled?
	Retry           *retry.ExpRetryConfig       `yaml:"retry" json:"retry" validate:"required"`                                      // retry when no healthy model is available to router
	RoutingStrategy routing.Strategy            `yaml:"strategy" json:"strategy" swaggertype:"primitive,string" validate:"required"` // strategy on picking the next model to serve the request
	Models          []providers.LangModelConfig `yaml:"models" json:"models" validate:"required,min=1,dive"`                         // the list of models that could handle requests
}

TODO: how to specify other backoff strategies? TODO: Had to keep RoutingStrategy because of https://github.com/swaggo/swag/issues/1738 LangRouterConfig

func DefaultLangRouterConfig

func DefaultLangRouterConfig() LangRouterConfig

func (*LangRouterConfig) BuildModels

BuildModels creates LanguageModel slice out of the given config

func (*LangRouterConfig) BuildRetry

func (c *LangRouterConfig) BuildRetry() *retry.ExpRetry

func (*LangRouterConfig) BuildRouting

func (c *LangRouterConfig) BuildRouting(
	chatModels []*providers.LanguageModel,
	chatStreamModels []*providers.LanguageModel,
) (routing.LangModelRouting, routing.LangModelRouting, error)

func (*LangRouterConfig) UnmarshalYAML

func (c *LangRouterConfig) UnmarshalYAML(unmarshal func(interface{}) error) error

type RouterID

type RouterID = string

type RouterManager

type RouterManager struct {
	Config *Config
	// contains filtered or unexported fields
}

func NewManager

func NewManager(cfg *Config, tel *telemetry.Telemetry) (*RouterManager, error)

NewManager creates a new instance of Router Manager that creates, holds and returns all routers

func (*RouterManager) GetLangRouter

func (r *RouterManager) GetLangRouter(routerID string) (*LangRouter, error)

GetLangRouter returns a router by type and ID

func (*RouterManager) GetLangRouters

func (r *RouterManager) GetLangRouters() []*LangRouter

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL