mirror of
https://github.com/agent0ai/agent-zero.git
synced 2026-05-04 22:50:54 +00:00
ux: onboarding flow prototype
reuse /banners for composer missing-key status polish onboarding ui; add chat composer API key banner drop dedicated status backend endpoint
This commit is contained in:
parent
69e177487f
commit
1304195d4c
7 changed files with 680 additions and 41 deletions
|
|
@ -7,58 +7,30 @@ class MissingApiKeyCheck(Extension):
|
|||
"""Check if API keys are configured for selected model providers."""
|
||||
|
||||
LOCAL_PROVIDERS = {"ollama", "lm_studio"}
|
||||
LOCAL_EMBEDDING = {"huggingface"}
|
||||
CONFIGURE_MODEL_SETTINGS_LINK = (
|
||||
"""<a href="#" onclick="(async()=>{"""
|
||||
"""const { store: s } = await import('/components/plugins/plugin-settings-store.js');"""
|
||||
"""if(s&&s.openConfig){await s.openConfig('_model_config');}"""
|
||||
"""})();return false;">"""
|
||||
"""Configure model settings</a>"""
|
||||
"""<div class="onboarding-banner-btn-container" style="margin-top: 12px;">"""
|
||||
"""<button class="btn btn-ok" onclick="window.openModal('/plugins/_onboarding/webui/onboarding.html');return false;">"""
|
||||
"""Start Onboarding</button>"""
|
||||
"""</div>"""
|
||||
)
|
||||
|
||||
async def execute(self, banners: list = [], frontend_context: dict = {}, **kwargs):
|
||||
cfg = plugins.get_plugin_config("_model_config") or {}
|
||||
missing_providers = []
|
||||
checks = [
|
||||
("Chat Model", cfg.get("chat_model", {})),
|
||||
("Utility Model", cfg.get("utility_model", {})),
|
||||
("Embedding Model", cfg.get("embedding_model", {})),
|
||||
]
|
||||
missing_providers = model_config.get_missing_api_key_providers()
|
||||
|
||||
for label, model_cfg in checks:
|
||||
provider = model_cfg.get("provider", "")
|
||||
if not provider:
|
||||
continue
|
||||
provider_lower = provider.lower()
|
||||
if provider_lower in self.LOCAL_PROVIDERS:
|
||||
continue
|
||||
if label == "Embedding Model" and provider_lower in self.LOCAL_EMBEDDING:
|
||||
continue
|
||||
|
||||
if not model_config.has_provider_api_key(
|
||||
provider_lower,
|
||||
model_cfg.get("api_key", ""),
|
||||
):
|
||||
missing_providers.append({
|
||||
"model_type": label,
|
||||
"provider": provider,
|
||||
})
|
||||
|
||||
if missing_providers:
|
||||
model_list = ", ".join(
|
||||
f"{p['model_type']} ({p['provider']})" for p in missing_providers
|
||||
)
|
||||
|
||||
banners.append({
|
||||
"id": "missing-api-key",
|
||||
"type": "error",
|
||||
"priority": 100,
|
||||
"title": "Missing LLM API Key for current settings",
|
||||
"html": f"""No API key configured for: {model_list}.<br>
|
||||
Agent Zero will not be able to function properly unless you provide an API key or change your settings.<br>
|
||||
"title": "Welcome to Agent Zero!",
|
||||
"html": f"""You're almost ready to chat. Please configure your models to continue.<br>
|
||||
Insert your API key in the onboarding wizard.
|
||||
{self.CONFIGURE_MODEL_SETTINGS_LINK}""",
|
||||
"dismissible": False,
|
||||
"source": "backend"
|
||||
"source": "backend",
|
||||
# For programmatic clients (e.g. chat composer) reusing this banner pipeline
|
||||
"missing_providers": missing_providers,
|
||||
})
|
||||
|
||||
# Check preset providers for missing API keys (warning level)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue