From ac216c3e94f4f4aeee159c3f946cbd705089a639 Mon Sep 17 00:00:00 2001 From: Xubin Ren <52506698+Re-bin@users.noreply.github.com> Date: Mon, 3 Aug 2026 16:32:17 +0800 Subject: [PATCH] docs(providers): document Eden AI setup and WebUI parity --- docs/configuration.md | 1 + docs/providers.md | 33 ++++++++++++++++++++++++++++++++ tests/webui/test_settings_api.py | 20 +++++++++++++++++++ 3 files changed, 54 insertions(+) diff --git a/docs/configuration.md b/docs/configuration.md index 81bd0bd65..cdd8cf539 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -268,6 +268,7 @@ Tracing covers the providers that go through nanobot's OpenAI-compatible client |----------|---------|-------------| | `custom` | Any OpenAI-compatible endpoint | — | | `openrouter` | LLM gateway for hosted model families + Voice transcription (STT models) | [openrouter.ai](https://openrouter.ai) | +| `edenai` | LLM gateway for Eden AI's OpenAI-compatible model catalog | [app.edenai.run](https://app.edenai.run/) | | `opencode` | LLM gateway (OpenCode Zen coding-agent models) | [opencode.ai/docs/zen](https://opencode.ai/docs/zen/) | | `opencode_zen` | LLM gateway (legacy alias for OpenCode Zen) | [opencode.ai/docs/zen](https://opencode.ai/docs/zen/) | | `opencode_go` | LLM gateway (OpenCode Go low-cost coding models) | [opencode.ai/docs/go](https://opencode.ai/docs/go/) | diff --git a/docs/providers.md b/docs/providers.md index 4a0817917..f5b8657b6 100644 --- a/docs/providers.md +++ b/docs/providers.md @@ -100,6 +100,39 @@ Gateway-style setup for model IDs served through OpenRouter. Use the model ID exactly as OpenRouter lists it. +### Eden AI Gateway + +Eden AI exposes an OpenAI-compatible chat-completions endpoint at +`https://api.edenai.run/v3`. Configure the built-in `edenai` provider and use +the full `provider/model` identifier listed by Eden AI: + +```json +{ + "providers": { + "edenai": { + "apiKey": "${EDENAI_API_KEY}" + } + }, + "modelPresets": { + "primary": { + "provider": "edenai", + "model": "anthropic/claude-sonnet-4-5", + "maxTokens": 8192 + } + }, + "agents": { + "defaults": { + "modelPreset": "primary" + } + } +} +``` + +Nanobot sends the model ID unchanged, including its provider prefix. Use +Eden AI's [model listing](https://www.edenai.co/docs/v3/llms/listing-models) +to choose a currently available model. The WebUI can also load that catalog +after the Eden AI API key is saved under **Settings → Models**. + ### OpenCode Zen and Go OpenCode Zen and OpenCode Go are OpenCode-managed gateways for coding-agent models. diff --git a/tests/webui/test_settings_api.py b/tests/webui/test_settings_api.py index 64af3ec28..0ab93558e 100644 --- a/tests/webui/test_settings_api.py +++ b/tests/webui/test_settings_api.py @@ -86,6 +86,26 @@ def test_settings_payload_includes_versioned_docs( } +def test_settings_payload_exposes_edenai_provider( + tmp_path, + monkeypatch: pytest.MonkeyPatch, +) -> None: + config_path = tmp_path / "config.json" + config = Config() + config.providers.edenai.api_key = "eden-test-key" + save_config(config, config_path) + monkeypatch.setattr("nanobot.config.loader._current_config_path", config_path) + + payload = settings_payload() + edenai = next(row for row in payload["providers"] if row["name"] == "edenai") + + assert edenai["label"] == "Eden AI" + assert edenai["configured"] is True + assert edenai["default_api_base"] == "https://api.edenai.run/v3" + assert edenai["model_catalog"] == "catalog" + assert edenai["model_selectable"] is True + + def test_settings_payload_includes_relocated_capabilities( tmp_path, monkeypatch: pytest.MonkeyPatch,