Can you explain the single-agent design principles such as ReAct and tool use?

Technical