1818import com .openai .client .OpenAIClientAsync ;
1919import com .openai .core .JsonValue ;
2020import com .openai .models .ResponseFormatJsonSchema ;
21+ import com .openai .models .ReasoningEffort ;
2122import com .fasterxml .jackson .core .type .TypeReference ;
2223
2324import java .util .HashMap ;
@@ -70,9 +71,14 @@ public OpenAI(LlmClientConfig config, Secrets secretStore) {
7071 if (config .maxTokens () >= 0 ) {
7172 configOptions .put (InferenceParameters .OPTION_MAX_TOKENS , String .valueOf (config .maxTokens ()));
7273 }
74+
75+ if (!config .reasoningEffort ().isBlank ()) {
76+ configOptions .put (InferenceParameters .OPTION_REASONING_EFFORT , config .reasoningEffort ());
77+ }
7378 }
7479
75- private InferenceParameters prepareParameters (InferenceParameters parameters ) {
80+ // Package-private for testing
81+ InferenceParameters prepareParameters (InferenceParameters parameters ) {
7682 setApiKey (parameters );
7783 setEndpoint (parameters );
7884 return parameters .withDefaultOptions (configOptions ::get );
@@ -183,7 +189,8 @@ public CompletableFuture<Completion.FinishReason> completeAsync(
183189 return future ;
184190 }
185191
186- private ChatCompletionCreateParams getChatCompletionCreateParams (InferenceParameters parameters , Prompt prompt ) {
192+ // Package-private for testing
193+ ChatCompletionCreateParams getChatCompletionCreateParams (InferenceParameters parameters , Prompt prompt ) {
187194 ChatCompletionCreateParams .Builder builder = ChatCompletionCreateParams .builder ()
188195 .model (ChatModel .of (parameters .get (InferenceParameters .OPTION_MODEL ).map (Object ::toString ).orElse (DEFAULT_MODEL )))
189196 .addUserMessage (prompt .toString ());
@@ -194,6 +201,8 @@ private ChatCompletionCreateParams getChatCompletionCreateParams(InferenceParame
194201 parameters .getInt (InferenceParameters .OPTION_N_PREDICT ).ifPresent (builder ::n );
195202 parameters .getDouble (InferenceParameters .OPTION_FREQUENCY_PENALTY ).ifPresent (builder ::frequencyPenalty );
196203 parameters .getDouble (InferenceParameters .OPTION_PRESENCE_PENALTY ).ifPresent (builder ::presencePenalty );
204+ parameters .get (InferenceParameters .OPTION_REASONING_EFFORT )
205+ .ifPresent (effort -> builder .reasoningEffort (ReasoningEffort .of (effort )));
197206 // Add JSON schema if specified
198207 addResponseFormat (parameters , builder );
199208
0 commit comments