From fc230ded9b10ebd979ec1771ab8032fe8f6ddac5 Mon Sep 17 00:00:00 2001 From: Denis Buzmakov Date: Wed, 2 Apr 2025 22:36:47 +0200 Subject: [PATCH] feat: add ANTHROPIC_HOST configuration for Anthropic in cli and UI (#1776) --- crates/goose-server/src/routes/providers_and_keys.json | 2 +- crates/goose/src/providers/anthropic.rs | 2 +- documentation/docs/getting-started/providers.md | 2 +- ui/desktop/src/components/settings/api_keys/utils.tsx | 1 + .../src/components/settings/models/hardcoded_stuff.tsx | 3 ++- .../components/settings_v2/providers/ProviderRegistry.tsx | 5 +++++ 6 files changed, 11 insertions(+), 4 deletions(-) diff --git a/crates/goose-server/src/routes/providers_and_keys.json b/crates/goose-server/src/routes/providers_and_keys.json index e72a1326f1..f689e16c78 100644 --- a/crates/goose-server/src/routes/providers_and_keys.json +++ b/crates/goose-server/src/routes/providers_and_keys.json @@ -9,7 +9,7 @@ "name": "Anthropic", "description": "Use Claude and other Anthropic models", "models": ["claude-3.5-sonnet-2"], - "required_keys": ["ANTHROPIC_API_KEY"] + "required_keys": ["ANTHROPIC_API_KEY", "ANTHROPIC_HOST"] }, "databricks": { "name": "Databricks", diff --git a/crates/goose/src/providers/anthropic.rs b/crates/goose/src/providers/anthropic.rs index 672f2aa31a..ef4aff4355 100644 --- a/crates/goose/src/providers/anthropic.rs +++ b/crates/goose/src/providers/anthropic.rs @@ -133,7 +133,7 @@ impl Provider for AnthropicProvider { ConfigKey::new("ANTHROPIC_API_KEY", true, true, None), ConfigKey::new( "ANTHROPIC_HOST", - false, + true, false, Some("https://api.anthropic.com"), ), diff --git a/documentation/docs/getting-started/providers.md b/documentation/docs/getting-started/providers.md index 6a3f670d95..ae2990de46 100644 --- a/documentation/docs/getting-started/providers.md +++ b/documentation/docs/getting-started/providers.md @@ -20,7 +20,7 @@ Goose relies heavily on tool calling capabilities and currently works best with | Provider | Description | Parameters | |-----------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | [Amazon Bedrock](https://aws.amazon.com/bedrock/) | Offers a variety of foundation models, including Claude, Jurassic-2, and others. **AWS environment variables must be set in advance, not configured through `goose configure`** | `AWS_PROFILE`, or `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_REGION`, ... | -| [Anthropic](https://www.anthropic.com/) | Offers Claude, an advanced AI model for natural language tasks. | `ANTHROPIC_API_KEY` | +| [Anthropic](https://www.anthropic.com/) | Offers Claude, an advanced AI model for natural language tasks. | `ANTHROPIC_API_KEY`, `ANTHROPIC_HOST` (optional) | | [Azure OpenAI](https://learn.microsoft.com/en-us/azure/ai-services/openai/) | Access Azure-hosted OpenAI models, including GPT-4 and GPT-3.5. | `AZURE_OPENAI_API_KEY`, `AZURE_OPENAI_ENDPOINT`, `AZURE_OPENAI_DEPLOYMENT_NAME` | | [Databricks](https://www.databricks.com/) | Unified data analytics and AI platform for building and deploying models. | `DATABRICKS_HOST`, `DATABRICKS_TOKEN` | | [Gemini](https://ai.google.dev/gemini-api/docs) | Advanced LLMs by Google with multimodal capabilities (text, images). | `GOOGLE_API_KEY` | diff --git a/ui/desktop/src/components/settings/api_keys/utils.tsx b/ui/desktop/src/components/settings/api_keys/utils.tsx index 1afe9c6c65..e384768453 100644 --- a/ui/desktop/src/components/settings/api_keys/utils.tsx +++ b/ui/desktop/src/components/settings/api_keys/utils.tsx @@ -5,6 +5,7 @@ import { default_key_value, required_keys } from '../models/hardcoded_stuff'; // export function isSecretKey(keyName: string): boolean { // Endpoints and hosts should not be stored as secrets const nonSecretKeys = [ + 'ANTHROPIC_HOST', 'DATABRICKS_HOST', 'OLLAMA_HOST', 'OPENAI_HOST', diff --git a/ui/desktop/src/components/settings/models/hardcoded_stuff.tsx b/ui/desktop/src/components/settings/models/hardcoded_stuff.tsx index 07a07af231..c682bf3408 100644 --- a/ui/desktop/src/components/settings/models/hardcoded_stuff.tsx +++ b/ui/desktop/src/components/settings/models/hardcoded_stuff.tsx @@ -58,7 +58,7 @@ export const short_list = ['gpt-4o', 'claude-3-5-sonnet-latest']; export const required_keys = { OpenAI: ['OPENAI_API_KEY', 'OPENAI_HOST', 'OPENAI_BASE_PATH'], - Anthropic: ['ANTHROPIC_API_KEY'], + Anthropic: ['ANTHROPIC_API_KEY', 'ANTHROPIC_HOST'], Databricks: ['DATABRICKS_HOST'], Groq: ['GROQ_API_KEY'], Ollama: ['OLLAMA_HOST'], @@ -75,6 +75,7 @@ export const required_keys = { }; export const default_key_value = { + ANTHROPIC_HOST: 'https://api.anthropic.com', OPENAI_HOST: 'https://api.openai.com', OPENAI_BASE_PATH: 'v1/chat/completions', OLLAMA_HOST: 'localhost', diff --git a/ui/desktop/src/components/settings_v2/providers/ProviderRegistry.tsx b/ui/desktop/src/components/settings_v2/providers/ProviderRegistry.tsx index 0c2079e4f0..822b79f821 100644 --- a/ui/desktop/src/components/settings_v2/providers/ProviderRegistry.tsx +++ b/ui/desktop/src/components/settings_v2/providers/ProviderRegistry.tsx @@ -91,6 +91,11 @@ export const PROVIDER_REGISTRY: ProviderRegistry[] = [ name: 'ANTHROPIC_API_KEY', is_secret: true, }, + { + name: 'ANTHROPIC_HOST', + is_secret: false, + default: 'https://api.anthropic.com', + }, ], }, },