From 545ae8b756dd11eba2107177d299729e6f529a98 Mon Sep 17 00:00:00 2001 From: Jakob Heyder Date: Thu, 11 May 2023 01:25:23 +0200 Subject: [PATCH] Fix: Add run_manager on all AgentFinish returns in AgentExecutor (#4466) --- langchain/agents/agent.py | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/langchain/agents/agent.py b/langchain/agents/agent.py index fbb1ff6c..5aa7486a 100644 --- a/langchain/agents/agent.py +++ b/langchain/agents/agent.py @@ -920,13 +920,15 @@ class AgentExecutor(Chain): # See if tool should return directly tool_return = self._get_tool_return(next_step_action) if tool_return is not None: - return self._return(tool_return, intermediate_steps) + return self._return( + tool_return, intermediate_steps, run_manager=run_manager + ) iterations += 1 time_elapsed = time.time() - start_time output = self.agent.return_stopped_response( self.early_stopping_method, intermediate_steps, **inputs ) - return self._return(output, intermediate_steps) + return self._return(output, intermediate_steps, run_manager=run_manager) async def _acall( self, @@ -957,7 +959,11 @@ class AgentExecutor(Chain): run_manager=run_manager, ) if isinstance(next_step_output, AgentFinish): - return await self._areturn(next_step_output, intermediate_steps) + return await self._areturn( + next_step_output, + intermediate_steps, + run_manager=run_manager, + ) intermediate_steps.extend(next_step_output) if len(next_step_output) == 1: @@ -965,7 +971,9 @@ class AgentExecutor(Chain): # See if tool should return directly tool_return = self._get_tool_return(next_step_action) if tool_return is not None: - return await self._areturn(tool_return, intermediate_steps) + return await self._areturn( + tool_return, intermediate_steps, run_manager=run_manager + ) iterations += 1 time_elapsed = time.time() - start_time @@ -980,7 +988,9 @@ class AgentExecutor(Chain): output = self.agent.return_stopped_response( self.early_stopping_method, intermediate_steps, **inputs ) - return await self._areturn(output, intermediate_steps) + return await self._areturn( + output, intermediate_steps, run_manager=run_manager + ) def _get_tool_return( self, next_step_output: Tuple[AgentAction, str]