[docs]classLLMCallEvent:def__init__(self,*,messages:List[Dict[str,Any]],response:Dict[str,Any],prompt_tokens:int,completion_tokens:int,**kwargs:Any,)->None:"""To be used by model clients to log the call to the LLM. Args: messages (List[Dict[str, Any]]): The messages used in 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. Example: .. code-block:: python import logging from autogen_core import EVENT_LOGGER_NAME from autogen_core.logging import LLMCallEvent response = {"content": "Hello, world!"} messages = [{"role": "user", "content": "Hello, world!"}] logger = logging.getLogger(EVENT_LOGGER_NAME) logger.info(LLMCallEvent(prompt_tokens=10, completion_tokens=20, response=response, messages=messages)) """self.kwargs=kwargsself.kwargs["type"]="LLMCall"self.kwargs["messages"]=messagesself.kwargs["response"]=responseself.kwargs["prompt_tokens"]=prompt_tokensself.kwargs["completion_tokens"]=completion_tokenstry:agent_id=MessageHandlerContext.agent_id()exceptRuntimeError:agent_id=Noneself.kwargs["agent_id"]=Noneifagent_idisNoneelsestr(agent_id)@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]classLLMStreamStartEvent:"""To be used by model clients to log the start of a stream. Args: messages (List[Dict[str, Any]]): The messages used in the call. Must be json serializable. Example: .. code-block:: python import logging from autogen_core import EVENT_LOGGER_NAME from autogen_core.logging import LLMStreamStartEvent messages = [{"role": "user", "content": "Hello, world!"}] logger = logging.getLogger(EVENT_LOGGER_NAME) logger.info(LLMStreamStartEvent(messages=messages)) """def__init__(self,*,messages:List[Dict[str,Any]],**kwargs:Any,)->None:self.kwargs=kwargsself.kwargs["type"]="LLMStreamStart"self.kwargs["messages"]=messagestry:agent_id=MessageHandlerContext.agent_id()exceptRuntimeError:agent_id=Noneself.kwargs["agent_id"]=Noneifagent_idisNoneelsestr(agent_id)# This must output the event in a json serializable formatdef__str__(self)->str:returnjson.dumps(self.kwargs)
[docs]classLLMStreamEndEvent:def__init__(self,*,response:Dict[str,Any],prompt_tokens:int,completion_tokens:int,**kwargs:Any,)->None:"""To be used by model to log the call to the LLM. Args: 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. Example: .. code-block:: python import logging from autogen_core import EVENT_LOGGER_NAME from autogen_core.logging import LLMStreamEndEvent response = {"content": "Hello, world!"} logger = logging.getLogger(EVENT_LOGGER_NAME) logger.info(LLMStreamEndEvent(prompt_tokens=10, completion_tokens=20, response=response)) """self.kwargs=kwargsself.kwargs["type"]="LLMStreamEnd"self.kwargs["response"]=responseself.kwargs["prompt_tokens"]=prompt_tokensself.kwargs["completion_tokens"]=completion_tokenstry:agent_id=MessageHandlerContext.agent_id()exceptRuntimeError:agent_id=Noneself.kwargs["agent_id"]=Noneifagent_idisNoneelsestr(agent_id)@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]classToolCallEvent:def__init__(self,*,tool_name:str,arguments:Dict[str,Any],result:str,)->None:"""Used by subclasses of :class:`~autogen_core.tools.BaseTool` to log executions of tools. Args: tool_name (str): The name of the tool. arguments (Dict[str, Any]): The arguments of the tool. Must be json serializable. result (str): The result of the tool. Must be a string. Example: .. code-block:: python from autogen_core import EVENT_LOGGER_NAME from autogen_core.logging import ToolCallEvent logger = logging.getLogger(EVENT_LOGGER_NAME) logger.info(ToolCallEvent(tool_name="Tool1", call_id="123", arguments={"arg1": "value1"})) """self.kwargs:Dict[str,Any]={}self.kwargs["type"]="ToolCall"self.kwargs["tool_name"]=tool_nameself.kwargs["arguments"]=argumentsself.kwargs["result"]=resulttry:agent_id=MessageHandlerContext.agent_id()exceptRuntimeError:agent_id=Noneself.kwargs["agent_id"]=Noneifagent_idisNoneelsestr(agent_id)# 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)