Back to all updates

2 days ago

genblaze v0.4.0

New providers: Hume Octave (text-to-speech) and AssemblyAI (speech-to-text — the first connector that turns audio into a hash-verified transcript with word-level timings).

Reliability & cost

  • Retries now resume an in-flight job instead of re-submitting, so a transient poll/fetch error no longer triggers a second billed generation.
  • Fan-in steps fed by a failed upstream now fail loudly (FAILED/INVALID_INPUT) instead of silently succeeding on empty inputs.

Security & provenance

  • Hardened SSRF protection — DNS pinning plus per-hop redirect re-validation on all outbound fetches — so user-supplied media URLs are safe to handle.
  • Manifest.verify() now rejects output assets without a sha256, and DALL-E outputs are downloaded and hashed locally instead of stored as credential-bearing signed URLs.

Scale

  • Pipeline.arun() no longer blocks the event loop during preflight, and pipelines release sink resources (boto3 clients, upload threads) on teardown — no leaks in long-running services. The step cache is also isolated per tenant_id.

Installs

  • pip install genblaze[all] now resolves correctly and pulls the new providers; clean-install crashes are fixed and CI-guarded.

Upgrade notes

 

  • If you pass an S3 ObjectStorageSink to run()/arun(), it's now closed afterward — construct a fresh one per run (WebhookSink is unaffected).
  • The genblaze-openai and genblaze-google chat() helpers now return cost_usd=None — compute cost from tokens_in/tokens_out with your own rates.

Support and Feedback
Found a bug or have feedback? Please raise it at https://github.com/backblaze-labs/genblaze/issues.