outlines
Structured Outputs
Outlines is a Python library that forces AI language models to output guaranteed structured data, valid JSON, integers, or a fixed set of choices, by constraining the model during generation, so you never have to retry a failed parse.
Outlines is a Python library that makes AI language models produce outputs in a guaranteed structure. When you ask a language model a question, it normally returns free-form text, and if you need that text to be formatted as JSON, a list, or a specific data shape, you have to parse it afterward and hope it came back correctly. Outlines removes that uncertainty by controlling the model during generation so it can only produce output that matches the structure you asked for.
The API is built around Python types. You call the model with a prompt and a type specification: pass a Python integer type and the model returns an integer, pass a Pydantic data model and the model returns a JSON object that matches that model exactly. No post-processing, no retrying failed parses. You can also constrain outputs to a fixed set of choices using Python's Literal type, which is useful for classification tasks where the answer must be one of a known set of options.
The library works with a wide range of model providers, including OpenAI, Ollama, vLLM, and Hugging Face's transformers library. The same code runs across providers without changes, so switching from a local model to a hosted one does not require rewriting your integration.
Practical use cases shown in the README include things like triaging customer support emails into structured tickets with priority and category fields, categorizing e-commerce product descriptions, parsing event details from unstructured text, and calling predefined functions from natural language. All of these share the same pattern: a prompt goes in, a structured Python object comes out.
The project is maintained by .txt, a company focused on structured generation, and is used in production by organizations like NVIDIA, Cohere, and Hugging Face. It is installable via pip.
Where it fits
- Parse unstructured text such as emails or product descriptions into a typed Python object with guaranteed valid JSON output.
- Classify text into a fixed set of categories using a language model that is constrained to output only the allowed values.
- Triage customer support tickets into structured fields like priority and category using a local or hosted language model.
- Switch a structured generation pipeline between OpenAI, Ollama, and Hugging Face models without rewriting integration code.