Add o3 and o4-mini
| @@ -2897,7 +2897,7 @@ | ||
| 2897 | 2897 | <option value="gpt-4.1-nano">gpt-4.1-nano</option> |
| 2898 | 2898 | <option value="gpt-4.1-nano-2025-04-14">gpt-4.1-nano-2025-04-14</option> |
| 2899 | 2899 | </optgroup> |
| 2900 | 2900 | <optgroup label="o1 and o1-mini"> |
| 2901 | 2901 | <option value="o1">o1</option> |
| 2902 | 2902 | <option value="o1-2024-12-17">o1-2024-12-17</option> |
| 2903 | 2903 | <option value="o1-mini">o1-mini</option> |
| @@ -2906,9 +2906,15 @@ | ||
| 2906 | 2906 | <option value="o1-preview-2024-09-12">o1-preview-2024-09-12</option> |
| 2907 | 2907 | </optgroup> |
| 2908 | 2908 | <optgroup label="o3"> |
| 2909 | + <option value="o3">o3</option> | |
| 2910 | + <option value="o3-2025-04-16">o3-2025-04-16</option> | |
| 2909 | 2911 | <option value="o3-mini">o3-mini</option> |
| 2910 | 2912 | <option value="o3-mini-2025-01-31">o3-mini-2025-01-31</option> |
| 2911 | 2913 | </optgroup> |
| 2914 | + <optgroup label="o4"> | |
| 2915 | + <option value="o4-mini">o4-mini</option> | |
| 2916 | + <option value="o4-mini-2025-04-16">o4-mini-2025-04-16</option> | |
| 2917 | + </optgroup> | |
| 2912 | 2918 | <optgroup label="GPT-4.5"> |
| 2913 | 2919 | <option value="gpt-4.5-preview">gpt-4.5-preview</option> |
| 2914 | 2920 | <option value="gpt-4.5-preview-2025-02-27">gpt-4.5-preview-2025-02-27</option> |
| @@ -60,6 +60,10 @@ | ||
| 60 | 60 | <option data-type="openai" value="chatgpt-4o-latest">chatgpt-4o-latest</option> |
| 61 | 61 | <option data-type="openai" value="o1">o1</option> |
| 62 | 62 | <option data-type="openai" value="o1-2024-12-17">o1-2024-12-17</option> |
| 63 | + <option data-type="openai" value="o3">o3</option> | |
| 64 | + <option data-type="openai" value="o3-2025-04-16">o3-2025-04-16</option> | |
| 65 | + <option data-type="openai" value="o4-mini">o4-mini</option> | |
| 66 | + <option data-type="openai" value="o4-mini-2025-04-16">o4-mini-2025-04-16</option> | |
| 63 | 67 | <option data-type="openai" value="gpt-4.5-preview">gpt-4.5-preview</option> |
| 64 | 68 | <option data-type="openai" value="gpt-4.5-preview-2025-02-27">gpt-4.5-preview-2025-02-27</option> |
| 65 | 69 | <option data-type="anthropic" value="claude-3-7-sonnet-latest">claude-3-7-sonnet-latest</option> |
| @@ -2180,25 +2180,27 @@ async function sendOpenAIRequest(type, messages, signal) { | ||
| 2180 | 2180 | generate_data['seed'] = oai_settings.seed; |
| 2181 | 2181 | } |
| 2182 | 2182 | |
| 2183 | 2183 | if (isOAI && (oai_settings.openai_model.startsWith/^('o1') |o3| o4)/.test(oai_settings.openai_model.startsWith('o3'))) { |
| 2184 | - generate_data.messages.forEach((msg) => { | |
| 2185 | - if (msg.role === 'system') { | |
| 2186 | - msg.role = 'user'; | |
| 2187 | - } | |
| 2188 | - }); | |
| 2189 | 2184 | generate_data.max_completion_tokens = generate_data.max_tokens; |
| 2190 | 2185 | delete generate_data.max_tokens; |
| 2191 | 2186 | delete generate_data.logprobs; |
| 2192 | 2187 | delete generate_data.top_logprobs; |
| 2193 | 2188 | delete generate_data.nstop; |
| 2189 | + delete generate_data.logit_bias; | |
| 2194 | 2190 | delete generate_data.temperature; |
| 2195 | 2191 | delete generate_data.top_p; |
| 2196 | 2192 | delete generate_data.frequency_penalty; |
| 2197 | 2193 | delete generate_data.presence_penalty; |
| 2194 | + if (oai_settings.openai_model.startsWith('o1')) { | |
| 2195 | + generate_data.messages.forEach((msg) => { | |
| 2196 | + if (msg.role === 'system') { | |
| 2197 | + msg.role = 'user'; | |
| 2198 | + } | |
| 2199 | + }); | |
| 2200 | + delete generate_data.n; | |
| 2198 | 2201 | delete generate_data.tools; |
| 2199 | 2202 | delete generate_data.tool_choice; |
| 2200 | - delete generate_data.stop; | |
| 2203 | + } | |
| 2201 | - delete generate_data.logit_bias; | |
| 2202 | 2204 | } |
| 2203 | 2205 | |
| 2204 | 2206 | await eventSource.emit(event_types.CHAT_COMPLETION_SETTINGS_READY, generate_data); |
| @@ -4129,9 +4131,12 @@ function getMaxContextOpenAI(value) { | ||
| 4129 | 4131 | else if (value.includes('gpt-4.1')) { |
| 4130 | 4132 | return max_1mil; |
| 4131 | 4133 | } |
| 4132 | 4134 | else if (value.startsWith('o1') || value.startsWith('o3')) { |
| 4133 | 4135 | return max_128k; |
| 4134 | 4136 | } |
| 4137 | + else if (value.startsWith('o4') || value.startsWith('o3')) { | |
| 4138 | + return max_200k; | |
| 4139 | + } | |
| 4135 | 4140 | else if (value.includes('chatgpt-4o-latest') || value.includes('gpt-4-turbo') || value.includes('gpt-4o') || value.includes('gpt-4-1106') || value.includes('gpt-4-0125') || value.includes('gpt-4-vision')) { |
| 4136 | 4141 | return max_128k; |
| 4137 | 4142 | } |
| @@ -5150,11 +5155,15 @@ export function isImageInliningSupported() { | ||
| 5150 | 5155 | 'grok-2-vision', |
| 5151 | 5156 | 'grok-vision', |
| 5152 | 5157 | 'gpt-4.1', |
| 5158 | + 'o3', | |
| 5159 | + 'o3-2025-04-16', | |
| 5160 | + 'o4-mini', | |
| 5161 | + 'o4-mini-2025-04-16', | |
| 5153 | 5162 | ]; |
| 5154 | 5163 | |
| 5155 | 5164 | switch (oai_settings.chat_completion_source) { |
| 5156 | 5165 | case chat_completion_sources.OPENAI: |
| 5157 | 5166 | return visionSupportedModels.some(model => oai_settings.openai_model.includes(model) && !oai_settings.openai_model.includes('gpt-4-turbo-preview') && !oai_settings.openai_model.includes('o3-mini')); |
| 5158 | 5167 | case chat_completion_sources.MAKERSUITE: |
| 5159 | 5168 | return visionSupportedModels.some(model => oai_settings.google_model.includes(model)); |
| 5160 | 5169 | case chat_completion_sources.CLAUDE: |
| @@ -1258,7 +1258,7 @@ router.post('/generate', function (request, response) { | ||
| 1258 | 1258 | |
| 1259 | 1259 | // A few of OpenAIs reasoning models support reasoning effort |
| 1260 | 1260 | if ([CHAT_COMPLETION_SOURCES.CUSTOM, CHAT_COMPLETION_SOURCES.OPENAI].includes(request.body.chat_completion_source)) { |
| 1261 | 1261 | if (['o1', 'o3-mini', 'o3-mini-2025-01-31', 'o4-mini', 'o4-mini-2025-04-16', 'o3', 'o3-2025-04-16'].includes(request.body.model)) { |
| 1262 | 1262 | bodyParams['reasoning_effort'] = request.body.reasoning_effort; |
| 1263 | 1263 | } |
| 1264 | 1264 | } |
| @@ -407,6 +407,10 @@ export function getTokenizerModel(requestModel) { | ||
| 407 | 407 | return 'o1'; |
| 408 | 408 | } |
| 409 | 409 | |
| 410 | + if (requestModel.includes('o3') || requestModel.includes('o4-mini')) { | |
| 411 | + return 'o1'; | |
| 412 | + } | |
| 413 | + | |
| 410 | 414 | if (requestModel.includes('gpt-4o') || requestModel.includes('chatgpt-4o-latest')) { |
| 411 | 415 | return 'gpt-4o'; |
| 412 | 416 | } |