Merge pull request #78 from carlytwozero/fix/pass-api-key-to-aiagent

fix: pass api_key to AIAgent for non-Anthropic /anthropic providers
This commit is contained in:
Nathan Esquenazi
2026-04-04 13:05:29 -07:00
committed by GitHub
2 changed files with 28 additions and 1 deletions

View File

@@ -931,8 +931,21 @@ def _handle_chat_sync(handler, body):
with CHAT_LOCK: with CHAT_LOCK:
from api.config import resolve_model_provider from api.config import resolve_model_provider
_model, _provider, _base_url = resolve_model_provider(s.model) _model, _provider, _base_url = resolve_model_provider(s.model)
# Resolve API key via Hermes runtime provider (matches gateway behaviour)
_api_key = None
try:
from hermes_cli.runtime_provider import resolve_runtime_provider
_rt = resolve_runtime_provider()
_api_key = _rt.get("api_key")
# Also use runtime provider/base_url if the webui config didn't resolve them
if not _provider:
_provider = _rt.get("provider")
if not _base_url:
_base_url = _rt.get("base_url")
except Exception as _e:
print(f"[webui] WARNING: resolve_runtime_provider failed: {_e}", flush=True)
agent = AIAgent(model=_model, provider=_provider, base_url=_base_url, agent = AIAgent(model=_model, provider=_provider, base_url=_base_url,
platform='cli', quiet_mode=True, api_key=_api_key, platform='cli', quiet_mode=True,
enabled_toolsets=CLI_TOOLSETS, session_id=s.session_id) enabled_toolsets=CLI_TOOLSETS, session_id=s.session_id)
workspace_ctx = f"[Workspace: {s.workspace}]\n" workspace_ctx = f"[Workspace: {s.workspace}]\n"
workspace_system_msg = ( workspace_system_msg = (

View File

@@ -135,6 +135,19 @@ def _run_agent_streaming(session_id, msg_text, model, workspace, stream_id, atta
raise ImportError("AIAgent not available -- check that hermes-agent is on sys.path") raise ImportError("AIAgent not available -- check that hermes-agent is on sys.path")
resolved_model, resolved_provider, resolved_base_url = resolve_model_provider(model) resolved_model, resolved_provider, resolved_base_url = resolve_model_provider(model)
# Resolve API key via Hermes runtime provider (matches gateway behaviour)
resolved_api_key = None
try:
from hermes_cli.runtime_provider import resolve_runtime_provider
_rt = resolve_runtime_provider()
resolved_api_key = _rt.get("api_key")
if not resolved_provider:
resolved_provider = _rt.get("provider")
if not resolved_base_url:
resolved_base_url = _rt.get("base_url")
except Exception as _e:
print(f"[webui] WARNING: resolve_runtime_provider failed: {_e}", flush=True)
# Read per-profile config at call time (not module-level snapshot) # Read per-profile config at call time (not module-level snapshot)
from api.config import get_config as _get_config from api.config import get_config as _get_config
_cfg = _get_config() _cfg = _get_config()
@@ -162,6 +175,7 @@ def _run_agent_streaming(session_id, msg_text, model, workspace, stream_id, atta
model=resolved_model, model=resolved_model,
provider=resolved_provider, provider=resolved_provider,
base_url=resolved_base_url, base_url=resolved_base_url,
api_key=resolved_api_key,
platform='cli', platform='cli',
quiet_mode=True, quiet_mode=True,
enabled_toolsets=_toolsets, enabled_toolsets=_toolsets,