diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatModel.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatModel.java index 7da34176c15..a29b1f751a7 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatModel.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatModel.java @@ -271,12 +271,12 @@ public Flux internalStream(Prompt prompt, ChatResponse previousCha return Flux.deferContextual(contextView -> { ChatCompletionRequest request = createRequest(prompt, true); - if (request.outputModalities() != null) { - if (request.outputModalities().stream().anyMatch(m -> m.equals("audio"))) { - logger.warn("Audio output is not supported for streaming requests. Removing audio output."); - throw new IllegalArgumentException("Audio output is not supported for streaming requests."); - } + if (request.outputModalities() != null + && request.outputModalities().contains(OpenAiApi.OutputModality.AUDIO)) { + logger.warn("Audio output is not supported for streaming requests. Removing audio output."); + throw new IllegalArgumentException("Audio output is not supported for streaming requests."); } + if (request.audioParameters() != null) { logger.warn("Audio parameters are not supported for streaming requests. Removing audio parameters."); throw new IllegalArgumentException("Audio parameters are not supported for streaming requests."); diff --git a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatModelIT.java b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatModelIT.java index 79f39bd118b..d36d6b89a4c 100644 --- a/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatModelIT.java +++ b/models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatModelIT.java @@ -551,8 +551,7 @@ void multiModalityOutputAudio(String modelName) throws IOException { @ParameterizedTest(name = "{0} : {displayName} ") @ValueSource(strings = { "gpt-4o-audio-preview" }) - void streamingMultiModalityOutputAudio(String modelName) throws IOException { - // var audioResource = new ClassPathResource("speech1.mp3"); + void streamingMultiModalityOutputAudio(String modelName) { var userMessage = new UserMessage("Tell me joke about Spring Framework"); assertThatThrownBy(() -> this.chatModel @@ -564,6 +563,16 @@ void streamingMultiModalityOutputAudio(String modelName) throws IOException { .build())) .collectList() .block()).isInstanceOf(IllegalArgumentException.class) + .hasMessageContaining("Audio output is not supported for streaming requests."); + + assertThatThrownBy(() -> this.chatModel + .stream(new Prompt(List.of(userMessage), + OpenAiChatOptions.builder() + .model(modelName) + .outputAudio(new AudioParameters(Voice.ALLOY, AudioResponseFormat.WAV)) + .build())) + .collectList() + .block()).isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("Audio parameters are not supported for streaming requests."); }