From 65671a3bca0fffd5a3f8f2577cbe99a9254d3d67 Mon Sep 17 00:00:00 2001 From: better629 Date: Fri, 29 Dec 2023 09:22:31 +0800 Subject: [PATCH] no need to define new llm field in subclass again --- metagpt/actions/debug_error.py | 2 -- metagpt/actions/design_api.py | 5 ----- metagpt/actions/design_api_review.py | 5 ----- metagpt/actions/execute_task.py | 4 ---- metagpt/actions/invoice_ocr.py | 1 - metagpt/actions/prepare_documents.py | 5 ----- metagpt/actions/project_management.py | 5 ----- metagpt/actions/research.py | 1 - metagpt/actions/run_code.py | 2 -- metagpt/actions/search_and_summarize.py | 3 --- metagpt/actions/summarize_code.py | 2 -- metagpt/actions/write_code.py | 3 --- metagpt/actions/write_code_review.py | 3 --- metagpt/actions/write_docstring.py | 5 ----- metagpt/actions/write_prd.py | 5 ----- metagpt/actions/write_prd_review.py | 5 ----- metagpt/actions/write_review.py | 5 ----- metagpt/actions/write_teaching_plan.py | 5 ----- metagpt/actions/write_test.py | 5 ----- metagpt/actions/write_tutorial.py | 6 ------ 20 files changed, 77 deletions(-) diff --git a/metagpt/actions/debug_error.py b/metagpt/actions/debug_error.py index 710dff344..34f784072 100644 --- a/metagpt/actions/debug_error.py +++ b/metagpt/actions/debug_error.py @@ -15,7 +15,6 @@ from pydantic import Field from metagpt.actions.action import Action from metagpt.config import CONFIG from metagpt.const import TEST_CODES_FILE_REPO, TEST_OUTPUTS_FILE_REPO -from metagpt.llm import LLM, BaseLLM from metagpt.logs import logger from metagpt.schema import RunCodeContext, RunCodeResult from metagpt.utils.common import CodeParser @@ -52,7 +51,6 @@ Now you should start rewriting the code: class DebugError(Action): name: str = "DebugError" context: RunCodeContext = Field(default_factory=RunCodeContext) - llm: BaseLLM = Field(default_factory=LLM, exclude=True) async def run(self, *args, **kwargs) -> str: output_doc = await FileRepository.get_file( diff --git a/metagpt/actions/design_api.py b/metagpt/actions/design_api.py index e8cf139e8..03f3d7704 100644 --- a/metagpt/actions/design_api.py +++ b/metagpt/actions/design_api.py @@ -13,8 +13,6 @@ import json from pathlib import Path from typing import Optional -from pydantic import Field - from metagpt.actions import Action, ActionOutput from metagpt.actions.design_api_an import DESIGN_API_NODE from metagpt.config import CONFIG @@ -25,9 +23,7 @@ from metagpt.const import ( SYSTEM_DESIGN_FILE_REPO, SYSTEM_DESIGN_PDF_FILE_REPO, ) -from metagpt.llm import LLM from metagpt.logs import logger -from metagpt.provider.base_llm import BaseLLM from metagpt.schema import Document, Documents, Message from metagpt.utils.file_repository import FileRepository from metagpt.utils.mermaid import mermaid_to_file @@ -44,7 +40,6 @@ NEW_REQ_TEMPLATE = """ class WriteDesign(Action): name: str = "" context: Optional[str] = None - llm: BaseLLM = Field(default_factory=LLM, exclude=True) desc: str = ( "Based on the PRD, think about the system design, and design the corresponding APIs, " "data structures, library tables, processes, and paths. Please provide your design, feedback " diff --git a/metagpt/actions/design_api_review.py b/metagpt/actions/design_api_review.py index a9ae15ad8..fb1b92d85 100644 --- a/metagpt/actions/design_api_review.py +++ b/metagpt/actions/design_api_review.py @@ -8,17 +8,12 @@ from typing import Optional -from pydantic import Field - from metagpt.actions.action import Action -from metagpt.llm import LLM -from metagpt.provider.base_llm import BaseLLM class DesignReview(Action): name: str = "DesignReview" context: Optional[str] = None - llm: BaseLLM = Field(default_factory=LLM, exclude=True) async def run(self, prd, api_design): prompt = ( diff --git a/metagpt/actions/execute_task.py b/metagpt/actions/execute_task.py index 2c35b541d..4ae4ee17b 100644 --- a/metagpt/actions/execute_task.py +++ b/metagpt/actions/execute_task.py @@ -6,18 +6,14 @@ @File : execute_task.py """ -from pydantic import Field from metagpt.actions import Action -from metagpt.llm import LLM -from metagpt.provider.base_llm import BaseLLM from metagpt.schema import Message class ExecuteTask(Action): name: str = "ExecuteTask" context: list[Message] = [] - llm: BaseLLM = Field(default_factory=LLM, exclude=True) async def run(self, *args, **kwargs): pass diff --git a/metagpt/actions/invoice_ocr.py b/metagpt/actions/invoice_ocr.py index b9eb2c396..826d37ef7 100644 --- a/metagpt/actions/invoice_ocr.py +++ b/metagpt/actions/invoice_ocr.py @@ -42,7 +42,6 @@ class InvoiceOCR(Action): name: str = "InvoiceOCR" context: Optional[str] = None - llm: BaseLLM = Field(default_factory=LLM, exclude=True) @staticmethod async def _check_file_type(file_path: Path) -> str: diff --git a/metagpt/actions/prepare_documents.py b/metagpt/actions/prepare_documents.py index aa880b5be..a936ea655 100644 --- a/metagpt/actions/prepare_documents.py +++ b/metagpt/actions/prepare_documents.py @@ -11,13 +11,9 @@ import shutil from pathlib import Path from typing import Optional -from pydantic import Field - from metagpt.actions import Action, ActionOutput from metagpt.config import CONFIG from metagpt.const import DOCS_FILE_REPO, REQUIREMENT_FILENAME -from metagpt.llm import LLM -from metagpt.provider.base_llm import BaseLLM from metagpt.schema import Document from metagpt.utils.file_repository import FileRepository from metagpt.utils.git_repository import GitRepository @@ -28,7 +24,6 @@ class PrepareDocuments(Action): name: str = "PrepareDocuments" context: Optional[str] = None - llm: BaseLLM = Field(default_factory=LLM, exclude=True) def _init_repo(self): """Initialize the Git environment.""" diff --git a/metagpt/actions/project_management.py b/metagpt/actions/project_management.py index 93c1a852d..b33f3426d 100644 --- a/metagpt/actions/project_management.py +++ b/metagpt/actions/project_management.py @@ -13,8 +13,6 @@ import json from typing import Optional -from pydantic import Field - from metagpt.actions import ActionOutput from metagpt.actions.action import Action from metagpt.actions.project_management_an import PM_NODE @@ -25,9 +23,7 @@ from metagpt.const import ( TASK_FILE_REPO, TASK_PDF_FILE_REPO, ) -from metagpt.llm import LLM from metagpt.logs import logger -from metagpt.provider.base_llm import BaseLLM from metagpt.schema import Document, Documents from metagpt.utils.file_repository import FileRepository @@ -43,7 +39,6 @@ NEW_REQ_TEMPLATE = """ class WriteTasks(Action): name: str = "CreateTasks" context: Optional[str] = None - llm: BaseLLM = Field(default_factory=LLM, exclude=True) async def run(self, with_messages, schema=CONFIG.prompt_schema): system_design_file_repo = CONFIG.git_repo.new_file_repository(SYSTEM_DESIGN_FILE_REPO) diff --git a/metagpt/actions/research.py b/metagpt/actions/research.py index 875aa7192..90b08cb6a 100644 --- a/metagpt/actions/research.py +++ b/metagpt/actions/research.py @@ -82,7 +82,6 @@ class CollectLinks(Action): name: str = "CollectLinks" context: Optional[str] = None - llm: BaseLLM = Field(default_factory=LLM, exclude=True) desc: str = "Collect links from a search engine." search_engine: SearchEngine = Field(default_factory=SearchEngine) diff --git a/metagpt/actions/run_code.py b/metagpt/actions/run_code.py index 010cab4a8..30b06f1a6 100644 --- a/metagpt/actions/run_code.py +++ b/metagpt/actions/run_code.py @@ -22,7 +22,6 @@ from pydantic import Field from metagpt.actions.action import Action from metagpt.config import CONFIG -from metagpt.llm import LLM, BaseLLM from metagpt.logs import logger from metagpt.schema import RunCodeContext, RunCodeResult from metagpt.utils.exceptions import handle_exception @@ -79,7 +78,6 @@ standard errors: class RunCode(Action): name: str = "RunCode" context: RunCodeContext = Field(default_factory=RunCodeContext) - llm: BaseLLM = Field(default_factory=LLM, exclude=True) @classmethod async def run_text(cls, code) -> Tuple[str, str]: diff --git a/metagpt/actions/search_and_summarize.py b/metagpt/actions/search_and_summarize.py index e8276a79e..d2e361f73 100644 --- a/metagpt/actions/search_and_summarize.py +++ b/metagpt/actions/search_and_summarize.py @@ -12,9 +12,7 @@ from pydantic import Field, model_validator from metagpt.actions import Action from metagpt.config import CONFIG, Config -from metagpt.llm import LLM from metagpt.logs import logger -from metagpt.provider.base_llm import BaseLLM from metagpt.schema import Message from metagpt.tools import SearchEngineType from metagpt.tools.search_engine import SearchEngine @@ -109,7 +107,6 @@ You are a member of a professional butler team and will provide helpful suggesti class SearchAndSummarize(Action): name: str = "" content: Optional[str] = None - llm: BaseLLM = Field(default_factory=LLM, exclude=True) config: None = Field(default_factory=Config) engine: Optional[SearchEngineType] = CONFIG.search_engine search_func: Optional[Any] = None diff --git a/metagpt/actions/summarize_code.py b/metagpt/actions/summarize_code.py index 5db7a7b0a..bdad546d7 100644 --- a/metagpt/actions/summarize_code.py +++ b/metagpt/actions/summarize_code.py @@ -13,7 +13,6 @@ from tenacity import retry, stop_after_attempt, wait_random_exponential from metagpt.actions.action import Action from metagpt.config import CONFIG from metagpt.const import SYSTEM_DESIGN_FILE_REPO, TASK_FILE_REPO -from metagpt.llm import LLM, BaseLLM from metagpt.logs import logger from metagpt.schema import CodeSummarizeContext from metagpt.utils.file_repository import FileRepository @@ -95,7 +94,6 @@ flowchart TB class SummarizeCode(Action): name: str = "SummarizeCode" context: CodeSummarizeContext = Field(default_factory=CodeSummarizeContext) - llm: BaseLLM = Field(default_factory=LLM, exclude=True) @retry(stop=stop_after_attempt(2), wait=wait_random_exponential(min=1, max=60)) async def summarize_code(self, prompt): diff --git a/metagpt/actions/write_code.py b/metagpt/actions/write_code.py index 3e29a9494..25c4912c3 100644 --- a/metagpt/actions/write_code.py +++ b/metagpt/actions/write_code.py @@ -29,9 +29,7 @@ from metagpt.const import ( TASK_FILE_REPO, TEST_OUTPUTS_FILE_REPO, ) -from metagpt.llm import LLM from metagpt.logs import logger -from metagpt.provider.base_llm import BaseLLM from metagpt.schema import CodingContext, Document, RunCodeResult from metagpt.utils.common import CodeParser from metagpt.utils.file_repository import FileRepository @@ -90,7 +88,6 @@ ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenc class WriteCode(Action): name: str = "WriteCode" context: Document = Field(default_factory=Document) - llm: BaseLLM = Field(default_factory=LLM, exclude=True) @retry(wait=wait_random_exponential(min=1, max=60), stop=stop_after_attempt(6)) async def write_code(self, prompt) -> str: diff --git a/metagpt/actions/write_code_review.py b/metagpt/actions/write_code_review.py index 138bde289..a8c913573 100644 --- a/metagpt/actions/write_code_review.py +++ b/metagpt/actions/write_code_review.py @@ -14,9 +14,7 @@ from tenacity import retry, stop_after_attempt, wait_random_exponential from metagpt.actions import WriteCode from metagpt.actions.action import Action from metagpt.config import CONFIG -from metagpt.llm import LLM from metagpt.logs import logger -from metagpt.provider.base_llm import BaseLLM from metagpt.schema import CodingContext from metagpt.utils.common import CodeParser @@ -123,7 +121,6 @@ REWRITE_CODE_TEMPLATE = """ class WriteCodeReview(Action): name: str = "WriteCodeReview" context: CodingContext = Field(default_factory=CodingContext) - llm: BaseLLM = Field(default_factory=LLM, exclude=True) @retry(wait=wait_random_exponential(min=1, max=60), stop=stop_after_attempt(6)) async def write_code_review_and_rewrite(self, context_prompt, cr_prompt, filename): diff --git a/metagpt/actions/write_docstring.py b/metagpt/actions/write_docstring.py index f77226832..8b8335517 100644 --- a/metagpt/actions/write_docstring.py +++ b/metagpt/actions/write_docstring.py @@ -27,11 +27,7 @@ import ast from pathlib import Path from typing import Literal, Optional -from pydantic import Field - from metagpt.actions.action import Action -from metagpt.llm import LLM -from metagpt.provider.base_llm import BaseLLM from metagpt.utils.common import OutputParser, aread, awrite from metagpt.utils.pycst import merge_docstring @@ -166,7 +162,6 @@ class WriteDocstring(Action): desc: str = "Write docstring for code." context: Optional[str] = None - llm: BaseLLM = Field(default_factory=LLM, exclude=True) async def run( self, diff --git a/metagpt/actions/write_prd.py b/metagpt/actions/write_prd.py index df9b7549b..d51c0a7be 100644 --- a/metagpt/actions/write_prd.py +++ b/metagpt/actions/write_prd.py @@ -17,8 +17,6 @@ import json from pathlib import Path from typing import Optional -from pydantic import Field - from metagpt.actions import Action, ActionOutput from metagpt.actions.action_node import ActionNode from metagpt.actions.fix_bug import FixBug @@ -37,9 +35,7 @@ from metagpt.const import ( PRDS_FILE_REPO, REQUIREMENT_FILENAME, ) -from metagpt.llm import LLM from metagpt.logs import logger -from metagpt.provider.base_llm import BaseLLM from metagpt.schema import BugFixContext, Document, Documents, Message from metagpt.utils.common import CodeParser from metagpt.utils.file_repository import FileRepository @@ -68,7 +64,6 @@ NEW_REQ_TEMPLATE = """ class WritePRD(Action): name: str = "WritePRD" content: Optional[str] = None - llm: BaseLLM = Field(default_factory=LLM, exclude=True) async def run(self, with_messages, schema=CONFIG.prompt_schema, *args, **kwargs) -> ActionOutput | Message: # Determine which requirement documents need to be rewritten: Use LLM to assess whether new requirements are diff --git a/metagpt/actions/write_prd_review.py b/metagpt/actions/write_prd_review.py index a332d24c3..2babe38db 100644 --- a/metagpt/actions/write_prd_review.py +++ b/metagpt/actions/write_prd_review.py @@ -8,17 +8,12 @@ from typing import Optional -from pydantic import Field - from metagpt.actions.action import Action -from metagpt.llm import LLM -from metagpt.provider.base_llm import BaseLLM class WritePRDReview(Action): name: str = "" context: Optional[str] = None - llm: BaseLLM = Field(default_factory=LLM, exclude=True) prd: Optional[str] = None desc: str = "Based on the PRD, conduct a PRD Review, providing clear and detailed feedback" diff --git a/metagpt/actions/write_review.py b/metagpt/actions/write_review.py index 64b8450e9..db8512946 100644 --- a/metagpt/actions/write_review.py +++ b/metagpt/actions/write_review.py @@ -6,12 +6,8 @@ """ from typing import List -from pydantic import Field - from metagpt.actions import Action from metagpt.actions.action_node import ActionNode -from metagpt.llm import LLM -from metagpt.provider.base_llm import BaseLLM REVIEW = ActionNode( key="Review", @@ -38,7 +34,6 @@ class WriteReview(Action): """Write a review for the given context.""" name: str = "WriteReview" - llm: BaseLLM = Field(default_factory=LLM, exclude=True) async def run(self, context): return await WRITE_REVIEW_NODE.fill(context=context, llm=self.llm, schema="json") diff --git a/metagpt/actions/write_teaching_plan.py b/metagpt/actions/write_teaching_plan.py index dae553b79..b824e055e 100644 --- a/metagpt/actions/write_teaching_plan.py +++ b/metagpt/actions/write_teaching_plan.py @@ -7,20 +7,15 @@ """ from typing import Optional -from pydantic import Field - from metagpt.actions import Action from metagpt.config import CONFIG -from metagpt.llm import LLM from metagpt.logs import logger -from metagpt.provider.base_llm import BaseLLM class WriteTeachingPlanPart(Action): """Write Teaching Plan Part""" context: Optional[str] = None - llm: BaseLLM = Field(default_factory=LLM, exclude=True) topic: str = "" language: str = "Chinese" rsp: Optional[str] = None diff --git a/metagpt/actions/write_test.py b/metagpt/actions/write_test.py index 5bff34017..0166f5417 100644 --- a/metagpt/actions/write_test.py +++ b/metagpt/actions/write_test.py @@ -10,14 +10,10 @@ from typing import Optional -from pydantic import Field - from metagpt.actions.action import Action from metagpt.config import CONFIG from metagpt.const import TEST_CODES_FILE_REPO -from metagpt.llm import LLM from metagpt.logs import logger -from metagpt.provider.base_llm import BaseLLM from metagpt.schema import Document, TestingContext from metagpt.utils.common import CodeParser @@ -45,7 +41,6 @@ you should correctly import the necessary classes based on these file locations! class WriteTest(Action): name: str = "WriteTest" context: Optional[TestingContext] = None - llm: BaseLLM = Field(default_factory=LLM, exclude=True) async def write_code(self, prompt): code_rsp = await self._aask(prompt) diff --git a/metagpt/actions/write_tutorial.py b/metagpt/actions/write_tutorial.py index 67bc85eef..184cd8573 100644 --- a/metagpt/actions/write_tutorial.py +++ b/metagpt/actions/write_tutorial.py @@ -9,12 +9,8 @@ from typing import Dict -from pydantic import Field - from metagpt.actions import Action -from metagpt.llm import LLM from metagpt.prompts.tutorial_assistant import CONTENT_PROMPT, DIRECTORY_PROMPT -from metagpt.provider.base_llm import BaseLLM from metagpt.utils.common import OutputParser @@ -27,7 +23,6 @@ class WriteDirectory(Action): """ name: str = "WriteDirectory" - llm: BaseLLM = Field(default_factory=LLM, exclude=True) language: str = "Chinese" async def run(self, topic: str, *args, **kwargs) -> Dict: @@ -54,7 +49,6 @@ class WriteContent(Action): """ name: str = "WriteContent" - llm: BaseLLM = Field(default_factory=LLM) directory: dict = dict() language: str = "Chinese"