Portable ChatOptions ignored by OpenAiChatModel

When calling the OpenAiChatModel with ChatOptions, they are always ignored. Options are considered only when using OpenAiChatOptions or FunctionCallingOptions.

Signed-off-by: Thomas Vitale <ThomasVitale@users.noreply.github.com>
This commit is contained in:
Thomas Vitale
2024-11-27 18:38:53 +01:00
committed by Christian Tzolov
parent 20ccbca79b
commit d0a0c878f8
2 changed files with 4 additions and 2 deletions

View File

@@ -473,7 +473,7 @@ public class OpenAiChatModel extends AbstractToolCallSupport implements ChatMode
updatedRuntimeOptions = ModelOptionsUtils.copyToTarget(((FunctionCallingOptions) prompt.getOptions()),
FunctionCallingOptions.class, OpenAiChatOptions.class);
}
else if (prompt.getOptions() instanceof OpenAiChatOptions) {
else {
updatedRuntimeOptions = ModelOptionsUtils.copyToTarget(prompt.getOptions(), ChatOptions.class,
OpenAiChatOptions.class);
}

View File

@@ -33,6 +33,7 @@ import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.ai.chat.prompt.ChatOptionsBuilder;
import reactor.core.publisher.Flux;
import org.springframework.ai.chat.client.ChatClient;
@@ -441,10 +442,11 @@ public class OpenAiChatModelIT extends AbstractIT {
List.of(new Media(MimeTypeUtils.parseMimeType("audio/mp3"), audioResource)));
ChatResponse response = chatModel
.call(new Prompt(List.of(userMessage), OpenAiChatOptions.builder().withModel(modelName).build()));
.call(new Prompt(List.of(userMessage), ChatOptionsBuilder.builder().withModel(modelName).build()));
logger.info(response.getResult().getOutput().getContent());
assertThat(response.getResult().getOutput().getContent()).containsIgnoringCase("hobbits");
assertThat(response.getMetadata().getModel()).containsIgnoringCase(modelName);
}
@ParameterizedTest(name = "{0} : {displayName} ")