Usage
RequestUsage
Usage details for a single API request.
Source code in src/agents/usage.py
total_tokens
instance-attribute
Total tokens (input + output) for this individual request.
input_tokens_details
instance-attribute
Details about the input tokens for this individual request.
Usage
Source code in src/agents/usage.py
193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 | |
input_tokens
class-attribute
instance-attribute
Total input tokens sent, across all requests.
input_tokens_details
class-attribute
instance-attribute
input_tokens_details: Annotated[
InputTokensDetails,
BeforeValidator(_normalize_input_tokens_details),
] = field(default_factory=_make_input_tokens_details)
Details about the input tokens, matching responses API usage details.
output_tokens
class-attribute
instance-attribute
Total output tokens received, across all requests.
output_tokens_details
class-attribute
instance-attribute
output_tokens_details: Annotated[
OutputTokensDetails,
BeforeValidator(_normalize_output_tokens_details),
] = field(
default_factory=lambda: OutputTokensDetails(
reasoning_tokens=0
)
)
Details about the output tokens, matching responses API usage details.
total_tokens
class-attribute
instance-attribute
Total tokens sent and received, across all requests.
request_usage_entries
class-attribute
instance-attribute
request_usage_entries: list[RequestUsage] = field(
default_factory=list
)
List of RequestUsage entries for accurate per-request cost calculation.
Each call to add() automatically creates an entry in this list if the added usage
represents a new request (i.e., has non-zero tokens).
Example
For a run that makes 3 API calls with 100K, 150K, and 80K input tokens each,
the aggregated input_tokens would be 330K, but request_usage_entries would
preserve the [100K, 150K, 80K] breakdown, which could be helpful for detailed
cost calculation or context window management.
add
add(other: Usage) -> None
Add another Usage object to this one, aggregating all fields.
This method automatically preserves request_usage_entries.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
other
|
Usage
|
The Usage object to add to this one. |
required |
Source code in src/agents/usage.py
deserialize_usage
deserialize_usage(usage_data: Mapping[str, Any]) -> Usage
Rebuild a Usage object from serialized JSON data.
Source code in src/agents/usage.py
serialize_usage
serialize_usage(usage: Usage) -> dict[str, Any]
Serialize a Usage object into a JSON-friendly dictionary.
Source code in src/agents/usage.py
model_usage_to_span_usage
model_usage_to_span_usage(usage: Usage) -> dict[str, Any]
Serialize full per-model-call usage for tracing span data.
Source code in src/agents/usage.py
total_usage_to_span_metadata
total_usage_to_span_metadata(
usage: Usage,
) -> dict[str, int]
Serialize aggregate task/run usage for tracing span metadata.
Source code in src/agents/usage.py
turn_usage_to_span_data
turn_usage_to_span_data(usage: Usage) -> dict[str, int]
Serialize aggregate per-turn usage for custom turn span data.
Source code in src/agents/usage.py
task_usage_to_span_data
task_usage_to_span_data(usage: Usage) -> dict[str, int]
Serialize aggregate per-task usage for custom task span data.