models.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. package models
  2. type (
  3. ModelID string
  4. ModelProvider string
  5. )
  6. type Model struct {
  7. ID ModelID `json:"id"`
  8. Name string `json:"name"`
  9. Provider ModelProvider `json:"provider"`
  10. APIModel string `json:"api_model"`
  11. CostPer1MIn float64 `json:"cost_per_1m_in"`
  12. CostPer1MOut float64 `json:"cost_per_1m_out"`
  13. CostPer1MInCached float64 `json:"cost_per_1m_in_cached"`
  14. CostPer1MOutCached float64 `json:"cost_per_1m_out_cached"`
  15. }
  16. // Model IDs
  17. const (
  18. // Anthropic
  19. Claude35Sonnet ModelID = "claude-3.5-sonnet"
  20. Claude3Haiku ModelID = "claude-3-haiku"
  21. Claude37Sonnet ModelID = "claude-3.7-sonnet"
  22. // OpenAI
  23. GPT4o ModelID = "gpt-4o"
  24. // GEMINI
  25. GEMINI25 ModelID = "gemini-2.5"
  26. GRMINI20Flash ModelID = "gemini-2.0-flash"
  27. // GROQ
  28. QWENQwq ModelID = "qwen-qwq"
  29. )
  30. const (
  31. ProviderOpenAI ModelProvider = "openai"
  32. ProviderAnthropic ModelProvider = "anthropic"
  33. ProviderGemini ModelProvider = "gemini"
  34. ProviderGROQ ModelProvider = "groq"
  35. )
  36. var SupportedModels = map[ModelID]Model{
  37. // Anthropic
  38. Claude35Sonnet: {
  39. ID: Claude35Sonnet,
  40. Name: "Claude 3.5 Sonnet",
  41. Provider: ProviderAnthropic,
  42. APIModel: "claude-3-5-sonnet-latest",
  43. CostPer1MIn: 3.0,
  44. CostPer1MInCached: 3.75,
  45. CostPer1MOutCached: 0.30,
  46. CostPer1MOut: 15.0,
  47. },
  48. Claude3Haiku: {
  49. ID: Claude3Haiku,
  50. Name: "Claude 3 Haiku",
  51. Provider: ProviderAnthropic,
  52. APIModel: "claude-3-haiku-latest",
  53. CostPer1MIn: 0.80,
  54. CostPer1MInCached: 1,
  55. CostPer1MOutCached: 0.08,
  56. CostPer1MOut: 4,
  57. },
  58. Claude37Sonnet: {
  59. ID: Claude37Sonnet,
  60. Name: "Claude 3.7 Sonnet",
  61. Provider: ProviderAnthropic,
  62. APIModel: "claude-3-7-sonnet-latest",
  63. CostPer1MIn: 3.0,
  64. CostPer1MInCached: 3.75,
  65. CostPer1MOutCached: 0.30,
  66. CostPer1MOut: 15.0,
  67. },
  68. // OpenAI
  69. GPT4o: {
  70. ID: GPT4o,
  71. Name: "GPT-4o",
  72. Provider: ProviderOpenAI,
  73. APIModel: "gpt-4o",
  74. CostPer1MIn: 2.50,
  75. CostPer1MInCached: 1.25,
  76. CostPer1MOutCached: 0,
  77. CostPer1MOut: 10.00,
  78. },
  79. // GEMINI
  80. GEMINI25: {
  81. ID: GEMINI25,
  82. Name: "Gemini 2.5 Pro",
  83. Provider: ProviderGemini,
  84. APIModel: "gemini-2.5-pro-exp-03-25",
  85. CostPer1MIn: 0,
  86. CostPer1MInCached: 0,
  87. CostPer1MOutCached: 0,
  88. CostPer1MOut: 0,
  89. },
  90. GRMINI20Flash: {
  91. ID: GRMINI20Flash,
  92. Name: "Gemini 2.0 Flash",
  93. Provider: ProviderGemini,
  94. APIModel: "gemini-2.0-flash",
  95. CostPer1MIn: 0.1,
  96. CostPer1MInCached: 0,
  97. CostPer1MOutCached: 0.025,
  98. CostPer1MOut: 0.4,
  99. },
  100. // GROQ
  101. QWENQwq: {
  102. ID: QWENQwq,
  103. Name: "Qwen Qwq",
  104. Provider: ProviderGROQ,
  105. APIModel: "qwen-qwq-32b",
  106. CostPer1MIn: 0,
  107. CostPer1MInCached: 0,
  108. CostPer1MOutCached: 0,
  109. CostPer1MOut: 0,
  110. },
  111. }