refine writeprd code

This commit is contained in:
geekan 2024-01-15 16:37:42 +08:00
parent 007102e022
commit 8baa6d094f
13 changed files with 150 additions and 114 deletions

View file

@ -23,7 +23,7 @@ from abc import ABC
from asyncio import Queue, QueueEmpty, wait_for
from json import JSONDecodeError
from pathlib import Path
from typing import Any, Dict, List, Optional, Type, TypeVar, Union
from typing import Any, Dict, Iterable, List, Optional, Type, TypeVar, Union
from pydantic import (
BaseModel,
@ -36,6 +36,7 @@ from pydantic import (
model_validator,
)
from metagpt.actions.action_output import ActionOutput
from metagpt.const import (
MESSAGE_ROUTE_CAUSE_BY,
MESSAGE_ROUTE_FROM,
@ -162,6 +163,25 @@ class Documents(BaseModel):
docs: Dict[str, Document] = Field(default_factory=dict)
@classmethod
def from_iterable(cls, documents: Iterable[Document]) -> Documents:
"""Create a Documents instance from a list of Document instances.
:param documents: A list of Document instances.
:return: A Documents instance.
"""
docs = {doc.filename: doc for doc in documents}
return Documents(docs=docs)
def to_action_output(self) -> ActionOutput:
"""Convert to action output string.
:return: A string representing action output.
"""
return ActionOutput(content=self.model_dump_json(), instruct_content=self)
class Message(BaseModel):
"""list[<role>: <content>]"""