diff --git a/pkg/providers/anthropic/client.go b/pkg/providers/anthropic/client.go index bb34fe0..ca76238 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 8e73a55..dea7edd 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 0f59480..4ec7b96 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 0567b9f..3acd195 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 1d8ed24..46b6165 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 c13ff64..48675dd 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 d2a6aa0..ee01131 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 07f889b..3b3d181 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 5a61898..e63e12c 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 08ca2b2..3e25ca9 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 832ade5..cabcd95 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 d4ac384..fab7106 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)