This function creates a JSON schema for structured outputs, supporting both character-based shorthand and S7 tidyllm_field
objects.
It also integrates with ellmer
types like ellmer::type_string()
if ellmer is in your namespace
Arguments
- name
A character string specifying the schema name (default: "tidyllm_schema").
- ...
Named arguments where each name represents a field, and each value is either a character string, a
tidyllm_field
, or anellmer
type.Supported character shorthand types:
"character" or "string" for character fields
"logical" for boolean fields
"numeric" for number fields
"factor(...)" for enumerations
Use
[]
to indicate vectors, e.g., "character[]"
Examples
if (FALSE) { # \dontrun{
# Example using different field types
address_schema <- tidyllm_schema(
name = "AddressSchema",
Street = field_chr("A common street name"),
house_number = field_dbl(),
City = field_chr("Name of a city"),
State = field_fct("State abbreviation", .levels = c("CA", "TX", "Other")),
Country = "string",
PostalCode = "string"
)
llm_message("Imagine an address") |> chat(openai, .json_schema = address_schema)
# Example with vector field
tidyllm_schema(
plz = field_dbl(.vector = TRUE)
)
} # }