File size: 1,426 Bytes
c64e302
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
from typing import AsyncGenerator, List, TypeVar

from autogen_agentchat.base import Response, TaskResult
from autogen_agentchat.messages import AgentMessage, MultiModalMessage


class AutoGenFormatter:
    def _message_to_str(self, message: AgentMessage) -> str:
        if isinstance(message, MultiModalMessage):
            result: List[str] = []
            for c in message.content:
                if isinstance(c, str):
                    result.append(c)
                else:
                    result.append("<image>")
            return "\n".join(result)
        else:
            return f"{message.content}"

    async def to_output(self, message: AgentMessage) -> str:
        try:
            if isinstance(message, TaskResult):
                output = (
                    f"{'-' * 10} Summary {'-' * 10}\n"
                    f"Number of messages: {len(message.messages)}\n"
                    f"Finish reason: {message.stop_reason}\n"
                )
                return output
            
            if isinstance(message, Response): 
                output = f"{'-' * 10} {message.chat_message.source} {'-' * 10}\n{self._message_to_str(message.chat_message)}\n"
                return output
            else:
                output = f"{'-' * 10} {message.source} {'-' * 10}\n{self._message_to_str(message)}\n"
                return output
        except Exception as e:
            return ""