Skip to content

Commit 6da271a

Browse files
authored
fix(cli): recognize all providers in install and improve missing key error (#1716)
Closes #1622. `GetModelProvider` was missing Gemini, GeminiVertexAI, AnthropicVertexAI and Bedrock from its switch. Any of those values in `KAGENT_DEFAULT_MODEL_PROVIDER` fell through to the default and came back as OpenAI, which then required `OPENAI_API_KEY` even though the user had no intention of using OpenAI. `GetProviderAPIKey` now also covers Gemini (`GOOGLE_API_KEY`). Providers that rely on cloud credentials rather than an API key (Ollama, Bedrock, VertexAI variants) already returned empty string and are left as is. The error message now mentions `KAGENT_DEFAULT_MODEL_PROVIDER` so users know they can switch providers instead of being stuck. Signed-off-by: mesutoezdil <mesudozdil@gmail.com>
1 parent ce59f67 commit 6da271a

2 files changed

Lines changed: 22 additions & 1 deletion

File tree

go/core/cli/internal/cli/agent/const.go

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,14 @@ func GetModelProvider() v1alpha2.ModelProvider {
2828
return v1alpha2.ModelProviderAnthropic
2929
case GetModelProviderHelmValuesKey(v1alpha2.ModelProviderAzureOpenAI):
3030
return v1alpha2.ModelProviderAzureOpenAI
31+
case GetModelProviderHelmValuesKey(v1alpha2.ModelProviderGemini):
32+
return v1alpha2.ModelProviderGemini
33+
case GetModelProviderHelmValuesKey(v1alpha2.ModelProviderGeminiVertexAI):
34+
return v1alpha2.ModelProviderGeminiVertexAI
35+
case GetModelProviderHelmValuesKey(v1alpha2.ModelProviderAnthropicVertexAI):
36+
return v1alpha2.ModelProviderAnthropicVertexAI
37+
case GetModelProviderHelmValuesKey(v1alpha2.ModelProviderBedrock):
38+
return v1alpha2.ModelProviderBedrock
3139
default:
3240
return v1alpha2.ModelProviderOpenAI
3341
}
@@ -42,7 +50,9 @@ func GetModelProviderHelmValuesKey(provider v1alpha2.ModelProvider) string {
4250
return helmKey
4351
}
4452

45-
// GetProviderAPIKey returns API_KEY env var name from provider type
53+
// GetProviderAPIKey returns the env var name for the provider's API key.
54+
// Returns "" for providers that use cloud credentials instead of an API key
55+
// (Ollama, Bedrock, GeminiVertexAI, AnthropicVertexAI).
4656
func GetProviderAPIKey(provider v1alpha2.ModelProvider) string {
4757
switch provider {
4858
case v1alpha2.ModelProviderOpenAI:
@@ -51,7 +61,16 @@ func GetProviderAPIKey(provider v1alpha2.ModelProvider) string {
5161
return env.AnthropicAPIKey.Name()
5262
case v1alpha2.ModelProviderAzureOpenAI:
5363
return env.AzureOpenAIAPIKey.Name()
64+
case v1alpha2.ModelProviderGemini:
65+
// Prefer GOOGLE_API_KEY, fall back to GEMINI_API_KEY to match the
66+
// runtime behaviour in go/adk/pkg/agent/agent.go.
67+
if _, ok := os.LookupEnv(env.GoogleAPIKey.Name()); ok {
68+
return env.GoogleAPIKey.Name()
69+
}
70+
return "GEMINI_API_KEY"
5471
default:
72+
// Ollama, Bedrock, GeminiVertexAI, AnthropicVertexAI use cloud
73+
// credentials rather than a simple API key, so no check is needed.
5574
return ""
5675
}
5776
}

go/core/cli/internal/cli/agent/install.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ func InstallCmd(ctx context.Context, cfg *InstallCfg) *PortForward {
8686
if apiKeyName != "" && apiKeyValue == "" {
8787
fmt.Fprintf(os.Stderr, "%s is not set\n", apiKeyName)
8888
fmt.Fprintf(os.Stderr, "Please set the %s environment variable\n", apiKeyName)
89+
fmt.Fprintf(os.Stderr, "To use a different provider set KAGENT_DEFAULT_MODEL_PROVIDER (e.g. ollama, anthropic, gemini)\n")
8990
return nil
9091
}
9192

@@ -127,6 +128,7 @@ func InteractiveInstallCmd(ctx context.Context, c *ishell.Context) *PortForward
127128
if apiKeyName != "" && apiKeyValue == "" {
128129
fmt.Fprintf(os.Stderr, "%s is not set\n", apiKeyName)
129130
fmt.Fprintf(os.Stderr, "Please set the %s environment variable\n", apiKeyName)
131+
fmt.Fprintf(os.Stderr, "To use a different provider set KAGENT_DEFAULT_MODEL_PROVIDER (e.g. ollama, anthropic, gemini)\n")
130132
return nil
131133
}
132134

0 commit comments

Comments
 (0)