diff --git a/pom.xml b/pom.xml index b45a72f..9fe4a08 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ io.github.amithkoujalgi ollama4j - 1.0.50-SNAPSHOT + 1.0.51-SNAPSHOT Ollama4j Java library for interacting with Ollama API. diff --git a/src/test/java/io/github/amithkoujalgi/ollama4j/integrationtests/TestRealAPIs.java b/src/test/java/io/github/amithkoujalgi/ollama4j/integrationtests/TestRealAPIs.java index 846b12a..0ca633f 100644 --- a/src/test/java/io/github/amithkoujalgi/ollama4j/integrationtests/TestRealAPIs.java +++ b/src/test/java/io/github/amithkoujalgi/ollama4j/integrationtests/TestRealAPIs.java @@ -9,7 +9,6 @@ import io.github.amithkoujalgi.ollama4j.core.models.chat.OllamaChatMessageRole; import io.github.amithkoujalgi.ollama4j.core.models.chat.OllamaChatRequestBuilder; import io.github.amithkoujalgi.ollama4j.core.models.chat.OllamaChatRequestModel; import io.github.amithkoujalgi.ollama4j.core.models.chat.OllamaChatResult; -import io.github.amithkoujalgi.ollama4j.core.types.OllamaModelType; import io.github.amithkoujalgi.ollama4j.core.utils.OptionsBuilder; import java.io.File; import java.io.IOException; @@ -20,26 +19,14 @@ import java.net.http.HttpConnectTimeoutException; import java.util.List; import java.util.Objects; import java.util.Properties; +import lombok.Data; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; class TestRealAPIs { OllamaAPI ollamaAPI; - - private Properties loadProperties() { - Properties properties = new Properties(); - try (InputStream input = - getClass().getClassLoader().getResourceAsStream("test-config.properties")) { - if (input == null) { - throw new RuntimeException("Sorry, unable to find test-config.properties"); - } - properties.load(input); - return properties; - } catch (IOException e) { - throw new RuntimeException("Error loading properties", e); - } - } + Config config; private File getImageFileFromClasspath(String fileName) { ClassLoader classLoader = getClass().getClassLoader(); @@ -48,9 +35,9 @@ class TestRealAPIs { @BeforeEach void setUp() { - Properties properties = loadProperties(); - ollamaAPI = new OllamaAPI(properties.getProperty("ollama.api.url")); - ollamaAPI.setRequestTimeoutSeconds(20); + config = new Config(); + ollamaAPI = new OllamaAPI(config.getOllamaURL()); + ollamaAPI.setRequestTimeoutSeconds(config.getRequestTimeoutSeconds()); } @Test @@ -89,10 +76,10 @@ class TestRealAPIs { void testPullModel() { testEndpointReachability(); try { - ollamaAPI.pullModel(OllamaModelType.LLAMA2); + ollamaAPI.pullModel(config.getModel()); boolean found = ollamaAPI.listModels().stream() - .anyMatch(model -> model.getModelName().equals(OllamaModelType.LLAMA2)); + .anyMatch(model -> model.getModel().equalsIgnoreCase(config.getModel())); assertTrue(found); } catch (IOException | OllamaBaseException | InterruptedException | URISyntaxException e) { throw new RuntimeException(e); @@ -106,7 +93,7 @@ class TestRealAPIs { try { OllamaResult result = ollamaAPI.generate( - OllamaModelType.LLAMA2, + config.getModel(), "What is the capital of France? And what's France's connection with Mona Lisa?", new OptionsBuilder().build()); assertNotNull(result); @@ -124,7 +111,7 @@ class TestRealAPIs { try { OllamaResult result = ollamaAPI.generate( - OllamaModelType.LLAMA2, + config.getModel(), "What is the capital of France? And what's France's connection with Mona Lisa?", new OptionsBuilder().setTemperature(0.9f).build()); assertNotNull(result); @@ -140,7 +127,7 @@ class TestRealAPIs { void testChat() { testEndpointReachability(); try { - OllamaChatRequestBuilder builder = OllamaChatRequestBuilder.getInstance(OllamaModelType.LLAMA2); + OllamaChatRequestBuilder builder = OllamaChatRequestBuilder.getInstance(config.getModel()); OllamaChatRequestModel requestModel = builder.withMessage(OllamaChatMessageRole.USER, "Say hello to my little friend") .withMessage(OllamaChatMessageRole.ASSISTANT, "Seems to be a Tony Montana montage!") .withMessage(OllamaChatMessageRole.USER,"We need a montage!") @@ -160,7 +147,7 @@ class TestRealAPIs { void testChatWithSystemPrompt() { testEndpointReachability(); try { - OllamaChatRequestBuilder builder = OllamaChatRequestBuilder.getInstance(OllamaModelType.LLAMA2); + OllamaChatRequestBuilder builder = OllamaChatRequestBuilder.getInstance(config.getModel()); OllamaChatRequestModel requestModel = builder.withMessage(OllamaChatMessageRole.SYSTEM, "You are a silent bot that only says 'NI'. Do not say anything else under any circumstances!") .withMessage(OllamaChatMessageRole.USER,"We need a montage!") .build(); @@ -183,7 +170,7 @@ class TestRealAPIs { try { OllamaResult result = ollamaAPI.generateWithImageFiles( - OllamaModelType.LLAVA, + config.getImageModel(), "What is in this image?", List.of(imageFile), new OptionsBuilder().build()); @@ -202,7 +189,7 @@ class TestRealAPIs { try { OllamaResult result = ollamaAPI.generateWithImageURLs( - OllamaModelType.LLAVA, + config.getImageModel(), "What is in this image?", List.of( "https://t3.ftcdn.net/jpg/02/96/63/80/360_F_296638053_0gUVA4WVBKceGsIr7LNqRWSnkusi07dq.jpg"), @@ -215,3 +202,29 @@ class TestRealAPIs { } } } + +@Data +class Config { + private String ollamaURL; + private String model; + private String imageModel; + private int requestTimeoutSeconds; + + public Config() { + Properties properties = new Properties(); + try (InputStream input = + getClass().getClassLoader().getResourceAsStream("test-config.properties")) { + if (input == null) { + throw new RuntimeException("Sorry, unable to find test-config.properties"); + } + properties.load(input); + this.ollamaURL = properties.getProperty("ollama.url"); + this.model = properties.getProperty("ollama.model"); + this.imageModel = properties.getProperty("ollama.model.image"); + this.requestTimeoutSeconds = + Integer.parseInt(properties.getProperty("ollama.request-timeout-seconds")); + } catch (IOException e) { + throw new RuntimeException("Error loading properties", e); + } + } +} diff --git a/src/test/resources/test-config.properties b/src/test/resources/test-config.properties index 1d5d55e..1bda263 100644 --- a/src/test/resources/test-config.properties +++ b/src/test/resources/test-config.properties @@ -1,2 +1,4 @@ -ollama.api.url=http://192.168.29.223:11434 -ollama.model=llava \ No newline at end of file +ollama.url=http://localhost:11434 +ollama.model=qwen:0.5b +ollama.model.image=llava +ollama.request-timeout-seconds=120 \ No newline at end of file