models.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package credit
  2. import (
  3. "math"
  4. "strings"
  5. )
  6. var modelArray = []string{
  7. "o1",
  8. "gpt-4o",
  9. "gpt-4.1",
  10. "o3-mini",
  11. "moonshot-v1-32k",
  12. "deepseek-r1",
  13. "moonshot-v1-8k",
  14. "gpt-4.1-mini",
  15. "gpt-3.5-turbo",
  16. "qwen-max",
  17. "doubao1.5-pro-256k",
  18. "deepseek-v3",
  19. "qwq-32b-preview",
  20. "gpt-4o-mini",
  21. "qwen2.5-14b-instruct-1m",
  22. "gpt-4.1-nano",
  23. "doubao1.5-pro",
  24. "doubao1.5-pro-32k",
  25. "chatglm3",
  26. "qwen-turbo",
  27. "doubao1.5-lite-32k",
  28. }
  29. var priceArray = []float64{
  30. 0.01,
  31. 0.001667,
  32. 0.001333,
  33. 0.000733,
  34. 0.000548,
  35. 0.000365,
  36. 0.000274,
  37. 0.000267,
  38. 0.00025,
  39. 0.000219,
  40. 0.000205,
  41. 0.000183,
  42. 0.000137,
  43. 0.0001,
  44. 0.000068,
  45. 0.000067,
  46. 0.000046,
  47. 0.000046,
  48. 0.000023,
  49. 0.000014,
  50. 0.000014,
  51. }
  52. func getModelName(modelName string) string {
  53. // 将字符串转换为小写
  54. return strings.ToLower(modelName)
  55. }
  56. func GetModelPrice(modelName string) (model string, price float64) {
  57. difyModelName := getModelName(modelName)
  58. for i, v := range modelArray {
  59. if v == difyModelName {
  60. return v, priceArray[i]
  61. }
  62. }
  63. return modelArray[0], priceArray[0]
  64. }
  65. func ComputePrice(price float64, tokens uint64) float64 {
  66. scale := float64(1000000)
  67. return math.Round(price*float64(tokens)*scale) / scale
  68. }
  69. // Subtraction 保留小数点后6位的精确减法
  70. func Subtraction(number1, number2 float64) float64 {
  71. d1 := number1 * 1000000
  72. d2 := number2 * 1000000
  73. res := math.Floor(d1-d2) / 1000000
  74. return res
  75. }