feat: (0.6)New UI (#1855)

Co-authored-by: 夏姜 <wenfengjiang.jwf@digital-engine.com>
Co-authored-by: aries_ckt <916701291@qq.com>
Co-authored-by: wb-lh513319 <wb-lh513319@alibaba-inc.com>
Co-authored-by: csunny <cfqsunny@163.com>
This commit is contained in:
明天
2024-08-21 17:37:45 +08:00
committed by GitHub
parent 3fc82693ba
commit b124ecc10b
824 changed files with 93371 additions and 2515 deletions

View File

@@ -24,6 +24,9 @@ class Agent(ABC):
reviewer: Optional[Agent] = None,
request_reply: Optional[bool] = True,
is_recovery: Optional[bool] = False,
silent: Optional[bool] = False,
is_retry_chat: bool = False,
last_speaker_name: Optional[str] = None,
) -> None:
"""Send a message to recipient agent.
@@ -47,6 +50,8 @@ class Agent(ABC):
request_reply: Optional[bool] = None,
silent: Optional[bool] = False,
is_recovery: Optional[bool] = False,
is_retry_chat: bool = False,
last_speaker_name: Optional[str] = None,
) -> None:
"""Receive a message from another agent.
@@ -69,6 +74,8 @@ class Agent(ABC):
sender: Agent,
reviewer: Optional[Agent] = None,
rely_messages: Optional[List[AgentMessage]] = None,
is_retry_chat: bool = False,
last_speaker_name: Optional[str] = None,
**kwargs,
) -> AgentMessage:
"""Generate a reply based on the received messages.
@@ -85,7 +92,10 @@ class Agent(ABC):
@abstractmethod
async def thinking(
self, messages: List[AgentMessage], prompt: Optional[str] = None
self,
messages: List[AgentMessage],
sender: Optional[Agent] = None,
prompt: Optional[str] = None,
) -> Tuple[Optional[str], Optional[str]]:
"""Think and reason about the current task goal.
@@ -118,11 +128,13 @@ class Agent(ABC):
@abstractmethod
async def act(
self,
message: Optional[str],
sender: Optional[Agent] = None,
message: AgentMessage,
sender: Agent,
reviewer: Optional[Agent] = None,
is_retry_chat: bool = False,
last_speaker_name: Optional[str] = None,
**kwargs,
) -> Optional[ActionOutput]:
) -> ActionOutput:
"""Act based on the LLM inference results.
Parse the inference results for the current target and execute the inference
@@ -180,6 +192,7 @@ class AgentContext:
"""A class to represent the context of an Agent."""
conv_id: str
gpts_app_code: Optional[str] = None
gpts_app_name: Optional[str] = None
language: Optional[str] = None
max_chat_round: int = 100
@@ -189,6 +202,10 @@ class AgentContext:
allow_format_str_template: Optional[bool] = False
verbose: bool = False
app_link_start: bool = False
# 是否开启VIS协议消息模式默认开启
enable_vis_message: bool = True
def to_dict(self) -> Dict[str, Any]:
"""Return a dictionary representation of the AgentContext."""
return dataclasses.asdict(self)
@@ -200,10 +217,16 @@ class AgentGenerateContext:
"""A class to represent the input of a Agent."""
message: Optional[AgentMessage]
sender: Optional[Agent] = None
sender: Agent
reviewer: Optional[Agent] = None
silent: Optional[bool] = False
already_failed: bool = False
last_speaker: Optional[Agent] = None
already_started: bool = False
begin_agent: Optional[str] = None
rely_messages: List[AgentMessage] = dataclasses.field(default_factory=list)
final: Optional[bool] = True
@@ -218,8 +241,9 @@ class AgentGenerateContext:
return dataclasses.asdict(self)
ActionReportType = Dict[str, Any]
ActionReportType = ActionOutput
MessageContextType = Union[str, Dict[str, Any]]
ResourceReferType = Dict[str, Any]
@dataclasses.dataclass
@@ -234,6 +258,10 @@ class AgentReviewInfo:
"""Return a copy of the current AgentReviewInfo."""
return AgentReviewInfo(approve=self.approve, comments=self.comments)
def to_dict(self) -> Dict:
"""Return a dictionary representation of the AgentMessage."""
return dataclasses.asdict(self)
@dataclasses.dataclass
@PublicAPI(stability="beta")
@@ -242,17 +270,25 @@ class AgentMessage:
content: Optional[str] = None
name: Optional[str] = None
rounds: int = 0
context: Optional[MessageContextType] = None
action_report: Optional[ActionReportType] = None
review_info: Optional[AgentReviewInfo] = None
current_goal: Optional[str] = None
model_name: Optional[str] = None
role: Optional[str] = None
success: Optional[bool] = None
success: bool = True
resource_info: Optional[ResourceReferType] = None
def to_dict(self) -> Dict:
"""Return a dictionary representation of the AgentMessage."""
return dataclasses.asdict(self)
result = dataclasses.asdict(self)
if self.action_report:
result[
"action_report"
] = self.action_report.to_dict() # 将 action_report 转换为字典
return result
def to_llm_message(self) -> Dict[str, Any]:
"""Return a dictionary representation of the AgentMessage."""
@@ -269,6 +305,7 @@ class AgentMessage:
content=message.get("content"),
context=message.get("context"),
role=message.get("role"),
rounds=message.get("rounds", 0),
)
@classmethod
@@ -291,18 +328,20 @@ class AgentMessage:
copied_context = self.context.copy()
else:
copied_context = self.context
copied_action_report = self.action_report.copy() if self.action_report else None
copied_review_info = self.review_info.copy() if self.review_info else None
return AgentMessage(
content=self.content,
name=self.name,
context=copied_context,
action_report=copied_action_report,
rounds=self.rounds,
action_report=self.action_report,
review_info=copied_review_info,
current_goal=self.current_goal,
model_name=self.model_name,
role=self.role,
success=self.success,
resource_info=self.resource_info,
)
def get_dict_context(self) -> Dict[str, Any]: