microsoft/openaivec v2.6.0
microsoft/openaivec
Captured source
source ↗published Sep 10, 2026seen 10hcaptured 10hhttp 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=3consistently across adapters. Malformed batches receive bounded corrections. (#182, #187) - Preserve schema-inference options and retry limits, and add
AsyncSchemaInfererfor 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
EmbeddingLimitsfor item/token-aware request splitting and exact response-index validation without changing deduplication or result ordering. (#185) - Add
RetryPolicywith 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=Nonepreserves SDK retries; the previous outer retry loop is removed. An explicitRetryPolicydisables SDK retries on a configuration copy.max_attemptsincludes the initial HTTP attempt.- Transport attempts, validation corrections, and schema-inference attempts have separate counts.
max_validation_retries=3means three additional corrections; schemamax_retries=8means 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
createcall. Sync calls cannot be forcibly interrupted; late successful responses are rejected. Schema inference and subsequent extraction use separate deadlines. EmbeddingLimitsdefaults 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 usecl100k_base; specifyencoding_namewhen a deployment needs another tokenizer.- Existing batching, managed-cache, and default async-concurrency values are unchanged. In Spark, start with
max_concurrency=1and 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.0rc1custom 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
- Retry policy and deadlines
- Embedding limits
- Sync and async schema inference
- Fabric setup and validation scope
Implemented in #192.
Full Changelog: https://github.com/microsoft/openaivec/compare/v2.5.1...v2.6.0