What's Changed
Added
- Multi-provider
web_search: WebSearchTool reads BOCHA_API_KEY at startup. When present, searches route through Bocha Search API; otherwise falls back to DuckDuckGo.
Changed
- Strict LLM provider gating (breaking):
LLMClient.__init__ raises ValueError at startup if any of {PROVIDER}_API_KEY, {PROVIDER}_BASE_URL, or {PROVIDER}_MODEL is missing.
agentao init wizard now requires non-empty BASE_URL and MODEL — loops until provided.
- Renamed tool
google_web_search → web_search; removed GoogleSearchTool alias entirely.
/provider listing only shows providers with all three env vars set.
- Removed
_PROVIDER_DEFAULT_MODELS internal fallback from LLMClient.
- Default model updated from
gpt-4o → gpt-5.4 across all examples and docs.
Migration
# All three are now required in .env:
OPENAI_API_KEY=sk-...
OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_MODEL=gpt-5.4