- Reduced Variability: Ensures consistent outputs by adhering to predefined fields.
- Type Safety: Enforces correct data types, preventing mismatches.
- Easier Parsing & Integration: Enables direct use in applications without extra processing.
Tutorial: Structured Outputs using Cerebras Inference
In this tutorial, we’ll explore how to use structured outputs with the Cerebras Cloud SDK. We’ll build a simple application that generates movie recommendations and uses structured outputs to ensure the response is in a consistent JSON format.Initial Setup
First, ensure that you have completed steps 1 and 2 of our Quickstart Guide to set up your API key and install the Cerebras Cloud SDK.Then, initialize the Cerebras client and import the necessary modules we will use in this tutorial.
Defining the Schema
To ensure structured responses from the model, we’ll use a JSON schema to define our output structure. Start by defining your schema, which specifies the fields, their types, and which ones are required. For our example, we’ll define a schema for a movie recommendation that includes the title, director, and year:
Using Structured Outputs
Next, use the schema in your API call by setting the Sample output:Now you have a structured JSON response from the model, which can be used in your application.
response_format parameter to include both the type and your schema. Setting strict to true will enforce the schema. Setting strict to false will allow the model to return additional fields that are not specified in the schema, similar to JSON mode.Understanding Strict Mode
Strict mode guarantees that the model’s output will exactly match the JSON schema you provide. Whenstrict is set to true, Cerebras employs constrained decoding to ensure schema conformance at the token level, making invalid outputs impossible.
Why Use Strict Mode
Without strict mode, you may encounter:- Malformed JSON that fails to parse
- Missing required fields
- Incorrect data types (e.g.,
"16"instead of16) - Extra fields not defined in your schema
- Guaranteed valid JSON
- Schema compliance: Every field matches your specification
- Type safety: Correct data types for all properties
- No retries needed: Eliminates error handling for schema violations
Enabling Strict Mode
Setstrict to true in your response_format configuration:
Schema Requirements for Strict Mode
When using strict mode, you must setadditionalProperties: false. This is required for every object in your schema.
Limitations in Strict Mode
When strict mode is enabled, your schema must conform to specific requirements. See the Supported Schemas section for detailed information on constraints, limits, and unsupported features.Schema References and Definitions
You can use$ref with $defs to define reusable schema components within your JSON schema. This is useful for avoiding repetition and creating more maintainable schemas.
Supported Schemas
Structured Outputs supports a subset of JSON Schema. This section outlines the supported types, properties, and constraints.Supported Types
The following types are supported for Structured Outputs:| Type | Description |
|---|---|
string | Text values |
number | Numeric values (floating point) |
integer | Whole number values |
boolean | True/false values |
object | Nested objects with properties |
array | Lists of items |
enum | Constrained set of allowed values |
null | Null values |
anyOf | Union types |
Schema Constraints
When using strict mode, the following constraints apply:| Constraint | Limit |
|---|---|
| Maximum schema length | 5,000 characters |
| Maximum nesting depth | 10 levels |
| Maximum object properties | 500 |
| Maximum total enum values | 500 across all enum properties |
| Single enum string length | 7,500 characters (when > 250 total enum values) |
Required Schema Structure
All schemas must follow these rules:- Root must be an object: The top-level schema must have
"type": "object". - No additional properties: You must set
"additionalProperties": falsefor every object in your schema.
Schemas that do not follow these rules may be allowed in some cases today. Starting July 21, 2026, these requirements will be strictly enforced for all models and non-conforming schemas will return a validation error. To ensure forward compatibility, always follow these rules in your schema definitions. For more information about API versioning and deprecation timelines, see API Versions.
Supported Features
Your schema can include the following JSON Schema features:- Nested structures: Define complex objects with nested properties.
- Required fields: Specify which fields must be present.
- Enums (value constraints): Use the
enumkeyword to whitelist the exact literals a field may take. Seeratingin the example below. - Schema references: Use
$refwith$defsto define reusable schema components within your schema. - Tuple validation:
items: falseis supported when used withprefixItemsfor tuple-like arrays. - Number constraints: Use
minimum,maximum,exclusiveMinimum,exclusiveMaximum, andmultipleOfto constrainnumberandintegervalues.
Unsupported Features
The following JSON Schema features are not supported in strict mode:| Feature | Notes |
|---|---|
| Recursive schemas | Self-referencing schemas are not supported |
External $ref | References to external URLs are blocked for security |
$anchor keyword | Use relative paths within definitions instead |
items: true | Not supported for array types |
| Informational fields | Additional fields meant as guidelines (not used in validation) are not supported |
String pattern | Regular expression constraints on strings are not supported |
String format | Format validation (e.g., email, date-time, uuid) is not supported |
| Array constraints | minItems, maxItems are not supported |
Example: Complex Schema
For example, a more complex schema might look like:Key Ordering
The keys in the generated JSON output will appear in the same order as they are defined in your schema.Working with Pydantic and Zod
Besides defining a JSON schema manually, you can use Pydantic (Python) or Zod (JavaScript) to create your schema and convert it to JSON. Pydantic’smodel_json_schema and Zod’s zodToJsonSchema methods generate the JSON schema, which can then be used in the API call, as demonstrated in the workflow above.
JSON Mode
JSON mode is an alternative to structured outputs that generates JSON responses without enforcing a specific schema. The model decides what fields to include based on the context of your prompt.We recommend using structured outputs with
strict set to true instead of JSON mode whenever possible. Structured outputs guarantee schema adherence, while JSON mode only ensures valid JSON without enforcing a specific structure.response_format parameter to json_object and include instructions in your message asking the model to respond in JSON format:
Structured Outputs vs JSON Mode
The table below summarizes the key differences between Structured Outputs and JSON Mode:| Feature | Structured Outputs | JSON Mode |
|---|---|---|
| Outputs valid JSON | Yes | Yes |
| Enforces schema | Yes (when strict: true) | No |
| Constrained decoding | Yes (when strict: true) | No |
| Configuration | response_format: { type: "json_schema", json_schema: { "strict": true, "schema": ... } } | response_format: { type: "json_object" } |

