Skip to content

feat(providers): add UberLLM to the OpenAI-compatible registry - #981

Open
PSA-Team-source wants to merge 2 commits into
agentforce314:mainfrom
PSA-Team-source:add-uberllm-provider
Open

PSA-Team-source wants to merge 2 commits into
agentforce314:mainfrom
PSA-Team-source:add-uberllm-provider

Conversation

@PSA-Team-source

Copy link
Copy Markdown

All Submissions:

New Feature Submissions:

  • Have you added an explanation of what your changes do and why you'd like us to include them?

Description

Adds UberLLM (https://uberllm.dev) as a row in the OpenAI-compatible ProviderSpec registry. It is an OpenAI-compatible gateway serving /v1/chat/completions (streaming and tool calls supported) and a public /v1/models with Bearer auth, so it needs no bespoke class. One prepaid key covers DeepSeek, Qwen, OpenAI, Anthropic and Gemini models under vendor/model ids, usually below list price (per-model prices: https://uberllm.dev/models). Docs: https://uberllm.dev/docs/quickstart. Keys: UBERLLM_API_KEY, created at https://uberllm.dev/signup.

I work on UberLLM. This follows the same pattern as #975 (cheapaimodel) and #972 (CloudGPU).

main currently fails to import the provider registry. The llm.buzz row merged in #979 passes base_url= and env_var=, which ProviderSpec does not accept, so import src.providers raises TypeError and tests/test_provider_registry.py errors at collection. The first commit here repairs that row (same values, correct field names, tuples), restores the test module docstring the same merge overwrote, and lists llmbuzz in the README block so test_the_readme_provider_list_matches_the_registry passes. Happy to split it into its own PR if you prefer.

Changes proposed in this pull request:

  • src/providers/openai_compatible_specs.py: repair the llmbuzz row; add the uberllm spec after it, base URL https://api.uberllm.dev/v1, default model deepseek/deepseek-v4.1-flash, five suggested models (deepseek/deepseek-v4.1-flash, deepseek/deepseek-v4-pro, qwen/qwen3-coder, openai/gpt-5.4-mini, anthropic/claude-sonnet-4.6), UBERLLM_API_KEY, aliases uber-llm / uber_llm
  • tests/test_provider_registry.py: restore the module docstring; uberllm added to EXPECTED_NEW_PROVIDERS and VENDOR_DEFAULTS
  • README provider list (and the translated READMEs): add uberllm (and llmbuzz in the English list). English count 33 to 35, translated counts 28 to 29.

Testing

  • python -m pytest -q tests/test_provider_registry.py: 27 passed (on main it errors at collection)
  • python -m pytest -q tests/test_provider_usage_and_reasoning.py tests/test_provider_registry.py: 49 passed
  • python -m pytest -q tests -k 'provider or registry or login or config': 1281 passed, 7 skipped, 51 failed; the same 51 fail with only the repair commit applied (async tests without an async plugin in my environment, hook/MCP tests), none touch the registry
  • Live, with a real key: get_provider_class('uber-llm') resolves to UberllmProvider (same class as uberllm), resolve_api_key('uberllm') reads UBERLLM_API_KEY, and for deepseek/deepseek-v4.1-flash and openai/gpt-5.4-mini on https://api.uberllm.dev/v1/: chat() and chat_stream_response() answered "What is 17 + 25?" with 42 (usage reported), and a get_weather tool request came back as a tool_calls stop with {'city': 'Paris'}.

🤖 Generated with Claude Code

…stry imports again

The row added in agentforce314#979 passed base_url= and env_var= (ProviderSpec takes
default_base_url= and env_vars=), so importing src.providers raised
TypeError and tests/test_provider_registry.py failed at collection. The
same merge pasted a dict into the test module docstring; restore it, and
list llmbuzz in the README provider block so
test_the_readme_provider_list_matches_the_registry passes.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant