Filter by team
+{data.date}
-Total Spend: ${formatNumberWithCommas(data.metrics.spend, 2)}
-Total Requests: {data.metrics.api_requests}
-Successful: {data.metrics.successful_requests}
-Failed: {data.metrics.failed_requests}
-Total Tokens: {data.metrics.total_tokens}
-- Total {capitalizedEntityLabel}s: {entityCount} -
-Spend by {capitalizedEntityLabel}:
- {Object.entries(data.breakdown.entities || {}) - .sort(([, a], [, b]) => { - const spendA = (a as EntityMetrics).metrics.spend; - const spendB = (b as EntityMetrics).metrics.spend; - return spendB - spendA; - }) - .slice(0, 5) - .map(([entity, entityData]) => { - const metrics = entityData as EntityMetrics; - return ( -- {getEntityLabel(entity, metrics.metadata)}: $ - {formatNumberWithCommas(metrics.metrics.spend, 2)} -
- ); - })} - {entityCount > 5 && ( -...and {entityCount - 5} more
- )} -{data.metadata.alias}
-Spend: ${formatNumberWithCommas(data.metrics.spend, 4)}
-Requests: {data.metrics.api_requests.toLocaleString()}
-- Successful: {data.metrics.successful_requests.toLocaleString()} -
-Failed: {data.metrics.failed_requests.toLocaleString()}
-Tokens: {data.metrics.total_tokens.toLocaleString()}
-+ ${formatNumberWithCommas(spendData.metadata.total_spend, 2)} +
+ {spendData.metadata.total_api_requests.toLocaleString()} +
++ {spendData.metadata.total_successful_requests.toLocaleString()} +
++ {spendData.metadata.total_failed_requests.toLocaleString()} +
++ {spendData.metadata.total_tokens.toLocaleString()} +
+{data.date}
+Total Spend: ${formatNumberWithCommas(data.metrics.spend, 2)}
+Total Requests: {data.metrics.api_requests}
+Successful: {data.metrics.successful_requests}
+Failed: {data.metrics.failed_requests}
+Total Tokens: {data.metrics.total_tokens}
++ Total {capitalizedEntityLabel}s: {entityCount} +
+Spend by {capitalizedEntityLabel}:
+ {Object.entries(data.breakdown.entities || {}) + .sort(([, a], [, b]) => { + const spendA = (a as EntityMetrics).metrics.spend; + const spendB = (b as EntityMetrics).metrics.spend; + return spendB - spendA; + }) + .slice(0, 5) + .map(([entity, entityData]) => { + const metrics = entityData as EntityMetrics; + return ( ++ {getEntityLabel(entity, metrics.metadata)}: $ + {formatNumberWithCommas(metrics.metrics.spend, 2)} +
+ ); + })} + {entityCount > 5 && ( +...and {entityCount - 5} more
+ )} +Showing Top 5 by Spend
+{data.metadata.alias}
+Spend: ${formatNumberWithCommas(data.metrics.spend, 4)}
++ Requests: {data.metrics.api_requests.toLocaleString()} +
++ Successful: {data.metrics.successful_requests.toLocaleString()} +
+Failed: {data.metrics.failed_requests.toLocaleString()}
++ Tokens: {data.metrics.total_tokens.toLocaleString()} +
++) : ( -{children}{children}+{children}); }, table: ({ children }) => ( @@ -94,8 +103,10 @@ const MarkdownContent: React.FC<{ content: string }> = ({ content }) => (
+
Ask about your spend, models, keys, and trends
+ Project Spend{" "} + {dateValue.from && dateValue.to && ( + <> + {dateValue.from.toLocaleDateString("en-US", { + month: "short", + day: "numeric", + year: + dateValue.from.getFullYear() !== dateValue.to.getFullYear() ? "numeric" : undefined, + })} + {" - "} + {dateValue.to.toLocaleDateString("en-US", { + month: "short", + day: "numeric", + year: "numeric", + })} + > + )} +
++ {userSpendData.metadata?.total_api_requests?.toLocaleString() || 0} +
++ {userSpendData.metadata?.total_successful_requests?.toLocaleString() || 0} +
+{data.date}
-- Spend: ${formatNumberWithCommas(data.metrics.spend, 2)} -
-Requests: {data.metrics.api_requests}
-Successful: {data.metrics.successful_requests}
-Failed: {data.metrics.failed_requests}
-Tokens: {data.metrics.total_tokens}
-+ {userSpendData.metadata?.total_failed_requests?.toLocaleString() || 0} +
+ ++ $ + {formatNumberWithCommas( + (totalSpend || 0) / (userSpendData.metadata?.total_api_requests || 1), + 4, + )} +
++ {userSpendData.metadata?.total_tokens?.toLocaleString() || 0} +
++ {Math.max( + 0, + (userSpendData.metadata?.total_prompt_tokens || 0) - + (userSpendData.metadata?.total_cache_read_input_tokens || 0) - + (userSpendData.metadata?.total_cache_creation_input_tokens || 0), + ).toLocaleString()} +
++ {userSpendData.metadata?.total_completion_tokens?.toLocaleString() || 0} +
++ {userSpendData.metadata?.total_cache_read_input_tokens?.toLocaleString() || 0} +
++ {userSpendData.metadata?.total_cache_creation_input_tokens?.toLocaleString() || 0} +
+{data.key}
-- Spend: ${formatNumberWithCommas(data.spend, 2)} -
-- Total Requests: {data.requests.toLocaleString()} -
-- Successful: {data.successful_requests.toLocaleString()} -
-- Failed: {data.failed_requests.toLocaleString()} -
-Tokens: {data.tokens.toLocaleString()}
-{data.date}
++ Spend: ${formatNumberWithCommas(data.metrics.spend, 2)} +
+Requests: {data.metrics.api_requests}
++ Successful: {data.metrics.successful_requests} +
+Failed: {data.metrics.failed_requests}
+Tokens: {data.metrics.total_tokens}
+{data.key}
++ Spend: ${formatNumberWithCommas(data.spend, 2)} +
++ Total Requests: {data.requests.toLocaleString()} +
++ Successful: {data.successful_requests.toLocaleString()} +
++ Failed: {data.failed_requests.toLocaleString()} +
++ Tokens: {data.tokens.toLocaleString()} +
+Credential:
+ in this view.
+