From 017994d8e04ac680ae17b259a98e5fd99925e2f4 Mon Sep 17 00:00:00 2001 From: Roman Glushko Date: Tue, 18 Jun 2024 23:03:43 +0300 Subject: [PATCH] Ensure components implement interfaces at compilation --- pkg/providers/anthropic/client.go | 4 ++++ pkg/providers/azureopenai/chat_stream.go | 3 +++ pkg/providers/azureopenai/client.go | 4 ++++ pkg/providers/bedrock/client.go | 4 ++++ pkg/providers/cohere/chat_stream.go | 3 +++ pkg/providers/cohere/client.go | 4 ++++ pkg/providers/lang.go | 3 +++ pkg/providers/octoml/client.go | 4 ++++ pkg/providers/ollama/client.go | 4 ++++ pkg/providers/openai/chat_stream.go | 3 +++ pkg/providers/openai/client.go | 4 ++++ pkg/providers/testing/models.go | 3 +++ 12 files changed, 43 insertions(+) diff --git a/pkg/providers/anthropic/client.go b/pkg/providers/anthropic/client.go index bb34fe07..ca76238f 100644 --- a/pkg/providers/anthropic/client.go +++ b/pkg/providers/anthropic/client.go @@ -1,6 +1,7 @@ package anthropic import ( + "github.com/EinStack/glide/pkg/providers" "net/http" "net/url" "time" @@ -26,6 +27,9 @@ type Client struct { tel *telemetry.Telemetry } +// ensure interfaces are implemented at compilation +var _ providers.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) diff --git a/pkg/providers/azureopenai/chat_stream.go b/pkg/providers/azureopenai/chat_stream.go index 8e73a556..dea7edd7 100644 --- a/pkg/providers/azureopenai/chat_stream.go +++ b/pkg/providers/azureopenai/chat_stream.go @@ -33,6 +33,9 @@ type ChatStream struct { errMapper *ErrorMapper } +// ensure interfaces are implemented at compilation +var _ clients.ChatStream = (*ChatStream)(nil) + func NewChatStream( tel *telemetry.Telemetry, client *http.Client, diff --git a/pkg/providers/azureopenai/client.go b/pkg/providers/azureopenai/client.go index 0f594805..4ec7b969 100644 --- a/pkg/providers/azureopenai/client.go +++ b/pkg/providers/azureopenai/client.go @@ -2,6 +2,7 @@ package azureopenai import ( "fmt" + "github.com/EinStack/glide/pkg/providers" "net/http" "time" @@ -28,6 +29,9 @@ type Client struct { tel *telemetry.Telemetry } +// ensure interfaces are implemented at compilation +var _ providers.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( diff --git a/pkg/providers/bedrock/client.go b/pkg/providers/bedrock/client.go index 0567b9fc..3acd1957 100644 --- a/pkg/providers/bedrock/client.go +++ b/pkg/providers/bedrock/client.go @@ -3,6 +3,7 @@ package bedrock import ( "context" "errors" + "github.com/EinStack/glide/pkg/providers" "net/http" "net/url" "time" @@ -36,6 +37,9 @@ type Client struct { telemetry *telemetry.Telemetry } +// ensure interfaces are implemented at compilation +var _ providers.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") diff --git a/pkg/providers/cohere/chat_stream.go b/pkg/providers/cohere/chat_stream.go index 1d8ed243..46b61657 100644 --- a/pkg/providers/cohere/chat_stream.go +++ b/pkg/providers/cohere/chat_stream.go @@ -41,6 +41,9 @@ type ChatStream struct { tel *telemetry.Telemetry } +// ensure interfaces are implemented at compilation +var _ clients.ChatStream = (*ChatStream)(nil) + func NewChatStream( tel *telemetry.Telemetry, client *http.Client, diff --git a/pkg/providers/cohere/client.go b/pkg/providers/cohere/client.go index c13ff64b..48675dd5 100644 --- a/pkg/providers/cohere/client.go +++ b/pkg/providers/cohere/client.go @@ -1,6 +1,7 @@ package cohere import ( + "github.com/EinStack/glide/pkg/providers" "net/http" "net/url" "time" @@ -26,6 +27,9 @@ type Client struct { tel *telemetry.Telemetry } +// ensure interfaces are implemented at compilation +var _ providers.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) diff --git a/pkg/providers/lang.go b/pkg/providers/lang.go index d2a6aa06..ee01131e 100644 --- a/pkg/providers/lang.go +++ b/pkg/providers/lang.go @@ -48,6 +48,9 @@ type LanguageModel struct { latencyUpdateInterval *fields.Duration } +// ensure interfaces are implemented at compilation +var _ LangModel = (*LanguageModel)(nil) + func NewLangModel(modelID string, client LangProvider, budget *health.ErrorBudget, latencyConfig latency.Config, weight int) *LanguageModel { return &LanguageModel{ modelID: modelID, diff --git a/pkg/providers/octoml/client.go b/pkg/providers/octoml/client.go index 07f889bb..3b3d181d 100644 --- a/pkg/providers/octoml/client.go +++ b/pkg/providers/octoml/client.go @@ -2,6 +2,7 @@ package octoml import ( "errors" + "github.com/EinStack/glide/pkg/providers" "net/http" "net/url" "time" @@ -31,6 +32,9 @@ type Client struct { telemetry *telemetry.Telemetry } +// ensure interfaces are implemented at compilation +var _ providers.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) diff --git a/pkg/providers/ollama/client.go b/pkg/providers/ollama/client.go index 5a61898e..e63e12c6 100644 --- a/pkg/providers/ollama/client.go +++ b/pkg/providers/ollama/client.go @@ -1,6 +1,7 @@ package ollama import ( + "github.com/EinStack/glide/pkg/providers" "net/http" "net/url" "time" @@ -24,6 +25,9 @@ type Client struct { telemetry *telemetry.Telemetry } +// ensure interfaces are implemented at compilation +var _ providers.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) diff --git a/pkg/providers/openai/chat_stream.go b/pkg/providers/openai/chat_stream.go index 08ca2b21..3e25ca92 100644 --- a/pkg/providers/openai/chat_stream.go +++ b/pkg/providers/openai/chat_stream.go @@ -28,6 +28,9 @@ type ChatStream struct { logger *zap.Logger } +// ensure interfaces are implemented at compilation +var _ clients.ChatStream = (*ChatStream)(nil) + func NewChatStream( client *http.Client, req *http.Request, diff --git a/pkg/providers/openai/client.go b/pkg/providers/openai/client.go index 832ade57..cabcd95b 100644 --- a/pkg/providers/openai/client.go +++ b/pkg/providers/openai/client.go @@ -1,6 +1,7 @@ package openai import ( + "github.com/EinStack/glide/pkg/providers" "net/http" "net/url" "time" @@ -29,6 +30,9 @@ type Client struct { logger *zap.Logger } +// ensure interfaces are implemented at compilation +var _ providers.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) diff --git a/pkg/providers/testing/models.go b/pkg/providers/testing/models.go index d4ac3840..fab71067 100644 --- a/pkg/providers/testing/models.go +++ b/pkg/providers/testing/models.go @@ -18,6 +18,9 @@ type LangModelMock struct { weight int } +// ensure interfaces are implemented at compilation +var _ providers.Model = (*LangModelMock)(nil) + func NewLangModelMock(ID string, healthy bool, avgLatency float64, weight int) LangModelMock { chatLatency := latency.NewMovingAverage(0.06, 3)