Changelog
Install the latest release with pip install -U typellm.
0.7.3 (25 October 2026)
Calls with images are faster when they share the beginning of their context, such as the same instructions over every page of a document, and when they ask several questions about one image.
API update (20 October 2026)
Arrays of strings, numbers, enums and booleans add up to 200 items per call, up from 50. Arrays of strings keep repeated items.
API update (18 October 2026)
An enum inside an array's items takes up to 512 values, up from 26: pick every matching section, state or code from a long list. Arrays of numbers, enums and booleans are also faster to write.
Array items may repeat: an array is a list, not a set. An array of booleans, one per statement, returns every answer, such as [true, false, true, false]; before, a value already in the array ended it.
0.7.2 (15 October 2026)
An array of boxes, {"type": "array", "items": {"type": "box"}}, finds every match in an image, and returns [] when there is none. See Arrays of boxes.
0.7.1 (15 October 2026)
A box field finds something in an image and returns its edges, top, bottom, left and right, each from 0 to 1. See Boxes and the dog head example.
0.7.0 (14 October 2026)
A question with "source": "user" is answered outside the model: by your database, API or tool, or by a person. On the hosted API the call answers everything that does not wait on it, then stops with status "needs_input"; client.resume() goes on with the answer. A when decides whether to stop. See Tools and human input.
On your own server, generate() takes given, answers you already have, and skipped, fields to leave out. See generate arguments.
0.6.9 (10 October 2026)
On the hosted API, an enum or choices takes up to 512 values, with their probabilities and confidence as before. Array items and score levels keep 26.
Past 8 options, permutations: "auto" averages 8 orderings spread evenly, rather than one per option: faster, and as balanced across positions.
0.6.8 (9 October 2026)
An enum, choices or a score's levels takes up to 26 values, up from 24.
An enum or choices with a single value raises SchemaError, as a score with a single level already did. A nullable field's ["only", null] is two options.
0.6.7 (8 October 2026)
when can test how sure an answer is: {"category": {"confidence": {"gte": 0.8}}} runs a field only when category's confidence passes, on a field with return_probabilities. It can sit beside a test of the answer. See Act on it and the Refund only when sure example.
0.6.6 (7 October 2026)
An integer permutations samples the same orderings whatever order the enum is written in, as "auto" does.
Breaking: scores take no permutations
A score's levels keep their order, since the order is the scale; permutations on a score raises SchemaError.
0.6.5 (7 October 2026)
Choices can carry descriptions: list them as choices, each with a value and a description. See Choices with descriptions.
A number field with levels is a score on an ordered scale, returned as the expected level. See Scores.
Fields with return_probabilities also return a confidence from 0 to 1. See Confidence.
0.6.4 (7 October 2026)
Fields with return_probabilities average their probabilities over option orders by default. Booleans take permutations too. See Permutation averaging.
0.6.3 (7 October 2026)
Breaking: no probabilities inside arrays
Properties inside an array's items no longer take return_probabilities; it raises SchemaError, as before 0.6.2. Fields outside arrays return probabilities as before.
0.6.2 (7 October 2026)
The properties of an object array's items now describe the same item, row by row, on tables whose rows look alike. Its enum and boolean properties take return_probabilities, and results with probabilities can be passed back as continue_from. See Arrays.
Choices whose values look like labels, such as "C", are no longer read as another choice.
Breaking: no thinking or dependencies inside array items
Properties inside an array's items no longer take thinking, thinking_effort, thinking_budget, depends_on, when or permutations; they raise SchemaError. Set them on the array, or on fields outside it.
0.6.1 (6 October 2026)
continue_from carries an array over an input split into parts: each call starts from the items so far and returns the whole array. See Long inputs.
0.6.0 (5 October 2026)
object groups typed properties into one value, and array returns a variable number of typed items, strings, enum values or objects. See Objects and Arrays.
0.5.1 (2 October 2026)
The fields a when names are dependencies, so depends_on no longer has to list them.
0.5.0 (1 October 2026)
when runs a field only when the answers it depends on meet conditions such as {"amount": {"gte": 1000}}; response.skipped lists the fields it skipped. See Conditional fields.
0.4.0 (1 October 2026)
thinking_effort sets a field's thinking by level, and "thinking": "auto" chooses the level on each call; response.thinking_effort reports it. See Effort.
0.3.0 (29 September 2026)
The hosted API: TypeLLMClient(api_key=...), or the TYPELLM_API_KEY environment variable, calls it with no GPU of your own. See Quick start.
Hosted calls retry up to twice on HTTP 429, 5xx other than 504 and connection errors, waiting as the service asks (Retry-After). max_retries=0 turns this off.
A string that reaches text_max_tokens is cut off there instead of failing the call. An input too long for thinking raises SGLangError with .status 400.
0.2.6 (28 September 2026)
Breaking: generate() returns a Generation
generate() returns .result, .thinking and .usage, like the HTTP API. client.last_usage, last_thinking and last_prompts are removed. See After a call.
Breaking: removed options
minimum, maximum and maxLength are no longer supported. TypeLLMClient(thinking_budget=...) is removed; set thinking_budget per field.
0.2.5 (28 September 2026)
temperature alone chooses decoding: 0, the default, gives the most likely answer, and above 0 samples. mode is deprecated.
0.2.4 (28 September 2026)
A call retries once when SGLang drops an idle connection.
0.2.3 (27 September 2026)
last_usage.input_tokens counts what you sent once: the context, the questions and the images. See the client reference.
0.2.2 (27 September 2026)
Breaking: thinking is set per field
TypeLLMClient(thinking=...) and run_schema(thinking=...) are removed and raise TypeError. Add "thinking": True, and optionally "thinking_budget", to the fields that should reason; the others answer at once. client.last_thinking returns each field's reasoning and last_usage.thinking_tokens counts it. See Thinking.
Breaking: shorter default text limit
text_max_tokens now defaults to 128 instead of 512. Pass a larger value to the client for longer answers.
0.2.1 (27 September 2026)
Calls with number and string fields make fewer requests.
0.2.0 (27 September 2026)
One client can be shared by many threads. generate() takes timeout, cancel and seed per call, and client.last_usage reports each call's requests and tokens. See the client reference.
Breaking: numeric token tables are removed
numeric_cache_dir and the typellm.numeric module are removed.
0.1.8 (26 September 2026)
permutations="auto" averages a balanced set of option orderings: K or 2K for K options, instead of K!. See permutation averaging.
0.1.7 (26 September 2026)
Breaking: execution= is removed
Starting with 0.1.7, execution= is no longer supported, and passing it raises TypeError. This applies to TypeLLMClient, generate() and run_schema(); the CLI no longer accepts --execution. Fields run in parallel by default. When a field declares depends_on, the request follows the dependency graph. Sequential execution and client.last_prompt are also removed; use client.last_prompts instead.
0.1.6 (25 September 2026)
Nullable fields, JSON answers with prefilled keys, and one prompt format for every field type.
0.1.5 (24 September 2026)
Image input, with numeric decoding and thinking batched across fields.
0.1.4 (23 September 2026)
Per-enum permutation averaging.
0.1.2 (22 September 2026)
The modules moved into a single typellm package, with no library logic changes.