Dynamic Variables
Use {{today}}, {{now}}, {{uuid}} and other dynamic variables in prompts and workflows
Dynamic variables resolve at runtime — inject today’s date, timestamps, or custom values into agent prompts without hardcoding.
from praisonaiagents import Agent
agent = Agent(
name="Researcher",
instructions="You research news. Today is {{today}}.",
)
agent.start("Find AI news for {{today}}")The user sends a prompt with {{today}} or custom placeholders; resolvers inject live values before the model runs.
graph LR
P[Prompt with {{today}}] --> R[Resolver]
R --> V[Built-in Providers]
R --> C[Custom Providers]
V --> O[Resolved Text]
C --> O
O --> A[Agent]
classDef input fill:#8B0000,stroke:#7C90A0,color:#fff
classDef process fill:#189AB4,stroke:#7C90A0,color:#fff
classDef config fill:#6366F1,stroke:#7C90A0,color:#fff
classDef output fill:#10B981,stroke:#7C90A0,color:#fff
class P input
class R process
class V,C config
class O,A outputHow It Works
Quick Start
- Use built-in variables in a prompt
python from praisonaiagents import Agent agent = Agent( name="Researcher", instructions="You research news. Today is {{today}}.", ) agent.start("Find AI news for {{today}}") # Resolves to: "Find AI news for June 23, 2026" - Register a custom provider
python from praisonaiagents import Agent from praisonaiagents.utils import register_variable_provider register_variable_provider("author", lambda: "PraisonAI Team") agent = Agent(name="Writer", instructions="Articles by {{author}}") agent.start("Write a summary for {{today}}")
Built-in Variables
| Variable | Example Output | Description |
|---|---|---|
{{today}} | June 23, 2026 | Human-readable date |
{{date}} | 2026-06-23 | ISO date format |
{{now}} | 2026-06-23T11:00:00 | ISO datetime |
{{timestamp}} | 1737280800 | Unix timestamp |
{{uuid}} | a1b2c3d4-… | Random UUID |
{{year}} | 2026 | Current year |
{{month}} | June | Current month name |
Variables resolve in Agent.start(), Agent.run(), and workflow execution.
Common Patterns
Workflow YAML
framework: praisonai
topic: "Research AI developments for {{today}}"
roles:
researcher:
role: AI Researcher
goal: "Find news for {{month}} {{year}}"
tasks:
research:
description: "Research {{topic}}"
expected_output: "Summary with sources"Direct substitution
from praisonaiagents.utils import substitute_variables
text = substitute_variables("Hello {{today}}", {"topic": "AI"})Best Practices
Prefer {{today}} over hardcoded dates
Prompts with {{today}} stay accurate across sessions without manual updates.
Register custom providers once at startup
Call register_variable_provider() before creating agents that reference custom variables.
Combine with static template variables
Pass static values via substitute_variables(text, {"topic": "AI"}) alongside built-in dynamic ones.
Use in workflow YAML
Workflow task descriptions and goals support the same {{today}}, {{year}}, and custom providers.