File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -125,17 +125,19 @@ def _setup_llm_key(kb_dir: Path | None = None) -> None:
125125 else :
126126 litellm .api_key = api_key
127127
128- # Dynamically set the provider-specific env var when possible
129128 if provider :
129+ # Active provider is known — set only its key, so LLM_API_KEY is not
130+ # sprayed into unrelated provider keys (e.g. MISTRAL_API_KEY, which the
131+ # Mistral parser treats as a real Mistral credential).
130132 provider_env = f"{ provider .upper ()} _API_KEY"
131133 if not os .environ .get (provider_env ):
132134 os .environ [provider_env ] = api_key
133-
134- # Fallback: also set common provider keys so multi-provider
135- # configs (e.g. PageIndex Cloud) still work
136- for env_var in _KNOWN_PROVIDER_KEYS :
137- if not os .environ .get (env_var ):
138- os .environ [env_var ] = api_key
135+ else :
136+ # Provider couldn't be determined — fall back to setting the common
137+ # provider keys so multi-provider configs still work.
138+ for env_var in _KNOWN_PROVIDER_KEYS :
139+ if not os .environ .get (env_var ):
140+ os .environ [env_var ] = api_key
139141
140142# Supported document extensions for the `add` command
141143SUPPORTED_EXTENSIONS = {
Original file line number Diff line number Diff line change @@ -365,3 +365,17 @@ async def fake_run_query(*_args, **_kwargs):
365365 assert "rnn" in saved
366366 assert "[[concepts/multi-head-attention]]" not in saved
367367 assert "multi head attention" in saved
368+
369+
370+ def test_setup_llm_key_does_not_spray_unrelated_provider_keys (tmp_path , monkeypatch ):
371+ import os
372+ from openkb .cli import _setup_llm_key
373+ # KB with an openai model (known provider)
374+ openkb_dir = tmp_path / ".openkb" ; openkb_dir .mkdir ()
375+ (openkb_dir / "config.yaml" ).write_text ("model: openai/gpt-4o\n " )
376+ for k in ("MISTRAL_API_KEY" , "OPENAI_API_KEY" , "ANTHROPIC_API_KEY" ):
377+ monkeypatch .delenv (k , raising = False )
378+ monkeypatch .setenv ("LLM_API_KEY" , "sk-test" )
379+ _setup_llm_key (tmp_path )
380+ assert os .environ .get ("OPENAI_API_KEY" ) == "sk-test" # active provider set
381+ assert os .environ .get ("MISTRAL_API_KEY" ) is None # unrelated provider NOT sprayed
You can’t perform that action at this time.
0 commit comments