Skip to content

kmad/llm-structure

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

A plugin for llm to support structured outputs.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages