[docs]classLLMCallEvent:def__init__(self,*,messages:Dict[str,Any],response:Dict[str,Any],prompt_tokens:int,completion_tokens:int,agent_id:AgentId|None=None,**kwargs:Any,)->None:"""To be used by model clients to log the call to the LLM. Args: messages (Dict[str, Any]): The messages of the call. Must be json serializable. response (Dict[str, Any]): The response of the call. Must be json serializable. prompt_tokens (int): Number of tokens used in the prompt. completion_tokens (int): Number of tokens used in the completion. agent_id (AgentId | None, optional): The agent id of the model. Defaults to None. Example: .. code-block:: python from autogen_core import EVENT_LOGGER_NAME from autogen_core.logging import LLMCallEvent logger = logging.getLogger(EVENT_LOGGER_NAME) logger.info(LLMCallEvent(prompt_tokens=10, completion_tokens=20)) """self.kwargs=kwargsself.kwargs["type"]="LLMCall"self.kwargs["messages"]=messagesself.kwargs["response"]=responseself.kwargs["prompt_tokens"]=prompt_tokensself.kwargs["completion_tokens"]=completion_tokensself.kwargs["agent_id"]=Noneifagent_idisNoneelsestr(agent_id)self.kwargs["type"]="LLMCall"@propertydefprompt_tokens(self)->int:returncast(int,self.kwargs["prompt_tokens"])@propertydefcompletion_tokens(self)->int:returncast(int,self.kwargs["completion_tokens"])# This must output the event in a json serializable formatdef__str__(self)->str:returnjson.dumps(self.kwargs)
[docs]classMessageEvent:def__init__(self,*,payload:str,sender:AgentId|None,receiver:AgentId|TopicId|None,kind:MessageKind,delivery_stage:DeliveryStage,**kwargs:Any,)->None:self.kwargs=kwargsself.kwargs["payload"]=payloadself.kwargs["sender"]=NoneifsenderisNoneelsestr(sender)self.kwargs["receiver"]=NoneifreceiverisNoneelsestr(receiver)self.kwargs["kind"]=str(kind)self.kwargs["delivery_stage"]=str(delivery_stage)self.kwargs["type"]="Message"# This must output the event in a json serializable formatdef__str__(self)->str:returnjson.dumps(self.kwargs)
[docs]classMessageDroppedEvent:def__init__(self,*,payload:str,sender:AgentId|None,receiver:AgentId|TopicId|None,kind:MessageKind,**kwargs:Any,)->None:self.kwargs=kwargsself.kwargs["payload"]=payloadself.kwargs["sender"]=NoneifsenderisNoneelsestr(sender)self.kwargs["receiver"]=NoneifreceiverisNoneelsestr(receiver)self.kwargs["kind"]=str(kind)self.kwargs["type"]="MessageDropped"# This must output the event in a json serializable formatdef__str__(self)->str:returnjson.dumps(self.kwargs)
[docs]classMessageHandlerExceptionEvent:def__init__(self,*,payload:str,handling_agent:AgentId,exception:BaseException,**kwargs:Any,)->None:self.kwargs=kwargsself.kwargs["payload"]=payloadself.kwargs["handling_agent"]=str(handling_agent)self.kwargs["exception"]=str(exception)self.kwargs["type"]="MessageHandlerException"# This must output the event in a json serializable formatdef__str__(self)->str:returnjson.dumps(self.kwargs)
[docs]classAgentConstructionExceptionEvent:def__init__(self,*,agent_id:AgentId,exception:BaseException,**kwargs:Any,)->None:self.kwargs=kwargsself.kwargs["agent_id"]=str(agent_id)self.kwargs["exception"]=str(exception)self.kwargs["type"]="AgentConstructionException"# This must output the event in a json serializable formatdef__str__(self)->str:returnjson.dumps(self.kwargs)