Fixes for Integration Tests
- Multi modality image tests to assert with containsAny instead of contains specific values - Expand Mistral functionCall test's usage metrics range
This commit is contained in:
@@ -246,7 +246,8 @@ class AnthropicChatModelIT {
|
||||
var response = this.chatModel.call(new Prompt(List.of(userMessage)));
|
||||
|
||||
logger.info(response.getResult().getOutput().getText());
|
||||
assertThat(response.getResult().getOutput().getText()).contains("banan", "apple", "basket");
|
||||
assertThat(response.getResult().getOutput().getText()).containsAnyOf("bananas", "apple", "bowl", "basket",
|
||||
"fruit stand");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -298,8 +298,7 @@ class AnthropicChatClientIT {
|
||||
// @formatter:on
|
||||
|
||||
logger.info(response);
|
||||
assertThat(response).contains("bananas", "apple");
|
||||
assertThat(response).containsAnyOf("bowl", "basket");
|
||||
assertThat(response).containsAnyOf("bananas", "apple", "bowl", "basket", "fruit stand");
|
||||
}
|
||||
|
||||
@Disabled("Currently Anthropic API does not support external image URLs")
|
||||
@@ -321,8 +320,7 @@ class AnthropicChatClientIT {
|
||||
// @formatter:on
|
||||
|
||||
logger.info(response);
|
||||
assertThat(response).contains("bananas", "apple");
|
||||
assertThat(response).containsAnyOf("bowl", "basket");
|
||||
assertThat(response).containsAnyOf("bananas", "apple", "bowl", "basket", "fruit stand");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -341,8 +339,7 @@ class AnthropicChatClientIT {
|
||||
String content = response.collectList().block().stream().collect(Collectors.joining());
|
||||
|
||||
logger.info("Response: {}", content);
|
||||
assertThat(content).contains("bananas", "apple");
|
||||
assertThat(content).containsAnyOf("bowl", "basket");
|
||||
assertThat(content).containsAnyOf("bananas", "apple", "bowl", "basket", "fruit stand");
|
||||
}
|
||||
|
||||
record ActorsFilms(String actor, List<String> movies) {
|
||||
|
||||
@@ -228,8 +228,7 @@ class AzureOpenAiChatModelIT {
|
||||
// @formatter:on
|
||||
|
||||
logger.info(response);
|
||||
assertThat(response).contains("bananas", "apple");
|
||||
assertThat(response).containsAnyOf("bowl", "basket");
|
||||
assertThat(response).containsAnyOf("bananas", "apple", "bowl", "basket", "fruit stand");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -245,7 +244,7 @@ class AzureOpenAiChatModelIT {
|
||||
.content();
|
||||
// @formatter:on
|
||||
|
||||
assertThat(response).containsAnyOf("bananas", "apple", "apples");
|
||||
assertThat(response).containsAnyOf("bananas", "apple", "bowl", "basket", "fruit stand");
|
||||
}
|
||||
|
||||
record ActorsFilms(String actor, List<String> movies) {
|
||||
|
||||
@@ -374,8 +374,7 @@ class BedrockConverseChatClientIT {
|
||||
// @formatter:on
|
||||
|
||||
logger.info(response);
|
||||
assertThat(response).contains("bananas", "apple");
|
||||
assertThat(response).containsAnyOf("bowl", "basket");
|
||||
assertThat(response).containsAnyOf("bananas", "apple", "bowl", "basket", "fruit stand");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} : {displayName} ")
|
||||
@@ -395,8 +394,7 @@ class BedrockConverseChatClientIT {
|
||||
// @formatter:on
|
||||
|
||||
logger.info(response);
|
||||
assertThat(response).contains("bananas", "apple");
|
||||
assertThat(response).containsAnyOf("bowl", "basket");
|
||||
assertThat(response).containsAnyOf("bananas", "apple", "bowl", "basket", "fruit stand");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -416,8 +414,7 @@ class BedrockConverseChatClientIT {
|
||||
String content = response.collectList().block().stream().collect(Collectors.joining());
|
||||
|
||||
logger.info("Response: {}", content);
|
||||
assertThat(content).contains("bananas", "apple");
|
||||
assertThat(content).containsAnyOf("bowl", "basket");
|
||||
assertThat(content).containsAnyOf("bananas", "apple", "bowl", "basket", "fruit stand");
|
||||
}
|
||||
|
||||
record ActorsFilms(String actor, List<String> movies) {
|
||||
|
||||
@@ -240,7 +240,8 @@ class BedrockProxyChatModelIT {
|
||||
var response = this.chatModel.call(new Prompt(List.of(userMessage)));
|
||||
|
||||
logger.info(response.getResult().getOutput().getText());
|
||||
assertThat(response.getResult().getOutput().getText()).contains("banan", "apple", "basket");
|
||||
assertThat(response.getResult().getOutput().getText()).containsAnyOf("bananas", "apple", "bowl", "basket",
|
||||
"fruit stand");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -81,7 +81,7 @@ public class BedrockNovaChatClientIT {
|
||||
.content();
|
||||
|
||||
logger.info(response);
|
||||
assertThat(response).containsAnyOf("banan", "apple", "basket");
|
||||
assertThat(response).containsAnyOf("bananas", "apple", "bowl", "basket", "fruit stand");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -263,8 +263,8 @@ class MistralAiChatModelIT {
|
||||
.call(new Prompt(List.of(userMessage), ChatOptions.builder().model(modelName).build()));
|
||||
|
||||
logger.info(response.getResult().getOutput().getText());
|
||||
assertThat(response.getResult().getOutput().getText()).contains("bananas", "apple");
|
||||
assertThat(response.getResult().getOutput().getText()).containsAnyOf("bowl", "basket", "fruit stand");
|
||||
assertThat(response.getResult().getOutput().getText()).containsAnyOf("bananas", "apple", "bowl", "basket",
|
||||
"fruit stand");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} : {displayName} ")
|
||||
@@ -304,8 +304,7 @@ class MistralAiChatModelIT {
|
||||
.map(AssistantMessage::getText)
|
||||
.collect(Collectors.joining());
|
||||
logger.info("Response: {}", content);
|
||||
assertThat(content).contains("bananas", "apple");
|
||||
assertThat(content).containsAnyOf("bowl", "basket", "fruit stand");
|
||||
assertThat(content).containsAnyOf("bananas", "apple", "bowl", "basket", "fruit stand");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -329,7 +328,7 @@ class MistralAiChatModelIT {
|
||||
logger.info("Response: {}", chatResponse);
|
||||
assertThat(chatResponse.getMetadata()).isNotNull();
|
||||
assertThat(chatResponse.getMetadata().getUsage()).isNotNull();
|
||||
assertThat(chatResponse.getMetadata().getUsage().getTotalTokens()).isLessThan(1050).isGreaterThan(750);
|
||||
assertThat(chatResponse.getMetadata().getUsage().getTotalTokens()).isLessThan(1050).isGreaterThan(650);
|
||||
}
|
||||
|
||||
record ActorsFilmsRecord(String actor, List<String> movies) {
|
||||
|
||||
@@ -68,7 +68,8 @@ class OllamaChatModelMultimodalIT extends BaseOllamaIT {
|
||||
var response = this.chatModel.call(new Prompt(List.of(userMessage)));
|
||||
|
||||
logger.info(response.getResult().getOutput().getText());
|
||||
assertThat(response.getResult().getOutput().getText()).containsAnyOf("bananas", "apple");
|
||||
assertThat(response.getResult().getOutput().getText()).containsAnyOf("bananas", "apple", "bowl", "basket",
|
||||
"fruit stand");
|
||||
}
|
||||
|
||||
@SpringBootConfiguration
|
||||
|
||||
@@ -478,8 +478,8 @@ public class OpenAiChatModelIT extends AbstractIT {
|
||||
.call(new Prompt(List.of(userMessage), OpenAiChatOptions.builder().model(modelName).build()));
|
||||
|
||||
logger.info(response.getResult().getOutput().getText());
|
||||
assertThat(response.getResult().getOutput().getText()).contains("bananas", "apple");
|
||||
assertThat(response.getResult().getOutput().getText()).containsAnyOf("bowl", "basket", "fruit stand");
|
||||
assertThat(response.getResult().getOutput().getText()).containsAnyOf("bananas", "apple", "bowl", "basket",
|
||||
"fruit stand");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -315,8 +315,7 @@ class OpenAiChatClientIT extends AbstractIT {
|
||||
// @formatter:on
|
||||
|
||||
logger.info(response);
|
||||
assertThat(response).contains("bananas", "apple");
|
||||
assertThat(response).containsAnyOf("bowl", "basket");
|
||||
assertThat(response).containsAnyOf("bananas", "apple", "bowl", "basket", "fruit stand");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} : {displayName} ")
|
||||
@@ -336,8 +335,7 @@ class OpenAiChatClientIT extends AbstractIT {
|
||||
// @formatter:on
|
||||
|
||||
logger.info(response);
|
||||
assertThat(response).contains("bananas", "apple");
|
||||
assertThat(response).containsAnyOf("bowl", "basket");
|
||||
assertThat(response).containsAnyOf("bananas", "apple", "bowl", "basket", "fruit stand");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -359,8 +357,7 @@ class OpenAiChatClientIT extends AbstractIT {
|
||||
String content = response.collectList().block().stream().collect(Collectors.joining());
|
||||
|
||||
logger.info("Response: {}", content);
|
||||
assertThat(content).contains("bananas", "apple");
|
||||
assertThat(content).containsAnyOf("bowl", "basket");
|
||||
assertThat(content).containsAnyOf("bananas", "apple", "bowl", "basket", "fruit stand");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -308,8 +308,8 @@ class GroqWithOpenAiChatModelIT {
|
||||
.call(new Prompt(List.of(userMessage), OpenAiChatOptions.builder().model(modelName).build()));
|
||||
|
||||
logger.info(response.getResult().getOutput().getText());
|
||||
assertThat(response.getResult().getOutput().getText()).contains("bananas", "apple");
|
||||
assertThat(response.getResult().getOutput().getText()).containsAnyOf("bowl", "basket");
|
||||
assertThat(response.getResult().getOutput().getText()).containsAnyOf("bananas", "apple", "bowl", "basket",
|
||||
"fruit stand");
|
||||
}
|
||||
|
||||
@Disabled("Groq does not support multi modality API")
|
||||
@@ -327,8 +327,8 @@ class GroqWithOpenAiChatModelIT {
|
||||
.call(new Prompt(List.of(userMessage), OpenAiChatOptions.builder().model(modelName).build()));
|
||||
|
||||
logger.info(response.getResult().getOutput().getText());
|
||||
assertThat(response.getResult().getOutput().getText()).contains("bananas", "apple");
|
||||
assertThat(response.getResult().getOutput().getText()).containsAnyOf("bowl", "basket");
|
||||
assertThat(response.getResult().getOutput().getText()).containsAnyOf("bananas", "apple", "bowl", "basket",
|
||||
"fruit stand");
|
||||
}
|
||||
|
||||
@Disabled("Groq does not support multi modality API")
|
||||
@@ -352,8 +352,7 @@ class GroqWithOpenAiChatModelIT {
|
||||
.map(AssistantMessage::getText)
|
||||
.collect(Collectors.joining());
|
||||
logger.info("Response: {}", content);
|
||||
assertThat(content).contains("bananas", "apple");
|
||||
assertThat(content).containsAnyOf("bowl", "basket");
|
||||
assertThat(content).containsAnyOf("bananas", "apple", "bowl", "basket", "fruit stand");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} : {displayName} ")
|
||||
|
||||
@@ -312,8 +312,8 @@ class MistralWithOpenAiChatModelIT {
|
||||
.call(new Prompt(List.of(userMessage), OpenAiChatOptions.builder().model(modelName).build()));
|
||||
|
||||
logger.info(response.getResult().getOutput().getText());
|
||||
assertThat(response.getResult().getOutput().getText()).contains("bananas", "apple");
|
||||
assertThat(response.getResult().getOutput().getText()).containsAnyOf("bowl", "basket");
|
||||
assertThat(response.getResult().getOutput().getText()).containsAnyOf("bananas", "apple", "bowl", "basket",
|
||||
"fruit stand");
|
||||
}
|
||||
|
||||
@Disabled("Mistral AI does not support multi modality API")
|
||||
@@ -356,8 +356,7 @@ class MistralWithOpenAiChatModelIT {
|
||||
.map(AssistantMessage::getText)
|
||||
.collect(Collectors.joining());
|
||||
logger.info("Response: {}", content);
|
||||
assertThat(content).contains("bananas", "apple");
|
||||
assertThat(content).containsAnyOf("bowl", "basket");
|
||||
assertThat(content).containsAnyOf("bananas", "apple", "bowl", "basket", "fruit stand");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} : {displayName} ")
|
||||
|
||||
@@ -335,8 +335,8 @@ class OllamaWithOpenAiChatModelIT {
|
||||
.call(new Prompt(List.of(userMessage), OpenAiChatOptions.builder().model(modelName).build()));
|
||||
|
||||
logger.info(response.getResult().getOutput().getText());
|
||||
assertThat(response.getResult().getOutput().getText()).contains("bananas", "apple");
|
||||
assertThat(response.getResult().getOutput().getText()).containsAnyOf("bowl", "basket");
|
||||
assertThat(response.getResult().getOutput().getText()).containsAnyOf("bananas", "apple", "bowl", "basket",
|
||||
"fruit stand");
|
||||
}
|
||||
|
||||
@Disabled("Not supported by the current Ollama API")
|
||||
@@ -354,8 +354,8 @@ class OllamaWithOpenAiChatModelIT {
|
||||
.call(new Prompt(List.of(userMessage), OpenAiChatOptions.builder().model(modelName).build()));
|
||||
|
||||
logger.info(response.getResult().getOutput().getText());
|
||||
assertThat(response.getResult().getOutput().getText()).contains("bananas", "apple");
|
||||
assertThat(response.getResult().getOutput().getText()).containsAnyOf("bowl", "basket");
|
||||
assertThat(response.getResult().getOutput().getText()).containsAnyOf("bananas", "apple", "bowl", "basket",
|
||||
"fruit stand");
|
||||
}
|
||||
|
||||
@Disabled("Not supported by the current Ollama API")
|
||||
@@ -381,8 +381,7 @@ class OllamaWithOpenAiChatModelIT {
|
||||
.map(AssistantMessage::getText)
|
||||
.collect(Collectors.joining());
|
||||
logger.info("Response: {}", content);
|
||||
assertThat(content).contains("bananas", "apple");
|
||||
assertThat(content).containsAnyOf("bowl", "basket");
|
||||
assertThat(content).containsAnyOf("bananas", "apple", "bowl", "basket", "fruit stand");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} : {displayName} ")
|
||||
|
||||
@@ -254,8 +254,8 @@ class VertexAiGeminiChatModelIT {
|
||||
// List.of(new Media(MimeTypeDetector.getMimeType(imageUrl), imageUrl)));
|
||||
// response = client.call(new Prompt(List.of(userMessage)));
|
||||
|
||||
// assertThat(response.getResult().getOutput().getContent()).contains("bananas",
|
||||
// "apple", "basket");
|
||||
// assertThat(response.getResult().getOutput().getContent())..containsAnyOf("bananas",
|
||||
// "apple", "bowl", "basket", "fruit stand");
|
||||
|
||||
// https://github.com/GoogleCloudPlatform/generative-ai/blob/main/gemini/use-cases/intro_multimodal_use_cases.ipynb
|
||||
}
|
||||
|
||||
@@ -292,8 +292,8 @@ class ZhiPuAiChatModelIT {
|
||||
.call(new Prompt(List.of(userMessage), ZhiPuAiChatOptions.builder().model(modelName).build()));
|
||||
|
||||
logger.info(response.getResult().getOutput().getText());
|
||||
assertThat(response.getResult().getOutput().getText()).contains("bananas", "apple");
|
||||
assertThat(response.getResult().getOutput().getText()).containsAnyOf("bowl", "basket");
|
||||
assertThat(response.getResult().getOutput().getText()).containsAnyOf("bananas", "apple", "bowl", "basket",
|
||||
"fruit stand");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} : {displayName} ")
|
||||
@@ -310,8 +310,8 @@ class ZhiPuAiChatModelIT {
|
||||
.call(new Prompt(List.of(userMessage), ZhiPuAiChatOptions.builder().model(modelName).build()));
|
||||
|
||||
logger.info(response.getResult().getOutput().getText());
|
||||
assertThat(response.getResult().getOutput().getText()).contains("bananas", "apple");
|
||||
assertThat(response.getResult().getOutput().getText()).containsAnyOf("bowl", "basket");
|
||||
assertThat(response.getResult().getOutput().getText()).containsAnyOf("bananas", "apple", "bowl", "basket",
|
||||
"fruit stand");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -334,8 +334,7 @@ class ZhiPuAiChatModelIT {
|
||||
.map(AssistantMessage::getText)
|
||||
.collect(Collectors.joining());
|
||||
logger.info("Response: {}", content);
|
||||
assertThat(content).contains("bananas", "apple");
|
||||
assertThat(content).containsAnyOf("bowl", "basket");
|
||||
assertThat(content).containsAnyOf("bananas", "apple", "bowl", "basket", "fruit stand");
|
||||
}
|
||||
|
||||
record ActorsFilmsRecord(String actor, List<String> movies) {
|
||||
|
||||
Reference in New Issue
Block a user