(usage: any, modelInfo?: ModelInfo)
| 92 | } |
| 93 | |
| 94 | protected processUsageMetrics(usage: any, modelInfo?: ModelInfo): ApiStreamUsageChunk { |
| 95 | const unboundUsage = usage as UnboundUsage |
| 96 | const inputTokens = unboundUsage?.prompt_tokens || 0 |
| 97 | const outputTokens = unboundUsage?.completion_tokens || 0 |
| 98 | const cacheWriteTokens = unboundUsage?.cache_creation_input_tokens || 0 |
| 99 | const cacheReadTokens = unboundUsage?.cache_read_input_tokens || 0 |
| 100 | const { totalCost } = modelInfo |
| 101 | ? calculateApiCostOpenAI(modelInfo, inputTokens, outputTokens, cacheWriteTokens, cacheReadTokens) |
| 102 | : { totalCost: 0 } |
| 103 | |
| 104 | return { |
| 105 | type: "usage", |
| 106 | inputTokens: inputTokens, |
| 107 | outputTokens: outputTokens, |
| 108 | cacheWriteTokens: cacheWriteTokens, |
| 109 | cacheReadTokens: cacheReadTokens, |
| 110 | totalCost: totalCost, |
| 111 | } |
| 112 | } |
| 113 | |
| 114 | override async *createMessage( |
| 115 | systemPrompt: string, |
no test coverage detected