forked from Mirror/ollama4j
		
	Updated javadoc
This commit is contained in:
		
							
								
								
									
										4
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								pom.xml
									
									
									
									
									
								
							@@ -63,6 +63,10 @@
 | 
				
			|||||||
                <groupId>org.apache.maven.plugins</groupId>
 | 
					                <groupId>org.apache.maven.plugins</groupId>
 | 
				
			||||||
                <artifactId>maven-javadoc-plugin</artifactId>
 | 
					                <artifactId>maven-javadoc-plugin</artifactId>
 | 
				
			||||||
                <version>3.5.0</version>
 | 
					                <version>3.5.0</version>
 | 
				
			||||||
 | 
					                <configuration>
 | 
				
			||||||
 | 
					                    <!-- to disable the "missing" warnings. Remove the doclint to enable warnings-->
 | 
				
			||||||
 | 
					                    <doclint>all,-missing</doclint>
 | 
				
			||||||
 | 
					                </configuration>
 | 
				
			||||||
                <executions>
 | 
					                <executions>
 | 
				
			||||||
                    <execution>
 | 
					                    <execution>
 | 
				
			||||||
                        <id>attach-javadocs</id>
 | 
					                        <id>attach-javadocs</id>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -38,7 +38,7 @@ import java.util.*;
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
 * The base Ollama API class.
 | 
					 * The base Ollama API class.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@SuppressWarnings("DuplicatedCode")
 | 
					@SuppressWarnings({"DuplicatedCode", "resource"})
 | 
				
			||||||
public class OllamaAPI {
 | 
					public class OllamaAPI {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final Logger logger = LoggerFactory.getLogger(OllamaAPI.class);
 | 
					    private static final Logger logger = LoggerFactory.getLogger(OllamaAPI.class);
 | 
				
			||||||
@@ -99,12 +99,7 @@ public class OllamaAPI {
 | 
				
			|||||||
        HttpClient httpClient = HttpClient.newHttpClient();
 | 
					        HttpClient httpClient = HttpClient.newHttpClient();
 | 
				
			||||||
        HttpRequest httpRequest = null;
 | 
					        HttpRequest httpRequest = null;
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            httpRequest =
 | 
					            httpRequest = getRequestBuilderDefault(new URI(url)).header("Accept", "application/json").header("Content-type", "application/json").GET().build();
 | 
				
			||||||
                    getRequestBuilderDefault(new URI(url))
 | 
					 | 
				
			||||||
                            .header("Accept", "application/json")
 | 
					 | 
				
			||||||
                            .header("Content-type", "application/json")
 | 
					 | 
				
			||||||
                            .GET()
 | 
					 | 
				
			||||||
                            .build();
 | 
					 | 
				
			||||||
        } catch (URISyntaxException e) {
 | 
					        } catch (URISyntaxException e) {
 | 
				
			||||||
            throw new RuntimeException(e);
 | 
					            throw new RuntimeException(e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -123,19 +118,17 @@ public class OllamaAPI {
 | 
				
			|||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Provides a list of running models and details about each model currently loaded into memory.
 | 
					     * Provides a list of running models and details about each model currently loaded into memory.
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @return ModelsProcessResponse
 | 
					     * @return ModelsProcessResponse containing details about the running models
 | 
				
			||||||
 | 
					     * @throws IOException          if an I/O error occurs during the HTTP request
 | 
				
			||||||
 | 
					     * @throws InterruptedException if the operation is interrupted
 | 
				
			||||||
 | 
					     * @throws OllamaBaseException  if the response indicates an error status
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public ModelsProcessResponse ps() throws IOException, InterruptedException, OllamaBaseException {
 | 
					    public ModelsProcessResponse ps() throws IOException, InterruptedException, OllamaBaseException {
 | 
				
			||||||
        String url = this.host + "/api/ps";
 | 
					        String url = this.host + "/api/ps";
 | 
				
			||||||
        HttpClient httpClient = HttpClient.newHttpClient();
 | 
					        HttpClient httpClient = HttpClient.newHttpClient();
 | 
				
			||||||
        HttpRequest httpRequest = null;
 | 
					        HttpRequest httpRequest = null;
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            httpRequest =
 | 
					            httpRequest = getRequestBuilderDefault(new URI(url)).header("Accept", "application/json").header("Content-type", "application/json").GET().build();
 | 
				
			||||||
                    getRequestBuilderDefault(new URI(url))
 | 
					 | 
				
			||||||
                            .header("Accept", "application/json")
 | 
					 | 
				
			||||||
                            .header("Content-type", "application/json")
 | 
					 | 
				
			||||||
                            .GET()
 | 
					 | 
				
			||||||
                            .build();
 | 
					 | 
				
			||||||
        } catch (URISyntaxException e) {
 | 
					        } catch (URISyntaxException e) {
 | 
				
			||||||
            throw new RuntimeException(e);
 | 
					            throw new RuntimeException(e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -144,69 +137,59 @@ public class OllamaAPI {
 | 
				
			|||||||
        int statusCode = response.statusCode();
 | 
					        int statusCode = response.statusCode();
 | 
				
			||||||
        String responseString = response.body();
 | 
					        String responseString = response.body();
 | 
				
			||||||
        if (statusCode == 200) {
 | 
					        if (statusCode == 200) {
 | 
				
			||||||
            return Utils.getObjectMapper()
 | 
					            return Utils.getObjectMapper().readValue(responseString, ModelsProcessResponse.class);
 | 
				
			||||||
                    .readValue(responseString, ModelsProcessResponse.class);
 | 
					 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            throw new OllamaBaseException(statusCode + " - " + responseString);
 | 
					            throw new OllamaBaseException(statusCode + " - " + responseString);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * List available models from Ollama server.
 | 
					     * Lists available models from the Ollama server.
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @return the list
 | 
					     * @return a list of models available on the server
 | 
				
			||||||
 | 
					     * @throws OllamaBaseException  if the response indicates an error status
 | 
				
			||||||
 | 
					     * @throws IOException          if an I/O error occurs during the HTTP request
 | 
				
			||||||
 | 
					     * @throws InterruptedException if the operation is interrupted
 | 
				
			||||||
 | 
					     * @throws URISyntaxException   if the URI for the request is malformed
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public List<Model> listModels()
 | 
					    public List<Model> listModels() throws OllamaBaseException, IOException, InterruptedException, URISyntaxException {
 | 
				
			||||||
            throws OllamaBaseException, IOException, InterruptedException, URISyntaxException {
 | 
					 | 
				
			||||||
        String url = this.host + "/api/tags";
 | 
					        String url = this.host + "/api/tags";
 | 
				
			||||||
        HttpClient httpClient = HttpClient.newHttpClient();
 | 
					        HttpClient httpClient = HttpClient.newHttpClient();
 | 
				
			||||||
        HttpRequest httpRequest =
 | 
					        HttpRequest httpRequest = getRequestBuilderDefault(new URI(url)).header("Accept", "application/json").header("Content-type", "application/json").GET().build();
 | 
				
			||||||
                getRequestBuilderDefault(new URI(url))
 | 
					        HttpResponse<String> response = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
 | 
				
			||||||
                        .header("Accept", "application/json")
 | 
					 | 
				
			||||||
                        .header("Content-type", "application/json")
 | 
					 | 
				
			||||||
                        .GET()
 | 
					 | 
				
			||||||
                        .build();
 | 
					 | 
				
			||||||
        HttpResponse<String> response =
 | 
					 | 
				
			||||||
                httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
 | 
					 | 
				
			||||||
        int statusCode = response.statusCode();
 | 
					        int statusCode = response.statusCode();
 | 
				
			||||||
        String responseString = response.body();
 | 
					        String responseString = response.body();
 | 
				
			||||||
        if (statusCode == 200) {
 | 
					        if (statusCode == 200) {
 | 
				
			||||||
            return Utils.getObjectMapper()
 | 
					            return Utils.getObjectMapper().readValue(responseString, ListModelsResponse.class).getModels();
 | 
				
			||||||
                    .readValue(responseString, ListModelsResponse.class)
 | 
					 | 
				
			||||||
                    .getModels();
 | 
					 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            throw new OllamaBaseException(statusCode + " - " + responseString);
 | 
					            throw new OllamaBaseException(statusCode + " - " + responseString);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Pull a model on the Ollama server from the list of <a
 | 
					     * Pull a model on the Ollama server from the list of <a
 | 
				
			||||||
     * href="https://ollama.ai/library">available models</a>.
 | 
					     * href="https://ollama.ai/library">available models</a>.
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param modelName the name of the model
 | 
					     * @param modelName the name of the model
 | 
				
			||||||
 | 
					     * @throws OllamaBaseException  if the response indicates an error status
 | 
				
			||||||
 | 
					     * @throws IOException          if an I/O error occurs during the HTTP request
 | 
				
			||||||
 | 
					     * @throws InterruptedException if the operation is interrupted
 | 
				
			||||||
 | 
					     * @throws URISyntaxException   if the URI for the request is malformed
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public void pullModel(String modelName)
 | 
					    public void pullModel(String modelName) throws OllamaBaseException, IOException, URISyntaxException, InterruptedException {
 | 
				
			||||||
            throws OllamaBaseException, IOException, URISyntaxException, InterruptedException {
 | 
					 | 
				
			||||||
        String url = this.host + "/api/pull";
 | 
					        String url = this.host + "/api/pull";
 | 
				
			||||||
        String jsonData = new ModelRequest(modelName).toString();
 | 
					        String jsonData = new ModelRequest(modelName).toString();
 | 
				
			||||||
        HttpRequest request =
 | 
					        HttpRequest request = getRequestBuilderDefault(new URI(url)).POST(HttpRequest.BodyPublishers.ofString(jsonData)).header("Accept", "application/json").header("Content-type", "application/json").build();
 | 
				
			||||||
                getRequestBuilderDefault(new URI(url))
 | 
					 | 
				
			||||||
                        .POST(HttpRequest.BodyPublishers.ofString(jsonData))
 | 
					 | 
				
			||||||
                        .header("Accept", "application/json")
 | 
					 | 
				
			||||||
                        .header("Content-type", "application/json")
 | 
					 | 
				
			||||||
                        .build();
 | 
					 | 
				
			||||||
        HttpClient client = HttpClient.newHttpClient();
 | 
					        HttpClient client = HttpClient.newHttpClient();
 | 
				
			||||||
        HttpResponse<InputStream> response =
 | 
					        HttpResponse<InputStream> response = client.send(request, HttpResponse.BodyHandlers.ofInputStream());
 | 
				
			||||||
                client.send(request, HttpResponse.BodyHandlers.ofInputStream());
 | 
					 | 
				
			||||||
        int statusCode = response.statusCode();
 | 
					        int statusCode = response.statusCode();
 | 
				
			||||||
        InputStream responseBodyStream = response.body();
 | 
					        InputStream responseBodyStream = response.body();
 | 
				
			||||||
        String responseString = "";
 | 
					        String responseString = "";
 | 
				
			||||||
        try (BufferedReader reader =
 | 
					        try (BufferedReader reader = new BufferedReader(new InputStreamReader(responseBodyStream, StandardCharsets.UTF_8))) {
 | 
				
			||||||
                     new BufferedReader(new InputStreamReader(responseBodyStream, StandardCharsets.UTF_8))) {
 | 
					 | 
				
			||||||
            String line;
 | 
					            String line;
 | 
				
			||||||
            while ((line = reader.readLine()) != null) {
 | 
					            while ((line = reader.readLine()) != null) {
 | 
				
			||||||
                ModelPullResponse modelPullResponse =
 | 
					                ModelPullResponse modelPullResponse = Utils.getObjectMapper().readValue(line, ModelPullResponse.class);
 | 
				
			||||||
                        Utils.getObjectMapper().readValue(line, ModelPullResponse.class);
 | 
					 | 
				
			||||||
                if (verbose) {
 | 
					                if (verbose) {
 | 
				
			||||||
                    logger.info(modelPullResponse.getStatus());
 | 
					                    logger.info(modelPullResponse.getStatus());
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
@@ -222,17 +205,15 @@ public class OllamaAPI {
 | 
				
			|||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param modelName the model
 | 
					     * @param modelName the model
 | 
				
			||||||
     * @return the model details
 | 
					     * @return the model details
 | 
				
			||||||
 | 
					     * @throws OllamaBaseException  if the response indicates an error status
 | 
				
			||||||
 | 
					     * @throws IOException          if an I/O error occurs during the HTTP request
 | 
				
			||||||
 | 
					     * @throws InterruptedException if the operation is interrupted
 | 
				
			||||||
 | 
					     * @throws URISyntaxException   if the URI for the request is malformed
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public ModelDetail getModelDetails(String modelName)
 | 
					    public ModelDetail getModelDetails(String modelName) throws IOException, OllamaBaseException, InterruptedException, URISyntaxException {
 | 
				
			||||||
            throws IOException, OllamaBaseException, InterruptedException, URISyntaxException {
 | 
					 | 
				
			||||||
        String url = this.host + "/api/show";
 | 
					        String url = this.host + "/api/show";
 | 
				
			||||||
        String jsonData = new ModelRequest(modelName).toString();
 | 
					        String jsonData = new ModelRequest(modelName).toString();
 | 
				
			||||||
        HttpRequest request =
 | 
					        HttpRequest request = getRequestBuilderDefault(new URI(url)).header("Accept", "application/json").header("Content-type", "application/json").POST(HttpRequest.BodyPublishers.ofString(jsonData)).build();
 | 
				
			||||||
                getRequestBuilderDefault(new URI(url))
 | 
					 | 
				
			||||||
                        .header("Accept", "application/json")
 | 
					 | 
				
			||||||
                        .header("Content-type", "application/json")
 | 
					 | 
				
			||||||
                        .POST(HttpRequest.BodyPublishers.ofString(jsonData))
 | 
					 | 
				
			||||||
                        .build();
 | 
					 | 
				
			||||||
        HttpClient client = HttpClient.newHttpClient();
 | 
					        HttpClient client = HttpClient.newHttpClient();
 | 
				
			||||||
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
 | 
					        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
 | 
				
			||||||
        int statusCode = response.statusCode();
 | 
					        int statusCode = response.statusCode();
 | 
				
			||||||
@@ -250,17 +231,15 @@ public class OllamaAPI {
 | 
				
			|||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param modelName     the name of the custom model to be created.
 | 
					     * @param modelName     the name of the custom model to be created.
 | 
				
			||||||
     * @param modelFilePath the path to model file that exists on the Ollama server.
 | 
					     * @param modelFilePath the path to model file that exists on the Ollama server.
 | 
				
			||||||
 | 
					     * @throws OllamaBaseException  if the response indicates an error status
 | 
				
			||||||
 | 
					     * @throws IOException          if an I/O error occurs during the HTTP request
 | 
				
			||||||
 | 
					     * @throws InterruptedException if the operation is interrupted
 | 
				
			||||||
 | 
					     * @throws URISyntaxException   if the URI for the request is malformed
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public void createModelWithFilePath(String modelName, String modelFilePath)
 | 
					    public void createModelWithFilePath(String modelName, String modelFilePath) throws IOException, InterruptedException, OllamaBaseException, URISyntaxException {
 | 
				
			||||||
            throws IOException, InterruptedException, OllamaBaseException, URISyntaxException {
 | 
					 | 
				
			||||||
        String url = this.host + "/api/create";
 | 
					        String url = this.host + "/api/create";
 | 
				
			||||||
        String jsonData = new CustomModelFilePathRequest(modelName, modelFilePath).toString();
 | 
					        String jsonData = new CustomModelFilePathRequest(modelName, modelFilePath).toString();
 | 
				
			||||||
        HttpRequest request =
 | 
					        HttpRequest request = getRequestBuilderDefault(new URI(url)).header("Accept", "application/json").header("Content-Type", "application/json").POST(HttpRequest.BodyPublishers.ofString(jsonData, StandardCharsets.UTF_8)).build();
 | 
				
			||||||
                getRequestBuilderDefault(new URI(url))
 | 
					 | 
				
			||||||
                        .header("Accept", "application/json")
 | 
					 | 
				
			||||||
                        .header("Content-Type", "application/json")
 | 
					 | 
				
			||||||
                        .POST(HttpRequest.BodyPublishers.ofString(jsonData, StandardCharsets.UTF_8))
 | 
					 | 
				
			||||||
                        .build();
 | 
					 | 
				
			||||||
        HttpClient client = HttpClient.newHttpClient();
 | 
					        HttpClient client = HttpClient.newHttpClient();
 | 
				
			||||||
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
 | 
					        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
 | 
				
			||||||
        int statusCode = response.statusCode();
 | 
					        int statusCode = response.statusCode();
 | 
				
			||||||
@@ -284,17 +263,15 @@ public class OllamaAPI {
 | 
				
			|||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param modelName         the name of the custom model to be created.
 | 
					     * @param modelName         the name of the custom model to be created.
 | 
				
			||||||
     * @param modelFileContents the path to model file that exists on the Ollama server.
 | 
					     * @param modelFileContents the path to model file that exists on the Ollama server.
 | 
				
			||||||
 | 
					     * @throws OllamaBaseException  if the response indicates an error status
 | 
				
			||||||
 | 
					     * @throws IOException          if an I/O error occurs during the HTTP request
 | 
				
			||||||
 | 
					     * @throws InterruptedException if the operation is interrupted
 | 
				
			||||||
 | 
					     * @throws URISyntaxException   if the URI for the request is malformed
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public void createModelWithModelFileContents(String modelName, String modelFileContents)
 | 
					    public void createModelWithModelFileContents(String modelName, String modelFileContents) throws IOException, InterruptedException, OllamaBaseException, URISyntaxException {
 | 
				
			||||||
            throws IOException, InterruptedException, OllamaBaseException, URISyntaxException {
 | 
					 | 
				
			||||||
        String url = this.host + "/api/create";
 | 
					        String url = this.host + "/api/create";
 | 
				
			||||||
        String jsonData = new CustomModelFileContentsRequest(modelName, modelFileContents).toString();
 | 
					        String jsonData = new CustomModelFileContentsRequest(modelName, modelFileContents).toString();
 | 
				
			||||||
        HttpRequest request =
 | 
					        HttpRequest request = getRequestBuilderDefault(new URI(url)).header("Accept", "application/json").header("Content-Type", "application/json").POST(HttpRequest.BodyPublishers.ofString(jsonData, StandardCharsets.UTF_8)).build();
 | 
				
			||||||
                getRequestBuilderDefault(new URI(url))
 | 
					 | 
				
			||||||
                        .header("Accept", "application/json")
 | 
					 | 
				
			||||||
                        .header("Content-Type", "application/json")
 | 
					 | 
				
			||||||
                        .POST(HttpRequest.BodyPublishers.ofString(jsonData, StandardCharsets.UTF_8))
 | 
					 | 
				
			||||||
                        .build();
 | 
					 | 
				
			||||||
        HttpClient client = HttpClient.newHttpClient();
 | 
					        HttpClient client = HttpClient.newHttpClient();
 | 
				
			||||||
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
 | 
					        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
 | 
				
			||||||
        int statusCode = response.statusCode();
 | 
					        int statusCode = response.statusCode();
 | 
				
			||||||
@@ -315,17 +292,15 @@ public class OllamaAPI {
 | 
				
			|||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param modelName          the name of the model to be deleted.
 | 
					     * @param modelName          the name of the model to be deleted.
 | 
				
			||||||
     * @param ignoreIfNotPresent ignore errors if the specified model is not present on Ollama server.
 | 
					     * @param ignoreIfNotPresent ignore errors if the specified model is not present on Ollama server.
 | 
				
			||||||
 | 
					     * @throws OllamaBaseException  if the response indicates an error status
 | 
				
			||||||
 | 
					     * @throws IOException          if an I/O error occurs during the HTTP request
 | 
				
			||||||
 | 
					     * @throws InterruptedException if the operation is interrupted
 | 
				
			||||||
 | 
					     * @throws URISyntaxException   if the URI for the request is malformed
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public void deleteModel(String modelName, boolean ignoreIfNotPresent)
 | 
					    public void deleteModel(String modelName, boolean ignoreIfNotPresent) throws IOException, InterruptedException, OllamaBaseException, URISyntaxException {
 | 
				
			||||||
            throws IOException, InterruptedException, OllamaBaseException, URISyntaxException {
 | 
					 | 
				
			||||||
        String url = this.host + "/api/delete";
 | 
					        String url = this.host + "/api/delete";
 | 
				
			||||||
        String jsonData = new ModelRequest(modelName).toString();
 | 
					        String jsonData = new ModelRequest(modelName).toString();
 | 
				
			||||||
        HttpRequest request =
 | 
					        HttpRequest request = getRequestBuilderDefault(new URI(url)).method("DELETE", HttpRequest.BodyPublishers.ofString(jsonData, StandardCharsets.UTF_8)).header("Accept", "application/json").header("Content-type", "application/json").build();
 | 
				
			||||||
                getRequestBuilderDefault(new URI(url))
 | 
					 | 
				
			||||||
                        .method("DELETE", HttpRequest.BodyPublishers.ofString(jsonData, StandardCharsets.UTF_8))
 | 
					 | 
				
			||||||
                        .header("Accept", "application/json")
 | 
					 | 
				
			||||||
                        .header("Content-type", "application/json")
 | 
					 | 
				
			||||||
                        .build();
 | 
					 | 
				
			||||||
        HttpClient client = HttpClient.newHttpClient();
 | 
					        HttpClient client = HttpClient.newHttpClient();
 | 
				
			||||||
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
 | 
					        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
 | 
				
			||||||
        int statusCode = response.statusCode();
 | 
					        int statusCode = response.statusCode();
 | 
				
			||||||
@@ -344,11 +319,13 @@ public class OllamaAPI {
 | 
				
			|||||||
     * @param model  name of model to generate embeddings from
 | 
					     * @param model  name of model to generate embeddings from
 | 
				
			||||||
     * @param prompt text to generate embeddings for
 | 
					     * @param prompt text to generate embeddings for
 | 
				
			||||||
     * @return embeddings
 | 
					     * @return embeddings
 | 
				
			||||||
 | 
					     * @throws OllamaBaseException  if the response indicates an error status
 | 
				
			||||||
 | 
					     * @throws IOException          if an I/O error occurs during the HTTP request
 | 
				
			||||||
 | 
					     * @throws InterruptedException if the operation is interrupted
 | 
				
			||||||
     * @deprecated Use {@link #embed(String, List<String>)} instead.
 | 
					     * @deprecated Use {@link #embed(String, List<String>)} instead.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Deprecated
 | 
					    @Deprecated
 | 
				
			||||||
    public List<Double> generateEmbeddings(String model, String prompt)
 | 
					    public List<Double> generateEmbeddings(String model, String prompt) throws IOException, InterruptedException, OllamaBaseException {
 | 
				
			||||||
            throws IOException, InterruptedException, OllamaBaseException {
 | 
					 | 
				
			||||||
        return generateEmbeddings(new OllamaEmbeddingsRequestModel(model, prompt));
 | 
					        return generateEmbeddings(new OllamaEmbeddingsRequestModel(model, prompt));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -357,6 +334,9 @@ public class OllamaAPI {
 | 
				
			|||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param modelRequest request for '/api/embeddings' endpoint
 | 
					     * @param modelRequest request for '/api/embeddings' endpoint
 | 
				
			||||||
     * @return embeddings
 | 
					     * @return embeddings
 | 
				
			||||||
 | 
					     * @throws OllamaBaseException  if the response indicates an error status
 | 
				
			||||||
 | 
					     * @throws IOException          if an I/O error occurs during the HTTP request
 | 
				
			||||||
 | 
					     * @throws InterruptedException if the operation is interrupted
 | 
				
			||||||
     * @deprecated Use {@link #embed(OllamaEmbedRequestModel)} instead.
 | 
					     * @deprecated Use {@link #embed(OllamaEmbedRequestModel)} instead.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @Deprecated
 | 
					    @Deprecated
 | 
				
			||||||
@@ -364,17 +344,13 @@ public class OllamaAPI {
 | 
				
			|||||||
        URI uri = URI.create(this.host + "/api/embeddings");
 | 
					        URI uri = URI.create(this.host + "/api/embeddings");
 | 
				
			||||||
        String jsonData = modelRequest.toString();
 | 
					        String jsonData = modelRequest.toString();
 | 
				
			||||||
        HttpClient httpClient = HttpClient.newHttpClient();
 | 
					        HttpClient httpClient = HttpClient.newHttpClient();
 | 
				
			||||||
        HttpRequest.Builder requestBuilder =
 | 
					        HttpRequest.Builder requestBuilder = getRequestBuilderDefault(uri).header("Accept", "application/json").POST(HttpRequest.BodyPublishers.ofString(jsonData));
 | 
				
			||||||
                getRequestBuilderDefault(uri)
 | 
					 | 
				
			||||||
                        .header("Accept", "application/json")
 | 
					 | 
				
			||||||
                        .POST(HttpRequest.BodyPublishers.ofString(jsonData));
 | 
					 | 
				
			||||||
        HttpRequest request = requestBuilder.build();
 | 
					        HttpRequest request = requestBuilder.build();
 | 
				
			||||||
        HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
 | 
					        HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
 | 
				
			||||||
        int statusCode = response.statusCode();
 | 
					        int statusCode = response.statusCode();
 | 
				
			||||||
        String responseBody = response.body();
 | 
					        String responseBody = response.body();
 | 
				
			||||||
        if (statusCode == 200) {
 | 
					        if (statusCode == 200) {
 | 
				
			||||||
            OllamaEmbeddingResponseModel embeddingResponse =
 | 
					            OllamaEmbeddingResponseModel embeddingResponse = Utils.getObjectMapper().readValue(responseBody, OllamaEmbeddingResponseModel.class);
 | 
				
			||||||
                    Utils.getObjectMapper().readValue(responseBody, OllamaEmbeddingResponseModel.class);
 | 
					 | 
				
			||||||
            return embeddingResponse.getEmbedding();
 | 
					            return embeddingResponse.getEmbedding();
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            throw new OllamaBaseException(statusCode + " - " + responseBody);
 | 
					            throw new OllamaBaseException(statusCode + " - " + responseBody);
 | 
				
			||||||
@@ -387,9 +363,11 @@ public class OllamaAPI {
 | 
				
			|||||||
     * @param model  name of model to generate embeddings from
 | 
					     * @param model  name of model to generate embeddings from
 | 
				
			||||||
     * @param inputs text/s to generate embeddings for
 | 
					     * @param inputs text/s to generate embeddings for
 | 
				
			||||||
     * @return embeddings
 | 
					     * @return embeddings
 | 
				
			||||||
 | 
					     * @throws OllamaBaseException  if the response indicates an error status
 | 
				
			||||||
 | 
					     * @throws IOException          if an I/O error occurs during the HTTP request
 | 
				
			||||||
 | 
					     * @throws InterruptedException if the operation is interrupted
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public OllamaEmbedResponseModel embed(String model, List<String> inputs)
 | 
					    public OllamaEmbedResponseModel embed(String model, List<String> inputs) throws IOException, InterruptedException, OllamaBaseException {
 | 
				
			||||||
            throws IOException, InterruptedException, OllamaBaseException {
 | 
					 | 
				
			||||||
        return embed(new OllamaEmbedRequestModel(model, inputs));
 | 
					        return embed(new OllamaEmbedRequestModel(model, inputs));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -398,25 +376,23 @@ public class OllamaAPI {
 | 
				
			|||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param modelRequest request for '/api/embed' endpoint
 | 
					     * @param modelRequest request for '/api/embed' endpoint
 | 
				
			||||||
     * @return embeddings
 | 
					     * @return embeddings
 | 
				
			||||||
 | 
					     * @throws OllamaBaseException  if the response indicates an error status
 | 
				
			||||||
 | 
					     * @throws IOException          if an I/O error occurs during the HTTP request
 | 
				
			||||||
 | 
					     * @throws InterruptedException if the operation is interrupted
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public OllamaEmbedResponseModel embed(OllamaEmbedRequestModel modelRequest)
 | 
					    public OllamaEmbedResponseModel embed(OllamaEmbedRequestModel modelRequest) throws IOException, InterruptedException, OllamaBaseException {
 | 
				
			||||||
            throws IOException, InterruptedException, OllamaBaseException {
 | 
					 | 
				
			||||||
        URI uri = URI.create(this.host + "/api/embed");
 | 
					        URI uri = URI.create(this.host + "/api/embed");
 | 
				
			||||||
        String jsonData = Utils.getObjectMapper().writeValueAsString(modelRequest);
 | 
					        String jsonData = Utils.getObjectMapper().writeValueAsString(modelRequest);
 | 
				
			||||||
        HttpClient httpClient = HttpClient.newHttpClient();
 | 
					        HttpClient httpClient = HttpClient.newHttpClient();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        HttpRequest request = HttpRequest.newBuilder(uri)
 | 
					        HttpRequest request = HttpRequest.newBuilder(uri).header("Accept", "application/json").POST(HttpRequest.BodyPublishers.ofString(jsonData)).build();
 | 
				
			||||||
                .header("Accept", "application/json")
 | 
					 | 
				
			||||||
                .POST(HttpRequest.BodyPublishers.ofString(jsonData))
 | 
					 | 
				
			||||||
                .build();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
 | 
					        HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
 | 
				
			||||||
        int statusCode = response.statusCode();
 | 
					        int statusCode = response.statusCode();
 | 
				
			||||||
        String responseBody = response.body();
 | 
					        String responseBody = response.body();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (statusCode == 200) {
 | 
					        if (statusCode == 200) {
 | 
				
			||||||
            OllamaEmbedResponseModel embeddingResponse =
 | 
					            OllamaEmbedResponseModel embeddingResponse = Utils.getObjectMapper().readValue(responseBody, OllamaEmbedResponseModel.class);
 | 
				
			||||||
                    Utils.getObjectMapper().readValue(responseBody, OllamaEmbedResponseModel.class);
 | 
					 | 
				
			||||||
            return embeddingResponse;
 | 
					            return embeddingResponse;
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            throw new OllamaBaseException(statusCode + " - " + responseBody);
 | 
					            throw new OllamaBaseException(statusCode + " - " + responseBody);
 | 
				
			||||||
@@ -434,9 +410,11 @@ public class OllamaAPI {
 | 
				
			|||||||
     *                      details on the options</a>
 | 
					     *                      details on the options</a>
 | 
				
			||||||
     * @param streamHandler optional callback consumer that will be applied every time a streamed response is received. If not set, the stream parameter of the request is set to false.
 | 
					     * @param streamHandler optional callback consumer that will be applied every time a streamed response is received. If not set, the stream parameter of the request is set to false.
 | 
				
			||||||
     * @return OllamaResult that includes response text and time taken for response
 | 
					     * @return OllamaResult that includes response text and time taken for response
 | 
				
			||||||
 | 
					     * @throws OllamaBaseException  if the response indicates an error status
 | 
				
			||||||
 | 
					     * @throws IOException          if an I/O error occurs during the HTTP request
 | 
				
			||||||
 | 
					     * @throws InterruptedException if the operation is interrupted
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public OllamaResult generate(String model, String prompt, boolean raw, Options options, OllamaStreamHandler streamHandler)
 | 
					    public OllamaResult generate(String model, String prompt, boolean raw, Options options, OllamaStreamHandler streamHandler) throws OllamaBaseException, IOException, InterruptedException {
 | 
				
			||||||
            throws OllamaBaseException, IOException, InterruptedException {
 | 
					 | 
				
			||||||
        OllamaGenerateRequest ollamaRequestModel = new OllamaGenerateRequest(model, prompt);
 | 
					        OllamaGenerateRequest ollamaRequestModel = new OllamaGenerateRequest(model, prompt);
 | 
				
			||||||
        ollamaRequestModel.setRaw(raw);
 | 
					        ollamaRequestModel.setRaw(raw);
 | 
				
			||||||
        ollamaRequestModel.setOptions(options.getOptionsMap());
 | 
					        ollamaRequestModel.setOptions(options.getOptionsMap());
 | 
				
			||||||
@@ -453,13 +431,14 @@ public class OllamaAPI {
 | 
				
			|||||||
     * @param raw     In some cases, you may wish to bypass the templating system and provide a full prompt. In this case, you can use the raw parameter to disable templating. Also note that raw mode will not return a context.
 | 
					     * @param raw     In some cases, you may wish to bypass the templating system and provide a full prompt. In this case, you can use the raw parameter to disable templating. Also note that raw mode will not return a context.
 | 
				
			||||||
     * @param options Additional options or configurations to use when generating the response.
 | 
					     * @param options Additional options or configurations to use when generating the response.
 | 
				
			||||||
     * @return {@link OllamaResult}
 | 
					     * @return {@link OllamaResult}
 | 
				
			||||||
 | 
					     * @throws OllamaBaseException  if the response indicates an error status
 | 
				
			||||||
 | 
					     * @throws IOException          if an I/O error occurs during the HTTP request
 | 
				
			||||||
 | 
					     * @throws InterruptedException if the operation is interrupted
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public OllamaResult generate(String model, String prompt, boolean raw, Options options)
 | 
					    public OllamaResult generate(String model, String prompt, boolean raw, Options options) throws OllamaBaseException, IOException, InterruptedException {
 | 
				
			||||||
            throws OllamaBaseException, IOException, InterruptedException {
 | 
					 | 
				
			||||||
        return generate(model, prompt, raw, options, null);
 | 
					        return generate(model, prompt, raw, options, null);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Generates response using the specified AI model and prompt (in blocking mode), and then invokes a set of tools
 | 
					     * Generates response using the specified AI model and prompt (in blocking mode), and then invokes a set of tools
 | 
				
			||||||
     * on the generated response.
 | 
					     * on the generated response.
 | 
				
			||||||
@@ -468,13 +447,11 @@ public class OllamaAPI {
 | 
				
			|||||||
     * @param prompt  The input text or prompt to provide to the AI model.
 | 
					     * @param prompt  The input text or prompt to provide to the AI model.
 | 
				
			||||||
     * @param options Additional options or configurations to use when generating the response.
 | 
					     * @param options Additional options or configurations to use when generating the response.
 | 
				
			||||||
     * @return {@link OllamaToolsResult} An OllamaToolsResult object containing the response from the AI model and the results of invoking the tools on that output.
 | 
					     * @return {@link OllamaToolsResult} An OllamaToolsResult object containing the response from the AI model and the results of invoking the tools on that output.
 | 
				
			||||||
     * @throws OllamaBaseException  If there is an error related to the Ollama API or service.
 | 
					     * @throws OllamaBaseException  if the response indicates an error status
 | 
				
			||||||
     * @throws IOException          If there is an error related to input/output operations.
 | 
					     * @throws IOException          if an I/O error occurs during the HTTP request
 | 
				
			||||||
     * @throws InterruptedException If the method is interrupted while waiting for the AI model
 | 
					     * @throws InterruptedException if the operation is interrupted
 | 
				
			||||||
     *                              to generate the response or for the tools to be invoked.
 | 
					 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public OllamaToolsResult generateWithTools(String model, String prompt, Options options)
 | 
					    public OllamaToolsResult generateWithTools(String model, String prompt, Options options) throws OllamaBaseException, IOException, InterruptedException, ToolInvocationException {
 | 
				
			||||||
            throws OllamaBaseException, IOException, InterruptedException, ToolInvocationException {
 | 
					 | 
				
			||||||
        boolean raw = true;
 | 
					        boolean raw = true;
 | 
				
			||||||
        OllamaToolsResult toolResult = new OllamaToolsResult();
 | 
					        OllamaToolsResult toolResult = new OllamaToolsResult();
 | 
				
			||||||
        Map<ToolFunctionCallSpec, Object> toolResults = new HashMap<>();
 | 
					        Map<ToolFunctionCallSpec, Object> toolResults = new HashMap<>();
 | 
				
			||||||
@@ -509,9 +486,7 @@ public class OllamaAPI {
 | 
				
			|||||||
        OllamaGenerateRequest ollamaRequestModel = new OllamaGenerateRequest(model, prompt);
 | 
					        OllamaGenerateRequest ollamaRequestModel = new OllamaGenerateRequest(model, prompt);
 | 
				
			||||||
        ollamaRequestModel.setRaw(raw);
 | 
					        ollamaRequestModel.setRaw(raw);
 | 
				
			||||||
        URI uri = URI.create(this.host + "/api/generate");
 | 
					        URI uri = URI.create(this.host + "/api/generate");
 | 
				
			||||||
        OllamaAsyncResultStreamer ollamaAsyncResultStreamer =
 | 
					        OllamaAsyncResultStreamer ollamaAsyncResultStreamer = new OllamaAsyncResultStreamer(getRequestBuilderDefault(uri), ollamaRequestModel, requestTimeoutSeconds);
 | 
				
			||||||
                new OllamaAsyncResultStreamer(
 | 
					 | 
				
			||||||
                        getRequestBuilderDefault(uri), ollamaRequestModel, requestTimeoutSeconds);
 | 
					 | 
				
			||||||
        ollamaAsyncResultStreamer.start();
 | 
					        ollamaAsyncResultStreamer.start();
 | 
				
			||||||
        return ollamaAsyncResultStreamer;
 | 
					        return ollamaAsyncResultStreamer;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -528,10 +503,11 @@ public class OllamaAPI {
 | 
				
			|||||||
     *                      details on the options</a>
 | 
					     *                      details on the options</a>
 | 
				
			||||||
     * @param streamHandler optional callback consumer that will be applied every time a streamed response is received. If not set, the stream parameter of the request is set to false.
 | 
					     * @param streamHandler optional callback consumer that will be applied every time a streamed response is received. If not set, the stream parameter of the request is set to false.
 | 
				
			||||||
     * @return OllamaResult that includes response text and time taken for response
 | 
					     * @return OllamaResult that includes response text and time taken for response
 | 
				
			||||||
 | 
					     * @throws OllamaBaseException  if the response indicates an error status
 | 
				
			||||||
 | 
					     * @throws IOException          if an I/O error occurs during the HTTP request
 | 
				
			||||||
 | 
					     * @throws InterruptedException if the operation is interrupted
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public OllamaResult generateWithImageFiles(
 | 
					    public OllamaResult generateWithImageFiles(String model, String prompt, List<File> imageFiles, Options options, OllamaStreamHandler streamHandler) throws OllamaBaseException, IOException, InterruptedException {
 | 
				
			||||||
            String model, String prompt, List<File> imageFiles, Options options, OllamaStreamHandler streamHandler)
 | 
					 | 
				
			||||||
            throws OllamaBaseException, IOException, InterruptedException {
 | 
					 | 
				
			||||||
        List<String> images = new ArrayList<>();
 | 
					        List<String> images = new ArrayList<>();
 | 
				
			||||||
        for (File imageFile : imageFiles) {
 | 
					        for (File imageFile : imageFiles) {
 | 
				
			||||||
            images.add(encodeFileToBase64(imageFile));
 | 
					            images.add(encodeFileToBase64(imageFile));
 | 
				
			||||||
@@ -545,10 +521,12 @@ public class OllamaAPI {
 | 
				
			|||||||
     * Convenience method to call Ollama API without streaming responses.
 | 
					     * Convenience method to call Ollama API without streaming responses.
 | 
				
			||||||
     * <p>
 | 
					     * <p>
 | 
				
			||||||
     * Uses {@link #generateWithImageFiles(String, String, List, Options, OllamaStreamHandler)}
 | 
					     * Uses {@link #generateWithImageFiles(String, String, List, Options, OllamaStreamHandler)}
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @throws OllamaBaseException  if the response indicates an error status
 | 
				
			||||||
 | 
					     * @throws IOException          if an I/O error occurs during the HTTP request
 | 
				
			||||||
 | 
					     * @throws InterruptedException if the operation is interrupted
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public OllamaResult generateWithImageFiles(
 | 
					    public OllamaResult generateWithImageFiles(String model, String prompt, List<File> imageFiles, Options options) throws OllamaBaseException, IOException, InterruptedException {
 | 
				
			||||||
            String model, String prompt, List<File> imageFiles, Options options)
 | 
					 | 
				
			||||||
            throws OllamaBaseException, IOException, InterruptedException {
 | 
					 | 
				
			||||||
        return generateWithImageFiles(model, prompt, imageFiles, options, null);
 | 
					        return generateWithImageFiles(model, prompt, imageFiles, options, null);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -564,10 +542,12 @@ public class OllamaAPI {
 | 
				
			|||||||
     *                      details on the options</a>
 | 
					     *                      details on the options</a>
 | 
				
			||||||
     * @param streamHandler optional callback consumer that will be applied every time a streamed response is received. If not set, the stream parameter of the request is set to false.
 | 
					     * @param streamHandler optional callback consumer that will be applied every time a streamed response is received. If not set, the stream parameter of the request is set to false.
 | 
				
			||||||
     * @return OllamaResult that includes response text and time taken for response
 | 
					     * @return OllamaResult that includes response text and time taken for response
 | 
				
			||||||
 | 
					     * @throws OllamaBaseException  if the response indicates an error status
 | 
				
			||||||
 | 
					     * @throws IOException          if an I/O error occurs during the HTTP request
 | 
				
			||||||
 | 
					     * @throws InterruptedException if the operation is interrupted
 | 
				
			||||||
 | 
					     * @throws URISyntaxException   if the URI for the request is malformed
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public OllamaResult generateWithImageURLs(
 | 
					    public OllamaResult generateWithImageURLs(String model, String prompt, List<String> imageURLs, Options options, OllamaStreamHandler streamHandler) throws OllamaBaseException, IOException, InterruptedException, URISyntaxException {
 | 
				
			||||||
            String model, String prompt, List<String> imageURLs, Options options, OllamaStreamHandler streamHandler)
 | 
					 | 
				
			||||||
            throws OllamaBaseException, IOException, InterruptedException, URISyntaxException {
 | 
					 | 
				
			||||||
        List<String> images = new ArrayList<>();
 | 
					        List<String> images = new ArrayList<>();
 | 
				
			||||||
        for (String imageURL : imageURLs) {
 | 
					        for (String imageURL : imageURLs) {
 | 
				
			||||||
            images.add(encodeByteArrayToBase64(Utils.loadImageBytesFromUrl(imageURL)));
 | 
					            images.add(encodeByteArrayToBase64(Utils.loadImageBytesFromUrl(imageURL)));
 | 
				
			||||||
@@ -581,10 +561,12 @@ public class OllamaAPI {
 | 
				
			|||||||
     * Convenience method to call Ollama API without streaming responses.
 | 
					     * Convenience method to call Ollama API without streaming responses.
 | 
				
			||||||
     * <p>
 | 
					     * <p>
 | 
				
			||||||
     * Uses {@link #generateWithImageURLs(String, String, List, Options, OllamaStreamHandler)}
 | 
					     * Uses {@link #generateWithImageURLs(String, String, List, Options, OllamaStreamHandler)}
 | 
				
			||||||
 | 
					     * @throws OllamaBaseException  if the response indicates an error status
 | 
				
			||||||
 | 
					     * @throws IOException          if an I/O error occurs during the HTTP request
 | 
				
			||||||
 | 
					     * @throws InterruptedException if the operation is interrupted
 | 
				
			||||||
 | 
					     * @throws URISyntaxException   if the URI for the request is malformed
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public OllamaResult generateWithImageURLs(String model, String prompt, List<String> imageURLs,
 | 
					    public OllamaResult generateWithImageURLs(String model, String prompt, List<String> imageURLs, Options options) throws OllamaBaseException, IOException, InterruptedException, URISyntaxException {
 | 
				
			||||||
                                              Options options)
 | 
					 | 
				
			||||||
            throws OllamaBaseException, IOException, InterruptedException, URISyntaxException {
 | 
					 | 
				
			||||||
        return generateWithImageURLs(model, prompt, imageURLs, options, null);
 | 
					        return generateWithImageURLs(model, prompt, imageURLs, options, null);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -599,6 +581,9 @@ public class OllamaAPI {
 | 
				
			|||||||
     * @throws OllamaBaseException  any response code than 200 has been returned
 | 
					     * @throws OllamaBaseException  any response code than 200 has been returned
 | 
				
			||||||
     * @throws IOException          in case the responseStream can not be read
 | 
					     * @throws IOException          in case the responseStream can not be read
 | 
				
			||||||
     * @throws InterruptedException in case the server is not reachable or network issues happen
 | 
					     * @throws InterruptedException in case the server is not reachable or network issues happen
 | 
				
			||||||
 | 
					     * @throws OllamaBaseException  if the response indicates an error status
 | 
				
			||||||
 | 
					     * @throws IOException          if an I/O error occurs during the HTTP request
 | 
				
			||||||
 | 
					     * @throws InterruptedException if the operation is interrupted
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public OllamaChatResult chat(String model, List<OllamaChatMessage> messages) throws OllamaBaseException, IOException, InterruptedException {
 | 
					    public OllamaChatResult chat(String model, List<OllamaChatMessage> messages) throws OllamaBaseException, IOException, InterruptedException {
 | 
				
			||||||
        OllamaChatRequestBuilder builder = OllamaChatRequestBuilder.getInstance(model);
 | 
					        OllamaChatRequestBuilder builder = OllamaChatRequestBuilder.getInstance(model);
 | 
				
			||||||
@@ -615,6 +600,9 @@ public class OllamaAPI {
 | 
				
			|||||||
     * @throws OllamaBaseException  any response code than 200 has been returned
 | 
					     * @throws OllamaBaseException  any response code than 200 has been returned
 | 
				
			||||||
     * @throws IOException          in case the responseStream can not be read
 | 
					     * @throws IOException          in case the responseStream can not be read
 | 
				
			||||||
     * @throws InterruptedException in case the server is not reachable or network issues happen
 | 
					     * @throws InterruptedException in case the server is not reachable or network issues happen
 | 
				
			||||||
 | 
					     * @throws OllamaBaseException  if the response indicates an error status
 | 
				
			||||||
 | 
					     * @throws IOException          if an I/O error occurs during the HTTP request
 | 
				
			||||||
 | 
					     * @throws InterruptedException if the operation is interrupted
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public OllamaChatResult chat(OllamaChatRequest request) throws OllamaBaseException, IOException, InterruptedException {
 | 
					    public OllamaChatResult chat(OllamaChatRequest request) throws OllamaBaseException, IOException, InterruptedException {
 | 
				
			||||||
        return chat(request, null);
 | 
					        return chat(request, null);
 | 
				
			||||||
@@ -631,6 +619,9 @@ public class OllamaAPI {
 | 
				
			|||||||
     * @throws OllamaBaseException  any response code than 200 has been returned
 | 
					     * @throws OllamaBaseException  any response code than 200 has been returned
 | 
				
			||||||
     * @throws IOException          in case the responseStream can not be read
 | 
					     * @throws IOException          in case the responseStream can not be read
 | 
				
			||||||
     * @throws InterruptedException in case the server is not reachable or network issues happen
 | 
					     * @throws InterruptedException in case the server is not reachable or network issues happen
 | 
				
			||||||
 | 
					     * @throws OllamaBaseException  if the response indicates an error status
 | 
				
			||||||
 | 
					     * @throws IOException          if an I/O error occurs during the HTTP request
 | 
				
			||||||
 | 
					     * @throws InterruptedException if the operation is interrupted
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public OllamaChatResult chat(OllamaChatRequest request, OllamaStreamHandler streamHandler) throws OllamaBaseException, IOException, InterruptedException {
 | 
					    public OllamaChatResult chat(OllamaChatRequest request, OllamaStreamHandler streamHandler) throws OllamaBaseException, IOException, InterruptedException {
 | 
				
			||||||
        OllamaChatEndpointCaller requestCaller = new OllamaChatEndpointCaller(host, basicAuth, requestTimeoutSeconds, verbose);
 | 
					        OllamaChatEndpointCaller requestCaller = new OllamaChatEndpointCaller(host, basicAuth, requestTimeoutSeconds, verbose);
 | 
				
			||||||
@@ -658,11 +649,8 @@ public class OllamaAPI {
 | 
				
			|||||||
        return Base64.getEncoder().encodeToString(bytes);
 | 
					        return Base64.getEncoder().encodeToString(bytes);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private OllamaResult generateSyncForOllamaRequestModel(
 | 
					    private OllamaResult generateSyncForOllamaRequestModel(OllamaGenerateRequest ollamaRequestModel, OllamaStreamHandler streamHandler) throws OllamaBaseException, IOException, InterruptedException {
 | 
				
			||||||
            OllamaGenerateRequest ollamaRequestModel, OllamaStreamHandler streamHandler)
 | 
					        OllamaGenerateEndpointCaller requestCaller = new OllamaGenerateEndpointCaller(host, basicAuth, requestTimeoutSeconds, verbose);
 | 
				
			||||||
            throws OllamaBaseException, IOException, InterruptedException {
 | 
					 | 
				
			||||||
        OllamaGenerateEndpointCaller requestCaller =
 | 
					 | 
				
			||||||
                new OllamaGenerateEndpointCaller(host, basicAuth, requestTimeoutSeconds, verbose);
 | 
					 | 
				
			||||||
        OllamaResult result;
 | 
					        OllamaResult result;
 | 
				
			||||||
        if (streamHandler != null) {
 | 
					        if (streamHandler != null) {
 | 
				
			||||||
            ollamaRequestModel.setStream(true);
 | 
					            ollamaRequestModel.setStream(true);
 | 
				
			||||||
@@ -680,10 +668,7 @@ public class OllamaAPI {
 | 
				
			|||||||
     * @return HttpRequest.Builder
 | 
					     * @return HttpRequest.Builder
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private HttpRequest.Builder getRequestBuilderDefault(URI uri) {
 | 
					    private HttpRequest.Builder getRequestBuilderDefault(URI uri) {
 | 
				
			||||||
        HttpRequest.Builder requestBuilder =
 | 
					        HttpRequest.Builder requestBuilder = HttpRequest.newBuilder(uri).header("Content-Type", "application/json").timeout(Duration.ofSeconds(requestTimeoutSeconds));
 | 
				
			||||||
                HttpRequest.newBuilder(uri)
 | 
					 | 
				
			||||||
                        .header("Content-Type", "application/json")
 | 
					 | 
				
			||||||
                        .timeout(Duration.ofSeconds(requestTimeoutSeconds));
 | 
					 | 
				
			||||||
        if (isBasicAuthCredentialsSet()) {
 | 
					        if (isBasicAuthCredentialsSet()) {
 | 
				
			||||||
            requestBuilder.header("Authorization", getBasicAuthHeaderValue());
 | 
					            requestBuilder.header("Authorization", getBasicAuthHeaderValue());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user