Skip to content

Commit b6962c6

Browse files
committed
fix: strip models/ prefix from Google Gemini model names for correct cost calculation
1 parent fa2d8c4 commit b6962c6

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

valhalla/jawn/src/lib/handlers/ResponseBodyHandler.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,10 +201,11 @@ export class ResponseBodyHandler extends AbstractLogHandler {
201201
} else if (parsedUsage.data) {
202202
context.usage = parsedUsage.data ?? null;
203203

204-
const providerModelId =
204+
const providerModelId = (
205205
context.message.heliconeMeta.providerModelId ??
206206
(!isAIGateway ? context.processedLog.model : "") ??
207-
"";
207+
""
208+
).replace(/^models\//, "");
208209

209210
const breakdown = modelCostBreakdownFromRegistry({
210211
modelUsage: parsedUsage.data,

valhalla/jawn/src/utils/modelMapper.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ export function getModelFromRequest(
66
// eslint-disable-next-line @typescript-eslint/no-explicit-any
77
if (requestBody && (requestBody as any).model) {
88
// eslint-disable-next-line @typescript-eslint/no-explicit-any
9-
return (requestBody as any).model;
9+
const model = (requestBody as any).model;
10+
// Strip Google's "models/" prefix for consistent cost registry lookups
11+
return typeof model === "string" ? model.replace(/^models\//, "") : model;
1012
}
1113

1214
if (targetUrl && targetUrl.toLowerCase().includes("firecrawl")) {
@@ -53,13 +55,14 @@ function getModelFromPath(path: string) {
5355
}
5456

5557
export function getModelFromResponse(responseBody: any) {
56-
return (
58+
const model =
5759
responseBody?.model ??
5860
responseBody?.body?.model ??
5961
responseBody?.body?.modelVersion ??
6062
responseBody?.providerMetadata?.gateway?.routing?.originalModelId ??
61-
null
62-
);
63+
null;
64+
// Strip Google's "models/" prefix for consistent cost registry lookups
65+
return typeof model === "string" ? model.replace(/^models\//, "") : model;
6366
}
6467

6568
export function calculateModel(

0 commit comments

Comments
 (0)