In this paradigm, there are typically three components: _task planner, plan executor_, and _environment_41. Specifically, task planner, which is played by LLMs, aims to generate the whole plan to solve a target task. The plan can be presented in various forms, _e.g.,_ an action sequence in the form of natural language [439] or an executable program written in programming language [443]. The LLM-based task planner can be enhanced with the memory mechanism for plan storage and retrieval, which is helpful for long-horizon tasks. Then, plan executor is responsible for executing the actions in the plan. It can be implemented by models like LLMs for textual tasks [441] or by tools like code interpreters for coding tasks [450]. Furthermore, environment refers to where the plan executor carries out the actions, which can be set differently according to specific tasks, _e.g.,_ the LLM itself [527] or an external virtual world like Minecraft [528]. It provides _feedback_ about the execution result of the action to the task planner, either in the form of natural language [450] or from other multimodal signals [446].