Structured Generations (JSON)
Cohere models such as Command R and Command R+ are great at producing structured outputs in formats such as JSON.
Why generate JSON Objects using an LLM?
JSON is a lightweight format that is easy for humans to read and write and is also easy for machines to parse. By generating JSON objects, you can structure and organize the model’s responses in a way that can be used in downstream applications. This is particularly useful when you want to extract specific information from the responses, perform data analysis, or integrate the responses into your applications seamlessly.
How to use the response_format
parameter
When making an API request, you can specify the response_format
parameter to indicate that you want the response in a JSON object format.
By setting the response_format
type to "json_object"
in the Chat API, the output of the model is guaranteed to be a valid JSON object.
Important
When using { "type": "json_object" }
your message
should always explicitly instruct the model to generate a JSON (eg: “Generate a JSON …”) . Otherwise the model may end up getting stuck generating an infinite stream of characters and eventually run out of context length.
Note
This feature is currently not supported in RAG and tool use scenarios.
Specifying a schema (beta)
The response_format
parameter also allows you to define a schema for the generated JSON object. A JSON Schema is a way to describe the structure of the JSON object you want the LLM to generate. This is optional, but it gives you more control over the response format.
For example, let’s say you want the LLM to generate a JSON object with specific keys for a book, such as “title,” “author,” and “publication_year.” Your API request might look like this:
In this schema, we defined three keys (“title,” “author,” “publication_year”) and their expected data types (“string” and “number”). The LLM will generate a JSON object that adheres to this structure.
Important
Specifying a schema
adds even more latency, proportional to the complexity of the schema. This parameter is in beta, and will continue seeing performance improvements.
Unsupported schema features
We do not support the entirety of the JSON Schema specification. Below is a list of some unsupported features:
- Schema Composition (
anyOf
,allOf
,oneOf
andnot
) - Numeric Ranges (
maximum
andminimum
) - Array Length Ranges (
minItems
andmaxItems
) - String limitations:
- String Length (
maxLength
andminLength
) - The following are not supported in Regular Expressions
^
$
?=
?!
- The following formats are the only supported ones
date-time
uuid
date
time
- String Length (