Overview
Cognesy\Polyglot\BatchInference\BatchInference is an opt-in early access
facade for provider-native batch jobs. Submission returns an observed job and a
durable reference. The provider processes requests later. Your application
decides when to check status, read outcomes, or request cancellation. None of
these operations waits for remote inference to finish.
<?php
use Cognesy\Messages\Messages;
use Cognesy\Polyglot\BatchInference\BatchInference;
use Cognesy\Polyglot\BatchInference\Collections\BatchItems;
use Cognesy\Polyglot\BatchInference\Data\BatchItem;
use Cognesy\Polyglot\Inference\Data\InferenceRequest;
$batches = BatchInference::using('mistral');
$job = $batches->submit(BatchItems::of(
BatchItem::of('document-101', new InferenceRequest(
messages: Messages::fromString('Summarize this document.'),
)),
));
$savedReference = $job->reference()->toArray(); // persist in application storage
// @doctest id="f49d"
| Operation | Return type | I/O behavior |
|---|---|---|
submit($items, $options) |
BatchJob |
Prepares one fixed input set, uploads if needed, creates one remote job, returns its first snapshot. |
retrieve($reference) |
BatchJob |
Reads one fresh provider status snapshot. |
cancel($reference) |
BatchCancellation |
Sends a request to stop processing where supported; acknowledgement is not a terminal result. |
results($reference) |
BatchResults |
Checks availability, then exposes a lazy, one-pass stream of outcomes. |
listJobs($limit, $cursor) |
BatchJobPage |
Reads one account/workspace page with an opaque continuation cursor. |
BatchJob accessors are pure: calling status(), progress(), or
resultsAvailability() does not poll. A completed job may contain failed
items. An in-progress xAI job may already have partial results. Use
capabilities() to inspect cancellation, listing, typed result reading, partial-result support,
input modes, and enforced input limits before submission. Some providers also
publish a minimum item count.
The native drivers currently cover OpenAI Chat Completions and Responses, Anthropic, Mistral, Gemini, Qwen, xAI/Grok, Groq, and Together. Each driver has separate wire encoding and status mapping. Public documentation alone does not qualify every model or account for batch processing; review provider details before submitting paid work.
Next: submit and resume, status and cancellation, and results.