fix: wrong order of history prompts in ReAct agent mode (#5236)

This commit is contained in:
sino 2024-06-15 10:53:30 +08:00 committed by GitHub
parent 12c815c597
commit 4f0488abb5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -379,7 +379,7 @@ class CotAgentRunner(BaseAgentRunner, ABC):
organize historic prompt messages organize historic prompt messages
""" """
result: list[PromptMessage] = [] result: list[PromptMessage] = []
scratchpad: list[AgentScratchpadUnit] = [] scratchpads: list[AgentScratchpadUnit] = []
current_scratchpad: AgentScratchpadUnit = None current_scratchpad: AgentScratchpadUnit = None
self.history_prompt_messages = AgentHistoryPromptTransform( self.history_prompt_messages = AgentHistoryPromptTransform(
@ -391,13 +391,15 @@ class CotAgentRunner(BaseAgentRunner, ABC):
for message in self.history_prompt_messages: for message in self.history_prompt_messages:
if isinstance(message, AssistantPromptMessage): if isinstance(message, AssistantPromptMessage):
current_scratchpad = AgentScratchpadUnit( if not current_scratchpad:
agent_response=message.content, current_scratchpad = AgentScratchpadUnit(
thought=message.content or 'I am thinking about how to help you', agent_response=message.content,
action_str='', thought=message.content or 'I am thinking about how to help you',
action=None, action_str='',
observation=None, action=None,
) observation=None,
)
scratchpads.append(current_scratchpad)
if message.tool_calls: if message.tool_calls:
try: try:
current_scratchpad.action = AgentScratchpadUnit.Action( current_scratchpad.action = AgentScratchpadUnit.Action(
@ -409,24 +411,23 @@ class CotAgentRunner(BaseAgentRunner, ABC):
) )
except: except:
pass pass
scratchpad.append(current_scratchpad)
elif isinstance(message, ToolPromptMessage): elif isinstance(message, ToolPromptMessage):
if current_scratchpad: if current_scratchpad:
current_scratchpad.observation = message.content current_scratchpad.observation = message.content
elif isinstance(message, UserPromptMessage): elif isinstance(message, UserPromptMessage):
if scratchpads:
result.append(AssistantPromptMessage(
content=self._format_assistant_message(scratchpads)
))
scratchpads = []
current_scratchpad = None
result.append(message) result.append(message)
if scratchpad:
result.append(AssistantPromptMessage(
content=self._format_assistant_message(scratchpad)
))
scratchpad = [] if scratchpads:
if scratchpad:
result.append(AssistantPromptMessage( result.append(AssistantPromptMessage(
content=self._format_assistant_message(scratchpad) content=self._format_assistant_message(scratchpads)
)) ))
return result return result