%usage : display the most recent usage information from the last agent run.
If no usage data is available, a helpful message is shown.
Source code in pydantic_ai_kernel/magics/usage_magic.py
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
48
49
50
51
52
53
54
55 | @boosted_option(
"-f",
"--formatter",
default=None,
help="Formatter for the output (text, terminal, md, json).",
choices=["text", "terminal", "md", "json"],
)
def line_usage(self, formatter: str | None = None) -> None:
"""
%usage : display the most recent usage information from the last agent run.
If no usage data is available, a helpful message is shown.
"""
self.kernel: PydanticAIBaseKernel # type hint for kernel
# Determine formatter, default to environment variable or text
# Use kernel's configured formatter if not overridden
env_formatter = getattr(self.kernel, "formatter", "text")
if formatter is None:
formatter = env_formatter
usage_info = self.kernel.last_usage
if usage_info is None:
self.kernel.Error(
"No usage information available. Run a cell to generate usage data."
)
return
# Nice formatting based on requested type
# Convert usage info to a dict (handles RunUsage dataclass)
info_dict = usage_info if isinstance(usage_info, dict) else dataclasses.asdict(usage_info)
if formatter == "json":
try:
json_str = json.dumps(info_dict, indent=2)
except Exception:
json_str = str(info_dict)
self.kernel.Print(json_str)
elif formatter == "md":
# Render as a markdown table
rows = ["| Key | Value |", "| --- | ----- |"]
for k, v in info_dict.items():
rows.append(f"| {k} | {v} |")
md_content = "\n".join(rows)
self.kernel.Display({"text/markdown": md_content})
else:
# text or terminal – formatted key: value lines
lines = [f"{k}: {v}" for k, v in info_dict.items()]
self.kernel.Print("\n".join(lines))
|