Merge branch 'check_role_zero' into da_change

This commit is contained in:
garylin2099 2024-08-14 22:28:45 +08:00
commit c79a70517f
54 changed files with 376 additions and 216 deletions

View file

@ -6,33 +6,18 @@
@File : __init__.py
"""
from enum import Enum
from metagpt.tools import libs # this registers all tools
from metagpt.tools.tool_registry import TOOL_REGISTRY
from metagpt.configs.search_config import SearchEngineType
from metagpt.configs.browser_config import WebBrowserEngineType
_ = libs, TOOL_REGISTRY # Avoid pre-commit error
class SearchEngineType(Enum):
SERPAPI_GOOGLE = "serpapi"
SERPER_GOOGLE = "serper"
DIRECT_GOOGLE = "google"
DUCK_DUCK_GO = "ddg"
CUSTOM_ENGINE = "custom"
BING = "bing"
class WebBrowserEngineType(Enum):
PLAYWRIGHT = "playwright"
SELENIUM = "selenium"
CUSTOM = "custom"
@classmethod
def __missing__(cls, key):
"""Default type conversion"""
return cls.CUSTOM
class SearchInterface:
async def asearch(self, *args, **kwargs):
...
__all__ = ["SearchEngineType", "WebBrowserEngineType", "TOOL_REGISTRY"]

View file

@ -75,7 +75,7 @@ class Browser(BaseModel):
page: Optional[Page] = None
accessibility_tree: list = Field(default_factory=list)
headless: bool = True
proxy: Optional[str] = Field(default_factory=get_proxy_from_env)
proxy: Optional[dict] = Field(default_factory=get_proxy_from_env)
is_empty_page: bool = True
reporter: BrowserReporter = Field(default_factory=BrowserReporter)

View file

@ -10,7 +10,7 @@ from pydantic import BaseModel, ConfigDict
from metagpt.logs import logger
from metagpt.tools.tool_registry import register_tool
from metagpt.utils import read_docx
from metagpt.utils.common import aread_bin, awrite_bin
from metagpt.utils.common import aread, aread_bin, awrite_bin
from metagpt.utils.repo_to_markdown import is_text_file
from metagpt.utils.report import EditorReporter
@ -51,7 +51,7 @@ class Editor(BaseModel):
"""Read the whole content of a file. Using absolute paths as the argument for specifying the file location."""
is_text, mime_type = await is_text_file(path)
if is_text:
lines = self._read_text(path)
lines = await self._read_text(path)
elif mime_type == "application/pdf":
lines = await self._read_pdf(path)
elif mime_type in {
@ -221,9 +221,9 @@ class Editor(BaseModel):
return lint_passed, lint_message
@staticmethod
def _read_text(path: Union[str, Path]) -> List[str]:
with open(str(path), "r") as f:
lines = f.readlines()
async def _read_text(path: Union[str, Path]) -> List[str]:
content = await aread(path)
lines = content.split("\n")
return lines
@staticmethod

View file

@ -7,7 +7,9 @@
"""
import re
from pathlib import Path
from typing import Optional
from metagpt.config2 import Config
from metagpt.const import DEFAULT_WORKSPACE_ROOT
from metagpt.logs import logger
from metagpt.tools.tool_registry import register_tool
@ -36,11 +38,11 @@ class GPTvGenerator:
It utilizes a vision model to analyze the layout from an image and generate webpage codes accordingly.
"""
def __init__(self):
def __init__(self, config: Optional[Config]):
"""Initialize GPTvGenerator class with default values from the configuration."""
from metagpt.config2 import config
from metagpt.llm import LLM
config = config if config else Config.default()
self.llm = LLM(llm_config=config.get_openai_llm())
self.llm.model = "gpt-4-vision-preview"

View file

@ -4,7 +4,7 @@
import json
from pathlib import Path
from metagpt.config2 import config
from metagpt.config2 import Config
from metagpt.provider.openai_api import OpenAILLM as GPTAPI
from metagpt.utils.common import awrite
@ -282,6 +282,7 @@ class UTGenerator:
"""Choose based on different calling methods"""
result = ""
if self.chatgpt_method == "API":
config = Config.default()
result = await GPTAPI(config.get_openai_llm()).aask_code(messages=messages)
return result