mirror of
https://github.com/csunny/DB-GPT.git
synced 2025-07-29 14:57:35 +00:00
fix(agents): fix ReActAgent (#2588)
This commit is contained in:
parent
3ceba89102
commit
0fd578cf87
@ -81,9 +81,12 @@ async def main():
|
|||||||
await user_proxy.initiate_chat(
|
await user_proxy.initiate_chat(
|
||||||
recipient=tool_engineer,
|
recipient=tool_engineer,
|
||||||
reviewer=user_proxy,
|
reviewer=user_proxy,
|
||||||
message="Calculate the product of 10 and 99, then count the number of files in /tmp",
|
message="Calculate the product of 10 and 99",
|
||||||
# message="Calculate the product of 10 and 99",
|
)
|
||||||
# message="Count the number of files in /tmp",
|
await user_proxy.initiate_chat(
|
||||||
|
recipient=tool_engineer,
|
||||||
|
reviewer=user_proxy,
|
||||||
|
message="Count the number of files in /tmp",
|
||||||
)
|
)
|
||||||
|
|
||||||
# dbgpt-vis message infos
|
# dbgpt-vis message infos
|
||||||
|
@ -364,9 +364,8 @@ class ConversableAgent(Role, Agent):
|
|||||||
fail_reason = None
|
fail_reason = None
|
||||||
current_retry_counter = 0
|
current_retry_counter = 0
|
||||||
is_success = True
|
is_success = True
|
||||||
done = False
|
|
||||||
observation = received_message.content or ""
|
observation = received_message.content or ""
|
||||||
while not done and current_retry_counter < self.max_retry_count:
|
while current_retry_counter < self.max_retry_count:
|
||||||
if current_retry_counter > 0:
|
if current_retry_counter > 0:
|
||||||
a_reply_message: Optional[
|
a_reply_message: Optional[
|
||||||
AgentMessage
|
AgentMessage
|
||||||
@ -500,6 +499,7 @@ class ConversableAgent(Role, Agent):
|
|||||||
action_output=act_out,
|
action_output=act_out,
|
||||||
check_pass=check_pass,
|
check_pass=check_pass,
|
||||||
check_fail_reason=fail_reason,
|
check_fail_reason=fail_reason,
|
||||||
|
current_retry_counter=current_retry_counter,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
# Successful reply
|
# Successful reply
|
||||||
@ -509,6 +509,7 @@ class ConversableAgent(Role, Agent):
|
|||||||
ai_message=ai_message,
|
ai_message=ai_message,
|
||||||
action_output=act_out,
|
action_output=act_out,
|
||||||
check_pass=check_pass,
|
check_pass=check_pass,
|
||||||
|
current_retry_counter=current_retry_counter,
|
||||||
)
|
)
|
||||||
if self.run_mode != AgentRunMode.LOOP or act_out.terminate:
|
if self.run_mode != AgentRunMode.LOOP or act_out.terminate:
|
||||||
logger.debug(f"Agent {self.name} reply success!{reply_message}")
|
logger.debug(f"Agent {self.name} reply success!{reply_message}")
|
||||||
@ -1127,7 +1128,7 @@ class ConversableAgent(Role, Agent):
|
|||||||
**context,
|
**context,
|
||||||
)
|
)
|
||||||
if not user_prompt:
|
if not user_prompt:
|
||||||
user_prompt = "Observation: "
|
user_prompt = f"Observation: {observation}"
|
||||||
|
|
||||||
agent_messages = []
|
agent_messages = []
|
||||||
if system_prompt:
|
if system_prompt:
|
||||||
|
@ -226,6 +226,7 @@ class Role(ABC, BaseModel):
|
|||||||
action_output: Optional[ActionOutput] = None,
|
action_output: Optional[ActionOutput] = None,
|
||||||
check_pass: bool = True,
|
check_pass: bool = True,
|
||||||
check_fail_reason: Optional[str] = None,
|
check_fail_reason: Optional[str] = None,
|
||||||
|
current_retry_counter: Optional[int] = None,
|
||||||
) -> AgentMemoryFragment:
|
) -> AgentMemoryFragment:
|
||||||
"""Write the memories to the memory.
|
"""Write the memories to the memory.
|
||||||
|
|
||||||
|
@ -68,14 +68,11 @@ _REACT_USER_TEMPLATE = """\
|
|||||||
Most recent message:
|
Most recent message:
|
||||||
{{ most_recent_memories }}
|
{{ most_recent_memories }}
|
||||||
{% endif %}\
|
{% endif %}\
|
||||||
|
|
||||||
{% if question %}\
|
|
||||||
Question: {{ question }}
|
|
||||||
{% endif %}
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
_REACT_WRITE_MEMORY_TEMPLATE = """\
|
_REACT_WRITE_MEMORY_TEMPLATE = """\
|
||||||
|
{% if question %}Question: {{ question }} {% endif %}
|
||||||
{% if thought %}Thought: {{ thought }} {% endif %}
|
{% if thought %}Thought: {{ thought }} {% endif %}
|
||||||
{% if action %}Action: {{ action }} {% endif %}
|
{% if action %}Action: {{ action }} {% endif %}
|
||||||
{% if action_input %}Action Input: {{ action_input }} {% endif %}
|
{% if action_input %}Action Input: {{ action_input }} {% endif %}
|
||||||
@ -253,6 +250,7 @@ class ReActAgent(ConversableAgent):
|
|||||||
action_output: Optional[ActionOutput] = None,
|
action_output: Optional[ActionOutput] = None,
|
||||||
check_pass: bool = True,
|
check_pass: bool = True,
|
||||||
check_fail_reason: Optional[str] = None,
|
check_fail_reason: Optional[str] = None,
|
||||||
|
current_retry_counter: Optional[int] = None,
|
||||||
) -> AgentMemoryFragment:
|
) -> AgentMemoryFragment:
|
||||||
"""Write the memories to the memory.
|
"""Write the memories to the memory.
|
||||||
|
|
||||||
@ -285,6 +283,9 @@ class ReActAgent(ConversableAgent):
|
|||||||
if action_input:
|
if action_input:
|
||||||
memory_map["action_input"] = action_input
|
memory_map["action_input"] = action_input
|
||||||
|
|
||||||
|
if current_retry_counter is not None and current_retry_counter == 0:
|
||||||
|
memory_map["question"] = question
|
||||||
|
|
||||||
write_memory_template = self.write_memory_template
|
write_memory_template = self.write_memory_template
|
||||||
memory_content = self._render_template(write_memory_template, **memory_map)
|
memory_content = self._render_template(write_memory_template, **memory_map)
|
||||||
fragment = AgentMemoryFragment(memory_content)
|
fragment = AgentMemoryFragment(memory_content)
|
||||||
|
Loading…
Reference in New Issue
Block a user