Skip to content

Commit 4a9bcc5

Browse files
committed
New OpenAI models: o4_mini, o3
1 parent 0aed43e commit 4a9bcc5

File tree

5 files changed

+34
-19
lines changed

5 files changed

+34
-19
lines changed

openai-client/src/main/scala/io/cequence/openaiscala/service/impl/OpenAIChatCompletionServiceImpl.scala

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,18 @@ trait ChatCompletionBodyMaker {
6161
ModelId.o1_mini_2024_09_12
6262
)
6363

64-
private val regularO1Or3Models = Set(
64+
private val regularOModels = Set(
6565
ModelId.o1,
6666
ModelId.o1_2024_12_17,
67+
ModelId.o1_pro,
68+
ModelId.o1_pro_2025_03_19,
69+
ModelId.o3,
70+
ModelId.o3_2025_04_16,
6771
ModelId.o3_mini,
68-
ModelId.o3_mini_2025_01_31
72+
ModelId.o3_mini_2025_01_31,
73+
ModelId.o3_mini_high,
74+
ModelId.o4_mini,
75+
ModelId.o4_mini_2025_04_16
6976
)
7077

7178
protected def createBodyParamsForChatCompletion(
@@ -84,12 +91,12 @@ trait ChatCompletionBodyMaker {
8491

8592
val messageJsons = messagesFinal.map(Json.toJson(_)(messageWrites))
8693

87-
// O1/3 models need some special treatment... revisit this later
94+
// regular O models need some special treatment... revisit this later
8895
val settingsFinal =
8996
if (o1PreviewModels.contains(settings.model))
9097
ChatCompletionSettingsConversions.o1Preview(settings)
91-
else if (regularO1Or3Models.contains(settings.model))
92-
ChatCompletionSettingsConversions.o1And3(settings)
98+
else if (regularOModels.contains(settings.model))
99+
ChatCompletionSettingsConversions.o(settings)
93100
else
94101
settings
95102

openai-core/src/main/scala/io/cequence/openaiscala/domain/ModelId.scala

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,12 @@ object ModelId {
177177
// 16k context, gpt_3_5_turbo will point to this model from Dec 11, 2023
178178
val gpt_3_5_turbo_1106 = "gpt-3.5-turbo-1106"
179179

180-
// Q*/Strawberry
180+
// O models - Q*/Strawberry
181+
182+
val o4_mini = "o4-mini"
183+
val o4_mini_2025_04_16 = "o4-mini-2025-04-16"
184+
val o3 = "o3"
185+
val o3_2025_04_16 = "o3-2025-04-16"
181186
val o3_mini = "o3-mini"
182187
val o3_mini_2025_01_31 = "o3-mini-2025-01-31"
183188
// High-compute version of o3-mini

openai-core/src/main/scala/io/cequence/openaiscala/service/OpenAIChatCompletionExtra.scala

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -192,13 +192,16 @@ object OpenAIChatCompletionExtra {
192192
ModelId.gpt_4o,
193193
ModelId.gpt_4o_2024_08_06,
194194
ModelId.gpt_4o_2024_11_20,
195+
ModelId.o4_mini_2025_04_16,
196+
ModelId.o3,
197+
ModelId.o3_2025_04_16,
198+
ModelId.o3_mini,
199+
ModelId.o3_mini_high,
200+
ModelId.o3_mini_2025_01_31,
195201
ModelId.o1,
196202
ModelId.o1_2024_12_17,
197203
ModelId.o1_pro,
198204
ModelId.o1_pro_2025_03_19,
199-
ModelId.o3_mini,
200-
ModelId.o3_mini_high,
201-
ModelId.o3_mini_2025_01_31,
202205
NonOpenAIModelId.gemini_2_5_pro_preview_03_25,
203206
NonOpenAIModelId.gemini_2_5_pro_exp_03_25,
204207
NonOpenAIModelId.gemini_2_0_flash,

openai-core/src/main/scala/io/cequence/openaiscala/service/adapter/ChatCompletionSettingsConversions.scala

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,14 @@ object ChatCompletionSettingsConversions {
4444
extra_params =
4545
settings.extra_params + ("max_completion_tokens" -> settings.max_tokens.get)
4646
),
47-
Some("O1/3 models don't support max_tokens, converting to max_completion_tokens")
47+
Some("O models don't support max_tokens, converting to max_completion_tokens")
4848
),
4949
// temperature
5050
FieldConversionDef(
5151
settings => settings.temperature.isDefined && settings.temperature.get != 1,
5252
_.copy(temperature = Some(1d)),
5353
Some(
54-
"O1/3 models don't support temperature values other than the default of 1, converting to 1."
54+
"O models don't support temperature values other than the default of 1, converting to 1."
5555
),
5656
warning = true
5757
),
@@ -60,7 +60,7 @@ object ChatCompletionSettingsConversions {
6060
settings => settings.top_p.isDefined && settings.top_p.get != 1,
6161
_.copy(top_p = Some(1d)),
6262
Some(
63-
"O1/3 models don't support top p values other than the default of 1, converting to 1."
63+
"O models don't support top p values other than the default of 1, converting to 1."
6464
),
6565
warning = true
6666
),
@@ -69,7 +69,7 @@ object ChatCompletionSettingsConversions {
6969
settings => settings.presence_penalty.isDefined && settings.presence_penalty.get != 0,
7070
_.copy(presence_penalty = Some(0d)),
7171
Some(
72-
"O1/3 models don't support presence penalty values other than the default of 0, converting to 0."
72+
"O models don't support presence penalty values other than the default of 0, converting to 0."
7373
),
7474
warning = true
7575
),
@@ -78,7 +78,7 @@ object ChatCompletionSettingsConversions {
7878
settings => settings.frequency_penalty.isDefined && settings.frequency_penalty.get != 0,
7979
_.copy(frequency_penalty = Some(0d)),
8080
Some(
81-
"O1/3 models don't support frequency penalty values other than the default of 0, converting to 0."
81+
"O models don't support frequency penalty values other than the default of 0, converting to 0."
8282
),
8383
warning = true
8484
),
@@ -87,7 +87,7 @@ object ChatCompletionSettingsConversions {
8787
settings => settings.parallel_tool_calls.isDefined,
8888
_.copy(parallel_tool_calls = None),
8989
Some(
90-
"O1/3 models don't support parallel tool calls, converting to None."
90+
"O models don't support parallel tool calls, converting to None."
9191
),
9292
warning = true
9393
)
@@ -106,7 +106,7 @@ object ChatCompletionSettingsConversions {
106106
warning = true
107107
)
108108

109-
val o1And3: SettingsConversion = generic(oBaseConversions)
109+
val o: SettingsConversion = generic(oBaseConversions)
110110

111111
val o1Preview: SettingsConversion = generic(o1PreviewConversions)
112112

openai-examples/src/main/scala/io/cequence/openaiscala/examples/CreateChatCompletion.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ object CreateChatCompletion extends Example {
1717
.createChatCompletion(
1818
messages = messages,
1919
settings = CreateChatCompletionSettings(
20-
model = ModelId.gpt_4_1,
21-
temperature = Some(0),
22-
max_tokens = Some(4000),
20+
model = ModelId.o3,
21+
max_tokens = Some(1000),
22+
temperature = Some(0.1),
2323
service_tier = Some(ServiceTier.auto),
2424
metadata = Map()
2525
)

0 commit comments

Comments
 (0)