Простое решение будет следующим:
def add_group_by_columns(query, group_by_columns):
return query.group_by(*group_by_columns)
Вы можете использовать его следующим образом
q = db.session.query(Order.product_id, Order.seller_id, func.count(Order.id)).filter(Order.user_id==12)
q1 = add_group_by_columns(q, [Order.product_category_id, Order.seller_id])
q1.all()