Skip to content

Commit 84ebf34

Browse files
author
cinjospeh
committed
Conversable support force_retry
1 parent 0d08303 commit 84ebf34

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

dbgpt/agent/core/action/base.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ class ActionOutput(BaseModel):
5353
ask_user: Optional[bool] = False
5454
# 如果当前agent能确定下个发言者,需要在这里指定
5555
next_speakers: Optional[List[str]] = None
56+
# 强制重试,不受重试次数影响限制
57+
force_retry: Optional[bool] = False
5658

5759
@model_validator(mode="before")
5860
@classmethod

dbgpt/agent/core/base_agent.py

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,20 @@ async def generate_reply(
355355
fail_reason = None
356356
current_retry_counter = 0
357357
is_success = True
358-
while current_retry_counter < self.max_retry_count:
358+
force_retry = False
359+
while force_retry or current_retry_counter < self.max_retry_count:
360+
# Action force_retry 强制重试的处理: Action中明确指定需要进行重试,重试的消息按以下规则重新生成
361+
# - 重新生成消息,保留上一轮的Action,并增加Rounds
362+
# - 将上一轮的Action的Content作为当前输入消息
363+
if force_retry:
364+
received_message.content = reply_message.action_report.content
365+
received_message.rounds = reply_message.rounds + 1
366+
reply_message = self._init_reply_message(
367+
received_message=received_message,
368+
rely_messages=rely_messages,
369+
)
370+
371+
# 普通重试的处理
359372
if current_retry_counter > 0:
360373
retry_message = self._init_reply_message(
361374
received_message=received_message,
@@ -468,6 +481,20 @@ async def generate_reply(
468481

469482
question: str = received_message.content or ""
470483
ai_message: str = llm_reply or ""
484+
485+
# force_retry means this reply do not complete, should reentry and do more things
486+
force_retry = False
487+
if act_out is not None and act_out.force_retry:
488+
await self.write_memories(
489+
question=question,
490+
ai_message=ai_message,
491+
action_output=act_out,
492+
check_pass=check_pass,
493+
check_fail_reason=fail_reason,
494+
)
495+
force_retry = True
496+
continue
497+
471498
# 5.Optimize wrong answers myself
472499
if not check_pass:
473500
if not act_out.have_retry:

0 commit comments

Comments
 (0)