Backends
Backends that run component tasks on open-source models and cloud APIs.
DummyBackend(model=None, *, options=None, max_concurrency=1)
Bases: Backend
Return deterministic placeholder outputs for every task, without network access or model weights.
Outputs depend only on the request, so repeated calls return the same results. The backend is meant for tests and documentation.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model
|
str | None
|
Ignored. |
None
|
options
|
dict | None
|
Ignored. |
None
|
max_concurrency
|
int
|
The maximum number of requests that run at the same time. |
1
|
Examples:
>>> from skai.generation import TextToTextGenerator
>>> generator = TextToTextGenerator(instructions='Summarize.', max_length=3, backend='dummy').fit()
>>> generator.predict(['One two three four five.']).tolist()
['One two three']
Source code in src/skai/core/_backend.py
183 184 185 186 | |
animate_avatar(request)
Return the still avatar repeated for the length of the audio.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
AvatarRequest
|
The avatar request. |
required |
Returns:
| Type | Description |
|---|---|
Video
|
A video at 25 frames per second with the audio as its track. |
Source code in src/skai/backends/_dummy.py
580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 | |
animate_image(request)
Return the still image repeated for the length of the video.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
AnimationRequest
|
The animation request. |
required |
Returns:
| Type | Description |
|---|---|
Video
|
A video of the requested duration, at |
Source code in src/skai/backends/_dummy.py
568 569 570 571 572 573 574 575 576 577 578 | |
classify_audio(request)
Return deterministic scores derived from the audio.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
ClassificationRequest
|
The classification request. |
required |
Returns:
| Type | Description |
|---|---|
dict[str, float]
|
A score per label. The scores sum to one unless the request is multilabel. |
Source code in src/skai/backends/_dummy.py
208 209 210 211 212 213 214 215 216 217 218 | |
classify_image(request)
Return deterministic scores derived from the image.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
ClassificationRequest
|
The classification request. |
required |
Returns:
| Type | Description |
|---|---|
dict[str, float]
|
A score per label. The scores sum to one unless the request is multilabel. |
Source code in src/skai/backends/_dummy.py
196 197 198 199 200 201 202 203 204 205 206 | |
classify_multimodal(request)
Return deterministic scores derived from every part of the sample.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
ClassificationRequest
|
The classification request. |
required |
Returns:
| Type | Description |
|---|---|
dict[str, float]
|
A score per label. The scores sum to one unless the request is multilabel. |
Source code in src/skai/backends/_dummy.py
232 233 234 235 236 237 238 239 240 241 242 | |
classify_text(request)
Return deterministic scores derived from the text.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
ClassificationRequest
|
The classification request. |
required |
Returns:
| Type | Description |
|---|---|
dict[str, float]
|
A score per label. The scores sum to one unless the request is multilabel. |
Source code in src/skai/backends/_dummy.py
184 185 186 187 188 189 190 191 192 193 194 | |
classify_video(request)
Return deterministic scores derived from the sampled frames.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
ClassificationRequest
|
The classification request. |
required |
Returns:
| Type | Description |
|---|---|
dict[str, float]
|
A score per label. The scores sum to one unless the request is multilabel. |
Source code in src/skai/backends/_dummy.py
220 221 222 223 224 225 226 227 228 229 230 | |
convert_voice(request)
Return a tone as long as the input whose pitch depends on the target voice.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
AudioOperationRequest
|
The audio operation request. |
required |
Returns:
| Type | Description |
|---|---|
Audio
|
A mono tone at 16 kHz. |
Source code in src/skai/backends/_dummy.py
466 467 468 469 470 471 472 473 474 475 476 | |
detect_objects(request)
Return one box per label, or one box for the prompt.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
RegionRequest
|
The region request. |
required |
Returns:
| Type | Description |
|---|---|
list[Region]
|
The regions, each covering a quarter of the image. |
Source code in src/skai/backends/_dummy.py
343 344 345 346 347 348 349 350 351 352 353 354 | |
diarize(request)
Split the audio into two halves spoken by two speakers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
DiarizationRequest
|
The diarization request. |
required |
Returns:
| Type | Description |
|---|---|
Transcript
|
The transcript, with two segments. |
Source code in src/skai/backends/_dummy.py
373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 | |
edit_image(request)
Blend the image with a color derived from the instruction, inside the mask when one is given.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
ImageEditRequest
|
The image edit request. |
required |
Returns:
| Type | Description |
|---|---|
Image
|
The edited image, of the size of the input. |
Source code in src/skai/backends/_dummy.py
497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 | |
embed_audio(request)
Return a deterministic random vector derived from the audio.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
EmbeddingRequest
|
The embedding request. |
required |
Returns:
| Type | Description |
|---|---|
NDArray[floating]
|
A vector with |
Source code in src/skai/backends/_dummy.py
331 332 333 334 335 336 337 338 339 340 341 | |
embed_image(request)
Return a deterministic random vector derived from the image.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
EmbeddingRequest
|
The embedding request. |
required |
Returns:
| Type | Description |
|---|---|
NDArray[floating]
|
A vector with |
Source code in src/skai/backends/_dummy.py
319 320 321 322 323 324 325 326 327 328 329 | |
embed_text(request)
Return a deterministic random vector derived from the text.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
EmbeddingRequest
|
The embedding request. |
required |
Returns:
| Type | Description |
|---|---|
NDArray[floating]
|
A vector with |
Source code in src/skai/backends/_dummy.py
306 307 308 309 310 311 312 313 314 315 316 317 | |
enhance_audio(request)
Return the audio clipped to [-1, 1] as the denoised copy.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
AudioOperationRequest
|
The audio operation request. |
required |
Returns:
| Type | Description |
|---|---|
Audio
|
Audio as long as the input. |
Source code in src/skai/backends/_dummy.py
453 454 455 456 457 458 459 460 461 462 463 464 | |
extract_fields(request)
Fill every field with words of the sample, following the nesting of the declarations.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
ExtractionRequest
|
The extraction request. |
required |
Returns:
| Type | Description |
|---|---|
dict[str, Any]
|
The value of every field. A list field holds two items. |
Source code in src/skai/backends/_dummy.py
259 260 261 262 263 264 265 266 267 268 269 270 | |
find_moments(request)
Return the middle third of the audio or video as the one matching moment.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
MomentRequest
|
The moment request. |
required |
Returns:
| Type | Description |
|---|---|
list[Moment]
|
One moment. |
Source code in src/skai/backends/_dummy.py
390 391 392 393 394 395 396 397 398 399 400 401 | |
fine_tune(request)
Return a model id derived from the training prompts and answers, without training anything.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
FineTuneRequest
|
The fine-tuning request. |
required |
Returns:
| Type | Description |
|---|---|
str
|
A deterministic model id. |
Source code in src/skai/backends/_dummy.py
610 611 612 613 614 615 616 617 618 619 620 621 | |
generate_image(request)
Return an image of one color derived from the request.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
ImageGenerationRequest
|
The image generation request. |
required |
Returns:
| Type | Description |
|---|---|
Image
|
An RGB image of the requested size. |
Source code in src/skai/backends/_dummy.py
478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 | |
generate_music(request)
Return a sine tone of the requested length.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
AudioGenerationRequest
|
The audio generation request. |
required |
Returns:
| Type | Description |
|---|---|
Audio
|
A mono tone at 16 kHz. |
Source code in src/skai/backends/_dummy.py
416 417 418 419 420 421 422 423 424 425 426 | |
generate_sound(request)
Return a sine tone of the requested length.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
AudioGenerationRequest
|
The audio generation request. |
required |
Returns:
| Type | Description |
|---|---|
Audio
|
A mono tone at 16 kHz. |
Source code in src/skai/backends/_dummy.py
428 429 430 431 432 433 434 435 436 437 438 | |
generate_text(request)
Return a sentence about the sample, with the glossary applied and cut to the maximum length.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
TextGenerationRequest
|
The text generation request. |
required |
Returns:
| Type | Description |
|---|---|
str
|
The text itself for a text sample, or a sentence that states the size of other samples. |
Source code in src/skai/backends/_dummy.py
244 245 246 247 248 249 250 251 252 253 254 255 256 257 | |
generate_video(request)
Return a video of one color derived from the request.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
VideoGenerationRequest
|
The video generation request. |
required |
Returns:
| Type | Description |
|---|---|
Video
|
A video of the requested duration and size, at |
Source code in src/skai/backends/_dummy.py
555 556 557 558 559 560 561 562 563 564 565 566 | |
lip_sync(request)
Loop or cut the frames of the video to the length of the audio, with the audio as its track.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
LipSyncRequest
|
The lip sync request. |
required |
Returns:
| Type | Description |
|---|---|
Video
|
A video as long as the audio. |
Source code in src/skai/backends/_dummy.py
596 597 598 599 600 601 602 603 604 605 606 607 608 | |
pick_thumbnail(request)
Pick a frame derived from the frames.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
ThumbnailRequest
|
The thumbnail request. |
required |
Returns:
| Type | Description |
|---|---|
int
|
The index of the frame. |
Source code in src/skai/backends/_dummy.py
543 544 545 546 547 548 549 550 551 552 553 | |
remove_background(request)
Keep a centered ellipse of the image and make the rest transparent.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
ImageOperationRequest
|
The image operation request. |
required |
Returns:
| Type | Description |
|---|---|
Image
|
An RGBA image of the input size. |
Source code in src/skai/backends/_dummy.py
527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 | |
segment_image(request)
Return one box and the mask of the box per label, or for the prompt.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
RegionRequest
|
The region request. |
required |
Returns:
| Type | Description |
|---|---|
list[Region]
|
The regions, with masks of the image size. |
Source code in src/skai/backends/_dummy.py
356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 | |
separate_audio(request)
Return the audio at half its volume as the stem.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
AudioOperationRequest
|
The audio operation request. |
required |
Returns:
| Type | Description |
|---|---|
Audio
|
Audio as long as the input. |
Source code in src/skai/backends/_dummy.py
440 441 442 443 444 445 446 447 448 449 450 451 | |
synthesize_speech(request)
Return a sine tone whose length grows with the number of words.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
SpeechRequest
|
The speech request. |
required |
Returns:
| Type | Description |
|---|---|
Audio
|
A mono tone at 16 kHz. |
Source code in src/skai/backends/_dummy.py
403 404 405 406 407 408 409 410 411 412 413 414 | |
transcribe(request)
Return a sentence that states the length of the speech.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
TranscriptionRequest
|
The transcription request. |
required |
Returns:
| Type | Description |
|---|---|
Transcript
|
The transcript, with one segment or with evenly spaced words when timestamps are requested. |
Source code in src/skai/backends/_dummy.py
272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 | |
transcribe_image(request)
Return a sentence that states the size of the image.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
ImageTranscriptionRequest
|
The image transcription request. |
required |
Returns:
| Type | Description |
|---|---|
str
|
The text, as a Markdown heading when the request asks for Markdown. |
Source code in src/skai/backends/_dummy.py
293 294 295 296 297 298 299 300 301 302 303 304 | |
upscale_image(request)
Resize the image by the scale.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
ImageOperationRequest
|
The image operation request. |
required |
Returns:
| Type | Description |
|---|---|
Image
|
The upscaled image. |
Source code in src/skai/backends/_dummy.py
514 515 516 517 518 519 520 521 522 523 524 525 | |
HFBackend(model=None, *, device=None, max_new_tokens=512, token_env='HF_TOKEN', options=None, max_concurrency=1)
Bases: PromptedBackend
Run component tasks on open-source Hugging Face models on the local machine.
Text classification uses a zero-shot natural language inference model and image classification uses CLIP, so both
return real scores but ignore few-shot examples. Text generation and extraction prompt small instruction and
vision models, and audio text generation uses an audio-language model. Object detection uses OWLv2, and
segmentation finds boxes with OWLv2 and masks with SAM. Diarization uses pyannote, which needs the diarize extra
and a Hugging Face token that has accepted the model conditions, and transcribes every speaker turn with Whisper.
Audio separation uses the Hybrid Demucs bundle of torchaudio, and the model parameter names another bundle.
Audio enhancement is spectral-gating noise reduction with no model. Models are downloaded on first use. The
backend needs the hf extra.
Background removal runs the code of briaai/RMBG-1.4 that is downloaded from the Hugging Face Hub, pinned to the
commit BACKGROUND_MODEL_REVISION. Another model set with model loads without remote code.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model
|
str | None
|
The Hugging Face model id to use. The default model of the task is used when it is |
None
|
device
|
str | None
|
The device that runs the models, for example |
None
|
max_new_tokens
|
int
|
The maximum number of tokens that a prompted model generates. |
512
|
token_env
|
str
|
The name of the environment variable that holds the Hugging Face token of gated models. |
'HF_TOKEN'
|
options
|
dict | None
|
Extra keyword arguments passed to every pipeline call. |
None
|
max_concurrency
|
int
|
The maximum number of requests that run at the same time. |
1
|
Source code in src/skai/backends/_hf.py
215 216 217 218 219 220 221 222 223 224 225 226 227 228 | |
animate_image(request)
Animate an image with an image-to-video diffusion model.
The motion prompt is not used.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
AnimationRequest
|
The animation request. |
required |
Returns:
| Type | Description |
|---|---|
Video
|
The video, resized to the size of the image. |
Source code in src/skai/backends/_hf.py
589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 | |
classify_audio(request)
Score audio with a zero-shot audio classification model.
Label descriptions are used as the candidate labels when they are given.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
ClassificationRequest
|
The classification request. |
required |
Returns:
| Type | Description |
|---|---|
dict[str, float]
|
A score per label. |
Source code in src/skai/backends/_hf.py
495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 | |
classify_image(request)
Score an image with a zero-shot image classification model.
Label descriptions are used as the candidate labels when they are given.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
ClassificationRequest
|
The classification request. |
required |
Returns:
| Type | Description |
|---|---|
dict[str, float]
|
A score per label. |
Source code in src/skai/backends/_hf.py
405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 | |
classify_text(request)
Score a text with a zero-shot classification model.
Label descriptions are used as the candidate labels when they are given.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
ClassificationRequest
|
The classification request. |
required |
Returns:
| Type | Description |
|---|---|
dict[str, float]
|
A score per label. |
Source code in src/skai/backends/_hf.py
387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 | |
complete(prompt, model)
Return the answer of a local chat, vision or audio-language model to a prompt.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
prompt
|
Prompt
|
The prompt. |
required |
model
|
str
|
The model to prompt. |
required |
Returns:
| Type | Description |
|---|---|
str
|
The answer of the model. |
Source code in src/skai/backends/_hf.py
363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 | |
connect()
Check that the hf extra is installed.
Returns:
| Type | Description |
|---|---|
HFBackend
|
The backend. |
Source code in src/skai/backends/_hf.py
329 330 331 332 333 334 335 336 | |
detect_objects(request)
Find the boxes of regions with a zero-shot object detection model.
The labels are the candidate labels, or the prompt when there are no labels.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
RegionRequest
|
The region request. |
required |
Returns:
| Type | Description |
|---|---|
list[Region]
|
The regions, without masks. |
Source code in src/skai/backends/_hf.py
611 612 613 614 615 616 617 618 619 620 621 622 623 | |
diarize(request)
Find speaker turns with pyannote and transcribe every turn with the default Whisper model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
DiarizationRequest
|
The diarization request. |
required |
Returns:
| Type | Description |
|---|---|
Transcript
|
The transcript, with a speaker per segment. |
Source code in src/skai/backends/_hf.py
658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 | |
edit_image(request)
Edit an image with an instruction-following diffusion model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
ImageEditRequest
|
The image edit request. |
required |
Returns:
| Type | Description |
|---|---|
Image
|
The edited image, of the size of the input. |
Source code in src/skai/backends/_hf.py
569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 | |
embed_audio(request)
Embed audio with a CLAP model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
EmbeddingRequest
|
The embedding request. |
required |
Returns:
| Type | Description |
|---|---|
NDArray[floating]
|
The embedding vector. |
Source code in src/skai/backends/_hf.py
532 533 534 535 536 537 538 539 540 541 542 543 | |
embed_image(request)
Embed an image with a CLIP model of sentence-transformers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
EmbeddingRequest
|
The embedding request. |
required |
Returns:
| Type | Description |
|---|---|
NDArray[floating]
|
The embedding vector. |
Source code in src/skai/backends/_hf.py
514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 | |
embed_text(request)
Embed a text with a sentence-transformers model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
EmbeddingRequest
|
The embedding request. |
required |
Returns:
| Type | Description |
|---|---|
NDArray[floating]
|
The embedding vector. |
Source code in src/skai/backends/_hf.py
422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 | |
enhance_audio(request)
Remove stationary noise with spectral gating, learning the noise from the quietest frames.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
AudioOperationRequest
|
The audio operation request. |
required |
Returns:
| Type | Description |
|---|---|
Audio
|
The denoised mono audio, of the length and rate of the input. |
Source code in src/skai/backends/_hf.py
696 697 698 699 700 701 702 703 704 705 706 707 | |
generate_image(request)
Generate an image with a diffusion model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
ImageGenerationRequest
|
The image generation request. |
required |
Returns:
| Type | Description |
|---|---|
Image
|
The image. |
Source code in src/skai/backends/_hf.py
458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 | |
generate_music(request)
Generate music with MusicGen, about 50 tokens per second, trimmed or padded to the duration.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
AudioGenerationRequest
|
The audio generation request. |
required |
Returns:
| Type | Description |
|---|---|
Audio
|
The mono music. |
Source code in src/skai/backends/_hf.py
755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 | |
generate_sound(request)
Generate a sound with AudioLDM2, trimmed or padded to the duration.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
AudioGenerationRequest
|
The audio generation request. |
required |
Returns:
| Type | Description |
|---|---|
Audio
|
The mono sound at 16 kHz. |
Source code in src/skai/backends/_hf.py
778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 | |
generate_video(request)
Generate a video with a text-to-video diffusion model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
VideoGenerationRequest
|
The video generation request. |
required |
Returns:
| Type | Description |
|---|---|
Video
|
The video, at |
Source code in src/skai/backends/_hf.py
545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 | |
remove_background(request)
Remove the background with the mask of an image segmentation model, by default RMBG at a pinned commit.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
ImageOperationRequest
|
The image operation request. |
required |
Returns:
| Type | Description |
|---|---|
Image
|
An RGBA image of the input size whose alpha is the predicted mask. |
Source code in src/skai/backends/_hf.py
727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 | |
segment_image(request)
Find the masks of regions with SAM, prompted by the boxes of the default object detection model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
RegionRequest
|
The region request. |
required |
Returns:
| Type | Description |
|---|---|
list[Region]
|
The regions, with masks of the image size. |
Source code in src/skai/backends/_hf.py
625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 | |
separate_audio(request)
Separate the vocals, or the sum of drums, bass and other as the accompaniment, with Hybrid Demucs.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
AudioOperationRequest
|
The audio operation request. |
required |
Returns:
| Type | Description |
|---|---|
Audio
|
The mono stem, of the length and rate of the input. |
Source code in src/skai/backends/_hf.py
681 682 683 684 685 686 687 688 689 690 691 692 693 694 | |
synthesize_speech(request)
Speak a text with a text-to-speech model.
The default model has a single voice, so the voice of the request is ignored.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
SpeechRequest
|
The speech request. |
required |
Returns:
| Type | Description |
|---|---|
Audio
|
The speech. |
Source code in src/skai/backends/_hf.py
440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 | |
transcribe(request)
Transcribe speech with a speech recognition model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
TranscriptionRequest
|
The transcription request. |
required |
Returns:
| Type | Description |
|---|---|
Transcript
|
The transcript. |
Source code in src/skai/backends/_hf.py
483 484 485 486 487 488 489 490 491 492 493 | |
upscale_image(request)
Upscale an image with Swin2SR, using the x2 model and a resize for scales other than 2 and 4.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
ImageOperationRequest
|
The image operation request. |
required |
Returns:
| Type | Description |
|---|---|
Image
|
The upscaled image, exactly |
Source code in src/skai/backends/_hf.py
709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 | |
LiteLLMBackend(model=None, *, api_key_env=None, api_base=None, video_audio=True, options=None, max_concurrency=8)
Bases: PromptedBackend
Run prompted tasks and embeddings on any provider that LiteLLM supports.
Models are named as LiteLLM names them, for example anthropic/claude-haiku-5-5, gemini/gemini-2.5-flash or
ollama/llama3.2. LiteLLM reads the standard credential variable of each provider. The backend needs the litellm
extra.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model
|
str | None
|
The model to use. The default model of the task is used when it is |
None
|
api_key_env
|
str | None
|
The name of an environment variable that holds the API key, used instead of the provider's standard one. |
None
|
api_base
|
str | None
|
The base URL of the provider's API. |
None
|
video_audio
|
bool
|
Whether video requests include the audio track. It suits models that take audio, such as Gemini, and must
be |
True
|
options
|
dict | None
|
Extra keyword arguments passed to every LiteLLM call. |
None
|
max_concurrency
|
int
|
The maximum number of requests that run at the same time. |
8
|
Source code in src/skai/backends/_litellm.py
78 79 80 81 82 83 84 85 86 87 88 89 90 91 | |
complete(prompt, model)
Return the answer of a chat model to a prompt.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
prompt
|
Prompt
|
The prompt. |
required |
model
|
str
|
The model to prompt. |
required |
Returns:
| Type | Description |
|---|---|
str
|
The answer of the model. |
Source code in src/skai/backends/_litellm.py
123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 | |
connect()
Import LiteLLM and check that the credential variable is set.
Returns:
| Type | Description |
|---|---|
LiteLLMBackend
|
The backend. |
Source code in src/skai/backends/_litellm.py
113 114 115 116 117 118 119 120 121 | |
embed_image(request)
Embed an image, sent as a data URL, with a multimodal embedding model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
EmbeddingRequest
|
The embedding request. |
required |
Returns:
| Type | Description |
|---|---|
NDArray[floating]
|
The embedding vector. |
Source code in src/skai/backends/_litellm.py
171 172 173 174 175 176 177 178 179 180 181 182 | |
embed_text(request)
Embed a text with an embedding model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
EmbeddingRequest
|
The embedding request. |
required |
Returns:
| Type | Description |
|---|---|
NDArray[floating]
|
The embedding vector. |
Source code in src/skai/backends/_litellm.py
159 160 161 162 163 164 165 166 167 168 169 | |
sends_video_audio_now()
Return the video_audio parameter.
Returns:
| Type | Description |
|---|---|
bool
|
Whether video requests include the audio track. |
Source code in src/skai/backends/_litellm.py
105 106 107 108 109 110 111 | |
OpenAIBackend(model=None, *, api_key_env='OPENAI_API_KEY', base_url=None, client=None, voice=DEFAULT_VOICE, finetune_model=FINETUNE_MODEL, finetune_timeout=3600.0, video_timeout=900.0, poll_interval=15.0, options=None, max_concurrency=8)
Bases: PromptedBackend
Run component tasks on the OpenAI API.
The backend prompts chat, vision and audio models for classification, text generation, extraction, image
transcription, object detection, moments and thumbnails, and runs embeddings, speech, transcription, image
generation and editing, and Sora videos. It needs the openai extra.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model
|
str | None
|
The model to use. The default model of the task is used when it is |
None
|
api_key_env
|
str
|
The name of the environment variable that holds the API key. |
'OPENAI_API_KEY'
|
base_url
|
str | None
|
The base URL of an OpenAI-compatible API. |
None
|
client
|
Any
|
A preconfigured |
None
|
voice
|
str
|
The voice used for speech synthesis when the request names none. |
DEFAULT_VOICE
|
finetune_model
|
str
|
The base model that fine-tuning starts from. |
FINETUNE_MODEL
|
finetune_timeout
|
float
|
The number of seconds to wait for a fine-tuning job before giving up. |
3600.0
|
video_timeout
|
float
|
The number of seconds to wait for a video job before giving up. |
900.0
|
poll_interval
|
float
|
The number of seconds between checks of a fine-tuning or video job. |
15.0
|
options
|
dict | None
|
Extra keyword arguments passed to every API call. |
None
|
max_concurrency
|
int
|
The maximum number of requests that run at the same time. |
8
|
Source code in src/skai/backends/_openai.py
158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 | |
animate_image(request)
Animate an image with Sora, using it as the first frame.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
AnimationRequest
|
The animation request. |
required |
Returns:
| Type | Description |
|---|---|
Video
|
The video, trimmed to the requested duration and resized to the size of the image. |
Source code in src/skai/backends/_openai.py
424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 | |
complete(prompt, model)
Return the answer of a chat model to a prompt.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
prompt
|
Prompt
|
The prompt. |
required |
model
|
str
|
The model to prompt. |
required |
Returns:
| Type | Description |
|---|---|
str
|
The answer of the model. |
Source code in src/skai/backends/_openai.py
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 | |
connect()
Use the given client, or create one with the API key read from api_key_env.
Returns:
| Type | Description |
|---|---|
OpenAIBackend
|
The backend. |
Source code in src/skai/backends/_openai.py
190 191 192 193 194 195 196 197 198 199 200 201 | |
edit_image(request)
Edit an image with an image model, inside the mask when one is given.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
ImageEditRequest
|
The image edit request. |
required |
Returns:
| Type | Description |
|---|---|
Image
|
The edited image, resized to the size of the input. |
Source code in src/skai/backends/_openai.py
382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 | |
embed_text(request)
Embed a text with an embedding model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
EmbeddingRequest
|
The embedding request. |
required |
Returns:
| Type | Description |
|---|---|
NDArray[floating]
|
The embedding vector. |
Source code in src/skai/backends/_openai.py
225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 | |
fine_tune(request)
Train a chat model on the prompts and answers, and wait until the job finishes.
A job that does not finish within finetune_timeout seconds raises TimeoutError naming the job, whose model
can be used later through the model parameter.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
FineTuneRequest
|
The fine-tuning request. |
required |
Returns:
| Type | Description |
|---|---|
str
|
The id of the fine-tuned model. |
Raises:
| Type | Description |
|---|---|
FineTuneError
|
If OpenAI refuses the job, or the job fails or is cancelled. |
Source code in src/skai/backends/_openai.py
353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 | |
generate_image(request)
Generate an image with an image model, from the reference images of a subject when the request has them.
Reference images go to the image edit endpoint, which keeps their subject in the new image.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
ImageGenerationRequest
|
The image generation request. |
required |
Returns:
| Type | Description |
|---|---|
Image
|
The image. |
Source code in src/skai/backends/_openai.py
263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 | |
generate_video(request)
Generate a video with Sora, then fit it to the requested duration and size.
Sora makes videos of 4, 8 or 12 seconds at a few sizes, so the closest are requested, and the video is trimmed
and resized. Trimming and resizing need the video extra.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
VideoGenerationRequest
|
The video generation request. |
required |
Returns:
| Type | Description |
|---|---|
Video
|
The video. |
Source code in src/skai/backends/_openai.py
404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 | |
synthesize_speech(request)
Speak a text with a text-to-speech model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
SpeechRequest
|
The speech request. |
required |
Returns:
| Type | Description |
|---|---|
Audio
|
The speech. |
Source code in src/skai/backends/_openai.py
244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 | |
transcribe(request)
Transcribe speech with a transcription model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
TranscriptionRequest
|
The transcription request. |
required |
Returns:
| Type | Description |
|---|---|
Transcript
|
The transcript. |
Source code in src/skai/backends/_openai.py
290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 | |
ReplicateBackend(model=None, *, api_token_env='REPLICATE_API_TOKEN', client=None, options=None, max_concurrency=4)
Bases: Backend
Run talking avatars, lip sync, image generation, speech synthesis and voice conversion on Replicate models.
The default models are open-source. A model is named owner/name or owner/name:version, and a version should be
pinned for reproducible results. Inputs are sent under the names the default models use, and options adds or
overrides inputs for other models. The backend needs the replicate extra.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model
|
str | None
|
The model to use. The default model of the task is used when it is |
None
|
api_token_env
|
str
|
The name of the environment variable that holds the API token. |
'REPLICATE_API_TOKEN'
|
client
|
Any
|
A preconfigured |
None
|
options
|
dict | None
|
Extra inputs sent to every model run. |
None
|
max_concurrency
|
int
|
The maximum number of requests that run at the same time. |
4
|
Source code in src/skai/backends/_replicate.py
109 110 111 112 113 114 115 116 117 118 119 120 | |
animate_avatar(request)
Animate a portrait with a talking-head model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
AvatarRequest
|
The avatar request. |
required |
Returns:
| Type | Description |
|---|---|
Video
|
The video. |
Source code in src/skai/backends/_replicate.py
185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 | |
connect()
Use the given client, or create one with the API token read from api_token_env.
Returns:
| Type | Description |
|---|---|
ReplicateBackend
|
The backend. |
Source code in src/skai/backends/_replicate.py
133 134 135 136 137 138 139 140 141 142 143 144 | |
convert_voice(request)
Say the speech of audio in the voice of the reference audio with a voice conversion model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
AudioOperationRequest
|
The audio operation request, whose |
required |
Returns:
| Type | Description |
|---|---|
Audio
|
The converted speech. |
Source code in src/skai/backends/_replicate.py
218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 | |
generate_image(request)
Generate an image and resize it to the requested size.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
ImageGenerationRequest
|
The image generation request. |
required |
Returns:
| Type | Description |
|---|---|
Image
|
The image. |
Source code in src/skai/backends/_replicate.py
165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 | |
lip_sync(request)
Make a video speak new audio with a lip sync model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
LipSyncRequest
|
The lip sync request. |
required |
Returns:
| Type | Description |
|---|---|
Video
|
The video. |
Source code in src/skai/backends/_replicate.py
201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 | |
synthesize_speech(request)
Speak a text, cloning the voice when the request holds reference audio.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
SpeechRequest
|
The speech request. |
required |
Returns:
| Type | Description |
|---|---|
Audio
|
The speech. |
Source code in src/skai/backends/_replicate.py
146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 | |