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

In reply to chr_sue:

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.

Sending response is only efficient when the response is capture for the same signal interface that driver controls.
What happened when your driver controls an interface (virtual interface) but DUT returns response in different interface?

Reactive agent is also a good solution for this requirement.