Documentation Index
Fetch the complete documentation index at: https://mintlify.com/BoundaryML/baml/llms.txt
Use this file to discover all available pages before exploring further.
BAML supports five primitive types that form the foundation of the type system.
String
String types represent text data. BAML supports three string formats:
Quoted Strings
Inline strings surrounded by double quotes, similar to strings in most programming languages.
"Hello World"
"\n" // Escaped characters supported
Quoted strings cannot contain template variables or expressions. Use block strings for that.
Unquoted Strings
Simple inline strings without quotes, useful for configuration values.
Restrictions: Unquoted strings may not contain:
- Quotes (“double” or ‘single’)
- At-signs @
- Curlies
- Hashtags #
- Parentheses ()
- Brackets []
- Commas ,
- Newlines
Block Strings
Multi-line strings surrounded by #" and "#, automatically dedented and stripped of first/last newlines.
Block strings support Jinja templating:
template_string Greeting(name: string) #"
Hello {{ name }}!
"#
Escape Characters: Use \n to include literal escape sequences.
Including "# in content: Prefix with more # symbols:
Integer (int)
Whole numbers without decimal points.
Represents whole numbers (positive, negative, or zero)
function DescribeCircle(radius: int) -> string {
client "openai/gpt-4o-mini"
prompt #"
Describe a circle with a radius of {{ radius }} units.
"#
}
Generated Types
# Type: int
radius: int = 5
Float (float)
Floating-point numbers with decimal precision.
Represents decimal numbers with floating-point precision
function CalculateArea(pi: float) -> string {
client "openai/gpt-4o-mini"
prompt #"
Calculate using pi as {{ pi }}.
"#
}
BAML supports implicit casting of int → float, but to explicitly ensure a float value, use 0.0 instead of 0.
Generated Types
# Type: float
pi: float = 3.14159
Boolean (bool)
True or false values.
Represents true/false values
function CreateStory(long: bool) -> string {
client "openai/gpt-4o-mini"
prompt #"
Write a story that is {{ "10 paragraphs" if long else "1 paragraph" }} long.
"#
}
test LongStory {
functions [CreateStory]
args { long true }
}
test ShortStory {
functions [CreateStory]
args { long false }
}
Generated Types
# Type: bool
long: bool = True
Null
Represents the absence of a value.
Represents a null/nil/None value
type NullableString = string | null
Generated Types
# Type: None
value: None = None
Combined Example
Using multiple primitive types together:
function DescribeCircle(radius: int | float, pi: float?, includeArea: bool) -> string {
client "openai/gpt-4o-mini"
prompt #"
Describe a circle with a radius of {{ radius }} units.
{% if includeArea %}
Include the area of the circle using pi as {{ pi or 3.14159 }}.
{% endif %}
What are some properties of the circle?
"#
}
test CircleDescription {
functions [DescribeCircle]
args {
radius 5.0
pi 3.14
includeArea true
}
}
Type Casting
Integers can be implicitly cast to floats
// This works - int is cast to float
function Example(value: float) -> string {
// ...
}
test TestCasting {
functions [Example]
args { value 5 } // 5 (int) is cast to 5.0 (float)
}
Order matters in union types. "1" will be parsed as:
int when type is int | string
string when type is string | int