I have a Grace with an attitude too!
Firstly I take a view on her mood in general before I respond, for example if she's tired I'm a bit more gentle with her and she's moodier when she's hungry so I give her a snack before expecting her behaviour to change.
If she's being rude I get down on her level and calmly say something like 'I do not like this attitude, you are being rude to me and you need to talk nicely to me'. If she then continues I say 'I warned you about speaking rudely, now you need to sit here until you calm down and can speak nicely'. I then put her somewhere close but not next to me or I leave her and go and get on with something else. It takes anywhere between 30 seconds and and two mins for her to come and see me for a hug, she usually apologises too but I don't make her (if she's sorry she'll say it, if she's not then there's no point making her say it IMO!)
I also give her choices, 'you can get dressed now or later, your choice. But if you get dressed now we'll have time to go the playground' or 'we don't throw rubbish in the floor, you can pick it up now or later but you will have to pick it up eventually' and walk away, let her think about it. If she chooses to put it in the bin then praise her for the good choice. If she doesn't then I leave her but if she then says she wants to paint or go to the playground etc, I tell her I need her to help tidy up the rubbish before we can do that.
I've been more consistent lately and it had definitely helped. She still gives me attitude but it doesn't go on for as long, she stops pretty quickly and apologises.