I think to give a good response, I would need to know more about your game. For now I'm going to assume some things based off your previous post, which included a picture. So it's a side scroller, with high, med, and low parry. It looks like you can't jump.
A game with that selection of controls seems like it's less about really smart enemies and more about enemy patterns. You want to player to be able to recognize the attacks, and figure out how and when they can attack.
Single Pattern:
An enemy with a single pattern of attack is very easy. Up attack, Low attack, and wait. Then repeat after the wait. This allows the player to block up, block down, then attack. I imagine this is a very rewarding play loop.
Multi-Pattern:
This creates a much harder enemy and I would limit them to 3 patterns. It creates a Simon says situation where the player needs to memorize the pattern and differentiate between them to find the opening.
Up Attack, Low Attack, Up Attack, Wait
Up Attack, Low Attack, Low Attack, Low Attack, Wait
Middle Attack, Middle Attack, Up Attack, Low Attack, Wait
Unblockable:
Giving some enemies unblockable attacks could change up the pace. Give all of these attacks a charge up period. It gives the player a chance to go ham on the enemy, but it's at the risk of not getting out of range and dodging the attack.
Health Based:
Adding or removing patterns based on the enemies hp would add more surprise to important encounters.
Ranged Attacks:
Force the player to dodge attacks while approaching the enemy.
Mixing & Matching:
An easy enemy with a single pattern backed up by a Ranged attacker, would make for a much harder challenge, making your attack windows much smaller.
I don't know all of your design goals though. So it's hard to figure out exactly what your enemies should do.