====== Outlines ======
**Outlines** is an open-source Python library by **.txt** (dottxt) for reliable structured generation with large language models.((https://github.com/dottxt-ai/outlines|GitHub Repository)) With over **14,000 stars** on GitHub, it guarantees that LLM outputs conform to JSON schemas, regex patterns, Pydantic models, or context-free grammars — with zero runtime overhead through pre-compiled token constraints.
Unlike post-generation parsing that fails on malformed output, Outlines constrains decoding at inference time by manipulating next-token logits, ensuring 100%% valid structured output on every generation. It works across OpenAI, Hugging Face Transformers, llama.cpp, vLLM, and more.
===== How Structured Generation Works =====
Outlines constrains LLM decoding at inference time by manipulating **next-token logits** to ensure outputs conform to user-defined structures.((https://dottxt-ai.github.io/outlines/latest/|Official Documentation)) Schemas, regex patterns, or grammars are compiled into efficient token-level guides during an upfront compilation step. These guides are then applied autoregressively during generation — adding only microseconds of overhead per token.
This prevents invalid outputs like malformed JSON, eliminating retries or parsing failures common in unconstrained generation.
===== Key Features =====
* **JSON schema compliance** — Generate valid JSON matching any schema or Pydantic model
* **Regex constraints** — Guide output to match any regular expression pattern
* **Context-free grammars** — Support for advanced hierarchical structures
* **Zero runtime overhead** — Constraints compiled once, applied in microseconds
* **Model-agnostic** — OpenAI, Transformers, llama.cpp, vLLM, exllama2, mlx-lm
* **Minimal abstractions** — Integrates with Python control flow, no framework lock-in
* **Robust prompting** — Template system for few-shot, ReAct, and agent patterns((https://dottxt-ai.github.io/outlines/welcome/|Getting Started Guide))
===== Installation and Usage =====
# Install Outlines
# pip install outlines
# Structured output with Pydantic and OpenAI
from pydantic import BaseModel
from typing import Literal
import outlines
import openai
class Customer(BaseModel):
name: str
urgency: Literal["high", "medium", "low"]
issue: str
client = openai.OpenAI()
model = outlines.from_openai(client, "gpt-4o")
customer = model("Alice needs help with login issues ASAP", Customer)
# Always returns a valid Customer object
# Regex-constrained generation with local model
import outlines
model = outlines.models.transformers("mistralai/Mistral-7B-v0.1")
# Generate a valid phone number every time
phone_gen = outlines.generate.regex(model, r"\(\d{3}\) \d{3}-\d{4}")
result = phone_gen("Please provide a US phone number: ")
# JSON generation from schema
from pydantic import BaseModel
from typing import List
class Task(BaseModel):
title: str
priority: Literal["high", "medium", "low"]
tags: List[str]
json_gen = outlines.generate.json(model, Task)
task = json_gen("Create a task for fixing the login bug")
# Guaranteed valid Task object
===== Architecture =====
%%{init: {'theme': 'dark'}}%%
graph TB
Dev([Developer]) -->|Schema / Regex / Grammar| Compiler[Outlines Compiler]
Compiler -->|Token Constraints| Guide[Token Guide]
Dev -->|Prompt| Model[LLM Backend]
Model -->|Next-Token Logits| Mask[Logit Masking]
Guide -->|Valid Token Set| Mask
Mask -->|Constrained Logits| Model
Model -->|Output| Result[Structured Output]
subgraph Backends
OAI[OpenAI]
HF[Transformers]
LLAMA[llama.cpp]
VLLM[vLLM]
end
Model --- Backends
subgraph Constraint Types
JSON[JSON Schema]
Regex[Regex Pattern]
Pydantic[Pydantic Model]
CFG[Context-Free Grammar]
end
Compiler --- Constraint Types
===== Comparison with Alternatives =====
^ Feature ^ Outlines ^ Guidance ^ Instructor ^ Raw Prompting ^
| Guaranteed structure | Yes | Yes | Retry-based | No |
| Runtime overhead | Near-zero | Low | Medium (retries) | None |
| Model support | Many backends | Local models | OpenAI-focused | Any |
| Constraint types | JSON, Regex, CFG | Select, Regex, CFG | JSON only | None |
| Framework dependency | None | Guidance | OpenAI SDK | None |
===== See Also =====
* [[guidance|Guidance — Microsoft's Structured Generation Language]]
* [[promptfoo|Promptfoo — LLM Evaluation and Red Teaming]]
* [[deepeval|DeepEval — Unit-Test Style LLM Evaluation]]
===== References =====