From 25921d59fd95184d7c1e216dae13fb2ed0cbddca Mon Sep 17 00:00:00 2001 From: Aloys Jehwin Date: Wed, 15 Jul 2026 11:09:20 +0530 Subject: [PATCH] fix: validate_environment returns false all-clear for zai when ZAI_API_KEY unset (fixes #32962) Signed-off-by: Aloys Jehwin --- litellm/utils.py | 5 +++ .../test_validate_environment_zai.py | 35 +++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 tests/local_testing/test_validate_environment_zai.py diff --git a/litellm/utils.py b/litellm/utils.py index 0636d3683b7..d062bb8eb05 100644 --- a/litellm/utils.py +++ b/litellm/utils.py @@ -6141,6 +6141,11 @@ def validate_environment( keys_in_environment = True else: missing_keys.append("MOONSHOT_API_KEY") + elif custom_llm_provider == "zai": + if "ZAI_API_KEY" in os.environ: + keys_in_environment = True + else: + missing_keys.append("ZAI_API_KEY") else: ## openai - chatcompletion + text completion if ( diff --git a/tests/local_testing/test_validate_environment_zai.py b/tests/local_testing/test_validate_environment_zai.py new file mode 100644 index 00000000000..7e88815fee7 --- /dev/null +++ b/tests/local_testing/test_validate_environment_zai.py @@ -0,0 +1,35 @@ +# SPDX-License-Identifier: MIT +# Tests for validate_environment fix: zai provider was missing from the +# elif chain in litellm/utils.py, causing a false all-clear when ZAI_API_KEY +# is unset (fixes #32962). + +import os +import sys + +import pytest + +sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "..", ".."))) + +import litellm + + +def test_zai_missing_key_reports_missing(monkeypatch): + monkeypatch.delenv("ZAI_API_KEY", raising=False) + result = litellm.validate_environment(model="zai/glm-5.1") + assert result["keys_in_environment"] is False + assert "ZAI_API_KEY" in result["missing_keys"] + + +def test_zai_key_present_reports_ok(monkeypatch): + monkeypatch.setenv("ZAI_API_KEY", "test-key-123") + result = litellm.validate_environment(model="zai/glm-5.1") + assert result["keys_in_environment"] is True + assert "ZAI_API_KEY" not in result["missing_keys"] + + +def test_moonshot_missing_key_still_reports_missing(monkeypatch): + """Regression: moonshot neighbour branch still works after the zai addition.""" + monkeypatch.delenv("MOONSHOT_API_KEY", raising=False) + result = litellm.validate_environment(model="moonshot/kimi-k2") + assert result["keys_in_environment"] is False + assert "MOONSHOT_API_KEY" in result["missing_keys"]