templates – optional value in StringTemplate

I can use a string template like this:

st = StringTemplate["a is `a` and b is `b`"];
S t @ <|"a" -> 1, "b" -> 2 |>

what gives

"a is 1 and b is 2"

But I would like the parameter. second Be optional, so if I call.

S t @ <|"a" -> 1 |>

I just put

"a is 1"

Something like this is possible with <* *>: For the case where second It must be numeric, I can use

StringTemplate["a is `a`<* If[NumericQ[#b],  "and b is " <> ToString[#b],  ""]*> "]

but is there a way to know if a template parameter is present or absent, instead of being numeric or not?