2929import com .azure .ai .openai .OpenAIAsyncClient ;
3030import com .azure .ai .openai .OpenAIClient ;
3131import com .azure .ai .openai .OpenAIClientBuilder ;
32- import com .azure .ai .openai .models .ChatChoice ;
33- import com .azure .ai .openai .models .ChatCompletions ;
34- import com .azure .ai .openai .models .ChatCompletionsFunctionToolCall ;
35- import com .azure .ai .openai .models .ChatCompletionsFunctionToolDefinition ;
36- import com .azure .ai .openai .models .ChatCompletionsFunctionToolDefinitionFunction ;
37- import com .azure .ai .openai .models .ChatCompletionsJsonResponseFormat ;
38- import com .azure .ai .openai .models .ChatCompletionsOptions ;
39- import com .azure .ai .openai .models .ChatCompletionsResponseFormat ;
40- import com .azure .ai .openai .models .ChatCompletionsTextResponseFormat ;
41- import com .azure .ai .openai .models .ChatCompletionsToolCall ;
42- import com .azure .ai .openai .models .ChatCompletionsToolDefinition ;
43- import com .azure .ai .openai .models .ChatMessageContentItem ;
44- import com .azure .ai .openai .models .ChatMessageImageContentItem ;
45- import com .azure .ai .openai .models .ChatMessageImageUrl ;
46- import com .azure .ai .openai .models .ChatMessageTextContentItem ;
47- import com .azure .ai .openai .models .ChatRequestAssistantMessage ;
48- import com .azure .ai .openai .models .ChatRequestMessage ;
49- import com .azure .ai .openai .models .ChatRequestSystemMessage ;
50- import com .azure .ai .openai .models .ChatRequestToolMessage ;
51- import com .azure .ai .openai .models .ChatRequestUserMessage ;
52- import com .azure .ai .openai .models .CompletionsFinishReason ;
53- import com .azure .ai .openai .models .ContentFilterResultsForPrompt ;
54- import com .azure .ai .openai .models .FunctionCall ;
32+ import com .azure .ai .openai .implementation .accesshelpers .ChatCompletionsOptionsAccessHelper ;
33+ import com .azure .ai .openai .models .*;
5534import com .azure .core .util .BinaryData ;
5635import io .micrometer .observation .Observation ;
5736import io .micrometer .observation .ObservationRegistry ;
@@ -206,7 +185,7 @@ public ChatResponse call(Prompt prompt) {
206185 this .observationRegistry )
207186 .observe (() -> {
208187 ChatCompletionsOptions options = toAzureChatCompletionsOptions (prompt );
209- options .setStream (false );
188+ ChatCompletionsOptionsAccessHelper .setStream (options , false );
210189
211190 ChatCompletions chatCompletions = this .openAIClient .getChatCompletions (options .getModel (), options );
212191 ChatResponse chatResponse = toChatResponse (chatCompletions );
@@ -230,7 +209,7 @@ public Flux<ChatResponse> stream(Prompt prompt) {
230209
231210 return Flux .deferContextual (contextView -> {
232211 ChatCompletionsOptions options = toAzureChatCompletionsOptions (prompt );
233- options .setStream (true );
212+ ChatCompletionsOptionsAccessHelper .setStream (options , true );
234213
235214 Flux <ChatCompletions > chatCompletionsStream = this .openAIAsyncClient
236215 .getChatCompletionsStream (options .getModel (), options );
@@ -493,7 +472,16 @@ private ChatCompletionsOptions merge(ChatCompletionsOptions fromAzureOptions,
493472 }
494473
495474 ChatCompletionsOptions mergedAzureOptions = new ChatCompletionsOptions (fromAzureOptions .getMessages ());
496- mergedAzureOptions .setStream (fromAzureOptions .isStream ());
475+
476+ ChatCompletionsOptionsAccessHelper .setStream (mergedAzureOptions ,
477+ fromAzureOptions .isStream () != null ? fromAzureOptions .isStream () : false );
478+
479+ ChatCompletionsOptionsAccessHelper .setStream (mergedAzureOptions ,
480+ fromAzureOptions .isStream () != null ? fromAzureOptions .isStream () : false );
481+
482+ ChatCompletionsOptionsAccessHelper .setStreamOptions (mergedAzureOptions ,
483+ fromAzureOptions .getStreamOptions () != null ? fromAzureOptions .getStreamOptions ()
484+ : toSpringAiOptions .getStreamOptions ());
497485
498486 mergedAzureOptions .setMaxTokens ((fromAzureOptions .getMaxTokens () != null ) ? fromAzureOptions .getMaxTokens ()
499487 : toSpringAiOptions .getMaxTokens ());
@@ -640,8 +628,13 @@ private ChatCompletionsOptions merge(AzureOpenAiChatOptions fromSpringAiOptions,
640628 private ChatCompletionsOptions copy (ChatCompletionsOptions fromOptions ) {
641629
642630 ChatCompletionsOptions copyOptions = new ChatCompletionsOptions (fromOptions .getMessages ());
643- copyOptions .setStream (fromOptions .isStream ());
644631
632+ if (fromOptions .isStream () != null ) {
633+ ChatCompletionsOptionsAccessHelper .setStream (copyOptions , fromOptions .isStream ());
634+ }
635+ if (fromOptions .getStreamOptions () != null ) {
636+ ChatCompletionsOptionsAccessHelper .setStreamOptions (copyOptions , fromOptions .getStreamOptions ());
637+ }
645638 if (fromOptions .getMaxTokens () != null ) {
646639 copyOptions .setMaxTokens (fromOptions .getMaxTokens ());
647640 }
0 commit comments