diff --git a/metagpt/configs/omniparse_config.py b/metagpt/configs/omniparse_config.py index bf1516fc8..ecae78697 100644 --- a/metagpt/configs/omniparse_config.py +++ b/metagpt/configs/omniparse_config.py @@ -3,3 +3,4 @@ from metagpt.utils.yaml_model import YamlModel class OmniParseConfig(YamlModel): url: str = "" + timeout: int = 600 diff --git a/metagpt/tools/libs/editor.py b/metagpt/tools/libs/editor.py index 240c28767..478903d9c 100644 --- a/metagpt/tools/libs/editor.py +++ b/metagpt/tools/libs/editor.py @@ -3,7 +3,7 @@ import os import shutil import subprocess from pathlib import Path -from typing import List, Optional, Union +from typing import List, Optional, Tuple, Union from pydantic import BaseModel, ConfigDict @@ -251,17 +251,19 @@ class Editor(BaseModel): from metagpt.tools.libs import get_env_default from metagpt.utils.omniparse_client import OmniParseClient - base_url = await get_env_default(key="base_url", app_name="OmniParse", default_value="") - if not base_url: - base_url = await Editor._read_omniparse_config() + env_base_url = await get_env_default(key="base_url", app_name="OmniParse", default_value="") + env_timeout = await get_env_default(key="timeout", app_name="OmniParse", default_value="") + conf_base_url, conf_timeout = await Editor._read_omniparse_config() + + base_url = env_base_url or conf_base_url if not base_url: return None api_key = await get_env_default(key="api_key", app_name="OmniParse", default_value="") - v = await get_env_default(key="timeout", app_name="OmniParse", default_value="120") + timeout = env_timeout or conf_timeout or 600 try: - timeout = int(v) or 120 + timeout = int(timeout) except ValueError: - timeout = 120 + timeout = 600 try: if not await check_http_endpoint(url=base_url): @@ -287,8 +289,8 @@ class Editor(BaseModel): return result @staticmethod - async def _read_omniparse_config() -> str: + async def _read_omniparse_config() -> Tuple[str, int]: config = Config.default() if config.omniparse and config.omniparse.url: - return config.omniparse.url - return "" + return config.omniparse.url, config.omniparse.timeout + return "", 0 diff --git a/metagpt/utils/omniparse_client.py b/metagpt/utils/omniparse_client.py index cb2341944..361e84fd1 100644 --- a/metagpt/utils/omniparse_client.py +++ b/metagpt/utils/omniparse_client.py @@ -189,7 +189,7 @@ class OmniParseClient: # Do not verify if only byte data is provided return - file_ext = Path(verify_file_path).suffix + file_ext = Path(verify_file_path).suffix.lower() if file_ext not in allowed_file_extensions: raise ValueError(f"Not allowed {file_ext} File extension must be one of {allowed_file_extensions}")