models.go 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package models
  2. import "maps"
  3. type (
  4. ModelID string
  5. ModelProvider string
  6. )
  7. type Model struct {
  8. ID ModelID `json:"id"`
  9. Name string `json:"name"`
  10. Provider ModelProvider `json:"provider"`
  11. APIModel string `json:"api_model"`
  12. CostPer1MIn float64 `json:"cost_per_1m_in"`
  13. CostPer1MOut float64 `json:"cost_per_1m_out"`
  14. CostPer1MInCached float64 `json:"cost_per_1m_in_cached"`
  15. CostPer1MOutCached float64 `json:"cost_per_1m_out_cached"`
  16. ContextWindow int64 `json:"context_window"`
  17. DefaultMaxTokens int64 `json:"default_max_tokens"`
  18. CanReason bool `json:"can_reason"`
  19. }
  20. // Model IDs
  21. const ( // GEMINI
  22. // GROQ
  23. QWENQwq ModelID = "qwen-qwq"
  24. // Bedrock
  25. BedrockClaude37Sonnet ModelID = "bedrock.claude-3.7-sonnet"
  26. )
  27. const (
  28. ProviderBedrock ModelProvider = "bedrock"
  29. ProviderGROQ ModelProvider = "groq"
  30. // ForTests
  31. ProviderMock ModelProvider = "__mock"
  32. )
  33. var SupportedModels = map[ModelID]Model{
  34. //
  35. // // GEMINI
  36. // GEMINI25: {
  37. // ID: GEMINI25,
  38. // Name: "Gemini 2.5 Pro",
  39. // Provider: ProviderGemini,
  40. // APIModel: "gemini-2.5-pro-exp-03-25",
  41. // CostPer1MIn: 0,
  42. // CostPer1MInCached: 0,
  43. // CostPer1MOutCached: 0,
  44. // CostPer1MOut: 0,
  45. // },
  46. //
  47. // GRMINI20Flash: {
  48. // ID: GRMINI20Flash,
  49. // Name: "Gemini 2.0 Flash",
  50. // Provider: ProviderGemini,
  51. // APIModel: "gemini-2.0-flash",
  52. // CostPer1MIn: 0.1,
  53. // CostPer1MInCached: 0,
  54. // CostPer1MOutCached: 0.025,
  55. // CostPer1MOut: 0.4,
  56. // },
  57. //
  58. // // GROQ
  59. // QWENQwq: {
  60. // ID: QWENQwq,
  61. // Name: "Qwen Qwq",
  62. // Provider: ProviderGROQ,
  63. // APIModel: "qwen-qwq-32b",
  64. // CostPer1MIn: 0,
  65. // CostPer1MInCached: 0,
  66. // CostPer1MOutCached: 0,
  67. // CostPer1MOut: 0,
  68. // },
  69. //
  70. // // Bedrock
  71. BedrockClaude37Sonnet: {
  72. ID: BedrockClaude37Sonnet,
  73. Name: "Bedrock: Claude 3.7 Sonnet",
  74. Provider: ProviderBedrock,
  75. APIModel: "anthropic.claude-3-7-sonnet-20250219-v1:0",
  76. CostPer1MIn: 3.0,
  77. CostPer1MInCached: 3.75,
  78. CostPer1MOutCached: 0.30,
  79. CostPer1MOut: 15.0,
  80. },
  81. }
  82. func init() {
  83. maps.Copy(SupportedModels, AnthropicModels)
  84. maps.Copy(SupportedModels, OpenAIModels)
  85. maps.Copy(SupportedModels, GeminiModels)
  86. }