File size: 1,584 Bytes
297ed13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
from typing import List

from aworld.cmd import AgentModel, ChatCompletionMessage, ChatCompletionRequest
from aworld.session.base_session_service import BaseSessionService
from aworld.session.simple_session_service import SimpleSessionService


class AgentServer:
    def __init__(
        self,
        server_id: str,
        server_name: str,
        session_service: BaseSessionService = None,
    ):
        """
        Initialize AgentServer
        """
        self.server_id = server_id
        self.server_name = server_name
        self.agent_list = []
        self.session_service = session_service or SimpleSessionService()

    def get_session_service(self) -> BaseSessionService:
        return self.session_service

    def get_agent_list(self) -> List[AgentModel]:
        return self.agent_list

    async def on_chat_completion_request(self, request: ChatCompletionRequest):
        await self.get_session_service().append_messages(
            request.user_id,
            request.session_id,
            request.messages,
        )

    async def on_chat_completion_end(
        self, request: ChatCompletionRequest, final_response: str
    ):
        await self.get_session_service().append_messages(
            request.user_id,
            request.session_id,
            [
                ChatCompletionMessage(
                    role="assistant",
                    content=final_response,
                    trace_id=request.trace_id,
                ),
            ],
        )


CURRENT_SERVER = AgentServer(server_id="default", server_name="default")