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.

python
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.

Diagram
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 output

How It Works

Diagram
Dynamic VariablesAgentUserDynamic VariablesAgentUserRequestProcess requestResult Agent–>>User: Response

Quick Start

  1. 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"
  2. 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

VariableExample OutputDescription
{{today}}June 23, 2026Human-readable date
{{date}}2026-06-23ISO date format
{{now}}2026-06-23T11:00:00ISO datetime
{{timestamp}}1737280800Unix timestamp
{{uuid}}a1b2c3d4-…Random UUID
{{year}}2026Current year
{{month}}JuneCurrent month name

Variables resolve in Agent.start(), Agent.run(), and workflow execution.

Common Patterns

Workflow YAML

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

python
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.

Related