Skip to main content

Attributes Overview

Attributes in BAML provide additional metadata or behavior to fields and types.

Field-Level Attributes​

Applied to individual fields within a class or enum.

AttributeDescription
@aliasRenames field for LLM understanding
@descriptionAdds context to a field
@skipExcludes from prompts/parsing
@assertStrict validation (raises exception)
@checkNon-exception validation
class MyClass {
property1 string @alias("name") @description("The name of the object")
age int? @check(positive, {{ this > 0 }})
}

Block-Level Attributes​

Applied to entire classes or enums, affecting all fields/values.

AttributeDescription
@@dynamicAllows runtime field modification
@@assertBlock-level strict validation
@@checkBlock-level non-exception validation
class MyClass {
property1 string
property2 int?

@@dynamic // allows adding fields at runtime
}

Key Differences​

AspectField-LevelBlock-Level
ScopeSingle fieldEntire class/enum
Syntax@attribute@@attribute
Use CaseField modificationsBroad modifications

See Also​