Skip to content

UsageSummaryMessage

autogen.messages.client_messages.UsageSummaryMessage #

UsageSummaryMessage(*, uuid=None, actual_usage_summary=None, total_usage_summary=None, mode='both')

Bases: BaseMessage

Usage summary message.

Source code in autogen/messages/client_messages.py
def __init__(
    self,
    *,
    uuid: Optional[UUID] = None,
    actual_usage_summary: Optional[dict[str, Any]] = None,
    total_usage_summary: Optional[dict[str, Any]] = None,
    mode: Mode = "both",
):
    # print(f"{actual_usage_summary=}")
    # print(f"{total_usage_summary=}")

    summary_dict = _change_usage_summary_format(actual_usage_summary, total_usage_summary)

    super().__init__(uuid=uuid, **summary_dict, mode=mode)

uuid instance-attribute #

uuid

actual instance-attribute #

actual

Actual usage summary.

total instance-attribute #

total

Total usage summary.

mode instance-attribute #

mode

Mode to display the usage summary.

print #

print(f=None)
Source code in autogen/messages/client_messages.py
def print(self, f: Optional[Callable[..., Any]] = None) -> None:
    f = f or print

    if self.total.usages is None:
        f('No usage summary. Please call "create" first.', flush=True)
        return

    f("-" * 100, flush=True)
    if self.mode == "both":
        self._print_usage(self.actual, "actual", f)
        f()
        if self.total.model_dump_json() != self.actual.model_dump_json():
            self._print_usage(self.total, "total", f)
        else:
            f(
                "All completions are non-cached: the total cost with cached completions is the same as actual cost.",
                flush=True,
            )
    elif self.mode == "total":
        self._print_usage(self.total, "total", f)
    elif self.mode == "actual":
        self._print_usage(self.actual, "actual", f)
    else:
        raise ValueError(f'Invalid mode: {self.mode}, choose from "actual", "total", ["actual", "total"]')
    f("-" * 100, flush=True)