mirror of
https://github.com/OpenHands/OpenHands.git
synced 2026-03-22 13:47:19 +08:00
Fix: Bump max_iterations when resuming due to throttling (#3410)
* Fix: Reset iteration count when resuming due to throttling * Fix inadvertent additions * WIP * Changing max_iterations instead of iteration count * Now adjusting max_iterations or max_budget_per_task as appropriate * Fix check on iterations * Fix linter issues * AgentController: remember initial max_iterations and use it to extend state's iterations * increase task budget by initial value (not doubling it) --------- Co-authored-by: Tim O'Farrell <tofarr@gmai.com> Co-authored-by: tobitege <10787084+tobitege@users.noreply.github.com> Co-authored-by: mamoodi <mamoodiha@gmail.com>
This commit is contained in:
@@ -108,6 +108,8 @@ class AgentController:
|
||||
self.max_budget_per_task = max_budget_per_task
|
||||
self.agent_to_llm_config = agent_to_llm_config if agent_to_llm_config else {}
|
||||
self.agent_configs = agent_configs if agent_configs else {}
|
||||
self._initial_max_iterations = max_iterations
|
||||
self._initial_max_budget_per_task = max_budget_per_task
|
||||
|
||||
# stuck helper
|
||||
self._stuck_detector = StuckDetector(self.state)
|
||||
@@ -245,6 +247,21 @@ class AgentController:
|
||||
):
|
||||
# user intends to interrupt traffic control and let the task resume temporarily
|
||||
self.state.traffic_control_state = TrafficControlState.PAUSED
|
||||
# User has chosen to deliberately continue - lets double the max iterations
|
||||
if (
|
||||
self.state.iteration is not None
|
||||
and self.state.max_iterations is not None
|
||||
and self._initial_max_iterations is not None
|
||||
):
|
||||
if self.state.iteration >= self.state.max_iterations:
|
||||
self.state.max_iterations += self._initial_max_iterations
|
||||
if (
|
||||
self.state.metrics.accumulated_cost is not None
|
||||
and self.max_budget_per_task is not None
|
||||
and self._initial_max_budget_per_task is not None
|
||||
):
|
||||
if self.state.metrics.accumulated_cost >= self.max_budget_per_task:
|
||||
self.max_budget_per_task += self._initial_max_budget_per_task
|
||||
|
||||
self.state.agent_state = new_state
|
||||
if new_state == AgentState.STOPPED or new_state == AgentState.ERROR:
|
||||
|
||||
Reference in New Issue
Block a user