subtract_usage() — langchain Function Reference
Architecture documentation for the subtract_usage() function in ai.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD cc5aa964_e109_cc22_851b_2d182afd14aa["subtract_usage()"] 49c04e35_a53c_8d1b_eb09_1203ad7cdacf["ai.py"] cc5aa964_e109_cc22_851b_2d182afd14aa -->|defined in| 49c04e35_a53c_8d1b_eb09_1203ad7cdacf style cc5aa964_e109_cc22_851b_2d182afd14aa fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
libs/core/langchain_core/messages/ai.py lines 780–840
def subtract_usage(
left: UsageMetadata | None, right: UsageMetadata | None
) -> UsageMetadata:
"""Recursively subtract two `UsageMetadata` objects.
Token counts cannot be negative so the actual operation is `max(left - right, 0)`.
Example:
```python
from langchain_core.messages.ai import subtract_usage
left = UsageMetadata(
input_tokens=5,
output_tokens=10,
total_tokens=15,
input_token_details=InputTokenDetails(cache_read=4),
)
right = UsageMetadata(
input_tokens=3,
output_tokens=8,
total_tokens=11,
output_token_details=OutputTokenDetails(reasoning=4),
)
subtract_usage(left, right)
```
results in
```python
UsageMetadata(
input_tokens=2,
output_tokens=2,
total_tokens=4,
input_token_details=InputTokenDetails(cache_read=4),
output_token_details=OutputTokenDetails(reasoning=0),
)
```
Args:
left: The first `UsageMetadata` object.
right: The second `UsageMetadata` object.
Returns:
The resulting `UsageMetadata` after subtraction.
"""
if not (left or right):
return UsageMetadata(input_tokens=0, output_tokens=0, total_tokens=0)
if not (left and right):
return cast("UsageMetadata", left or right)
return UsageMetadata(
**cast(
"UsageMetadata",
_dict_int_op(
cast("dict", left),
cast("dict", right),
(lambda le, ri: max(le - ri, 0)),
),
)
)
Domain
Subdomains
Defined In
Source
Frequently Asked Questions
What does subtract_usage() do?
subtract_usage() is a function in the langchain codebase, defined in libs/core/langchain_core/messages/ai.py.
Where is subtract_usage() defined?
subtract_usage() is defined in libs/core/langchain_core/messages/ai.py at line 780.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free