fix: OpenAiChatOptions support transfer webSearchOptions
Unit test to veriy OpenAiChatOptions.fromOptions.webSearchOptions
Fixes: 3377
Signed-off-by: lambochen <lambochen@yeah.net>
(cherry picked from commit 4621c812cc)
This commit is contained in:
@@ -49,6 +49,7 @@ import org.springframework.util.Assert;
|
||||
* @author Mariusz Bernacki
|
||||
* @author Thomas Vitale
|
||||
* @author Ilayaperumal Gopinathan
|
||||
* @author lambochen
|
||||
* @since 0.8.0
|
||||
*/
|
||||
@JsonInclude(Include.NON_NULL)
|
||||
@@ -266,6 +267,7 @@ public class OpenAiChatOptions implements ToolCallingChatOptions {
|
||||
.store(fromOptions.getStore())
|
||||
.metadata(fromOptions.getMetadata())
|
||||
.reasoningEffort(fromOptions.getReasoningEffort())
|
||||
.webSearchOptions(fromOptions.getWebSearchOptions())
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
@@ -30,6 +30,7 @@ import org.springframework.ai.openai.api.ResponseFormat;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.springframework.ai.openai.api.OpenAiApi.ChatCompletionRequest.AudioParameters.Voice.ALLOY;
|
||||
import static org.springframework.ai.openai.api.OpenAiApi.ChatCompletionRequest.WebSearchOptions.SearchContextSize.MEDIUM;
|
||||
|
||||
/**
|
||||
* Tests for {@link OpenAiChatOptions}.
|
||||
@@ -259,4 +260,24 @@ class OpenAiChatOptionsTests {
|
||||
assertThat(options.getStopSequences()).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testFromOptions_webSearchOptions() {
|
||||
var chatOptions = OpenAiChatOptions.builder()
|
||||
.webSearchOptions(new OpenAiApi.ChatCompletionRequest.WebSearchOptions(MEDIUM,
|
||||
new OpenAiApi.ChatCompletionRequest.WebSearchOptions.UserLocation("type",
|
||||
new OpenAiApi.ChatCompletionRequest.WebSearchOptions.UserLocation.Approximate("beijing",
|
||||
"china", "region", "UTC+8"))))
|
||||
.build();
|
||||
var target = OpenAiChatOptions.fromOptions(chatOptions);
|
||||
assertThat(target.getWebSearchOptions()).isNotNull();
|
||||
assertThat(target.getWebSearchOptions().searchContextSize()).isEqualTo(MEDIUM);
|
||||
assertThat(target.getWebSearchOptions().userLocation()).isNotNull();
|
||||
assertThat(target.getWebSearchOptions().userLocation().type()).isEqualTo("type");
|
||||
assertThat(target.getWebSearchOptions().userLocation().approximate()).isNotNull();
|
||||
assertThat(target.getWebSearchOptions().userLocation().approximate().city()).isEqualTo("beijing");
|
||||
assertThat(target.getWebSearchOptions().userLocation().approximate().country()).isEqualTo("china");
|
||||
assertThat(target.getWebSearchOptions().userLocation().approximate().region()).isEqualTo("region");
|
||||
assertThat(target.getWebSearchOptions().userLocation().approximate().timezone()).isEqualTo("UTC+8");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user