Skip to content

Commit f5c6316

Browse files
committed
update handling of usage
1 parent e507b92 commit f5c6316

File tree

3 files changed

+25
-14
lines changed

3 files changed

+25
-14
lines changed

async_openai/types/functions.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,12 @@ def _set_values_from_response(
107107
Sets the values from the response
108108
"""
109109
if name: self.function_name = name
110-
self.function_usage = response.usage
110+
usage = response.usage
111+
if isinstance(usage, dict):
112+
from async_openai.types.resources import Usage
113+
usage = Usage(**usage)
114+
115+
self.function_usage = usage
111116
if response.response_ms: self.function_duration = response.response_ms / 1000
112117
self.function_model = response.model
113118
if client_name: self.function_client_name = client_name

async_openai/types/resources.py

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@ class Usage(BaseModel):
5555
completion_tokens: Optional[int] = 0
5656
total_tokens: Optional[int] = 0
5757

58-
@lazyproperty
58+
# @lazyproperty
59+
@property
5960
def consumption(self) -> int:
6061
"""
6162
Gets the consumption
@@ -66,17 +67,22 @@ def update(self, usage: Union['Usage', Dict[str, int]]):
6667
"""
6768
Updates the consumption
6869
"""
69-
for key in {
70-
'prompt_tokens',
71-
'completion_tokens',
72-
'total_tokens',
73-
}:
74-
if not hasattr(self, key):
75-
setattr(self, key, 0)
76-
val = usage.get(key, 0) if isinstance(usage, dict) else getattr(usage, key, 0)
77-
setattr(self, key, getattr(self, key) + val)
78-
79-
70+
if isinstance(usage, Usage):
71+
if usage.prompt_tokens: self.prompt_tokens += usage.prompt_tokens
72+
if usage.completion_tokens: self.completion_tokens += usage.completion_tokens
73+
if usage.total_tokens: self.total_tokens += usage.total_tokens
74+
return
75+
76+
if usage.get('prompt_tokens'): self.prompt_tokens += usage['prompt_tokens']
77+
if usage.get('completion_tokens'): self.completion_tokens += usage['completion_tokens']
78+
if usage.get('total_tokens'): self.total_tokens += usage['total_tokens']
79+
80+
def __iadd__(self, other: Union['Usage', Dict[str, int]]):
81+
"""
82+
Adds the usage
83+
"""
84+
self.update(other)
85+
return self.consumption
8086

8187

8288
class BaseResource(BaseModel):

async_openai/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
VERSION = '0.0.53rc0'
1+
VERSION = '0.0.53rc1'

0 commit comments

Comments
 (0)