mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-18 04:41:56 +00:00
fix(fallback): resolve api_key_env in fallback chain entries (carve-out of #22665)
Fallback chain entries with 'api_key_env: ENV_VAR_NAME' weren't being
resolved by either the init-time fallback path (line ~1660) or the
runtime _try_activate_fallback path (line ~8045). Only literal
'api_key' was honored; the snake_case 'api_key_env' alias documented
elsewhere in the config was silently dropped, so a 'provider: custom'
fallback with base_url + api_key_env worked as primary but failed as
fallback with 'no endpoint credentials found' / 401.
Adds 'or fb.get("api_key_env")' to the existing 'key_env' lookup in
both call sites, with empty-string-to-None coercion so unset env vars
don't poison the resolver.
Salvage of #22665's fallback portion. The original PR also bundled
gateway-degrade-on-no-adapters changes (those land via the carve-out
in #22853 which is the same code) and run_agent.py memory-nudge
counter hydration (issue #22357 territory, not mentioned in the
title). Drops both bundled pieces; keeps just the api_key_env fix.
Closes #5392.
This commit is contained in:
parent
246c676c2b
commit
6ddc48b058
2 changed files with 113 additions and 2 deletions
11
run_agent.py
11
run_agent.py
|
|
@ -1665,10 +1665,15 @@ class AIAgent:
|
|||
_fb_entries = [fallback_model]
|
||||
_fb_resolved = False
|
||||
for _fb in _fb_entries:
|
||||
_fb_explicit_key = (_fb.get("api_key") or "").strip() or None
|
||||
if not _fb_explicit_key:
|
||||
_fb_key_env = (_fb.get("key_env") or _fb.get("api_key_env") or "").strip()
|
||||
if _fb_key_env:
|
||||
_fb_explicit_key = os.getenv(_fb_key_env, "").strip() or None
|
||||
_fb_client, _fb_model = resolve_provider_client(
|
||||
_fb["provider"], model=_fb["model"], raw_codex=True,
|
||||
explicit_base_url=_fb.get("base_url"),
|
||||
explicit_api_key=_fb.get("api_key"),
|
||||
explicit_api_key=_fb_explicit_key,
|
||||
)
|
||||
if _fb_client is not None:
|
||||
self.provider = _fb["provider"]
|
||||
|
|
@ -8116,7 +8121,9 @@ class AIAgent:
|
|||
fb_base_url_hint = (fb.get("base_url") or "").strip() or None
|
||||
fb_api_key_hint = (fb.get("api_key") or "").strip() or None
|
||||
if not fb_api_key_hint:
|
||||
fb_key_env = (fb.get("key_env") or "").strip()
|
||||
# key_env and api_key_env are both documented aliases (see
|
||||
# _normalize_custom_provider_entry in hermes_cli/config.py).
|
||||
fb_key_env = (fb.get("key_env") or fb.get("api_key_env") or "").strip()
|
||||
if fb_key_env:
|
||||
fb_api_key_hint = os.getenv(fb_key_env, "").strip() or None
|
||||
# For Ollama Cloud endpoints, pull OLLAMA_API_KEY from env
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue