Skip to main content1.9.0 Summary
- Unified execution model across Instructor and Polyglot
- Streaming and usage accounting made consistent and test‑covered
- Cleaner APIs and collections, clearer events
Instructor
- Execution/Attempts:
StructuredOutputExecution + StructuredOutputAttempt track full lifecycle (final + partials, errors).
- Streaming: sequence updates yield immutable snapshots; final event payload standardized to
value (+ cached).
- Usage: execution = finalized attempts + current partial tokens (until finalization). Attempt list usage counts only finalized.
- API cleanup: removed unused
$messages from withCurrentAttempt/withFailedAttempt/withSuccessfulAttempt (retries come from execution history).
- Collections:
StructuredOutputAttemptList::of variadic fix; fromArray supports wrapped and flat input.
Polyglot
- Execution/Attempts:
InferenceExecution + InferenceAttempt with immutable transitions and full state.
- Usage: attempt usage = finalized response + partial tokens; AttemptList = only finalized; Execution = finalized + current partials.
- Collections: variadic fixes (
InferenceAttemptList, InferenceResponseList); fromArray uses ArrayList::fromArray.
- Correctness:
InferenceAttempt::hasErrors/isFailed safety.
Embeddings
- Facade: declared resolver property; removed unused field; avoid duplicate “requested” event (driver emits once).
- Shortcuts:
first() returns ?Vector. Cosine similarity guarded for zero vectors.
Breaking Changes
- Instructor
StructuredOutputExecution: removed $messages params from attempt helpers.
- Instructor
RequestHandler: responseFor → executionResultFor; streamResponseFor → streamUpdatesFor.
- Usage semantics tightened to avoid double counting (see above).
- Polyglot driver/collection variadic behavior corrected.