pydantic_ai.usage
            Usage
  
      dataclass
  
    LLM usage associated with a request or run.
Responsibility for calculating usage is on the model; Pydantic AI simply sums the usage information across requests.
You'll need to look up the documentation of the model you're using to convert usage to monetary costs.
Source code in pydantic_ai_slim/pydantic_ai/usage.py
                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 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78  |  | 
            requests
  
      class-attribute
      instance-attribute
  
requests: int = 0
Number of requests made to the LLM API.
            request_tokens
  
      class-attribute
      instance-attribute
  
request_tokens: int | None = None
Tokens used in processing requests.
            response_tokens
  
      class-attribute
      instance-attribute
  
response_tokens: int | None = None
Tokens used in generating responses.
            total_tokens
  
      class-attribute
      instance-attribute
  
total_tokens: int | None = None
Total tokens used in the whole run, should generally be equal to request_tokens + response_tokens.
            details
  
      class-attribute
      instance-attribute
  
    Any extra details returned by the model.
incr
incr(incr_usage: Usage) -> None
Increment the usage in place.
Parameters:
| Name | Type | Description | Default | 
|---|---|---|---|
                incr_usage
             | 
            
                  Usage
             | 
            
               The usage to increment by.  | 
            required | 
Source code in pydantic_ai_slim/pydantic_ai/usage.py
              32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47  |  | 
__add__
Add two Usages together.
This is provided so it's trivial to sum usage information from multiple requests and runs.
Source code in pydantic_ai_slim/pydantic_ai/usage.py
              49 50 51 52 53 54 55 56  |  | 
opentelemetry_attributes
Get the token limits as OpenTelemetry attributes.
Source code in pydantic_ai_slim/pydantic_ai/usage.py
              58 59 60 61 62 63 64 65 66 67 68 69 70 71 72  |  | 
has_values
has_values() -> bool
Whether any values are set and non-zero.
Source code in pydantic_ai_slim/pydantic_ai/usage.py
              74 75 76  |  | 
            UsageLimits
  
      dataclass
  
    Limits on model usage.
The request count is tracked by pydantic_ai, and the request limit is checked before each request to the model. Token counts are provided in responses from the model, and the token limits are checked after each response.
Each of the limits can be set to None to disable that limit.
Source code in pydantic_ai_slim/pydantic_ai/usage.py
                81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137  |  | 
            request_limit
  
      class-attribute
      instance-attribute
  
request_limit: int | None = 50
The maximum number of requests allowed to the model.
            request_tokens_limit
  
      class-attribute
      instance-attribute
  
request_tokens_limit: int | None = None
The maximum number of tokens allowed in requests to the model.
            response_tokens_limit
  
      class-attribute
      instance-attribute
  
response_tokens_limit: int | None = None
The maximum number of tokens allowed in responses from the model.
            total_tokens_limit
  
      class-attribute
      instance-attribute
  
total_tokens_limit: int | None = None
The maximum number of tokens allowed in requests and responses combined.
has_token_limits
has_token_limits() -> bool
Returns True if this instance places any limits on token counts.
If this returns False, the check_tokens method will never raise an error.
This is useful because if we have token limits, we need to check them after receiving each streamed message. If there are no limits, we can skip that processing in the streaming response iterator.
Source code in pydantic_ai_slim/pydantic_ai/usage.py
              100 101 102 103 104 105 106 107 108 109 110 111  |  | 
check_before_request
check_before_request(usage: Usage) -> None
Raises a UsageLimitExceeded exception if the next request would exceed the request_limit.
Source code in pydantic_ai_slim/pydantic_ai/usage.py
              113 114 115 116 117  |  | 
check_tokens
check_tokens(usage: Usage) -> None
Raises a UsageLimitExceeded exception if the usage exceeds any of the token limits.
Source code in pydantic_ai_slim/pydantic_ai/usage.py
              119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135  |  |