diff --git a/guardrails/utils/templating_utils.py b/guardrails/utils/templating_utils.py index 2284c6f00..69a417274 100644 --- a/guardrails/utils/templating_utils.py +++ b/guardrails/utils/templating_utils.py @@ -1,4 +1,3 @@ -import collections from string import Template from typing import List @@ -7,6 +6,12 @@ def get_template_variables(template: str) -> List[str]: if hasattr(Template, "get_identifiers"): return Template(template).get_identifiers() # type: ignore else: - d = collections.defaultdict(str) - Template(template).safe_substitute(d) - return list(d.keys()) + pattern = Template.pattern + variables = [] + seen = set() + for m in pattern.finditer(template): + named = m.group("named") or m.group("braced") + if named is not None and named not in seen: + variables.append(named) + seen.add(named) + return variables