Repository navigation
media-http, vendors: add EmpirioLabs AI - #28
Conversation
EmpirioLabs serves chat, Responses, Messages and embeddings as their
specs have them, and video as jobs of its own: `POST
/videos/generations` answers a `job_id`, polled at `/jobs/{id}`. With
no vendor and no format for its video jobs, each format is configured
by hand and its video models cannot be reached. Thus, add an
`empiriolabs` vendor with those formats and an `empiriolabs-videos`
format that creates and polls its jobs; its images, speech and
transcriptions answer as jobs or URLs that no synchronous media format
can relay, so they are left out, and a video's content is refused, as
it sits at a URL on another host.
Refs: respanai#21
# Conflicts: # README.md # apps/gateway/src/compose/tests.rs # apps/gateway/src/formats.rs # crates/vendors/kit/src/formats.rs # crates/vendors/src/lib.rs # crates/vendors/yellow/src/lib.rs # docs/configuration.md # docs/vendors.md
|
Thanks for adding EmpirioLabs AI, Ruiqing! I checked it against our API: the base URL, |
|
Thanks for checking it against your API, Adam! The vendors table, README and docs now read "EmpirioLabs AI". We'd gladly take you up on the live check: a run of the chat, Responses, Messages, embeddings and video formats against your API would let us tick that box. |
# Conflicts: # README.md # crates/vendors/src/lib.rs # crates/vendors/yellow/src/lib.rs # docs/configuration.md # docs/vendors.md
When EmpirioLabs AI was added, only its chat, embeddings and video formats were declared, its model list took kinds from categories it does not serve, and its images, speech and transcriptions were left out as unrelayable. Its images answer at once when asked to wait, its speech streams inline at `/audio/speech:stream`, and its transcription jobs finish in seconds, and it also serves the Gemini API and decisions. Thus, add those formats, poll a transcription job within the call, and list each model by the endpoint that serves it with its limits, features and price.
# Conflicts: # crates/formats/media-http/README.md # crates/formats/media-http/src/dialect.rs # crates/formats/media-http/src/lib.rs
EmpirioLabs AI speech is a provider format of its own, of OpenAI speech's name, that reads its audio.chunk events as they come. It replaces the dialect that read the whole stream before answering.
|
Thanks, Ruiqing. I ran the live check against our API at 8820fbc, built from the branch's Dockerfile with only Four things to fix:
Small one: in the README's Chat row, "EmpirioLabs AI" landed after the sentence, so it reads "whichever of the four formats it speaks EmpirioLabs AI". Happy to run it again after an update. |
EmpirioLabs AI's transcriptions and videos needed formats of their own: transcriptions are always a job, polled within the call for up to ten minutes, and a video, whose content is only at a signed URL off its API, could never reach a client of OpenAI Videos. Thus, drop `empiriolabs-transcriptions` and `empiriolabs-videos`, and list neither kind's models. Its speech becomes a dialect of `openai-speech`: called at `/audio/speech:stream`, its events read whole as the audio. Mistral's and its own `stream_format` and `stream` stripping share one helper, and it has a logo.
EmpirioLabs AI serves chat, Responses, Messages, the Gemini API, images, embeddings, speech and decisions as their specs have them, with no vendor for it: each format is configured by hand, its images answer as jobs, and its speech at a URL. Thus, add an
empiriolabsvendor that lists each model by the endpoint that serves it, with its limits, features and price, and lays a dialect over two formats: its images are asked to wait and answer bytes, and its speech is called at/audio/speech:stream, whose events are read whole as the audio. An image of nooutput_formatis now of the type its bytes say, as its answers name none.Its transcriptions and videos are left out: a transcription is always a job, which no
openai-transcriptionsclient could wait on, and a video is only at a signed URL off its API, which a client of OpenAI Videos could never reach. Its reranks, OCR, search, 3D and music have no kind.Checked live through the gateway:
/v1/models(133 models of 5 kinds); Chat Completions, Responses whole and streamed, Messages andgenerateContent(mistral-small-3-1); embeddings (text-embedding-v4); decisions (aplomb-1); images whole, streamed and edited (flux-2-klein-4b); speech as audio and as events, and aspeedrefused (qwen-audio-3-0-tts).Refs: #21