From 59b36d14dab72d76f2f3d49ce9385a69faaabbba Mon Sep 17 00:00:00 2001 From: Mark Pollack Date: Mon, 12 May 2025 23:22:12 -0400 Subject: [PATCH] Remove deepseek options form openaiapi - These options are exclusive to deepseek and can be added to the deepseek model --- .../ai/openai/api/OpenAiApi.java | 15 ++-------- .../ai/openai/metadata/OpenAiUsageTests.java | 28 ++++++++----------- 2 files changed, 15 insertions(+), 28 deletions(-) diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java index e2b2e433b..e3dc77757 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/api/OpenAiApi.java @@ -1605,14 +1605,6 @@ public class OpenAiApi { * completion). * @param promptTokensDetails Breakdown of tokens used in the prompt. * @param completionTokenDetails Breakdown of tokens used in a completion. - * @param promptCacheHitTokens Number of tokens in the prompt that were served from - * (util for - * DeepSeek - * support). - * @param promptCacheMissTokens Number of tokens in the prompt that were not served - * (util for - * DeepSeek - * support). */ @JsonInclude(Include.NON_NULL) @JsonIgnoreProperties(ignoreUnknown = true) @@ -1621,12 +1613,11 @@ public class OpenAiApi { @JsonProperty("prompt_tokens") Integer promptTokens, @JsonProperty("total_tokens") Integer totalTokens, @JsonProperty("prompt_tokens_details") PromptTokensDetails promptTokensDetails, - @JsonProperty("completion_tokens_details") CompletionTokenDetails completionTokenDetails, - @JsonProperty("prompt_cache_hit_tokens") Integer promptCacheHitTokens, - @JsonProperty("prompt_cache_miss_tokens") Integer promptCacheMissTokens) { // @formatter:on + @JsonProperty("completion_tokens_details") CompletionTokenDetails completionTokenDetails + ) { // @formatter:on public Usage(Integer completionTokens, Integer promptTokens, Integer totalTokens) { - this(completionTokens, promptTokens, totalTokens, null, null, null, null); + this(completionTokens, promptTokens, totalTokens, null, null); } /** diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/metadata/OpenAiUsageTests.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/metadata/OpenAiUsageTests.java index 63c0a5a6b..97664d201 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/metadata/OpenAiUsageTests.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/metadata/OpenAiUsageTests.java @@ -80,7 +80,7 @@ class OpenAiUsageTests { @Test void whenPromptAndCompletionTokensDetailsIsNull() { - OpenAiApi.Usage openAiUsage = new OpenAiApi.Usage(100, 200, 300, null, null, null, null); + OpenAiApi.Usage openAiUsage = new OpenAiApi.Usage(100, 200, 300, null, null); DefaultUsage usage = getDefaultUsage(openAiUsage); assertThat(usage.getTotalTokens()).isEqualTo(300); OpenAiApi.Usage nativeUsage = (OpenAiApi.Usage) usage.getNativeUsage(); @@ -90,7 +90,7 @@ class OpenAiUsageTests { @Test void whenCompletionTokenDetailsIsNull() { - OpenAiApi.Usage openAiUsage = new OpenAiApi.Usage(100, 200, 300, null, null, null, null); + OpenAiApi.Usage openAiUsage = new OpenAiApi.Usage(100, 200, 300, null, null); DefaultUsage usage = getDefaultUsage(openAiUsage); assertThat(usage.getTotalTokens()).isEqualTo(300); OpenAiApi.Usage nativeUsage = (OpenAiApi.Usage) usage.getNativeUsage(); @@ -100,7 +100,7 @@ class OpenAiUsageTests { @Test void whenReasoningTokensIsNull() { OpenAiApi.Usage openAiUsage = new OpenAiApi.Usage(100, 200, 300, null, - new OpenAiApi.Usage.CompletionTokenDetails(null, null, null, null), null, null); + new OpenAiApi.Usage.CompletionTokenDetails(null, null, null, null)); DefaultUsage usage = getDefaultUsage(openAiUsage); OpenAiApi.Usage nativeUsage = (OpenAiApi.Usage) usage.getNativeUsage(); assertThat(nativeUsage.completionTokenDetails().reasoningTokens()).isEqualTo(null); @@ -109,7 +109,7 @@ class OpenAiUsageTests { @Test void whenCompletionTokenDetailsIsPresent() { OpenAiApi.Usage openAiUsage = new OpenAiApi.Usage(100, 200, 300, null, - new OpenAiApi.Usage.CompletionTokenDetails(50, null, null, null), null, null); + new OpenAiApi.Usage.CompletionTokenDetails(50, null, null, null)); DefaultUsage usage = getDefaultUsage(openAiUsage); OpenAiApi.Usage nativeUsage = (OpenAiApi.Usage) usage.getNativeUsage(); assertThat(nativeUsage.completionTokenDetails().reasoningTokens()).isEqualTo(50); @@ -121,7 +121,7 @@ class OpenAiUsageTests { @Test void whenAcceptedPredictionTokensIsPresent() { OpenAiApi.Usage openAiUsage = new OpenAiApi.Usage(100, 200, 300, null, - new OpenAiApi.Usage.CompletionTokenDetails(null, 75, null, null), null, null); + new OpenAiApi.Usage.CompletionTokenDetails(null, 75, null, null)); DefaultUsage usage = getDefaultUsage(openAiUsage); OpenAiApi.Usage nativeUsage = (OpenAiApi.Usage) usage.getNativeUsage(); assertThat(nativeUsage.completionTokenDetails().reasoningTokens()).isEqualTo(null); @@ -133,7 +133,7 @@ class OpenAiUsageTests { @Test void whenAudioTokensIsPresent() { OpenAiApi.Usage openAiUsage = new OpenAiApi.Usage(100, 200, 300, null, - new OpenAiApi.Usage.CompletionTokenDetails(null, null, 125, null), null, null); + new OpenAiApi.Usage.CompletionTokenDetails(null, null, 125, null)); DefaultUsage usage = getDefaultUsage(openAiUsage); OpenAiApi.Usage nativeUsage = (OpenAiApi.Usage) usage.getNativeUsage(); assertThat(nativeUsage.completionTokenDetails().reasoningTokens()).isEqualTo(null); @@ -145,7 +145,7 @@ class OpenAiUsageTests { @Test void whenRejectedPredictionTokensIsNull() { OpenAiApi.Usage openAiUsage = new OpenAiApi.Usage(100, 200, 300, null, - new OpenAiApi.Usage.CompletionTokenDetails(null, null, null, null), null, null); + new OpenAiApi.Usage.CompletionTokenDetails(null, null, null, null)); DefaultUsage usage = getDefaultUsage(openAiUsage); OpenAiApi.Usage nativeUsage = (OpenAiApi.Usage) usage.getNativeUsage(); assertThat(nativeUsage.completionTokenDetails().reasoningTokens()).isEqualTo(null); @@ -159,7 +159,7 @@ class OpenAiUsageTests { @Test void whenRejectedPredictionTokensIsPresent() { OpenAiApi.Usage openAiUsage = new OpenAiApi.Usage(100, 200, 300, null, - new OpenAiApi.Usage.CompletionTokenDetails(null, null, null, 25), null, null); + new OpenAiApi.Usage.CompletionTokenDetails(null, null, null, 25)); DefaultUsage usage = getDefaultUsage(openAiUsage); OpenAiApi.Usage nativeUsage = (OpenAiApi.Usage) usage.getNativeUsage(); assertThat(nativeUsage.completionTokenDetails().reasoningTokens()).isEqualTo(null); @@ -171,7 +171,7 @@ class OpenAiUsageTests { @Test void whenCacheTokensIsNull() { OpenAiApi.Usage openAiUsage = new OpenAiApi.Usage(100, 200, 300, - new OpenAiApi.Usage.PromptTokensDetails(null, null), null, null, null); + new OpenAiApi.Usage.PromptTokensDetails(null, null), null); DefaultUsage usage = getDefaultUsage(openAiUsage); OpenAiApi.Usage nativeUsage = (OpenAiApi.Usage) usage.getNativeUsage(); assertThat(nativeUsage.promptTokensDetails().audioTokens()).isEqualTo(null); @@ -181,7 +181,7 @@ class OpenAiUsageTests { @Test void whenCacheTokensIsPresent() { OpenAiApi.Usage openAiUsage = new OpenAiApi.Usage(100, 200, 300, - new OpenAiApi.Usage.PromptTokensDetails(99, 15), null, null, null); + new OpenAiApi.Usage.PromptTokensDetails(99, 15), null); DefaultUsage usage = getDefaultUsage(openAiUsage); OpenAiApi.Usage nativeUsage = (OpenAiApi.Usage) usage.getNativeUsage(); assertThat(nativeUsage.promptTokensDetails().audioTokens()).isEqualTo(99); @@ -191,25 +191,21 @@ class OpenAiUsageTests { @Test void whenPromptCacheHitTokensIsPresent() { OpenAiApi.Usage openAiUsage = new OpenAiApi.Usage(100, 200, 300, - new OpenAiApi.Usage.PromptTokensDetails(99, 15), null, 150, null); + new OpenAiApi.Usage.PromptTokensDetails(99, 15), null); DefaultUsage usage = getDefaultUsage(openAiUsage); OpenAiApi.Usage nativeUsage = (OpenAiApi.Usage) usage.getNativeUsage(); assertThat(nativeUsage.promptTokensDetails().audioTokens()).isEqualTo(99); assertThat(nativeUsage.promptTokensDetails().cachedTokens()).isEqualTo(15); - assertThat(nativeUsage.promptCacheHitTokens()).isEqualTo(150); - assertThat(nativeUsage.promptCacheMissTokens()).isNull(); } @Test void whenPromptCacheMissTokensIsPresent() { OpenAiApi.Usage openAiUsage = new OpenAiApi.Usage(100, 200, 300, - new OpenAiApi.Usage.PromptTokensDetails(99, 15), null, null, 80); + new OpenAiApi.Usage.PromptTokensDetails(99, 15), null); DefaultUsage usage = getDefaultUsage(openAiUsage); OpenAiApi.Usage nativeUsage = (OpenAiApi.Usage) usage.getNativeUsage(); assertThat(nativeUsage.promptTokensDetails().audioTokens()).isEqualTo(99); assertThat(nativeUsage.promptTokensDetails().cachedTokens()).isEqualTo(15); - assertThat(nativeUsage.promptCacheMissTokens()).isEqualTo(80); - assertThat(nativeUsage.promptCacheHitTokens()).isNull(); } }