A plugin for the llm CLI tool that enables structured output generation from language models according to a specified schema. For usability, users can define their desired schema in YAML.
- 🔧 Generate structured outputs according to a simple YAML definition
- 🔄 Support for nested objects and references
- 🤖 Uses OpenAI's native structured output API mode
- 🛡️ Built-in validation using Pydantic
Assuming you have llm installed already, simply run:
llm install -U llm-structureCreate a YAML file defining your schema. Note the use of $ref which allows for lists of objects in this case. This is the same as defining List[People].
# people.yaml
People:
type: array
items:
$ref: "#/Person"
Person:
name: str
age: intThen run the plugin:
llm structure "Chase, 53, and 49 year old Mia went to the market." --schema people.yaml -m gpt-4oAlternatively, you can use STDIN by specifying - as the prompt:
echo "Chase, 53, and 49 year old Mia went to the market." | llm structure - --schema people.yaml -m gpt-4oThis prints output directly to the console in JSON format:
{
"items": [
{
"name": "Chase",
"age": 53
},
{
"name": "Mia",
"age": 49
}
]
}Currently supports OpenAI models:
- o1-2024-12-17 and later
- gpt-4o-mini-2024-07-18 and later
- gpt-4o-2024-08-06 and later
Integration with Gemini (native) and instructor for the balance of models is coming soon.
- Python 3.8+
- llm
- PyYAML
- Pydantic