Input Validation
PromptKit uses Pydantic for input validation.
Basic Types
input_schema:
name: str
age: int
score: float
active: bool
Optional Fields
Use | None for optional fields:
input_schema:
name: str
email: "str | None"
Collection Types
input_schema:
tags: list
metadata: dict
Validation Example
from promptkit import Prompt
prompt = Prompt(
name="test",
description="Test",
template="Hello {{ name }}, age {{ age }}",
input_schema={"name": "str", "age": "int"}
)
# Valid
result = prompt.render({"name": "Alice", "age": 30})
# Invalid - raises ValidationError
prompt.render({"name": "Alice", "age": "thirty"})
# Invalid - raises ValidationError (missing required field)
prompt.render({"name": "Alice"})
Optional Fields
prompt = Prompt(
name="test",
description="Test",
template="Hello {{ name }}{% if email %}, {{ email }}{% endif %}",
input_schema={"name": "str", "email": "str | None"}
)
# Both valid
prompt.render({"name": "Alice", "email": "alice@example.com"})
prompt.render({"name": "Alice"})
Get Field Info
prompt = Prompt(
name="test",
description="Test",
template="...",
input_schema={"name": "str", "email": "str | None"}
)
required = prompt.get_required_inputs() # ["name"]
optional = prompt.get_optional_inputs() # ["email"]