fix: pricing show 0 when it is defined

This commit is contained in:
Ralph Khreish
2025-10-02 16:47:45 +02:00
parent 738ec51c04
commit f3deacb74e
3 changed files with 46 additions and 17 deletions

View File

@@ -93,31 +93,55 @@ function _getProvider(providerName) {
// Helper function to get cost for a specific model
function _getCostForModel(providerName, modelId) {
const DEFAULT_COST = { inputCost: 0, outputCost: 0, currency: 'USD' };
const DEFAULT_COST = {
inputCost: 0,
outputCost: 0,
currency: 'USD',
isUnknown: false
};
if (!MODEL_MAP || !MODEL_MAP[providerName]) {
log(
'warn',
`Provider "${providerName}" not found in MODEL_MAP. Cannot determine cost for model ${modelId}.`
);
return DEFAULT_COST;
return { ...DEFAULT_COST, isUnknown: true };
}
const modelData = MODEL_MAP[providerName].find((m) => m.id === modelId);
if (!modelData?.cost_per_1m_tokens) {
if (!modelData) {
log(
'debug',
`Cost data not found for model "${modelId}" under provider "${providerName}". Assuming zero cost.`
`Model "${modelId}" not found under provider "${providerName}". Assuming unknown cost.`
);
return DEFAULT_COST;
return { ...DEFAULT_COST, isUnknown: true };
}
// Check if cost_per_1m_tokens is explicitly null (unknown pricing)
if (modelData.cost_per_1m_tokens === null) {
log(
'debug',
`Cost data is null for model "${modelId}" under provider "${providerName}". Pricing unknown.`
);
return { ...DEFAULT_COST, isUnknown: true };
}
// Check if cost_per_1m_tokens is missing/undefined (also unknown)
if (modelData.cost_per_1m_tokens === undefined) {
log(
'debug',
`Cost data not found for model "${modelId}" under provider "${providerName}". Pricing unknown.`
);
return { ...DEFAULT_COST, isUnknown: true };
}
const costs = modelData.cost_per_1m_tokens;
return {
inputCost: costs.input || 0,
outputCost: costs.output || 0,
currency: costs.currency || 'USD'
currency: costs.currency || 'USD',
isUnknown: false
};
}
@@ -867,8 +891,8 @@ async function logAiUsage({
const timestamp = new Date().toISOString();
const totalTokens = (inputTokens || 0) + (outputTokens || 0);
// Destructure currency along with costs
const { inputCost, outputCost, currency } = _getCostForModel(
// Destructure currency along with costs and unknown flag
const { inputCost, outputCost, currency, isUnknown } = _getCostForModel(
providerName,
modelId
);
@@ -890,7 +914,8 @@ async function logAiUsage({
outputTokens: outputTokens || 0,
totalTokens,
totalCost,
currency // Add currency to the telemetry data
currency, // Add currency to the telemetry data
isUnknownCost: isUnknown // Flag to indicate if pricing is unknown
};
if (getDebugFlag()) {