models.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  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. GPT41 ModelID = "gpt-4.1"
  24. // GEMINI
  25. GEMINI25 ModelID = "gemini-2.5"
  26. GRMINI20Flash ModelID = "gemini-2.0-flash"
  27. // GROQ
  28. QWENQwq ModelID = "qwen-qwq"
  29. // Bedrock
  30. BedrockClaude37Sonnet ModelID = "bedrock.claude-3.7-sonnet"
  31. )
  32. const (
  33. ProviderOpenAI ModelProvider = "openai"
  34. ProviderAnthropic ModelProvider = "anthropic"
  35. ProviderBedrock ModelProvider = "bedrock"
  36. ProviderGemini ModelProvider = "gemini"
  37. ProviderGROQ ModelProvider = "groq"
  38. )
  39. var SupportedModels = map[ModelID]Model{
  40. // Anthropic
  41. Claude35Sonnet: {
  42. ID: Claude35Sonnet,
  43. Name: "Claude 3.5 Sonnet",
  44. Provider: ProviderAnthropic,
  45. APIModel: "claude-3-5-sonnet-latest",
  46. CostPer1MIn: 3.0,
  47. CostPer1MInCached: 3.75,
  48. CostPer1MOutCached: 0.30,
  49. CostPer1MOut: 15.0,
  50. },
  51. Claude3Haiku: {
  52. ID: Claude3Haiku,
  53. Name: "Claude 3 Haiku",
  54. Provider: ProviderAnthropic,
  55. APIModel: "claude-3-haiku-latest",
  56. CostPer1MIn: 0.80,
  57. CostPer1MInCached: 1,
  58. CostPer1MOutCached: 0.08,
  59. CostPer1MOut: 4,
  60. },
  61. Claude37Sonnet: {
  62. ID: Claude37Sonnet,
  63. Name: "Claude 3.7 Sonnet",
  64. Provider: ProviderAnthropic,
  65. APIModel: "claude-3-7-sonnet-latest",
  66. CostPer1MIn: 3.0,
  67. CostPer1MInCached: 3.75,
  68. CostPer1MOutCached: 0.30,
  69. CostPer1MOut: 15.0,
  70. },
  71. // OpenAI
  72. GPT41: {
  73. ID: GPT41,
  74. Name: "GPT-4.1",
  75. Provider: ProviderOpenAI,
  76. APIModel: "gpt-4.1",
  77. CostPer1MIn: 2.00,
  78. CostPer1MInCached: 0.50,
  79. CostPer1MOutCached: 0,
  80. CostPer1MOut: 8.00,
  81. },
  82. // GEMINI
  83. GEMINI25: {
  84. ID: GEMINI25,
  85. Name: "Gemini 2.5 Pro",
  86. Provider: ProviderGemini,
  87. APIModel: "gemini-2.5-pro-exp-03-25",
  88. CostPer1MIn: 0,
  89. CostPer1MInCached: 0,
  90. CostPer1MOutCached: 0,
  91. CostPer1MOut: 0,
  92. },
  93. GRMINI20Flash: {
  94. ID: GRMINI20Flash,
  95. Name: "Gemini 2.0 Flash",
  96. Provider: ProviderGemini,
  97. APIModel: "gemini-2.0-flash",
  98. CostPer1MIn: 0.1,
  99. CostPer1MInCached: 0,
  100. CostPer1MOutCached: 0.025,
  101. CostPer1MOut: 0.4,
  102. },
  103. // GROQ
  104. QWENQwq: {
  105. ID: QWENQwq,
  106. Name: "Qwen Qwq",
  107. Provider: ProviderGROQ,
  108. APIModel: "qwen-qwq-32b",
  109. CostPer1MIn: 0,
  110. CostPer1MInCached: 0,
  111. CostPer1MOutCached: 0,
  112. CostPer1MOut: 0,
  113. },
  114. // Bedrock
  115. BedrockClaude37Sonnet: {
  116. ID: BedrockClaude37Sonnet,
  117. Name: "Bedrock: Claude 3.7 Sonnet",
  118. Provider: ProviderBedrock,
  119. APIModel: "anthropic.claude-3-7-sonnet-20250219-v1:0",
  120. CostPer1MIn: 3.0,
  121. CostPer1MInCached: 3.75,
  122. CostPer1MOutCached: 0.30,
  123. CostPer1MOut: 15.0,
  124. },
  125. }