Fix max budget per task error in headless mode (#3147)

* set agent in ERROR instead of PAUSED when in headless mode

* fallback to config value for budget
This commit is contained in:
Engel Nyst
2024-07-27 19:35:40 +02:00
committed by GitHub
parent b5d3fcaba8
commit 9ed95abf83
2 changed files with 19 additions and 4 deletions

View File

@@ -380,10 +380,18 @@ class AgentController:
self.state.traffic_control_state = TrafficControlState.NORMAL
else:
self.state.traffic_control_state = TrafficControlState.THROTTLING
await self.report_error(
f'Task budget exceeded. Current cost: {current_cost:.2f}, Max budget: {self.max_budget_per_task:.2f}, task paused. {TRAFFIC_CONTROL_REMINDER}'
)
await self.set_agent_state_to(AgentState.PAUSED)
if self.headless_mode:
# set to ERROR state if running in headless mode
# there is no way to resume
await self.report_error(
f'Task budget exceeded. Current cost: {current_cost:.2f}, max budget: {self.max_budget_per_task:.2f}, task stopped.'
)
await self.set_agent_state_to(AgentState.ERROR)
else:
await self.report_error(
f'Task budget exceeded. Current cost: {current_cost:.2f}, Max budget: {self.max_budget_per_task:.2f}, task paused. {TRAFFIC_CONTROL_REMINDER}'
)
await self.set_agent_state_to(AgentState.PAUSED)
return
self.update_state_before_step()

View File

@@ -177,6 +177,13 @@ if __name__ == '__main__':
AgentCls: Type[Agent] = Agent.get_cls(args.agent_cls)
agent = AgentCls(llm=llm)
# if max budget per task is not sent on the command line, use the config value
max_budget_per_task = (
args.max_budget_per_task
if args.max_budget_per_task
else config.max_budget_per_task
)
asyncio.run(
run_agent_controller(
agent=agent,