mirror of
https://github.com/Nezumi-2711/9router.git
synced 2026-09-22 13:38:31 +00:00
fix(usage): record exact embedding tokens
This commit is contained in:
@@ -12,6 +12,16 @@ import { errorResponse, unavailableResponse } from "open-sse/utils/error.js";
|
||||
import { HTTP_STATUS } from "open-sse/config/runtimeConfig.js";
|
||||
import * as log from "../utils/logger.js";
|
||||
import { updateProviderCredentials, checkAndRefreshToken } from "../services/tokenRefresh.js";
|
||||
import { saveRequestUsage } from "@/lib/usageDb.js";
|
||||
|
||||
function exactEmbeddingUsage(raw) {
|
||||
if (!raw || typeof raw !== "object" || Array.isArray(raw) || raw.estimated === true) return null;
|
||||
const promptTokens = raw.prompt_tokens ?? raw.input_tokens;
|
||||
const completionTokens = raw.completion_tokens ?? raw.output_tokens ?? 0;
|
||||
const totalTokens = raw.total_tokens;
|
||||
if (!Number.isSafeInteger(promptTokens) || promptTokens <= 0 || completionTokens !== 0 || totalTokens !== promptTokens) return null;
|
||||
return { prompt_tokens: promptTokens, completion_tokens: 0, total_tokens: totalTokens };
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle embeddings request for the SSE/Next.js server.
|
||||
@@ -124,7 +134,21 @@ export async function handleEmbeddings(request) {
|
||||
}
|
||||
});
|
||||
|
||||
if (result.success) return result.response;
|
||||
if (result.success) {
|
||||
const usage = exactEmbeddingUsage(result.usage);
|
||||
if (usage) {
|
||||
saveRequestUsage({
|
||||
provider,
|
||||
model,
|
||||
connectionId: credentials.connectionId,
|
||||
apiKey,
|
||||
endpoint: url.pathname,
|
||||
tokens: usage,
|
||||
status: "success",
|
||||
}).catch(() => {});
|
||||
}
|
||||
return result.response;
|
||||
}
|
||||
|
||||
const { shouldFallback } = await markAccountUnavailable(credentials.connectionId, result.status, result.error, provider, model);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user