File size: 1,308 Bytes
c4d164c
 
5f51343
e5a4f39
c4d164c
e5a4f39
c4d164c
 
 
 
e5a4f39
c4d164c
e5a4f39
 
 
 
 
 
 
 
5f51343
e5a4f39
 
5f51343
e5a4f39
dc12033
e5a4f39
 
 
 
 
 
dc12033
5f51343
 
 
 
acad99d
5f51343
 
 
 
 
 
 
 
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
from typing import Literal
from dataclasses import dataclass
from utils.groq import query_groq

@dataclass
class ACPMessage:
    sender: str
    receiver: str
    performative: Literal["request", "inform"]
    content: str

    def to_dict(self):
        return {
            "sender": self.sender,
            "receiver": self.receiver,
            "performative": self.performative,
            "content": self.content
        }

class BaseAgent:
    def __init__(self, name: str, role: str, model: str = "llama3-8b-8192"):
        self.name = name
        self.role = role
        self.model = model

    def create_message(self, receiver, performative, content):
        return ACPMessage(
            sender=self.name,
            receiver=receiver,
            performative=performative,
            content=content
        )

    def respond(self, content: str) -> str:
        prompt = f"You are {self.name}, a {self.role}.\nUser: {content}\nYou:"
        reply = query_groq(prompt, model=self.model)
        return reply

    def receive_message(self, message: ACPMessage) -> ACPMessage:
        reply = self.respond(message.content)
        return ACPMessage(
            sender=self.name,
            receiver=message.sender,
            performative="inform",
            content=reply
        )