mirror of
https://github.com/BerriAI/litellm.git
synced 2026-09-22 00:31:44 +00:00
Adds Eden AI (https://www.edenai.co/) as a JSON-configured provider in litellm/llms/openai_like/providers.json, the matching LlmProviders enum entry, the .env.example documentation block, and unit + live tests under tests/test_litellm/llms/openai_like/. Eden AI is an aggregator exposing 100+ underlying models from OpenAI, Anthropic, Google, Mistral and others through a single OpenAI-shape chat-completions endpoint. It is a clean drop-in: standard request body, standard `choices[0].message` response, OpenAI-shape `usage`, standard SSE streaming, and standard `tool_calls`. No Python adapter is needed. Files: - litellm/llms/openai_like/providers.json: register `edenai` (base URL https://api.edenai.run/v3, env var EDENAI_API_KEY, optional EDENAI_API_BASE override, max_completion_tokens -> max_tokens param mapping) - litellm/types/utils.py: LlmProviders.EDENAI = "edenai" - litellm/constants.py: edenai added to LITELLM_CHAT_PROVIDERS, openai_compatible_providers, and the base URL added to openai_compatible_endpoints (mirroring Helicone PR #17663) - provider_endpoints_support.json: edenai entry under "providers" so the check_provider_folders_documented.py CI gate sees the new openai_like provider as documented; chat_completions and messages are true (the openai_like loader's default surface plus LiteLLM's internal Anthropic-format -> OpenAI translation); responses, embeddings, image_generations, audio_transcriptions, audio_speech, moderations, batches, rerank are false (Eden AI's API supports them but LiteLLM-side handlers under litellm/llms/edenai/ ship in follow-up PRs and will flip those flags as they land) - README.md: row in the Supported Providers table; chat / messages ticked, matching what is wired through the openai_like loader today - .env.example: document EDENAI_API_KEY and EDENAI_API_BASE next to the existing provider blocks - tests/test_litellm/llms/openai_like/test_edenai.py: mocked tests for enum membership, JSON config shape, get_llm_provider routing, EDENAI_API_BASE override, Router config, mocked completion; plus a live integration test guarded by `pytest.skipif(not os.environ.get('EDENAI_API_KEY'))` that calls api.edenai.run/v3 end-to-end and validates the response shape Endpoints wired through this PR: /chat/completions only (via the openai_like loader's default surface). /messages is also routed via LiteLLM's internal Anthropic-format translation; /responses is NOT (would require explicit `supported_endpoints` opt-in in the JSON config). Provider-specific handlers under litellm/llms/edenai/ for /responses, /embeddings, /image/generations, /audio/* and /moderations ship in follow-up PRs. Companion docs PR: BerriAI/litellm-docs adds the docs/providers/edenai.md page that the README and provider_endpoints_support.json link to. Per CONTRIBUTING.md: - scope is isolated (one provider, no drive-by changes) - adds 1 mocked test in tests/test_litellm/ (hard requirement) plus a live integration test guarded by EDENAI_API_KEY presence - passes make lint and make test-unit - CLA: https://cla-assistant.io/BerriAI/litellm Pattern matches Helicone (#17663) and AIHubMix (#24294) — closest JSON-configured aggregator analogs. |
||
|---|---|---|
| .. | ||
| agent_tests | ||
| audio_tests | ||
| basic_proxy_startup_tests | ||
| batches_tests | ||
| benchmarks | ||
| code_coverage_tests | ||
| documentation_tests | ||
| enterprise | ||
| guardrails_tests | ||
| image_gen_tests | ||
| litellm | ||
| litellm-proxy-extras | ||
| litellm_core_utils | ||
| litellm_utils_tests | ||
| llm_responses_api_testing | ||
| llm_translation | ||
| load_tests | ||
| local_testing | ||
| logging_callback_tests | ||
| mcp_tests | ||
| multi_instance_e2e_tests | ||
| ocr_tests | ||
| old_proxy_tests/tests | ||
| openai_endpoints_tests | ||
| otel_tests | ||
| pass_through_tests | ||
| pass_through_unit_tests | ||
| proxy_admin_ui_tests | ||
| proxy_e2e_anthropic_messages_tests | ||
| proxy_security_tests | ||
| proxy_unit_tests | ||
| router_unit_tests | ||
| scim_tests | ||
| search_tests | ||
| spend_tracking_tests | ||
| store_model_in_db_tests | ||
| test_litellm | ||
| unified_google_tests | ||
| vector_store_tests | ||
| windows_tests | ||
| __init__.py | ||
| _flush_vcr_cache.py | ||
| _vcr_conftest_common.py | ||
| _vcr_redis_persister.py | ||
| eval_swe_bench.py | ||
| gettysburg.wav | ||
| large_text.py | ||
| openai_batch_completions.jsonl | ||
| README.MD | ||
| test_budget_management.py | ||
| test_callbacks_on_proxy.py | ||
| test_config.py | ||
| test_debug_warning.py | ||
| test_default_encoding_non_root.py | ||
| test_end_users.py | ||
| test_entrypoint.py | ||
| test_fallbacks.py | ||
| test_gpt5_azure_temperature_support.py | ||
| test_health.py | ||
| test_keys.py | ||
| test_litellm_proxy_responses_config.py | ||
| test_logging.conf | ||
| test_models.py | ||
| test_new_vector_store_endpoints.py | ||
| test_openai_endpoints.py | ||
| test_organizations.py | ||
| test_otel_thread_leak.py | ||
| test_passthrough_endpoints.py | ||
| test_presidio_latency.py | ||
| test_proxy_server_non_root.py | ||
| test_ratelimit.py | ||
| test_resource_cleanup.py | ||
| test_service_logger_otel.py | ||
| test_spend_logs.py | ||
| test_team.py | ||
| test_team_logging.py | ||
| test_team_members.py | ||
| test_users.py | ||
In total litellm runs 1000+ tests
[02/20/2025] Update:
To make it easier to contribute and map what behavior is tested,
we've started mapping the litellm directory in tests/test_litellm
This folder can only run mock tests.