Skip to content

Commit

Permalink
#67: Moved lang & embed router into the routers package & ensured Lan…
Browse files Browse the repository at this point in the history
…gProvider interface
  • Loading branch information
roma-glushko committed Aug 12, 2024
1 parent d1cb962 commit f872d72
Show file tree
Hide file tree
Showing 23 changed files with 161 additions and 106 deletions.
10 changes: 5 additions & 5 deletions pkg/api/http/handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"context"
"sync"

"github.com/EinStack/glide/pkg/routers/manager"
"github.com/EinStack/glide/pkg/routers"

"github.com/EinStack/glide/pkg/api/schemas"
"github.com/EinStack/glide/pkg/telemetry"
Expand Down Expand Up @@ -32,7 +32,7 @@ type Handler = func(c *fiber.Ctx) error
// @Failure 400 {object} schemas.Error
// @Failure 404 {object} schemas.Error
// @Router /v1/language/{router}/chat [POST]
func LangChatHandler(routerManager *manager.RouterManager) Handler {
func LangChatHandler(routerManager *routers.RouterManager) Handler {
return func(c *fiber.Ctx) error {
if !c.Is("json") {
return c.Status(fiber.StatusBadRequest).JSON(schemas.ErrUnsupportedMediaType)
Expand Down Expand Up @@ -73,7 +73,7 @@ func LangChatHandler(routerManager *manager.RouterManager) Handler {
}
}

func LangStreamRouterValidator(routerManager *manager.RouterManager) Handler {
func LangStreamRouterValidator(routerManager *routers.RouterManager) Handler {
return func(c *fiber.Ctx) error {
if websocket.IsWebSocketUpgrade(c) {
routerID := c.Params("router")
Expand Down Expand Up @@ -108,7 +108,7 @@ func LangStreamRouterValidator(routerManager *manager.RouterManager) Handler {
// @Failure 426
// @Failure 404 {object} schemas.Error
// @Router /v1/language/{router}/chatStream [GET]
func LangStreamChatHandler(tel *telemetry.Telemetry, routerManager *manager.RouterManager) Handler {
func LangStreamChatHandler(tel *telemetry.Telemetry, routerManager *routers.RouterManager) Handler {
// TODO: expose websocket connection configs https://github.com/gofiber/contrib/tree/main/websocket
return websocket.New(func(c *websocket.Conn) {
routerID := c.Params("router")
Expand Down Expand Up @@ -176,7 +176,7 @@ func LangStreamChatHandler(tel *telemetry.Telemetry, routerManager *manager.Rout
// @Produce json
// @Success 200 {object} schemas.RouterListSchema
// @Router /v1/language/ [GET]
func LangRoutersHandler(routerManager *manager.RouterManager) Handler {
func LangRoutersHandler(routerManager *routers.RouterManager) Handler {
return func(c *fiber.Ctx) error {
configuredRouters := routerManager.GetLangRouters()
cfgs := make([]interface{}, 0, len(configuredRouters)) // opaque by design
Expand Down
6 changes: 3 additions & 3 deletions pkg/api/http/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import (
"fmt"
"time"

"github.com/EinStack/glide/pkg/routers/manager"
"github.com/EinStack/glide/pkg/routers"

"github.com/gofiber/contrib/otelfiber"

Expand All @@ -25,11 +25,11 @@ import (
type Server struct {
config *ServerConfig
telemetry *telemetry.Telemetry
routerManager *manager.RouterManager
routerManager *routers.RouterManager
server *fiber.App
}

func NewServer(config *ServerConfig, tel *telemetry.Telemetry, routerManager *manager.RouterManager) (*Server, error) {
func NewServer(config *ServerConfig, tel *telemetry.Telemetry, routerManager *routers.RouterManager) (*Server, error) {
srv := config.ToServer()

return &Server{
Expand Down
4 changes: 2 additions & 2 deletions pkg/api/servers.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"context"
"sync"

"github.com/EinStack/glide/pkg/routers/manager"
"github.com/EinStack/glide/pkg/routers"

"go.uber.org/zap"

Expand All @@ -19,7 +19,7 @@ type ServerManager struct {
telemetry *telemetry.Telemetry
}

func NewServerManager(cfg *Config, tel *telemetry.Telemetry, router *manager.RouterManager) (*ServerManager, error) {
func NewServerManager(cfg *Config, tel *telemetry.Telemetry, router *routers.RouterManager) (*ServerManager, error) {
httpServer, err := http.NewServer(cfg.HTTP, tel, router)
if err != nil {
return nil, err
Expand Down
8 changes: 4 additions & 4 deletions pkg/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@ package config

import (
"github.com/EinStack/glide/pkg/api"
routerconfig "github.com/EinStack/glide/pkg/routers/manager"
"github.com/EinStack/glide/pkg/routers"
"github.com/EinStack/glide/pkg/telemetry"
)

// Config is a general top-level Glide configuration
type Config struct {
Telemetry *telemetry.Config `yaml:"telemetry" validate:"required"`
API *api.Config `yaml:"api" validate:"required"`
Routers routerconfig.Config `yaml:"routers" validate:"required"`
Telemetry *telemetry.Config `yaml:"telemetry" validate:"required"`
API *api.Config `yaml:"api" validate:"required"`
Routers routers.RoutersConfig `yaml:"routers" validate:"required"`
}

func DefaultConfig() *Config {
Expand Down
4 changes: 2 additions & 2 deletions pkg/gateway.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
"os/signal"
"syscall"

"github.com/EinStack/glide/pkg/routers/manager"
"github.com/EinStack/glide/pkg/routers"

"github.com/EinStack/glide/pkg/version"
"go.opentelemetry.io/contrib/instrumentation/host"
Expand Down Expand Up @@ -50,7 +50,7 @@ func NewGateway(configProvider *config.Provider) (*Gateway, error) {
tel.L().Info("🐦Glide is starting up", zap.String("version", version.FullVersion))
tel.L().Debug("✅ Config loaded successfully:\n" + configProvider.GetStr())

routerManager, err := manager.NewManager(&cfg.Routers, tel)
routerManager, err := routers.NewManager(&cfg.Routers, tel)
if err != nil {
return nil, err
}
Expand Down
7 changes: 7 additions & 0 deletions pkg/provider/anthropic/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import (
"net/url"
"time"

"github.com/EinStack/glide/pkg/provider"

"github.com/EinStack/glide/pkg/clients"

"github.com/EinStack/glide/pkg/telemetry"
Expand All @@ -26,6 +28,11 @@ type Client struct {
tel *telemetry.Telemetry
}

// ensure interfaces
var (
_ provider.LangProvider = (*Client)(nil)
)

// NewClient creates a new OpenAI client for the OpenAI API.
func NewClient(providerConfig *Config, clientConfig *clients.ClientConfig, tel *telemetry.Telemetry) (*Client, error) {
chatURL, err := url.JoinPath(providerConfig.BaseURL, providerConfig.ChatEndpoint)
Expand Down
7 changes: 7 additions & 0 deletions pkg/provider/azureopenai/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import (
"net/http"
"time"

"github.com/EinStack/glide/pkg/provider"

"github.com/EinStack/glide/pkg/clients"

"github.com/EinStack/glide/pkg/provider/openai"
Expand All @@ -28,6 +30,11 @@ type Client struct {
tel *telemetry.Telemetry
}

// ensure interfaces
var (
_ provider.LangProvider = (*Client)(nil)
)

// NewClient creates a new Azure OpenAI client for the OpenAI API.
func NewClient(providerConfig *Config, clientConfig *clients.ClientConfig, tel *telemetry.Telemetry) (*Client, error) {
chatURL := fmt.Sprintf(
Expand Down
7 changes: 7 additions & 0 deletions pkg/provider/bedrock/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import (
"net/url"
"time"

"github.com/EinStack/glide/pkg/provider"

"github.com/EinStack/glide/pkg/clients"

"github.com/EinStack/glide/pkg/telemetry"
Expand Down Expand Up @@ -36,6 +38,11 @@ type Client struct {
telemetry *telemetry.Telemetry
}

// ensure interfaces
var (
_ provider.LangProvider = (*Client)(nil)
)

// NewClient creates a new OpenAI client for the OpenAI API.
func NewClient(providerConfig *Config, clientConfig *clients.ClientConfig, tel *telemetry.Telemetry) (*Client, error) {
chatURL, err := url.JoinPath(providerConfig.BaseURL, providerConfig.ChatEndpoint, providerConfig.ModelName, "/invoke")
Expand Down
7 changes: 7 additions & 0 deletions pkg/provider/cohere/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import (
"net/url"
"time"

"github.com/EinStack/glide/pkg/provider"

"github.com/EinStack/glide/pkg/clients"

"github.com/EinStack/glide/pkg/telemetry"
Expand All @@ -26,6 +28,11 @@ type Client struct {
tel *telemetry.Telemetry
}

// ensure interfaces
var (
_ provider.LangProvider = (*Client)(nil)
)

// NewClient creates a new Cohere client for the Cohere API.
func NewClient(providerConfig *Config, clientConfig *clients.ClientConfig, tel *telemetry.Telemetry) (*Client, error) {
chatURL, err := url.JoinPath(providerConfig.BaseURL, providerConfig.ChatEndpoint)
Expand Down
7 changes: 7 additions & 0 deletions pkg/provider/octoml/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import (
"net/url"
"time"

"github.com/EinStack/glide/pkg/provider"

"github.com/EinStack/glide/pkg/clients"

"github.com/EinStack/glide/pkg/telemetry"
Expand All @@ -31,6 +33,11 @@ type Client struct {
telemetry *telemetry.Telemetry
}

// ensure interfaces
var (
_ provider.LangProvider = (*Client)(nil)
)

// NewClient creates a new OctoML client for the OctoML API.
func NewClient(providerConfig *Config, clientConfig *clients.ClientConfig, tel *telemetry.Telemetry) (*Client, error) {
chatURL, err := url.JoinPath(providerConfig.BaseURL, providerConfig.ChatEndpoint)
Expand Down
7 changes: 7 additions & 0 deletions pkg/provider/ollama/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import (
"net/url"
"time"

"github.com/EinStack/glide/pkg/provider"

"github.com/EinStack/glide/pkg/clients"

"github.com/EinStack/glide/pkg/telemetry"
Expand All @@ -24,6 +26,11 @@ type Client struct {
telemetry *telemetry.Telemetry
}

// ensure interfaces
var (
_ provider.LangProvider = (*Client)(nil)
)

// NewClient creates a new OpenAI client for the OpenAI API.
func NewClient(providerConfig *Config, clientConfig *clients.ClientConfig, tel *telemetry.Telemetry) (*Client, error) {
chatURL, err := url.JoinPath(providerConfig.BaseURL, providerConfig.ChatEndpoint)
Expand Down
7 changes: 7 additions & 0 deletions pkg/provider/openai/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import (
"net/url"
"time"

"github.com/EinStack/glide/pkg/provider"

"github.com/EinStack/glide/pkg/clients"

"go.uber.org/zap"
Expand All @@ -29,6 +31,11 @@ type Client struct {
logger *zap.Logger
}

// ensure interfaces
var (
_ provider.LangProvider = (*Client)(nil)
)

// NewClient creates a new OpenAI client for the OpenAI API.
func NewClient(providerConfig *Config, clientConfig *clients.ClientConfig, tel *telemetry.Telemetry) (*Client, error) {
chatURL, err := url.JoinPath(providerConfig.BaseURL, providerConfig.ChatEndpoint)
Expand Down
5 changes: 5 additions & 0 deletions pkg/provider/testing.go
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,11 @@ type Mock struct {
modelName *string
}

// ensure interfaces
var (
_ LangProvider = (*Mock)(nil)
)

func NewMock(modelName *string, responses []RespMock) *Mock {
return &Mock{
idx: 0,
Expand Down
7 changes: 7 additions & 0 deletions pkg/routers/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,10 @@ func DefaultConfig() RouterConfig {
Retry: retry.DefaultExpRetryConfig(),
}
}

// RoutersConfig defines a config for a set of supported router types
// TODO: remove nolint after renaming the package
type RoutersConfig struct { //nolint: revive
LanguageRouters LangRoutersConfig `yaml:"language" validate:"required,dive"` // the list of language routers
// EmbeddingRouters []EmbeddingRouterConfig `yaml:"embedding" validate:"required,dive"`
}
10 changes: 0 additions & 10 deletions pkg/routers/embed/config.go

This file was deleted.

16 changes: 16 additions & 0 deletions pkg/routers/embed_config.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package routers

import (
"github.com/EinStack/glide/pkg/extmodel"
"github.com/EinStack/glide/pkg/provider"
)

type (
EmbedModelConfig = extmodel.Config[*provider.Config]
EmbedModelPoolConfig = []EmbedModelConfig
)

type EmbeddingRouterConfig struct {
RouterConfig
Models EmbedModelPoolConfig `yaml:"models" json:"models" validate:"required,min=1,dive"` // the list of models that could handle requests
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package embed
package routers

type EmbeddingRouter struct {
// routerID lang.RouterID
Expand Down
Loading

0 comments on commit f872d72

Please sign in to comment.