How does a UVM sequence change the transactions based on DUT Outputs

In reply to shanthi:

Sending back responses is more easy as you are saying. It simply

seq_item_port.item_done(rsp);

sending back data to the sequence using seq_item_port.
The lines

seq_item_port.put_response(rsp);
rsp_port.write(rsp);

are 2 alternatives sending back data.
The last one needs an additional connection to the sequencer.