gittech. site

for different kinds of informations and explorations.

An LLM plugin to support Structured Outputs

Published at
Jan 14, 2025

Structured Outputs for llm

License

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.

Features

  • πŸ”§ 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

Installation

Assuming you have llm installed already, simply run:

llm install -U llm-structure

Usage

Schema Definition

Create 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: int

Then run the plugin:

llm structure "Chase, 53, and 49 year old Mia went to the market." --schema people.yaml -m gpt-4o

Alternatively, 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-4o

This prints output directly to the console in JSON format:

{
    "items": [
        {
            "name": "Chase",
            "age": 53
        },
        {
            "name": "Mia",
            "age": 49
        }
    ]
}

Supported Models

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.

Requirements

  • Python 3.8+
  • llm
  • PyYAML
  • Pydantic