Skip to content

Commit e157775

Browse files
apappascsilayaperumalg
authored andcommitted
feat: add and update openai reasoning_effort tests
Signed-off-by: Alexandros Pappas <apappascs@gmail.com>
1 parent d1aa8d4 commit e157775

File tree

2 files changed

+31
-5
lines changed

2 files changed

+31
-5
lines changed

models/spring-ai-openai/src/test/java/org/springframework/ai/openai/api/OpenAiApiIT.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import okhttp3.mockwebserver.MockResponse;
2424
import okhttp3.mockwebserver.MockWebServer;
2525
import okhttp3.mockwebserver.RecordedRequest;
26-
import org.junit.jupiter.api.Disabled;
2726
import org.junit.jupiter.api.Test;
2827
import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;
2928
import org.junit.jupiter.params.ParameterizedTest;
@@ -76,13 +75,13 @@ void chatCompletionStream() {
7675
}
7776

7877
@Test
79-
@Disabled("The reasoning_effort option is only available in o1 models.")
8078
void validateReasoningTokens() {
8179
ChatCompletionMessage userMessage = new ChatCompletionMessage(
82-
"If a train travels 100 miles in 2 hours, what is its average speed?", ChatCompletionMessage.Role.USER);
83-
ChatCompletionRequest request = new ChatCompletionRequest(List.of(userMessage), "o1", null, null, null, null,
80+
"Are there an infinite number of prime numbers such that n mod 4 == 3? Think through the steps and respond.",
81+
ChatCompletionMessage.Role.USER);
82+
ChatCompletionRequest request = new ChatCompletionRequest(List.of(userMessage), "gpt-5", null, null, null, null,
8483
null, null, null, null, null, null, null, null, null, null, null, null, false, null, null, null, null,
85-
null, null, null, "low", null, null);
84+
null, null, null, "high", null, null);
8685
ResponseEntity<ChatCompletion> response = this.openAiApi.chatCompletionEntity(request);
8786

8887
assertThat(response).isNotNull();

models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatModelIT.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -789,6 +789,33 @@ void streamWebSearchAnnotationsTest() {
789789
logger.info("Full Content: {}", fullContent);
790790
}
791791

792+
@Test
793+
void testReasoningEffortParameter() {
794+
OpenAiChatOptions chatOptions = OpenAiChatOptions.builder().model("gpt-5").reasoningEffort("high").build();
795+
796+
Prompt prompt = new Prompt(
797+
"Are there an infinite number of prime numbers such that n mod 4 == 3? Think through the steps and respond.",
798+
chatOptions);
799+
ChatResponse response = this.chatModel.call(prompt);
800+
801+
assertThat(response).isNotNull();
802+
assertThat(response.getResults()).isNotEmpty();
803+
assertThat(response.getMetadata()).isNotNull();
804+
assertThat(response.getMetadata().getUsage()).isNotNull();
805+
806+
// Verify that reasoning tokens were used
807+
Usage usage = response.getMetadata().getUsage();
808+
if (usage instanceof DefaultUsage defaultUsage) {
809+
Object nativeUsage = defaultUsage.getNativeUsage();
810+
if (nativeUsage instanceof OpenAiApi.Usage openAiUsage) {
811+
OpenAiApi.Usage.CompletionTokenDetails completionTokenDetails = openAiUsage.completionTokenDetails();
812+
assertThat(completionTokenDetails).isNotNull();
813+
assertThat(completionTokenDetails.reasoningTokens()).isNotNull();
814+
assertThat(completionTokenDetails.reasoningTokens()).isPositive();
815+
}
816+
}
817+
}
818+
792819
record ActorsFilmsRecord(String actor, List<String> movies) {
793820

794821
}

0 commit comments

Comments
 (0)