Repository navigation
feat(video): add UberLLM video provider for Seedance 2.0, Wan 2.7, Kling 3, Veo 3.1 Fast and more on one key - #936
Open
PSA-Team-source wants to merge 1 commit into
Conversation
…ing 3, Veo 3.1 Fast and more on one key
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds
uberllm_video, a hostedvideo_generationprovider (provideruberllm, envUBERLLM_API_KEY). One key reaches seven video model families: Seedance 2.0, Wan 2.7, Kling 3 Standard, Veo 3.1 Fast, LTX 2.3 Fast, Hailuo 02 Standard and Vidu Q3 Turbo, for text-to-video, image-to-video (first frame) and reference-to-video. The same key and prepaid balance also serve UberLLM's image, music and speech models, which is the gap #569 describes; this PR covers video only, and those could follow as separate tools if you want them.Mirrors #905 (same file set and lifecycle: pinned contract, submit-then-poll,
resume_job, settled cost,dry_runquote, Layer 3 skill).Related issue
Refs #569
Changes
tools/video/uberllm_video.py:UberLLMVideo(BaseTool), auto-discovered and ranked byvideo_selector.modeltakes a family (seedance-2.0default, the only one with all three routes, first inmodelsfor routing) or an exact UberLLM model id.POST /v1/video/generationswith anIdempotency-Key, pollGET /v1/video/generations/{id}, download with the same key (the key is only sent to the UberLLM host).retry_policy.max_retries=0.failed,canceledandexpiredend without charge (expiredis mapped to terminal, sinceprovider_jobs.pollwould otherwise keep waiting on it).usage.cost_usdascost_usdwithdata.cost_statussettled | pending; while the charge is pending it re-reads the job and otherwise reports the listed price.estimate_costfrom pinned per-second rates,PriceQuoteRequiredfor an unpinned resolution, no network.dry_run: truereturns UberLLM's exact free quote (validate: true).max_cost_usdhas the job refused at no charge above that.POST /v1/files). The schema does not advertiseimage_url, sovideo_selectordoes not send local frames to fal first.tools/provider_contracts/uberllm_video.json: 16 model ids in 7 families, each with the request schema fromGET /v1/models/{id}and per-resolution rates from freevalidatequotes (highest rate across audio settings, so estimates do not undercount). Verified 2026-11-10.tests/contracts/test_uberllm_video.py: 45 tests, all HTTP faked..agents/skills/uberllm-video/SKILL.md(Layer 3) plus a row inai-video-gen;docs/PROVIDERS.mdenv line, provider section, pricing and coverage rows;.env.example.Testing
pytest tests/contracts/test_uberllm_video.py tests/contracts/test_pika_video.py tests/tools/test_video_selector_routing.py -q: 164 passed.pytest tests/ -q(Python 3.11, macOS): 2954 passed, 20 skipped, 8 failed. The 8 failures are intest_audio_enhance_default_container,test_caption_workspace_isolationandtest_showcase_card_security, and fail the same way onmainhere because the local ffmpeg build has nodrawtextfilter orlibvorbis.dry_runthroughUberLLMVideo().execute(...): estimates matched the quotes exactly (Seedance 2.0 text 5 s $0.76; Seedance 2.0 reference 5 s $0.2684 withaspect_ratio16:9 applied by default).Tested with fal-ai/vidu/q3/text-to-video/turbo: 1 s 360p clip through
execute(), ffprobe 640x352 h264 + aac, 1.04 s,cost_statussettled at $0.02975, same as the preflight estimate.Prices per model: https://uberllm.dev/models
I work on UberLLM.
Checklist
make test-contracts/make test) where applicable.