(usage: LanguageModelUsage)
| 28 | const USD_PER_CREDIT = 0.01; |
| 29 | |
| 30 | function getTokenCounts(usage: LanguageModelUsage): TokenCounts { |
| 31 | const inputTokens = usage.inputTokens; |
| 32 | const outputTokens = usage.outputTokens; |
| 33 | |
| 34 | if ( |
| 35 | inputTokens == null || |
| 36 | outputTokens == null || |
| 37 | !Number.isFinite(inputTokens) || |
| 38 | !Number.isFinite(outputTokens) || |
| 39 | !Number.isInteger(inputTokens) || |
| 40 | !Number.isInteger(outputTokens) || |
| 41 | inputTokens < 0 || |
| 42 | outputTokens < 0 |
| 43 | ) { |
| 44 | throw new Error("Credit conversion requires input and output token counts"); |
| 45 | } |
| 46 | |
| 47 | return { |
| 48 | inputTokens, |
| 49 | outputTokens, |
| 50 | }; |
| 51 | }; |
| 52 | |
| 53 | function getModelPricing(provider: string, model: string): ModelPricing { |
| 54 | const supportedModel = findSupportedChatModel(model); |
no outgoing calls
no test coverage detected