Typing library is mainly used for type hints and improving readability, so the syntax Tuple[str, str, str] is a class meta rather than a type.
To check if my_var has the right format with isinstance you need a slightly different syntax:
Predicate = type(('','',''))
LogicalPredicate = type((Predicate, '', Predicate))
This then should work with isinstance()
EDIT
As kindly pointed out, the above returns True for all Tuple instances; to check the elements within the Tuple one more step is required to test Predicate:
tuple(map(type, my_var)) == (str, str, str)
to check logical predicate more conditions need to be added (so worth considering converting this to a method) but overall:
my_var = ('age', 'is', 'null')
if isinstance(my_var, tuple) and tuple(map(type, my_var)) == (str, str, str):
print('Predicate')
elif isinstance(my_var, tuple) and tuple(map(type, my_var[0])) == (str, str, str) and tuple(map(type, my_var[2])) == (str, str, str) and isinstance(my_var[1], str):
print('LogicalPredicate')
else:
raise ValueError
Similar explanations can be found on this question