mirror of
				https://github.com/amithkoujalgi/ollama4j.git
				synced 2025-11-04 02:20:50 +01:00 
			
		
		
		
	Compare commits
	
		
			3 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					44bb35b168 | ||
| 
						 | 
					9832caf503 | ||
| 
						 | 
					24674ea483 | 
							
								
								
									
										4
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								pom.xml
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    <groupId>io.github.amithkoujalgi</groupId>
 | 
					    <groupId>io.github.amithkoujalgi</groupId>
 | 
				
			||||||
    <artifactId>ollama4j</artifactId>
 | 
					    <artifactId>ollama4j</artifactId>
 | 
				
			||||||
    <version>1.0.49</version>
 | 
					    <version>1.0.50</version>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <name>Ollama4j</name>
 | 
					    <name>Ollama4j</name>
 | 
				
			||||||
    <description>Java library for interacting with Ollama API.</description>
 | 
					    <description>Java library for interacting with Ollama API.</description>
 | 
				
			||||||
@@ -39,7 +39,7 @@
 | 
				
			|||||||
        <connection>scm:git:git@github.com:amithkoujalgi/ollama4j.git</connection>
 | 
					        <connection>scm:git:git@github.com:amithkoujalgi/ollama4j.git</connection>
 | 
				
			||||||
        <developerConnection>scm:git:https://github.com/amithkoujalgi/ollama4j.git</developerConnection>
 | 
					        <developerConnection>scm:git:https://github.com/amithkoujalgi/ollama4j.git</developerConnection>
 | 
				
			||||||
        <url>https://github.com/amithkoujalgi/ollama4j</url>
 | 
					        <url>https://github.com/amithkoujalgi/ollama4j</url>
 | 
				
			||||||
        <tag>v1.0.49</tag>
 | 
					        <tag>v1.0.50</tag>
 | 
				
			||||||
    </scm>
 | 
					    </scm>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <build>
 | 
					    <build>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,6 @@ import static org.junit.jupiter.api.Assertions.*;
 | 
				
			|||||||
import io.github.amithkoujalgi.ollama4j.core.OllamaAPI;
 | 
					import io.github.amithkoujalgi.ollama4j.core.OllamaAPI;
 | 
				
			||||||
import io.github.amithkoujalgi.ollama4j.core.exceptions.OllamaBaseException;
 | 
					import io.github.amithkoujalgi.ollama4j.core.exceptions.OllamaBaseException;
 | 
				
			||||||
import io.github.amithkoujalgi.ollama4j.core.models.OllamaResult;
 | 
					import io.github.amithkoujalgi.ollama4j.core.models.OllamaResult;
 | 
				
			||||||
import io.github.amithkoujalgi.ollama4j.core.types.OllamaModelType;
 | 
					 | 
				
			||||||
import io.github.amithkoujalgi.ollama4j.core.utils.OptionsBuilder;
 | 
					import io.github.amithkoujalgi.ollama4j.core.utils.OptionsBuilder;
 | 
				
			||||||
import java.io.File;
 | 
					import java.io.File;
 | 
				
			||||||
import java.io.IOException;
 | 
					import java.io.IOException;
 | 
				
			||||||
@@ -16,26 +15,14 @@ import java.net.http.HttpConnectTimeoutException;
 | 
				
			|||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
import java.util.Objects;
 | 
					import java.util.Objects;
 | 
				
			||||||
import java.util.Properties;
 | 
					import java.util.Properties;
 | 
				
			||||||
 | 
					import lombok.Data;
 | 
				
			||||||
import org.junit.jupiter.api.BeforeEach;
 | 
					import org.junit.jupiter.api.BeforeEach;
 | 
				
			||||||
import org.junit.jupiter.api.Order;
 | 
					import org.junit.jupiter.api.Order;
 | 
				
			||||||
import org.junit.jupiter.api.Test;
 | 
					import org.junit.jupiter.api.Test;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class TestRealAPIs {
 | 
					class TestRealAPIs {
 | 
				
			||||||
  OllamaAPI ollamaAPI;
 | 
					  OllamaAPI ollamaAPI;
 | 
				
			||||||
 | 
					  Config config;
 | 
				
			||||||
  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);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private File getImageFileFromClasspath(String fileName) {
 | 
					  private File getImageFileFromClasspath(String fileName) {
 | 
				
			||||||
    ClassLoader classLoader = getClass().getClassLoader();
 | 
					    ClassLoader classLoader = getClass().getClassLoader();
 | 
				
			||||||
@@ -44,9 +31,9 @@ class TestRealAPIs {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  @BeforeEach
 | 
					  @BeforeEach
 | 
				
			||||||
  void setUp() {
 | 
					  void setUp() {
 | 
				
			||||||
    Properties properties = loadProperties();
 | 
					    config = new Config();
 | 
				
			||||||
    ollamaAPI = new OllamaAPI(properties.getProperty("ollama.api.url"));
 | 
					    ollamaAPI = new OllamaAPI(config.getOllamaURL());
 | 
				
			||||||
    ollamaAPI.setRequestTimeoutSeconds(20);
 | 
					    ollamaAPI.setRequestTimeoutSeconds(config.getRequestTimeoutSeconds());
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @Test
 | 
					  @Test
 | 
				
			||||||
@@ -85,10 +72,10 @@ class TestRealAPIs {
 | 
				
			|||||||
  void testPullModel() {
 | 
					  void testPullModel() {
 | 
				
			||||||
    testEndpointReachability();
 | 
					    testEndpointReachability();
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
      ollamaAPI.pullModel(OllamaModelType.LLAMA2);
 | 
					      ollamaAPI.pullModel(config.getModel());
 | 
				
			||||||
      boolean found =
 | 
					      boolean found =
 | 
				
			||||||
          ollamaAPI.listModels().stream()
 | 
					          ollamaAPI.listModels().stream()
 | 
				
			||||||
              .anyMatch(model -> model.getModelName().equals(OllamaModelType.LLAMA2));
 | 
					              .anyMatch(model -> model.getModel().equalsIgnoreCase(config.getModel()));
 | 
				
			||||||
      assertTrue(found);
 | 
					      assertTrue(found);
 | 
				
			||||||
    } catch (IOException | OllamaBaseException | InterruptedException | URISyntaxException e) {
 | 
					    } catch (IOException | OllamaBaseException | InterruptedException | URISyntaxException e) {
 | 
				
			||||||
      throw new RuntimeException(e);
 | 
					      throw new RuntimeException(e);
 | 
				
			||||||
@@ -102,7 +89,7 @@ class TestRealAPIs {
 | 
				
			|||||||
    try {
 | 
					    try {
 | 
				
			||||||
      OllamaResult result =
 | 
					      OllamaResult result =
 | 
				
			||||||
          ollamaAPI.generate(
 | 
					          ollamaAPI.generate(
 | 
				
			||||||
              OllamaModelType.LLAMA2,
 | 
					              config.getModel(),
 | 
				
			||||||
              "What is the capital of France? And what's France's connection with Mona Lisa?",
 | 
					              "What is the capital of France? And what's France's connection with Mona Lisa?",
 | 
				
			||||||
              new OptionsBuilder().build());
 | 
					              new OptionsBuilder().build());
 | 
				
			||||||
      assertNotNull(result);
 | 
					      assertNotNull(result);
 | 
				
			||||||
@@ -120,7 +107,7 @@ class TestRealAPIs {
 | 
				
			|||||||
    try {
 | 
					    try {
 | 
				
			||||||
      OllamaResult result =
 | 
					      OllamaResult result =
 | 
				
			||||||
          ollamaAPI.generate(
 | 
					          ollamaAPI.generate(
 | 
				
			||||||
              OllamaModelType.LLAMA2,
 | 
					              config.getModel(),
 | 
				
			||||||
              "What is the capital of France? And what's France's connection with Mona Lisa?",
 | 
					              "What is the capital of France? And what's France's connection with Mona Lisa?",
 | 
				
			||||||
              new OptionsBuilder().setTemperature(0.9f).build());
 | 
					              new OptionsBuilder().setTemperature(0.9f).build());
 | 
				
			||||||
      assertNotNull(result);
 | 
					      assertNotNull(result);
 | 
				
			||||||
@@ -139,7 +126,7 @@ class TestRealAPIs {
 | 
				
			|||||||
    try {
 | 
					    try {
 | 
				
			||||||
      OllamaResult result =
 | 
					      OllamaResult result =
 | 
				
			||||||
          ollamaAPI.generateWithImageFiles(
 | 
					          ollamaAPI.generateWithImageFiles(
 | 
				
			||||||
              OllamaModelType.LLAVA,
 | 
					              config.getImageModel(),
 | 
				
			||||||
              "What is in this image?",
 | 
					              "What is in this image?",
 | 
				
			||||||
              List.of(imageFile),
 | 
					              List.of(imageFile),
 | 
				
			||||||
              new OptionsBuilder().build());
 | 
					              new OptionsBuilder().build());
 | 
				
			||||||
@@ -158,7 +145,7 @@ class TestRealAPIs {
 | 
				
			|||||||
    try {
 | 
					    try {
 | 
				
			||||||
      OllamaResult result =
 | 
					      OllamaResult result =
 | 
				
			||||||
          ollamaAPI.generateWithImageURLs(
 | 
					          ollamaAPI.generateWithImageURLs(
 | 
				
			||||||
              OllamaModelType.LLAVA,
 | 
					              config.getImageModel(),
 | 
				
			||||||
              "What is in this image?",
 | 
					              "What is in this image?",
 | 
				
			||||||
              List.of(
 | 
					              List.of(
 | 
				
			||||||
                  "https://t3.ftcdn.net/jpg/02/96/63/80/360_F_296638053_0gUVA4WVBKceGsIr7LNqRWSnkusi07dq.jpg"),
 | 
					                  "https://t3.ftcdn.net/jpg/02/96/63/80/360_F_296638053_0gUVA4WVBKceGsIr7LNqRWSnkusi07dq.jpg"),
 | 
				
			||||||
@@ -171,3 +158,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);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,2 +1,4 @@
 | 
				
			|||||||
ollama.api.url=http://192.168.29.223:11434
 | 
					ollama.url=http://localhost:11434
 | 
				
			||||||
ollama.model=llava
 | 
					ollama.model=qwen:0.5b
 | 
				
			||||||
 | 
					ollama.model.image=llava
 | 
				
			||||||
 | 
					ollama.request-timeout-seconds=120
 | 
				
			||||||
		Reference in New Issue
	
	Block a user