use true price

This commit is contained in:
songtianlun 2025-08-09 11:12:01 +08:00
parent 21e2d3d915
commit 07dfef2c32
2 changed files with 20 additions and 3 deletions

View File

@ -1,7 +1,7 @@
import { NextRequest, NextResponse } from "next/server";
import { createServerSupabaseClient } from "@/lib/supabase-server";
import { prisma } from "@/lib/prisma";
import { getPromptContent } from "@/lib/simulator-utils";
import { getPromptContent, calculateCost } from "@/lib/simulator-utils";
export async function POST(
request: NextRequest,
@ -113,7 +113,7 @@ export async function POST(
if (data === '[DONE]') {
// 计算最终数据并更新数据库
const duration = Date.now() - startTime;
const estimatedCost = (inputTokens * 0.001) + (outputTokens * 0.002); // 示例定价
const actualCost = calculateCost(inputTokens, outputTokens, run.model);
await prisma.simulatorRun.update({
where: { id },
@ -122,7 +122,7 @@ export async function POST(
output: fullResponse,
inputTokens,
outputTokens,
totalCost: estimatedCost,
totalCost: actualCost,
duration,
completedAt: new Date(),
},

View File

@ -41,4 +41,21 @@ export function isPromptContentModified(run: SimulatorRun): boolean {
*/
export function getOriginalPromptContent(run: Pick<SimulatorRun, 'prompt' | 'promptVersion'>): string {
return run.promptVersion?.content || run.prompt.content
}
/**
*
*/
export function calculateCost(inputTokens: number, outputTokens: number, model: {
inputCostPer1k?: number | null
outputCostPer1k?: number | null
}): number {
const inputCostPer1k = model.inputCostPer1k || 0
const outputCostPer1k = model.outputCostPer1k || 0
// 计算费用token数除以1000再乘以每1k的费用
const inputCost = (inputTokens / 1000) * inputCostPer1k
const outputCost = (outputTokens / 1000) * outputCostPer1k
return inputCost + outputCost
}