@@ -143,12 +143,15 @@ def _collect_ai_data(
143143 model = event .message .model or model
144144
145145 incoming_usage = event .message .usage
146- usage .input_tokens = incoming_usage .input_tokens
147146 usage .output_tokens = incoming_usage .output_tokens
148- usage .cache_write_input_tokens = (
149- incoming_usage .cache_creation_input_tokens
147+ usage .input_tokens = incoming_usage .input_tokens
148+
149+ usage .cache_write_input_tokens = getattr (
150+ incoming_usage , "cache_creation_input_tokens" , None
151+ )
152+ usage .cache_read_input_tokens = getattr (
153+ incoming_usage , "cache_read_input_tokens" , None
150154 )
151- usage .cache_read_input_tokens = incoming_usage .cache_read_input_tokens
152155
153156 return (
154157 model ,
@@ -161,14 +164,21 @@ def _collect_ai_data(
161164 usage .output_tokens = event .usage .output_tokens
162165
163166 # Update other usage fields if they exist in the event
164- if event .usage .input_tokens is not None :
165- usage .input_tokens = event .usage .input_tokens
166- if event .usage .cache_creation_input_tokens is not None :
167- usage .cache_write_input_tokens = (
168- event .usage .cache_creation_input_tokens
169- )
170- if event .usage .cache_read_input_tokens is not None :
171- usage .cache_read_input_tokens = event .usage .cache_read_input_tokens
167+ input_tokens = getattr (event .usage , "input_tokens" , None )
168+ if input_tokens is not None :
169+ usage .input_tokens = input_tokens
170+
171+ cache_creation_input_tokens = getattr (
172+ event .usage , "cache_creation_input_tokens" , None
173+ )
174+ if cache_creation_input_tokens is not None :
175+ usage .cache_write_input_tokens = cache_creation_input_tokens
176+
177+ cache_read_input_tokens = getattr (
178+ event .usage , "cache_read_input_tokens" , None
179+ )
180+ if cache_read_input_tokens is not None :
181+ usage .cache_read_input_tokens = cache_read_input_tokens
172182 # TODO: Record event.usage.server_tool_use
173183
174184 return (
0 commit comments