From 2a340b54bffdb6d0de12934de1e247a5d8499c11 Mon Sep 17 00:00:00 2001 From: nb213 Date: Tue, 28 Jul 2026 14:21:34 +0800 Subject: [PATCH 1/2] feat: add Atlas Cloud LLM preset Signed-off-by: binyangzhu000-sudo <224954946+binyangzhu000-sudo@users.noreply.github.com> --- agentteams-controller/cmd/agt/llm_preflight.go | 5 ++++- .../cmd/agt/llm_preflight_test.go | 14 ++++++++++++++ helm/agentteams/templates/_helpers.tpl | 12 ++++++++++++ .../templates/preflight/llm-secret.yaml | 5 +++-- .../templates/secrets/runtime-env.yaml | 5 +++-- tests/check-helm-agentteams.sh | 18 ++++++++++++++++++ 6 files changed, 54 insertions(+), 5 deletions(-) diff --git a/agentteams-controller/cmd/agt/llm_preflight.go b/agentteams-controller/cmd/agt/llm_preflight.go index 8728a0a3e..02a8e11ea 100644 --- a/agentteams-controller/cmd/agt/llm_preflight.go +++ b/agentteams-controller/cmd/agt/llm_preflight.go @@ -20,6 +20,7 @@ import ( const ( defaultOpenAICompatibleBaseURL = "https://api.openai.com/v1" defaultQwenCompatibleBaseURL = "https://dashscope.aliyuncs.com/compatible-mode/v1" + defaultAtlasCloudBaseURL = "https://api.atlascloud.ai/v1" defaultLLMPreflightTimeout = 30 * time.Second defaultLLMPreflightRetries = 2 defaultLLMPreflightRetryBackoff = 500 * time.Millisecond @@ -97,7 +98,7 @@ func llmPreflightCmd() *cobra.Command { }, } - cmd.Flags().StringVar(&opts.Provider, "provider", opts.Provider, "LLM provider (openai-compat|qwen|custom)") + cmd.Flags().StringVar(&opts.Provider, "provider", opts.Provider, "LLM provider (openai-compat|qwen|atlascloud|custom)") cmd.Flags().StringVar(&opts.APIKey, "api-key", opts.APIKey, "LLM API key") cmd.Flags().StringVar(&opts.BaseURL, "base-url", opts.BaseURL, "OpenAI-compatible base URL") cmd.Flags().StringVar(&opts.Model, "model", opts.Model, "Model name to probe") @@ -171,6 +172,8 @@ func resolveLLMPreflightBaseURL(provider, baseURL string) (string, error) { baseURL = defaultOpenAICompatibleBaseURL case "qwen": baseURL = defaultQwenCompatibleBaseURL + case "atlascloud": + baseURL = defaultAtlasCloudBaseURL default: return "", fmt.Errorf("LLM base URL is required for provider %q (set AGENTTEAMS_OPENAI_BASE_URL or --base-url)", provider) } diff --git a/agentteams-controller/cmd/agt/llm_preflight_test.go b/agentteams-controller/cmd/agt/llm_preflight_test.go index 44ee03638..1e9bc69e0 100644 --- a/agentteams-controller/cmd/agt/llm_preflight_test.go +++ b/agentteams-controller/cmd/agt/llm_preflight_test.go @@ -40,6 +40,20 @@ func TestResolveLLMPreflightConfigDefaultsQwen(t *testing.T) { } } +func TestResolveLLMPreflightConfigDefaultsAtlasCloud(t *testing.T) { + cfg, err := resolveLLMPreflightConfig(llmPreflightOptions{ + Provider: "atlascloud", + APIKey: "atlas-test", + Model: "deepseek-ai/deepseek-v4-pro", + }) + if err != nil { + t.Fatalf("resolveLLMPreflightConfig: %v", err) + } + if cfg.BaseURL != defaultAtlasCloudBaseURL { + t.Fatalf("BaseURL=%q, want Atlas Cloud endpoint", cfg.BaseURL) + } +} + func TestResolveLLMPreflightConfigCustomProviderRequiresBaseURL(t *testing.T) { _, err := resolveLLMPreflightConfig(llmPreflightOptions{ Provider: "custom-vendor", diff --git a/helm/agentteams/templates/_helpers.tpl b/helm/agentteams/templates/_helpers.tpl index 63562bdc2..b93c8b49d 100644 --- a/helm/agentteams/templates/_helpers.tpl +++ b/helm/agentteams/templates/_helpers.tpl @@ -80,6 +80,18 @@ Shared runtime Secret name. {{- printf "%s-runtime-env" (include "agentteams.fullname" .) }} {{- end }} +{{/* +Effective OpenAI-compatible LLM base URL. Explicit values always win; known +providers can supply a usable endpoint when credentials.llmBaseUrl is omitted. +*/}} +{{- define "agentteams.llmBaseURL" -}} +{{- if .Values.credentials.llmBaseUrl -}} +{{- .Values.credentials.llmBaseUrl -}} +{{- else if eq (.Values.credentials.llmProvider | default "") "atlascloud" -}} +{{- "https://api.atlascloud.ai/v1" -}} +{{- end -}} +{{- end }} + {{/* ── Component naming helpers ────────────────────────────────────────── */}} {{- define "agentteams.manager.fullname" -}} diff --git a/helm/agentteams/templates/preflight/llm-secret.yaml b/helm/agentteams/templates/preflight/llm-secret.yaml index 50b5b721b..e66c5bd84 100644 --- a/helm/agentteams/templates/preflight/llm-secret.yaml +++ b/helm/agentteams/templates/preflight/llm-secret.yaml @@ -1,5 +1,6 @@ {{- if .Values.preflight.llm.enabled }} {{- $name := printf "%s-llm-preflight" (include "agentteams.fullname" .) | trunc 63 | trimSuffix "-" }} +{{- $llmBaseURL := include "agentteams.llmBaseURL" . }} apiVersion: v1 kind: Secret metadata: @@ -16,8 +17,8 @@ stringData: AGENTTEAMS_LLM_API_KEY: {{ required "credentials.llmApiKey is required" .Values.credentials.llmApiKey | quote }} AGENTTEAMS_LLM_PROVIDER: {{ .Values.credentials.llmProvider | quote }} AGENTTEAMS_DEFAULT_MODEL: {{ .Values.credentials.defaultModel | quote }} - {{- if .Values.credentials.llmBaseUrl }} - AGENTTEAMS_OPENAI_BASE_URL: {{ .Values.credentials.llmBaseUrl | quote }} + {{- if $llmBaseURL }} + AGENTTEAMS_OPENAI_BASE_URL: {{ $llmBaseURL | quote }} {{- end }} AGENTTEAMS_LLM_PREFLIGHT_STRICT: {{ .Values.preflight.llm.strict | quote }} AGENTTEAMS_LLM_PREFLIGHT_TIMEOUT_SECONDS: {{ .Values.preflight.llm.timeoutSeconds | quote }} diff --git a/helm/agentteams/templates/secrets/runtime-env.yaml b/helm/agentteams/templates/secrets/runtime-env.yaml index ade8473ff..a070429a1 100644 --- a/helm/agentteams/templates/secrets/runtime-env.yaml +++ b/helm/agentteams/templates/secrets/runtime-env.yaml @@ -1,3 +1,4 @@ +{{- $llmBaseURL := include "agentteams.llmBaseURL" . }} apiVersion: v1 kind: Secret metadata: @@ -30,8 +31,8 @@ stringData: AGENTTEAMS_LLM_API_KEY: {{ required "credentials.llmApiKey is required" .Values.credentials.llmApiKey | quote }} AGENTTEAMS_LLM_PROVIDER: {{ .Values.credentials.llmProvider | quote }} AGENTTEAMS_DEFAULT_MODEL: {{ .Values.credentials.defaultModel | quote }} - {{- if .Values.credentials.llmBaseUrl }} - AGENTTEAMS_OPENAI_BASE_URL: {{ .Values.credentials.llmBaseUrl | quote }} + {{- if $llmBaseURL }} + AGENTTEAMS_OPENAI_BASE_URL: {{ $llmBaseURL | quote }} {{- end }} {{- /* Matrix AppService tokens: controller panics without as/hs_token. Resolution order: values override -> existing Secret -> generated. See values.yaml matrix.appservice. */}} AGENTTEAMS_MATRIX_APPSERVICE_ENABLED: {{ .Values.matrix.appservice.enabled | toString | quote }} diff --git a/tests/check-helm-agentteams.sh b/tests/check-helm-agentteams.sh index 9772fe35d..3901c9409 100755 --- a/tests/check-helm-agentteams.sh +++ b/tests/check-helm-agentteams.sh @@ -19,4 +19,22 @@ helm template agentteams "${CHART}" "${COMMON_ARGS[@]}" > "${render}" grep -q 'name: agentteams-controller' "${render}" grep -q 'app.kubernetes.io/name: agentteams' "${render}" +helm template agentteams "${CHART}" "${COMMON_ARGS[@]}" \ + --set credentials.llmProvider=atlascloud \ + --set credentials.defaultModel=deepseek-ai/deepseek-v4-pro > "${render}" + +if [ "$(grep -c 'AGENTTEAMS_OPENAI_BASE_URL: "https://api.atlascloud.ai/v1"' "${render}")" -ne 2 ]; then + echo "FAIL: Atlas Cloud base URL must be injected into preflight and runtime Secrets" >&2 + exit 1 +fi + +helm template agentteams "${CHART}" "${COMMON_ARGS[@]}" \ + --set credentials.llmProvider=atlascloud \ + --set credentials.llmBaseUrl=https://proxy.example.com/v1 > "${render}" + +if [ "$(grep -c 'AGENTTEAMS_OPENAI_BASE_URL: "https://proxy.example.com/v1"' "${render}")" -ne 2 ]; then + echo "FAIL: Explicit LLM base URL must override the Atlas Cloud preset" >&2 + exit 1 +fi + echo "PASS: AgentTeams Helm release renders canonical resource names" From 61522f3ab9912b970fb3e4b21997d17c6a42cb54 Mon Sep 17 00:00:00 2001 From: nb213 Date: Tue, 28 Jul 2026 14:22:10 +0800 Subject: [PATCH 2/2] docs: record Atlas Cloud LLM preset Signed-off-by: binyangzhu000-sudo <224954946+binyangzhu000-sudo@users.noreply.github.com> --- changelog/current.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/changelog/current.md b/changelog/current.md index 6436a6d7d..d151fe621 100644 --- a/changelog/current.md +++ b/changelog/current.md @@ -4,6 +4,10 @@ Record image-affecting changes to `manager/`, `worker/`, `copaw/`, `hermes/`, `o --- +**Features** + +- **Atlas Cloud LLM preset**: Resolve the Atlas Cloud OpenAI-compatible endpoint for Helm runtime and preflight configuration when no explicit base URL is set. ([2a340b5](https://github.com/agentscope-ai/AgentTeams/commit/2a340b5)) + **Bug Fixes** - **Team Worker room boundary convergence**: Remove Manager again after standalone Worker infrastructure reconciliation restores regular Team Worker personal-room membership. ([b5b0add](https://github.com/agentscope-ai/AgentTeams/commit/b5b0add))