@@ -95,7 +95,8 @@ export function buildOpenAIHandler(
9595 stream,
9696 inputToken : 0 ,
9797 outputToken : 0 ,
98- cacheInputToken : 0 ,
98+ cacheReadInputToken : 0 ,
99+ cacheWriteInputToken : 0 ,
99100 duration : 0 ,
100101 ttft : 0 ,
101102 requestPayload : payload ,
@@ -181,8 +182,9 @@ export function buildOpenAIHandler(
181182 calcOpenAIToken ( outputContent , modelName ) ,
182183 ] ) ;
183184
184- const cacheInputToken =
185+ const cacheReadInputToken =
185186 get ( usage , [ 'prompt_tokens_details' , 'cached_tokens' ] ) ?? 0 ;
187+ const cacheWriteInputToken = 0 ;
186188
187189 const customInputPrice = gatewayInfo ?. customModelInputPrice ;
188190 const customOutputPrice = gatewayInfo ?. customModelOutputPrice ;
@@ -211,7 +213,9 @@ export function buildOpenAIHandler(
211213 modelProvider ,
212214 modelPriceName ,
213215 inputToken ,
214- outputToken
216+ outputToken ,
217+ cacheReadInputToken ,
218+ cacheWriteInputToken
215219 ) ;
216220
217221 await prisma . aIGatewayLogs . update ( {
@@ -223,7 +227,8 @@ export function buildOpenAIHandler(
223227 modelName : responseModelName ,
224228 inputToken,
225229 outputToken,
226- cacheInputToken,
230+ cacheReadInputToken,
231+ cacheWriteInputToken,
227232 duration,
228233 ttft,
229234 price,
@@ -267,8 +272,9 @@ export function buildOpenAIHandler(
267272 : Promise . resolve ( 0 ) ) ,
268273 ] ) ;
269274
270- const cacheInputToken =
275+ const cacheReadInputToken =
271276 response . usage ?. prompt_tokens_details ?. cached_tokens ?? 0 ;
277+ const cacheWriteInputToken = 0 ;
272278
273279 const customInputPrice = gatewayInfo ?. customModelInputPrice ;
274280 const customOutputPrice = gatewayInfo ?. customModelOutputPrice ;
@@ -297,7 +303,9 @@ export function buildOpenAIHandler(
297303 modelProvider ,
298304 modelPriceName ,
299305 inputToken ,
300- outputToken
306+ outputToken ,
307+ cacheReadInputToken ,
308+ cacheWriteInputToken
301309 ) ;
302310
303311 await prisma . aIGatewayLogs . update ( {
@@ -308,7 +316,8 @@ export function buildOpenAIHandler(
308316 status : AIGatewayLogsStatus . Success ,
309317 inputToken,
310318 outputToken,
311- cacheInputToken,
319+ cacheReadInputToken,
320+ cacheWriteInputToken,
312321 duration,
313322 modelName : responseModelName ,
314323 price,
@@ -418,7 +427,8 @@ export function buildAnthropicHandler(
418427 stream,
419428 inputToken : 0 ,
420429 outputToken : 0 ,
421- cacheInputToken : 0 ,
430+ cacheReadInputToken : 0 ,
431+ cacheWriteInputToken : 0 ,
422432 duration : 0 ,
423433 ttft : 0 ,
424434 requestPayload : payload ,
@@ -492,7 +502,8 @@ export function buildAnthropicHandler(
492502
493503 let inputTokens = 0 ;
494504 let outputTokens = 0 ;
495- let cacheInputTokens = 0 ;
505+ let cacheReadInputTokens = 0 ;
506+ let cacheWriteInputTokens = 0 ;
496507 let outputContent = '' ;
497508 let ttft = - 1 ;
498509 let responseModelName = modelName ;
@@ -534,9 +545,6 @@ export function buildAnthropicHandler(
534545 const data = JSON . parse ( line . slice ( 6 ) ) ;
535546 if ( currentEventType === 'message_start' && data . message ) {
536547 responseModelName = data . message . model || responseModelName ;
537- cacheInputTokens =
538- data . message . usage ?. cache_read_input_tokens ||
539- cacheInputTokens ;
540548 } else if ( currentEventType === 'content_block_delta' ) {
541549 if ( ttft === - 1 ) {
542550 ttft = Date . now ( ) - start ;
@@ -548,6 +556,12 @@ export function buildAnthropicHandler(
548556 usage = data . usage ;
549557 inputTokens = usage ?. input_tokens || inputTokens ;
550558 outputTokens = usage ?. output_tokens || outputTokens ;
559+ cacheReadInputTokens =
560+ data . message . usage ?. cache_read_input_tokens ||
561+ cacheReadInputTokens ;
562+ cacheWriteInputTokens =
563+ data . message . usage ?. cache_creation_input_tokens ||
564+ cacheWriteInputTokens ;
551565 responseCost = usage ?. cost ;
552566 }
553567 } catch {
@@ -582,7 +596,9 @@ export function buildAnthropicHandler(
582596 modelProvider ,
583597 modelName ,
584598 inputTokens ,
585- outputTokens
599+ outputTokens ,
600+ cacheReadInputTokens ,
601+ cacheWriteInputTokens
586602 ) ;
587603
588604 await prisma . aIGatewayLogs . update ( {
@@ -592,7 +608,8 @@ export function buildAnthropicHandler(
592608 modelName : responseModelName ,
593609 inputToken : inputTokens ,
594610 outputToken : outputTokens ,
595- cacheInputToken : cacheInputTokens ,
611+ cacheReadInputToken : cacheReadInputTokens ,
612+ cacheWriteInputToken : cacheWriteInputTokens ,
596613 duration,
597614 ttft,
598615 price,
@@ -622,7 +639,9 @@ export function buildAnthropicHandler(
622639 const usage = responseBody . usage ;
623640 const inputTokens = usage ?. input_tokens || 0 ;
624641 const outputTokens = usage ?. output_tokens || 0 ;
625- const cacheInputTokens = usage ?. cache_read_input_tokens || 0 ;
642+ const cacheReadInputTokens = usage ?. cache_read_input_tokens || 0 ;
643+ const cacheWriteInputTokens =
644+ usage ?. cache_creation_input_tokens || 0 ;
626645 const responseCost = usage ?. cost ;
627646
628647 const contentBlocks = responseBody . content || [ ] ;
@@ -648,7 +667,9 @@ export function buildAnthropicHandler(
648667 modelProvider ,
649668 modelName ,
650669 inputTokens ,
651- outputTokens
670+ outputTokens ,
671+ cacheReadInputTokens ,
672+ cacheWriteInputTokens
652673 ) ;
653674
654675 await prisma . aIGatewayLogs . update ( {
@@ -658,7 +679,8 @@ export function buildAnthropicHandler(
658679 modelName : responseModelName ,
659680 inputToken : inputTokens ,
660681 outputToken : outputTokens ,
661- cacheInputToken : cacheInputTokens ,
682+ cacheReadInputToken : cacheReadInputTokens ,
683+ cacheWriteInputToken : cacheWriteInputTokens ,
662684 duration,
663685 price,
664686 responsePayload : {
0 commit comments