Skip to content

Commit 4621c81

Browse files
lambochensobychacko
authored andcommitted
fix: OpenAiChatOptions support transfer webSearchOptions
Unit test to veriy OpenAiChatOptions.fromOptions.webSearchOptions Fixes: 3377 Auto-cherry-pick to 1.0.x Signed-off-by: lambochen <lambochen@yeah.net>
1 parent cb97d9c commit 4621c81

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
* @author Mariusz Bernacki
5050
* @author Thomas Vitale
5151
* @author Ilayaperumal Gopinathan
52+
* @author lambochen
5253
* @since 0.8.0
5354
*/
5455
@JsonInclude(Include.NON_NULL)
@@ -266,6 +267,7 @@ public static OpenAiChatOptions fromOptions(OpenAiChatOptions fromOptions) {
266267
.store(fromOptions.getStore())
267268
.metadata(fromOptions.getMetadata())
268269
.reasoningEffort(fromOptions.getReasoningEffort())
270+
.webSearchOptions(fromOptions.getWebSearchOptions())
269271
.build();
270272
}
271273

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

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030

3131
import static org.assertj.core.api.Assertions.assertThat;
3232
import static org.springframework.ai.openai.api.OpenAiApi.ChatCompletionRequest.AudioParameters.Voice.ALLOY;
33+
import static org.springframework.ai.openai.api.OpenAiApi.ChatCompletionRequest.WebSearchOptions.SearchContextSize.MEDIUM;
3334

3435
/**
3536
* Tests for {@link OpenAiChatOptions}.
@@ -259,4 +260,24 @@ void testDefaultValues() {
259260
assertThat(options.getStopSequences()).isNull();
260261
}
261262

263+
@Test
264+
void testFromOptions_webSearchOptions() {
265+
var chatOptions = OpenAiChatOptions.builder()
266+
.webSearchOptions(new OpenAiApi.ChatCompletionRequest.WebSearchOptions(MEDIUM,
267+
new OpenAiApi.ChatCompletionRequest.WebSearchOptions.UserLocation("type",
268+
new OpenAiApi.ChatCompletionRequest.WebSearchOptions.UserLocation.Approximate("beijing",
269+
"china", "region", "UTC+8"))))
270+
.build();
271+
var target = OpenAiChatOptions.fromOptions(chatOptions);
272+
assertThat(target.getWebSearchOptions()).isNotNull();
273+
assertThat(target.getWebSearchOptions().searchContextSize()).isEqualTo(MEDIUM);
274+
assertThat(target.getWebSearchOptions().userLocation()).isNotNull();
275+
assertThat(target.getWebSearchOptions().userLocation().type()).isEqualTo("type");
276+
assertThat(target.getWebSearchOptions().userLocation().approximate()).isNotNull();
277+
assertThat(target.getWebSearchOptions().userLocation().approximate().city()).isEqualTo("beijing");
278+
assertThat(target.getWebSearchOptions().userLocation().approximate().country()).isEqualTo("china");
279+
assertThat(target.getWebSearchOptions().userLocation().approximate().region()).isEqualTo("region");
280+
assertThat(target.getWebSearchOptions().userLocation().approximate().timezone()).isEqualTo("UTC+8");
281+
}
282+
262283
}

0 commit comments

Comments
 (0)