reimplemented retries following suggestions in OpenAI's cookbook

This commit is contained in:
Auster Cid 2023-11-29 12:04:05 -03:00
parent 7e8532037e
commit 5ef3076f20
4 changed files with 9 additions and 9 deletions

View file

@ -9,7 +9,7 @@ import re
from abc import ABC
from typing import Optional
from tenacity import retry, stop_after_attempt, wait_exponential
from tenacity import retry, stop_after_attempt, wait_random_exponential
from metagpt.actions.action_output import ActionOutput
from metagpt.llm import LLM
@ -49,7 +49,7 @@ class Action(ABC):
system_msgs.append(self.prefix)
return await self.llm.aask(prompt, system_msgs)
@retry(stop=stop_after_attempt(4), wait=wait_exponential(10,60,3))
@retry(wait=wait_random_exponential(min=1, max=60), stop=stop_after_attempt(6))
async def _aask_v1(
self,
prompt: str,

View file

@ -11,7 +11,7 @@ from metagpt.const import WORKSPACE_ROOT
from metagpt.logs import logger
from metagpt.schema import Message
from metagpt.utils.common import CodeParser
from tenacity import retry, stop_after_attempt, wait_exponential, wait_exponential
from tenacity import retry, stop_after_attempt, wait_random_exponential
PROMPT_TEMPLATE = """
NOTICE
@ -66,7 +66,7 @@ class WriteCode(Action):
code_path.write_text(code)
logger.info(f"Saving Code to {code_path}")
@retry(stop=stop_after_attempt(4), wait=wait_exponential(10,60,3))
@retry(wait=wait_random_exponential(min=1, max=60), stop=stop_after_attempt(6))
async def write_code(self, prompt):
code_rsp = await self._aask(prompt)
code = CodeParser.parse_code(block="", text=code_rsp)

View file

@ -10,7 +10,7 @@ from metagpt.actions.action import Action
from metagpt.logs import logger
from metagpt.schema import Message
from metagpt.utils.common import CodeParser
from tenacity import retry, stop_after_attempt, wait_exponential
from tenacity import retry, stop_after_attempt, wait_random_exponential
PROMPT_TEMPLATE = """
NOTICE
@ -65,7 +65,7 @@ class WriteCodeReview(Action):
def __init__(self, name="WriteCodeReview", context: list[Message] = None, llm=None):
super().__init__(name, context, llm)
@retry(stop=stop_after_attempt(4), wait=wait_exponential(10,60,3))
@retry(wait=wait_random_exponential(min=1, max=60), stop=stop_after_attempt(6))
async def write_code(self, prompt):
code_rsp = await self._aask(prompt)
code = CodeParser.parse_code(block="", text=code_rsp)

View file

@ -15,7 +15,7 @@ from tenacity import (
retry,
retry_if_exception_type,
stop_after_attempt,
wait_exponential,
wait_random_exponential,
)
from metagpt.config import CONFIG
@ -226,8 +226,8 @@ class OpenAIGPTAPI(BaseGPTAPI, RateLimiter):
return await self._achat_completion(messages)
@retry(
stop=stop_after_attempt(4),
wait=wait_exponential(10,60,3),
wait=wait_random_exponential(min=1, max=60),
stop=stop_after_attempt(6),
after=after_log(logger, logger.level("WARNING").name),
retry=retry_if_exception_type(APIConnectionError),
retry_error_callback=log_and_reraise,