diff --git a/src/components/OutputsTable/OutputCell/OutputStats.tsx b/src/components/OutputsTable/OutputCell/OutputStats.tsx
index 59bc17e..eebc882 100644
--- a/src/components/OutputsTable/OutputCell/OutputStats.tsx
+++ b/src/components/OutputsTable/OutputCell/OutputStats.tsx
@@ -7,6 +7,7 @@ import { calculateTokenCost } from "~/utils/calculateTokenCost";
import { evaluateOutput } from "~/server/utils/evaluateOutput";
import { HStack, Icon, Text } from "@chakra-ui/react";
import { BsCheck, BsClock, BsCurrencyDollar, BsX } from "react-icons/bs";
+import { CostTooltip } from "~/components/tooltip/CostTooltip";
export const OutputStats = ({
model,
@@ -48,10 +49,12 @@ export const OutputStats = ({
);
})}
-
-
- {cost.toFixed(3)}
-
+
+
+
+ {cost.toFixed(3)}
+
+
{(timeToComplete / 1000).toFixed(2)}s
diff --git a/src/components/OutputsTable/VariantStats.tsx b/src/components/OutputsTable/VariantStats.tsx
index b0096e5..ee7f2d8 100644
--- a/src/components/OutputsTable/VariantStats.tsx
+++ b/src/components/OutputsTable/VariantStats.tsx
@@ -4,13 +4,23 @@ import { cellPadding } from "../constants";
import { api } from "~/utils/api";
import chroma from "chroma-js";
import { BsCurrencyDollar } from "react-icons/bs";
+import { CostTooltip } from "../tooltip/CostTooltip";
export default function VariantStats(props: { variant: PromptVariant }) {
const { data } = api.promptVariants.stats.useQuery(
{
variantId: props.variant.id,
},
- { initialData: { evalResults: [], overallCost: 0, scenarioCount: 0, outputCount: 0 } }
+ {
+ initialData: {
+ evalResults: [],
+ overallCost: 0,
+ promptTokens: 0,
+ completionTokens: 0,
+ scenarioCount: 0,
+ outputCount: 0,
+ },
+ }
);
const [passColor, neutralColor, failColor] = useToken("colors", [
@@ -46,10 +56,16 @@ export default function VariantStats(props: { variant: PromptVariant }) {
})}
{data.overallCost && (
-
-
- {data.overallCost.toFixed(3)}
-
+
+
+
+ {data.overallCost.toFixed(3)}
+
+
)}
);
diff --git a/src/components/tooltip/CostTooltip.tsx b/src/components/tooltip/CostTooltip.tsx
new file mode 100644
index 0000000..d6b05c0
--- /dev/null
+++ b/src/components/tooltip/CostTooltip.tsx
@@ -0,0 +1,54 @@
+import { HStack, Icon, Text, Tooltip, type TooltipProps, VStack, Divider } from "@chakra-ui/react";
+import { BsCurrencyDollar } from "react-icons/bs";
+
+type CostTooltipProps = {
+ promptTokens: number | null;
+ completionTokens: number | null;
+ cost: number;
+} & TooltipProps;
+
+export const CostTooltip = ({
+ promptTokens,
+ completionTokens,
+ cost,
+ children,
+ ...props
+}: CostTooltipProps) => {
+ return (
+
+
+ Cost
+
+
+ {cost.toFixed(6)}
+
+
+
+ Tokens
+
+
+ Prompt
+ {promptTokens ?? 0}
+
+
+
+ Completion
+ {completionTokens ?? 0}
+
+
+
+
+ }
+ {...props}
+ >
+ {children}
+
+ );
+};
diff --git a/src/server/api/routers/promptVariants.router.ts b/src/server/api/routers/promptVariants.router.ts
index 2e7db3e..1110d61 100644
--- a/src/server/api/routers/promptVariants.router.ts
+++ b/src/server/api/routers/promptVariants.router.ts
@@ -66,7 +66,7 @@ export const promptVariantsRouter = createTRPCRouter({
const overallCost = overallPromptCost + overallCompletionCost;
- return { evalResults, overallCost, scenarioCount, outputCount };
+ return { evalResults, promptTokens, completionTokens, overallCost, scenarioCount, outputCount };
}),
create: publicProcedure