BaseLogger

class BaseLogger(ABC)

start

@abstractmethod
def start() -> str

Open a connection to the logging database, and start recording.

Returns:

  • session_id str - a unique id for the logging session

log_chat_completion

@abstractmethod
def log_chat_completion(invocation_id: uuid.UUID, client_id: int,
                        wrapper_id: int, source: str | Agent,
                        request: dict[str, float | str | list[dict[str, str]]],
                        response: str | ChatCompletion, is_cached: int,
                        cost: float, start_time: str) -> None

Log a chat completion to database.

In AutoGen, chat completions are somewhat complicated because they are handled by the autogen.oai.OpenAIWrapper class. One invocation to create can lead to multiple underlying OpenAI calls, depending on the llm_config list used, and any errors or retries.

Arguments:

  • invocation_id uuid - A unique identifier for the invocation to the OpenAIWrapper.create method call
  • client_id int - A unique identifier for the underlying OpenAI client instance
  • wrapper_id int - A unique identifier for the OpenAIWrapper instance
  • source str or Agent - The source/creator of the event as a string name or an Agent instance
  • request dict - A dictionary representing the request or call to the OpenAI client endpoint
  • response str or ChatCompletion - The response from OpenAI
  • is_cached int - 1 if the response was a cache hit, 0 otherwise
  • cost(float) - The cost for OpenAI response
  • start_time str - A string representing the moment the request was initiated

log_new_agent

@abstractmethod
def log_new_agent(agent: ConversableAgent, init_args: dict[str, Any]) -> None

Log the birth of a new agent.

Arguments:

  • agent ConversableAgent - The agent to log.
  • init_args dict - The arguments passed to the construct the conversable agent

log_event

@abstractmethod
def log_event(source: str | Agent, name: str, **kwargs: dict[str,
                                                             Any]) -> None

Log an event for an agent.

Arguments:

  • source str or Agent - The source/creator of the event as a string name or an Agent instance
  • name str - The name of the event
  • kwargs dict - The event information to log

log_new_wrapper

@abstractmethod
def log_new_wrapper(wrapper: OpenAIWrapper,
                    init_args: dict[str, LLMConfig | list[LLMConfig]]) -> None

Log the birth of a new OpenAIWrapper.

Arguments:

  • wrapper OpenAIWrapper - The wrapper to log.
  • init_args dict - The arguments passed to the construct the wrapper

log_new_client

@abstractmethod
def log_new_client(client: AzureOpenAI | OpenAI, wrapper: OpenAIWrapper,
                   init_args: dict[str, Any]) -> None

Log the birth of a new OpenAIWrapper.

Arguments:

  • wrapper OpenAI - The OpenAI client to log.
  • init_args dict - The arguments passed to the construct the client

log_function_use

@abstractmethod
def log_function_use(source: str | Agent, function: F, args: dict[str, Any],
                     returns: Any) -> None

Log the use of a registered function (could be a tool)

Arguments:

  • source str or Agent - The source/creator of the event as a string name or an Agent instance
  • function F - The function information
  • args dict - The function args to log
  • returns any - The return

stop

@abstractmethod
def stop() -> None

Close the connection to the logging database, and stop logging.

get_connection

@abstractmethod
def get_connection() -> None | sqlite3.Connection

Return a connection to the logging database.