HKUDS/nanobot · error · RuntimeError
validated Azure provider setup is missing api_base
Error message
validated Azure provider setup is missing api_base
What it means
Internal invariant check in _make_provider_core: the backend resolved to azure_openai, but the already-validated provider setup somehow lacks api_base — meaning validation in _resolve_provider_setup was bypassed or the setup object was constructed inconsistently. This is a defensive programmer-error guard, not an expected user-facing condition; it indicates the AzureProvider branch is about to build a client with no endpoint.
Solutions
- Trace how the provider setup reached make_provider without passing through validate_provider_setup
- Re-run make_provider so _resolve_provider_setup validation executes before client construction
- Report as a bug if reproducible with a config that passes validate_provider_setup
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at nanobot/providers/factory.py:190 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of HKUDS/nanobot@42f37dc4c0 (2026-08-26).
Data as JSON: /api/errors/226649de21808093.
Report an issue: GitHub.
Appendix: source
Thrown at nanobot/providers/factory.py:190
default_model=model,
proxy=getattr(p, "proxy", None) if p else None,
extra_body=p.extra_body if p else None,
provider_name=provider_name,
)
elif backend == "xai_grok":
from nanobot.providers.xai_grok_provider import XAIGrokProvider
provider = XAIGrokProvider(
default_model=model,
proxy=getattr(p, "proxy", None) if p else None,
extra_body=p.extra_body if p else None,
provider_name=provider_name,
)
elif backend == "azure_openai":
from nanobot.providers.azure_openai_provider import AzureOpenAIProvider
if p is None or p.api_base is None:
raise RuntimeError("validated Azure provider setup is missing api_base")
provider = AzureOpenAIProvider(
api_key=p.api_key or "",
api_base=p.api_base,
default_model=model,
provider_name=provider_name,
)
elif backend == "github_copilot":
from nanobot.providers.github_copilot_provider import GitHubCopilotProvider
provider = GitHubCopilotProvider(default_model=model, provider_name=provider_name)
elif backend == "anthropic":
from nanobot.providers.anthropic_provider import AnthropicProvider
provider = AnthropicProvider(
api_key=p.api_key if p else None,
api_base=config.get_api_base(model, preset=preset),
default_model=model,
extra_headers=_provider_extra_headers(spec, p),View on GitHub (pinned to 42f37dc4c0)