mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
fix: deprecate ai provider seeding env config (#25854)
Environment variables used to configure AI Gateway providers are now deprecated, and we need to reflect this as such.
This commit is contained in:
+32
-3
@@ -2979,6 +2979,11 @@ func parseExternalAuthProvidersFromEnv(prefix string, environ []string) ([]coder
|
||||
return providers, nil
|
||||
}
|
||||
|
||||
const (
|
||||
aiGatewayProviderEnvPrefix = "CODER_AI_GATEWAY_PROVIDER_"
|
||||
aiBridgeProviderEnvPrefix = "CODER_AIBRIDGE_PROVIDER_"
|
||||
)
|
||||
|
||||
// ReadAIProvidersFromEnv parses CODER_AI_GATEWAY_PROVIDER_<N>_<KEY>
|
||||
// environment variables into a slice of AIProviderConfig.
|
||||
// Deprecated alias env vars with the CODER_AIBRIDGE_PROVIDER_<N>_<KEY>
|
||||
@@ -2986,16 +2991,22 @@ func parseExternalAuthProvidersFromEnv(prefix string, environ []string) ([]coder
|
||||
//
|
||||
// This follows the same indexed pattern as ReadExternalAuthProvidersFromEnv.
|
||||
func ReadAIProvidersFromEnv(logger slog.Logger, environ []string) ([]codersdk.AIProviderConfig, error) {
|
||||
providers, err := readAIProvidersForPrefix(logger, environ, "CODER_AIBRIDGE_PROVIDER_")
|
||||
providers, err := readAIProvidersForPrefix(logger, environ, aiBridgeProviderEnvPrefix)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
gatewayProviders, err := readAIProvidersForPrefix(logger, environ, "CODER_AI_GATEWAY_PROVIDER_")
|
||||
gatewayProviders, err := readAIProvidersForPrefix(logger, environ, aiGatewayProviderEnvPrefix)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if len(providers) > 0 && len(gatewayProviders) > 0 {
|
||||
return nil, xerrors.New("cannot mix CODER_AIBRIDGE_PROVIDER_* and CODER_AI_GATEWAY_PROVIDER_* environment variables, please consolidate onto CODER_AI_GATEWAY_PROVIDER_*")
|
||||
return nil, xerrors.Errorf("cannot mix %s* and %s* environment variables, please consolidate onto %s*", aiBridgeProviderEnvPrefix, aiGatewayProviderEnvPrefix, aiGatewayProviderEnvPrefix)
|
||||
}
|
||||
var activePrefix string
|
||||
if len(providers) > 0 {
|
||||
activePrefix = aiBridgeProviderEnvPrefix
|
||||
} else if len(gatewayProviders) > 0 {
|
||||
activePrefix = aiGatewayProviderEnvPrefix
|
||||
}
|
||||
providers = append(providers, gatewayProviders...)
|
||||
|
||||
@@ -3077,9 +3088,27 @@ func ReadAIProvidersFromEnv(logger slog.Logger, environ []string) ([]codersdk.AI
|
||||
names[p.Name] = i
|
||||
}
|
||||
|
||||
warnIfAIProvidersConfiguredFromEnv(context.Background(), logger, activePrefix, providers)
|
||||
|
||||
return providers, nil
|
||||
}
|
||||
|
||||
func warnIfAIProvidersConfiguredFromEnv(ctx context.Context, logger slog.Logger, prefix string, providers []codersdk.AIProviderConfig) {
|
||||
if len(providers) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
if prefix == "" {
|
||||
return
|
||||
}
|
||||
|
||||
logger.Warn(ctx,
|
||||
"ai provider environment variables are deprecated for provider management and only seed provider configuration at startup",
|
||||
slog.F("env_prefix", prefix),
|
||||
slog.F("replacement", "Manage AI Providers from the Coder UI or HTTP API."),
|
||||
)
|
||||
}
|
||||
|
||||
// readAIProvidersForPrefix parses provider env vars under a single
|
||||
// indexed prefix (e.g. CODER_AI_GATEWAY_PROVIDER_) into a slice of
|
||||
// AIProviderConfig. Per-field syntax errors and unknown keys are
|
||||
|
||||
Reference in New Issue
Block a user