From 328b12ffbe1077d5ec7e5d5bbd85bc034926470d Mon Sep 17 00:00:00 2001 From: akubesti Date: Thu, 11 Sep 2025 16:38:01 +0700 Subject: [PATCH 1/2] feat: add new OpenAI models with proper temperature parameter handling - Add GPT 4.1 series and o1/o3/o4 models with temperature compatibility fixes - Remove gpt-5/gpt-5-mini models due to organization verification restrictions - Fix 400 errors for models that only support default temperature values --- src/lib/providers/index.ts | 6 +++++- src/lib/providers/openai.ts | 40 ++++++++++++++++++++++++++++--------- 2 files changed, 36 insertions(+), 10 deletions(-) diff --git a/src/lib/providers/index.ts b/src/lib/providers/index.ts index 1b6bb2f..3b3815f 100644 --- a/src/lib/providers/index.ts +++ b/src/lib/providers/index.ts @@ -120,7 +120,11 @@ export const getAvailableChatModelProviders = async () => { model: new ChatOpenAI({ apiKey: customOpenAiApiKey, modelName: customOpenAiModelName, - temperature: 0.7, + ...((() => { + const temperatureRestrictedModels = ['gpt-5-nano', 'o1', 'o3-mini', 'o4-mini']; + const isTemperatureRestricted = temperatureRestrictedModels.some(restrictedModel => customOpenAiModelName.includes(restrictedModel)); + return isTemperatureRestricted ? {} : { temperature: 0.7 }; + })()), configuration: { baseURL: customOpenAiApiUrl, }, diff --git a/src/lib/providers/openai.ts b/src/lib/providers/openai.ts index 7e26763..c15b35b 100644 --- a/src/lib/providers/openai.ts +++ b/src/lib/providers/openai.ts @@ -26,6 +26,10 @@ const openaiChatModels: Record[] = [ displayName: 'GPT-4 omni', key: 'gpt-4o', }, + { + displayName: 'GPT-4o (2024-05-13)', + key: 'gpt-4o-2024-05-13', + }, { displayName: 'GPT-4 omni mini', key: 'gpt-4o-mini', @@ -47,12 +51,20 @@ const openaiChatModels: Record[] = [ key: 'gpt-5-nano', }, { - displayName: 'GPT 5 mini', - key: 'gpt-5-mini', + displayName: 'GPT 5 Chat Latest', + key: 'gpt-5-chat-latest', }, { - displayName: 'GPT 5', - key: 'gpt-5', + displayName: 'o1', + key: 'o1', + }, + { + displayName: 'o3 Mini', + key: 'o3-mini', + }, + { + displayName: 'o4 Mini', + key: 'o4-mini', }, ]; @@ -76,13 +88,23 @@ export const loadOpenAIChatModels = async () => { const chatModels: Record = {}; openaiChatModels.forEach((model) => { + // Models that only support temperature = 1 + const temperatureRestrictedModels = ['gpt-5-nano', 'o1', 'o3-mini', 'o4-mini']; + const isTemperatureRestricted = temperatureRestrictedModels.some(restrictedModel => model.key.includes(restrictedModel)); + + const modelConfig: any = { + apiKey: openaiApiKey, + modelName: model.key, + }; + + // Only add temperature if the model supports it + if (!isTemperatureRestricted) { + modelConfig.temperature = 0.7; + } + chatModels[model.key] = { displayName: model.displayName, - model: new ChatOpenAI({ - apiKey: openaiApiKey, - modelName: model.key, - temperature: model.key.includes('gpt-5') ? 1 : 0.7, - }) as unknown as BaseChatModel, + model: new ChatOpenAI(modelConfig) as unknown as BaseChatModel, }; }); From 6f367c34a89fd7523b568ef9b994ae3fbc6ccc26 Mon Sep 17 00:00:00 2001 From: akubesti Date: Fri, 12 Sep 2025 22:22:16 +0700 Subject: [PATCH 2/2] feat: add gpt-5, gpt-5-mini, o3 models and remove gpt-5-chat-latest - Add new OpenAI models: gpt-5, gpt-5-mini, and o3 series - Fix temperature parameter handling for o3 models - Update models list to ensure compatibility --- src/lib/providers/index.ts | 2 +- src/lib/providers/openai.ts | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/lib/providers/index.ts b/src/lib/providers/index.ts index 3b3815f..00ba60f 100644 --- a/src/lib/providers/index.ts +++ b/src/lib/providers/index.ts @@ -121,7 +121,7 @@ export const getAvailableChatModelProviders = async () => { apiKey: customOpenAiApiKey, modelName: customOpenAiModelName, ...((() => { - const temperatureRestrictedModels = ['gpt-5-nano', 'o1', 'o3-mini', 'o4-mini']; + const temperatureRestrictedModels = ['gpt-5-nano','gpt-5','gpt-5-mini','o1', 'o3', 'o3-mini', 'o4-mini']; const isTemperatureRestricted = temperatureRestrictedModels.some(restrictedModel => customOpenAiModelName.includes(restrictedModel)); return isTemperatureRestricted ? {} : { temperature: 0.7 }; })()), diff --git a/src/lib/providers/openai.ts b/src/lib/providers/openai.ts index c15b35b..828f0d8 100644 --- a/src/lib/providers/openai.ts +++ b/src/lib/providers/openai.ts @@ -51,13 +51,21 @@ const openaiChatModels: Record[] = [ key: 'gpt-5-nano', }, { - displayName: 'GPT 5 Chat Latest', - key: 'gpt-5-chat-latest', + displayName: 'GPT 5', + key: 'gpt-5', + }, + { + displayName: 'GPT 5 Mini', + key: 'gpt-5-mini', }, { displayName: 'o1', key: 'o1', }, + { + displayName: 'o3', + key: 'o3', + }, { displayName: 'o3 Mini', key: 'o3-mini', @@ -89,7 +97,7 @@ export const loadOpenAIChatModels = async () => { openaiChatModels.forEach((model) => { // Models that only support temperature = 1 - const temperatureRestrictedModels = ['gpt-5-nano', 'o1', 'o3-mini', 'o4-mini']; + const temperatureRestrictedModels = ['gpt-5-nano','gpt-5','gpt-5-mini','o1', 'o3', 'o3-mini', 'o4-mini']; const isTemperatureRestricted = temperatureRestrictedModels.some(restrictedModel => model.key.includes(restrictedModel)); const modelConfig: any = {