cost-calculation-input-cost-per-request.test.ts 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import { describe, expect, test } from "vitest";
  2. import { calculateRequestCost } from "@/lib/utils/cost-calculation";
  3. describe("calculateRequestCost: input_cost_per_request", () => {
  4. test("仅配置按次调用价格时,应计入单次成本", () => {
  5. const cost = calculateRequestCost(
  6. {},
  7. {
  8. input_cost_per_request: 0.005,
  9. }
  10. );
  11. expect(cost.toString()).toBe("0.005");
  12. });
  13. test("按次调用价格应与 token 计费叠加", () => {
  14. const cost = calculateRequestCost(
  15. { input_tokens: 1000, output_tokens: 2000 },
  16. {
  17. input_cost_per_token: 0.000001,
  18. output_cost_per_token: 0.000002,
  19. input_cost_per_request: 0.005,
  20. }
  21. );
  22. expect(cost.toString()).toBe("0.01");
  23. });
  24. test("倍率应同时作用于按次费用与 token 费用", () => {
  25. const cost = calculateRequestCost(
  26. { input_tokens: 1000, output_tokens: 2000 },
  27. {
  28. input_cost_per_token: 0.000001,
  29. output_cost_per_token: 0.000002,
  30. input_cost_per_request: 0.005,
  31. },
  32. 2
  33. );
  34. expect(cost.toString()).toBe("0.02");
  35. });
  36. test("无效的按次费用(负数/非有限)应被忽略", () => {
  37. const negativeCost = calculateRequestCost(
  38. {},
  39. {
  40. input_cost_per_request: -0.005,
  41. }
  42. );
  43. expect(negativeCost.toString()).toBe("0");
  44. const nanCost = calculateRequestCost(
  45. {},
  46. {
  47. input_cost_per_request: Number.NaN,
  48. }
  49. );
  50. expect(nanCost.toString()).toBe("0");
  51. });
  52. });