3
3
from fastapi import APIRouter
4
4
from autogen_core import ComponentModel
5
5
from autogenstudio .teammanager import TeamManager
6
- from autogenstudio .datamodel import Response
6
+ from autogenstudio .datamodel import Response , TeamResult
7
+ from autogen_agentchat .base import TaskResult
7
8
from typing import Union
8
9
from pydantic import BaseModel
10
+ from autogen_agentchat .messages import BaseTextChatMessage
9
11
10
12
router = APIRouter ()
11
13
team_manager = TeamManager ()
@@ -19,8 +21,44 @@ async def invoke(request: InvokeTaskRequest):
19
21
response = Response (message = "Task successfully completed" , status = True , data = None )
20
22
try :
21
23
result_message = await team_manager .run (task = request .task , team_config = request .team_config )
22
- response .data = result_message
24
+ response .data = _format_team_result ( result_message )
23
25
except Exception as e :
24
26
response .message = str (e )
25
27
response .status = False
26
28
return response
29
+
30
+ def _format_team_result (team_result : TeamResult ) -> dict :
31
+ """
32
+ Format the result from TeamResult to a dictionary.
33
+ """
34
+ formatted_result = {
35
+ "task_result" : _format_task_result (team_result .task_result ),
36
+ "usage" : team_result .usage ,
37
+ "duration" : team_result .duration ,
38
+ }
39
+ return formatted_result
40
+
41
+ def _format_task_result (task_result : TaskResult ) -> dict :
42
+ """
43
+ Format the result from TeamResult to a dictionary.
44
+ """
45
+ for message in task_result .messages :
46
+ print (f"Message: { message } , Type: { type (message )} " )
47
+ formatted_result = {
48
+ "messages" : [
49
+ _format_message (message ) for message in task_result .messages
50
+ ],
51
+ "stop_reason" : task_result .stop_reason ,
52
+ }
53
+ return formatted_result
54
+
55
+ def _format_message (message : BaseTextChatMessage ) -> dict :
56
+ """
57
+ Format the message to a dictionary.
58
+ """
59
+ return {
60
+ "source" : message .source ,
61
+ "models_usage" : message .models_usage ,
62
+ "metadata" : message .metadata ,
63
+ "content" : message .content ,
64
+ }
0 commit comments