ReleaseMicrosoftMicrosoftpublished Sep 10, 2026seen 11h

microsoft/openaivec v2.6.0

microsoft/openaivec

Open original ↗

Captured source

source ↗
published Sep 10, 2026seen 11hcaptured 11hhttp 200method plain

v2.6.0

Repository: microsoft/openaivec

Tag: v2.6.0

Published: 2026-09-10T07:23:28Z

Prerelease: no

Release notes:

openaivec 2.6.0

This release resolves ten stability and interface-consistency issues across batched Responses, Embeddings, pandas, Spark, and DuckDB.

Changes

  • Validate structured-response IDs before restoring order or caching, and expose max_validation_retries=3 consistently across adapters. Malformed batches receive bounded corrections. (#182, #187)
  • Preserve schema-inference options and retry limits, and add AsyncSchemaInferer for asynchronous inference with the configured async client and cancellation propagation. (#183, #190)
  • Cancel and drain asynchronous cache tasks before releasing key ownership, preventing deadlocks and late writes during cancellation and failure recovery. (#184)
  • Add EmbeddingLimits for item/token-aware request splitting and exact response-index validation without changing deduplication or result ordering. (#185)
  • Add RetryPolicy with one transport retry owner, bounded attempts, capped jitter, and an optional shared batch deadline. Caller-owned clients remain open and unchanged. (#186)
  • Preserve DuckDB SQL NULL inputs and legitimate nullable response/task results, including all-null batches with declared Arrow types. (#188)
  • Clarify and test Spark's independent per-partition-invocation concurrency limits and cache scope. Require a positive notebook-kernel signal for notebook progress bars. (#189, #191)

Upgrade Notes

uv pip install --upgrade "openaivec==2.6.0"
  • retry_policy=None preserves SDK retries; the previous outer retry loop is removed. An explicit RetryPolicy disables SDK retries on a configuration copy. max_attempts includes the initial HTTP attempt.
  • Transport attempts, validation corrections, and schema-inference attempts have separate counts. max_validation_retries=3 means three additional corrections; schema max_retries=8 means eight total inference attempts. A transport policy of three attempts plus three additional validation corrections can still make up to twelve HTTP attempts.
  • A configured deadline covers work within one cache batch, including corrections or split embedding requests, not queue waiting or the entire create call. Sync calls cannot be forcibly interrupted; late successful responses are rejected. Schema inference and subsequent extraction use separate deadlines.
  • EmbeddingLimits defaults to 2,048 inputs, 8,192 tokens per input, and 300,000 tokens per request. Empty or oversized inputs fail before that cache chunk is sent. Unknown deployment aliases use cl100k_base; specify encoding_name when a deployment needs another tokenizer.
  • Existing batching, managed-cache, and default async-concurrency values are unchanged. In Spark, start with max_concurrency=1 and budget across active invocations. This is not a cluster-wide limiter, an RPS limiter, or an exactly-once guarantee.
  • Python >=3.10 and all runtime/extra dependency declarations are unchanged.

Validation

  • PR CI: 950 passed in 280.91 seconds; Ruff passed, Pyright reported zero errors and warnings, and CodeQL reported no new alerts.
  • Local full suite: 949 passed with live API coverage and no skips. The later Spark documentation-consistency follow-up passed its focused 10-test suite separately.
  • Isolated Python 3.10.17 / OpenAI SDK 2.0.0 compatibility suites: 704 passed, 5 deselected.
  • Ruff, formatting, independent Pyright, MkDocs, distribution checks, and desktop/mobile documentation checks passed.
  • Fresh Fabric Runtime 1.3 validation used a single 2.6.0rc1 custom wheel and zero external library entries. Driver and both tested workers matched all 48 package source files; eleven synthetic regression probes covered all ten issues.
  • All five live Spark SQL UDF paths passed with six rows across two partitions, result correspondence, duplicate handling, nonzero 1,536-dimensional embeddings, and a repeated SQL action. The original validation Notebook definition was restored; shared resources and workspace defaults were unchanged.

The release package sources match the Fabric-tested candidate. These results are not a separate Fabric execution of the final PyPI package, a live throttling/load test, or verification of scheduled identity, long-duration token refresh, or platform-wide dependency consistency.

Documentation

Implemented in #192.

Full Changelog: https://github.com/microsoft/openaivec/compare/v2.5.1...v2.6.0