feat: add Eden AI as a first-class LLM provider and embedder#705
feat: add Eden AI as a first-class LLM provider and embedder#705MVS-source wants to merge 1 commit into
Conversation
Eden AI (https://www.edenai.co/) is an EU-headquartered gateway exposing 700+ models (Mistral, GPT, Claude, Gemini, Cohere, DeepSeek, Llama, ...) behind a single OpenAI-compatible endpoint. Because it is OpenAI-compatible, this reuses the existing `openai` dependency with a custom base_url — no new dependency. - llm/edenai.py: EdenAIProvider (generate + streaming chat + /models discovery), default mistral/mistral-small-latest, EDENAI_API_KEY, EDENAI_BASE_URL override (EU endpoint https://api.eu.edenai.run/v3 for data residency). reasoning maps to OpenAI reasoning_effort for OpenAI reasoning models routed via Eden. - embedding/edenai.py: EdenAIEmbedder (openai/text-embedding-3-small default, 1536/3072/1024 dims for the supported models). - Registered in the LLM and embedding registries, rate limiter defaults, server provider catalog, CLI provider selection / resolution / validation, embedder auto-detection, and the web settings UI. - Unit tests for the provider and embedder (mocked; no network). - Docs: CONFIG.md provider + embedder + env-var entries, .env.example. The API key is read only from EDENAI_API_KEY (or passed explicitly); it is never logged or hardcoded. Signed-off-by: MVS-source <72023257+MVS-source@users.noreply.github.com>
|
✅ Health: 7.7 (unchanged) 🚨 Change risk: high (riskier than 68% of this repo's commits · raw 9.4/10)
🩹 Review priority (files here with the most recent bug-fix history — defects cluster, so review these first)
🔥 Hotspots touched (5)
2 more
🔗 Hidden coupling (1 file)
💀 Dead code (3 findings)
👀 Suggested reviewers @biggiesmallcap-blip 📊 Full report · ⭐ Star Repowise · 📥 Install bot · Last updated 2026-07-07 12:41 UTC |
Summary
EdenAIProvider) and embedder(
EdenAIEmbedder). Eden AI is an EU-headquartered gateway exposing 700+ models(Mistral, GPT, Claude, Gemini, Cohere, DeepSeek, Llama, …) behind a single
OpenAI-compatible endpoint — so it reuses the existing
openaidependencywith a custom
base_url, no new dependency.openrouter/deepseekpattern:generate(), streaming chat,live
/modelsdiscovery,EDENAI_API_KEY, and anEDENAI_BASE_URLoverridefor the EU endpoint (
https://api.eu.edenai.run/v3) for data residency.reasoningmaps to OpenAIreasoning_effortfor OpenAI reasoning models routedvia Eden; other models expose only
auto.server provider catalog, CLI provider selection/resolution/validation, embedder
auto-detection, the web settings UI, tests, and docs (
CONFIG.md,.env.example).Related Issues
Closes #704
Test Plan
pytest) — 31 new tests (test_edenai_provider.py,test_edenai_embedder.py); full provider + embedder suites: 220 passed, no regressions.ruff check) —llm/edenai.pyclean; the embedder carries thesame single
RUF012on_DIMSas the existingopenrouter.pyembedder.generate(), streamingchat,
/modelsdiscovery, and embeddings (1536-dim, L2-normalized).npm run build) — TS change is additive (new keys on existingtyped records / const arrays).
Checklist
Notes: The API key is read only from
EDENAI_API_KEY(or passed explicitly) — neverlogged or hardcoded.
.github/CONTRIBUTING.mdreferenced arun-config-form.tsxfile that no longer exists in the tree, so only
provider-section.tsxwas updated.