1package models
  2
  3const (
  4	ProviderOpenAI InferenceProvider = "openai"
  5
  6	GPT41        ModelID = "gpt-4.1"
  7	GPT41Mini    ModelID = "gpt-4.1-mini"
  8	GPT41Nano    ModelID = "gpt-4.1-nano"
  9	GPT45Preview ModelID = "gpt-4.5-preview"
 10	GPT4o        ModelID = "gpt-4o"
 11	GPT4oMini    ModelID = "gpt-4o-mini"
 12	O1           ModelID = "o1"
 13	O1Pro        ModelID = "o1-pro"
 14	O1Mini       ModelID = "o1-mini"
 15	O3           ModelID = "o3"
 16	O3Mini       ModelID = "o3-mini"
 17	O4Mini       ModelID = "o4-mini"
 18)
 19
 20var OpenAIModels = map[ModelID]Model{
 21	GPT41: {
 22		ID:                  GPT41,
 23		Name:                "GPT 4.1",
 24		Provider:            ProviderOpenAI,
 25		APIModel:            "gpt-4.1",
 26		CostPer1MIn:         2.00,
 27		CostPer1MInCached:   0.50,
 28		CostPer1MOutCached:  0.0,
 29		CostPer1MOut:        8.00,
 30		ContextWindow:       1_047_576,
 31		DefaultMaxTokens:    20000,
 32		SupportsAttachments: true,
 33	},
 34	GPT41Mini: {
 35		ID:                  GPT41Mini,
 36		Name:                "GPT 4.1 mini",
 37		Provider:            ProviderOpenAI,
 38		APIModel:            "gpt-4.1",
 39		CostPer1MIn:         0.40,
 40		CostPer1MInCached:   0.10,
 41		CostPer1MOutCached:  0.0,
 42		CostPer1MOut:        1.60,
 43		ContextWindow:       200_000,
 44		DefaultMaxTokens:    20000,
 45		SupportsAttachments: true,
 46	},
 47	GPT41Nano: {
 48		ID:                  GPT41Nano,
 49		Name:                "GPT 4.1 nano",
 50		Provider:            ProviderOpenAI,
 51		APIModel:            "gpt-4.1-nano",
 52		CostPer1MIn:         0.10,
 53		CostPer1MInCached:   0.025,
 54		CostPer1MOutCached:  0.0,
 55		CostPer1MOut:        0.40,
 56		ContextWindow:       1_047_576,
 57		DefaultMaxTokens:    20000,
 58		SupportsAttachments: true,
 59	},
 60	GPT45Preview: {
 61		ID:                  GPT45Preview,
 62		Name:                "GPT 4.5 preview",
 63		Provider:            ProviderOpenAI,
 64		APIModel:            "gpt-4.5-preview",
 65		CostPer1MIn:         75.00,
 66		CostPer1MInCached:   37.50,
 67		CostPer1MOutCached:  0.0,
 68		CostPer1MOut:        150.00,
 69		ContextWindow:       128_000,
 70		DefaultMaxTokens:    15000,
 71		SupportsAttachments: true,
 72	},
 73	GPT4o: {
 74		ID:                  GPT4o,
 75		Name:                "GPT 4o",
 76		Provider:            ProviderOpenAI,
 77		APIModel:            "gpt-4o",
 78		CostPer1MIn:         2.50,
 79		CostPer1MInCached:   1.25,
 80		CostPer1MOutCached:  0.0,
 81		CostPer1MOut:        10.00,
 82		ContextWindow:       128_000,
 83		DefaultMaxTokens:    4096,
 84		SupportsAttachments: true,
 85	},
 86	GPT4oMini: {
 87		ID:                  GPT4oMini,
 88		Name:                "GPT 4o mini",
 89		Provider:            ProviderOpenAI,
 90		APIModel:            "gpt-4o-mini",
 91		CostPer1MIn:         0.15,
 92		CostPer1MInCached:   0.075,
 93		CostPer1MOutCached:  0.0,
 94		CostPer1MOut:        0.60,
 95		ContextWindow:       128_000,
 96		SupportsAttachments: true,
 97	},
 98	O1: {
 99		ID:                  O1,
100		Name:                "O1",
101		Provider:            ProviderOpenAI,
102		APIModel:            "o1",
103		CostPer1MIn:         15.00,
104		CostPer1MInCached:   7.50,
105		CostPer1MOutCached:  0.0,
106		CostPer1MOut:        60.00,
107		ContextWindow:       200_000,
108		DefaultMaxTokens:    50000,
109		CanReason:           true,
110		SupportsAttachments: true,
111	},
112	O1Pro: {
113		ID:                  O1Pro,
114		Name:                "o1 pro",
115		Provider:            ProviderOpenAI,
116		APIModel:            "o1-pro",
117		CostPer1MIn:         150.00,
118		CostPer1MInCached:   0.0,
119		CostPer1MOutCached:  0.0,
120		CostPer1MOut:        600.00,
121		ContextWindow:       200_000,
122		DefaultMaxTokens:    50000,
123		CanReason:           true,
124		SupportsAttachments: true,
125	},
126	O1Mini: {
127		ID:                  O1Mini,
128		Name:                "o1 mini",
129		Provider:            ProviderOpenAI,
130		APIModel:            "o1-mini",
131		CostPer1MIn:         1.10,
132		CostPer1MInCached:   0.55,
133		CostPer1MOutCached:  0.0,
134		CostPer1MOut:        4.40,
135		ContextWindow:       128_000,
136		DefaultMaxTokens:    50000,
137		CanReason:           true,
138		SupportsAttachments: true,
139	},
140	O3: {
141		ID:                  O3,
142		Name:                "o3",
143		Provider:            ProviderOpenAI,
144		APIModel:            "o3",
145		CostPer1MIn:         10.00,
146		CostPer1MInCached:   2.50,
147		CostPer1MOutCached:  0.0,
148		CostPer1MOut:        40.00,
149		ContextWindow:       200_000,
150		CanReason:           true,
151		SupportsAttachments: true,
152	},
153	O3Mini: {
154		ID:                  O3Mini,
155		Name:                "o3 mini",
156		Provider:            ProviderOpenAI,
157		APIModel:            "o3-mini",
158		CostPer1MIn:         1.10,
159		CostPer1MInCached:   0.55,
160		CostPer1MOutCached:  0.0,
161		CostPer1MOut:        4.40,
162		ContextWindow:       200_000,
163		DefaultMaxTokens:    50000,
164		CanReason:           true,
165		SupportsAttachments: false,
166	},
167	O4Mini: {
168		ID:                  O4Mini,
169		Name:                "o4 mini",
170		Provider:            ProviderOpenAI,
171		APIModel:            "o4-mini",
172		CostPer1MIn:         1.10,
173		CostPer1MInCached:   0.275,
174		CostPer1MOutCached:  0.0,
175		CostPer1MOut:        4.40,
176		ContextWindow:       128_000,
177		DefaultMaxTokens:    50000,
178		CanReason:           true,
179		SupportsAttachments: true,
180	},
181}