move after_log as general one

This commit is contained in:
better629 2023-11-23 09:29:40 +08:00
parent 9a2ac792fe
commit 1a67878b7e
2 changed files with 21 additions and 14 deletions

View file

@ -6,7 +6,6 @@
@File : action.py
"""
import typing
from abc import ABC
from typing import Optional
@ -16,21 +15,10 @@ from metagpt.actions.action_output import ActionOutput
from metagpt.llm import LLM
from metagpt.logs import logger
from metagpt.utils.common import OutputParser
from metagpt.utils.utils import general_after_log
from metagpt.provider.postprecess.llm_output_postprecess import llm_output_postprecess
def action_after_log(logger: "loguru.Logger", sec_format: str = "%0.3f") -> typing.Callable[["RetryCallState"], None]:
def log_it(retry_state: "RetryCallState") -> None:
if retry_state.fn is None:
fn_name = "<unknown>"
else:
fn_name = _utils.get_callback_name(retry_state.fn)
logger.error(f"Finished call to '{fn_name}' after {sec_format % retry_state.seconds_since_start}(s), "
f"this was the {_utils.to_ordinal(retry_state.attempt_number)} time calling it. "
f"exp: {retry_state.outcome.exception()}")
return log_it
class Action(ABC):
def __init__(self, name: str = "", context=None, llm: LLM = None):
self.name: str = name
@ -65,7 +53,7 @@ class Action(ABC):
@retry(
stop=stop_after_attempt(3),
wait=wait_fixed(1),
after=action_after_log(logger),
after=general_after_log(logger),
)
async def _aask_v1(
self,

19
metagpt/utils/utils.py Normal file
View file

@ -0,0 +1,19 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Desc :
import typing
from tenacity import after_log, _utils
def general_after_log(logger: "loguru.Logger", sec_format: str = "%0.3f") -> typing.Callable[["RetryCallState"], None]:
def log_it(retry_state: "RetryCallState") -> None:
if retry_state.fn is None:
fn_name = "<unknown>"
else:
fn_name = _utils.get_callback_name(retry_state.fn)
logger.error(f"Finished call to '{fn_name}' after {sec_format % retry_state.seconds_since_start}(s), "
f"this was the {_utils.to_ordinal(retry_state.attempt_number)} time calling it. "
f"exp: {retry_state.outcome.exception()}")
return log_it