Skip to content

Commit 8c99ea3

Browse files
committed
Add protable ChatOptions support
1 parent 98a3385 commit 8c99ea3

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiChatClient.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535

3636
import org.springframework.ai.azure.openai.metadata.AzureOpenAiChatResponseMetadata;
3737
import org.springframework.ai.chat.ChatClient;
38+
import org.springframework.ai.chat.ChatOptions;
3839
import org.springframework.ai.chat.ChatResponse;
3940
import org.springframework.ai.chat.Generation;
4041
import org.springframework.ai.chat.StreamingChatClient;
@@ -43,6 +44,7 @@
4344
import org.springframework.ai.chat.metadata.PromptMetadata;
4445
import org.springframework.ai.chat.metadata.PromptMetadata.PromptFilterMetadata;
4546
import org.springframework.ai.chat.prompt.Prompt;
47+
import org.springframework.ai.model.ModelOptionsUtils;
4648
import org.springframework.util.Assert;
4749

4850
/**
@@ -128,8 +130,7 @@ public Flux<ChatResponse> stream(Prompt prompt) {
128130

129131
return Flux.fromStream(chatCompletionsStream.stream()
130132
// Note: the first chat completions can be ignored when using Azure OpenAI
131-
// service which is a
132-
// known service bug.
133+
// service which is a known service bug.
133134
.skip(1)
134135
.map(ChatCompletions::getChoices)
135136
.flatMap(List::stream)
@@ -161,12 +162,14 @@ ChatCompletionsOptions toAzureChatCompletionsOptions(Prompt prompt) {
161162
}
162163

163164
if (prompt.getOptions() != null) {
164-
if (prompt.getOptions() instanceof AzureOpenAiChatOptions runtimeOptions) {
165+
if (prompt.getOptions() instanceof ChatOptions runtimeOptions) {
166+
AzureOpenAiChatOptions updatedRuntimeOptions = ModelOptionsUtils.copyToTarget(runtimeOptions,
167+
ChatOptions.class, AzureOpenAiChatOptions.class);
165168
// JSON merge doesn't due to Azure OpenAI service bug:
166169
// https://github.com/Azure/azure-sdk-for-java/issues/38183
167170
// options = ModelOptionsUtils.merge(runtimeOptions, options,
168171
// ChatCompletionsOptions.class);
169-
options = merge(runtimeOptions, options);
172+
options = merge(updatedRuntimeOptions, options);
170173
}
171174
else {
172175
throw new IllegalArgumentException("Prompt options are not of type ChatCompletionsOptions:"

0 commit comments

Comments
 (0)