mirror of
https://github.com/amithkoujalgi/ollama4j.git
synced 2025-09-16 03:39:05 +02:00
Refactor imports and add fields to OllamaStructuredResult
Reorders and deduplicates import statements across multiple files for consistency and clarity. Adds additional fields to OllamaStructuredResult and ensures OllamaResult is populated with these fields. Updates tests and minor code style improvements throughout the codebase.
This commit is contained in:
parent
4de3d98b79
commit
b216d1b647
@ -52,7 +52,7 @@ import java.util.stream.Collectors;
|
|||||||
/**
|
/**
|
||||||
* The base Ollama API class.
|
* The base Ollama API class.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings({ "DuplicatedCode", "resource" })
|
@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);
|
||||||
@ -101,7 +101,7 @@ public class OllamaAPI {
|
|||||||
* Default is 0 (no retries).
|
* Default is 0 (no retries).
|
||||||
*/
|
*/
|
||||||
@Setter
|
@Setter
|
||||||
@SuppressWarnings({ "FieldMayBeFinal", "FieldCanBeLocal" })
|
@SuppressWarnings({"FieldMayBeFinal", "FieldCanBeLocal"})
|
||||||
private int numberOfRetriesForModelPull = 0;
|
private int numberOfRetriesForModelPull = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -244,7 +244,7 @@ public class OllamaAPI {
|
|||||||
* tags, tag count, and the time when model was updated.
|
* tags, tag count, and the time when model was updated.
|
||||||
*
|
*
|
||||||
* @return A list of {@link LibraryModel} objects representing the models
|
* @return A list of {@link LibraryModel} objects representing the models
|
||||||
* available in the Ollama library.
|
* available in the Ollama library.
|
||||||
* @throws OllamaBaseException If the HTTP request fails or the response is not
|
* @throws OllamaBaseException If the HTTP request fails or the response is not
|
||||||
* successful (non-200 status code).
|
* successful (non-200 status code).
|
||||||
* @throws IOException If an I/O error occurs during the HTTP request
|
* @throws IOException If an I/O error occurs during the HTTP request
|
||||||
@ -312,7 +312,7 @@ public class OllamaAPI {
|
|||||||
* of the library model
|
* of the library model
|
||||||
* for which the tags need to be fetched.
|
* for which the tags need to be fetched.
|
||||||
* @return a list of {@link LibraryModelTag} objects containing the extracted
|
* @return a list of {@link LibraryModelTag} objects containing the extracted
|
||||||
* tags and their associated metadata.
|
* tags and their associated metadata.
|
||||||
* @throws OllamaBaseException if the HTTP response status code indicates an
|
* @throws OllamaBaseException if the HTTP response status code indicates an
|
||||||
* error (i.e., not 200 OK),
|
* error (i.e., not 200 OK),
|
||||||
* or if there is any other issue during the
|
* or if there is any other issue during the
|
||||||
@ -389,7 +389,7 @@ public class OllamaAPI {
|
|||||||
* @param modelName The name of the model to search for in the library.
|
* @param modelName The name of the model to search for in the library.
|
||||||
* @param tag The tag name to search for within the specified model.
|
* @param tag The tag name to search for within the specified model.
|
||||||
* @return The {@link LibraryModelTag} associated with the specified model and
|
* @return The {@link LibraryModelTag} associated with the specified model and
|
||||||
* tag.
|
* tag.
|
||||||
* @throws OllamaBaseException If there is a problem with the Ollama library
|
* @throws OllamaBaseException If there is a problem with the Ollama library
|
||||||
* operations.
|
* operations.
|
||||||
* @throws IOException If an I/O error occurs during the operation.
|
* @throws IOException If an I/O error occurs during the operation.
|
||||||
@ -397,8 +397,8 @@ public class OllamaAPI {
|
|||||||
* @throws InterruptedException If the operation is interrupted.
|
* @throws InterruptedException If the operation is interrupted.
|
||||||
* @throws NoSuchElementException If the model or the tag is not found.
|
* @throws NoSuchElementException If the model or the tag is not found.
|
||||||
* @deprecated This method relies on the HTML structure of the Ollama website,
|
* @deprecated This method relies on the HTML structure of the Ollama website,
|
||||||
* which can change at any time and break this API. It is deprecated
|
* which can change at any time and break this API. It is deprecated
|
||||||
* and may be removed in the future.
|
* and may be removed in the future.
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public LibraryModelTag findModelTagFromLibrary(String modelName, String tag)
|
public LibraryModelTag findModelTagFromLibrary(String modelName, String tag)
|
||||||
@ -855,7 +855,7 @@ public class OllamaAPI {
|
|||||||
* @throws InterruptedException if the operation is interrupted
|
* @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,
|
||||||
OllamaStreamHandler responseStreamHandler) throws OllamaBaseException, IOException, InterruptedException {
|
OllamaStreamHandler responseStreamHandler) throws OllamaBaseException, IOException, InterruptedException {
|
||||||
OllamaGenerateRequest ollamaRequestModel = new OllamaGenerateRequest(model, prompt);
|
OllamaGenerateRequest ollamaRequestModel = new OllamaGenerateRequest(model, prompt);
|
||||||
ollamaRequestModel.setRaw(raw);
|
ollamaRequestModel.setRaw(raw);
|
||||||
ollamaRequestModel.setThink(false);
|
ollamaRequestModel.setThink(false);
|
||||||
@ -891,7 +891,7 @@ public class OllamaAPI {
|
|||||||
* @throws InterruptedException if the operation is interrupted
|
* @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,
|
||||||
OllamaStreamHandler thinkingStreamHandler, OllamaStreamHandler responseStreamHandler)
|
OllamaStreamHandler thinkingStreamHandler, OllamaStreamHandler responseStreamHandler)
|
||||||
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);
|
||||||
@ -943,7 +943,7 @@ public class OllamaAPI {
|
|||||||
* @param format A map containing the format specification for the structured
|
* @param format A map containing the format specification for the structured
|
||||||
* output.
|
* output.
|
||||||
* @return An instance of {@link OllamaResult} containing the structured
|
* @return An instance of {@link OllamaResult} containing the structured
|
||||||
* response.
|
* response.
|
||||||
* @throws OllamaBaseException if the response indicates an error status.
|
* @throws OllamaBaseException if the response indicates an error status.
|
||||||
* @throws IOException if an I/O error occurs during the HTTP request.
|
* @throws IOException if an I/O error occurs during the HTTP request.
|
||||||
* @throws InterruptedException if the operation is interrupted.
|
* @throws InterruptedException if the operation is interrupted.
|
||||||
@ -984,6 +984,18 @@ public class OllamaAPI {
|
|||||||
OllamaStructuredResult.class);
|
OllamaStructuredResult.class);
|
||||||
OllamaResult ollamaResult = new OllamaResult(structuredResult.getResponse(), structuredResult.getThinking(),
|
OllamaResult ollamaResult = new OllamaResult(structuredResult.getResponse(), structuredResult.getThinking(),
|
||||||
structuredResult.getResponseTime(), statusCode);
|
structuredResult.getResponseTime(), statusCode);
|
||||||
|
|
||||||
|
ollamaResult.setModel(structuredResult.getModel());
|
||||||
|
ollamaResult.setCreatedAt(structuredResult.getCreatedAt());
|
||||||
|
ollamaResult.setDone(structuredResult.isDone());
|
||||||
|
ollamaResult.setDoneReason(structuredResult.getDoneReason());
|
||||||
|
ollamaResult.setContext(structuredResult.getContext());
|
||||||
|
ollamaResult.setTotalDuration(structuredResult.getTotalDuration());
|
||||||
|
ollamaResult.setLoadDuration(structuredResult.getLoadDuration());
|
||||||
|
ollamaResult.setPromptEvalCount(structuredResult.getPromptEvalCount());
|
||||||
|
ollamaResult.setPromptEvalDuration(structuredResult.getPromptEvalDuration());
|
||||||
|
ollamaResult.setEvalCount(structuredResult.getEvalCount());
|
||||||
|
ollamaResult.setEvalDuration(structuredResult.getEvalDuration());
|
||||||
if (verbose) {
|
if (verbose) {
|
||||||
logger.info("Model response:\n{}", ollamaResult);
|
logger.info("Model response:\n{}", ollamaResult);
|
||||||
}
|
}
|
||||||
@ -1008,8 +1020,8 @@ public class OllamaAPI {
|
|||||||
* @param options Additional options or configurations to use when generating
|
* @param options Additional options or configurations to use when generating
|
||||||
* the response.
|
* the response.
|
||||||
* @return {@link OllamaToolsResult} An OllamaToolsResult object containing the
|
* @return {@link OllamaToolsResult} An OllamaToolsResult object containing the
|
||||||
* response from the AI model and the results of invoking the tools on
|
* response from the AI model and the results of invoking the tools on
|
||||||
* that output.
|
* that output.
|
||||||
* @throws OllamaBaseException if the response indicates an error status
|
* @throws OllamaBaseException if the response indicates an error status
|
||||||
* @throws IOException if an I/O error occurs during the HTTP request
|
* @throws IOException if an I/O error occurs during the HTTP request
|
||||||
* @throws InterruptedException if the operation is interrupted
|
* @throws InterruptedException if the operation is interrupted
|
||||||
@ -1094,7 +1106,7 @@ public class OllamaAPI {
|
|||||||
* @param think if {@code true}, streams "thinking" tokens as well as response
|
* @param think if {@code true}, streams "thinking" tokens as well as response
|
||||||
* tokens
|
* tokens
|
||||||
* @return an {@link OllamaAsyncResultStreamer} handle for polling and
|
* @return an {@link OllamaAsyncResultStreamer} handle for polling and
|
||||||
* retrieving streamed results
|
* retrieving streamed results
|
||||||
*/
|
*/
|
||||||
public OllamaAsyncResultStreamer generateAsync(String model, String prompt, boolean raw, boolean think) {
|
public OllamaAsyncResultStreamer generateAsync(String model, String prompt, boolean raw, boolean think) {
|
||||||
OllamaGenerateRequest ollamaRequestModel = new OllamaGenerateRequest(model, prompt);
|
OllamaGenerateRequest ollamaRequestModel = new OllamaGenerateRequest(model, prompt);
|
||||||
@ -1128,7 +1140,7 @@ public class OllamaAPI {
|
|||||||
* @throws InterruptedException if the operation is interrupted
|
* @throws InterruptedException if the operation is interrupted
|
||||||
*/
|
*/
|
||||||
public OllamaResult generateWithImageFiles(String model, String prompt, List<File> imageFiles, Options options,
|
public OllamaResult generateWithImageFiles(String model, String prompt, List<File> imageFiles, Options options,
|
||||||
OllamaStreamHandler streamHandler) throws OllamaBaseException, IOException, InterruptedException {
|
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));
|
||||||
@ -1175,7 +1187,7 @@ public class OllamaAPI {
|
|||||||
* @throws URISyntaxException if the URI for the request is malformed
|
* @throws URISyntaxException if the URI for the request is malformed
|
||||||
*/
|
*/
|
||||||
public OllamaResult generateWithImageURLs(String model, String prompt, List<String> imageURLs, Options options,
|
public OllamaResult generateWithImageURLs(String model, String prompt, List<String> imageURLs, Options options,
|
||||||
OllamaStreamHandler streamHandler)
|
OllamaStreamHandler streamHandler)
|
||||||
throws OllamaBaseException, IOException, InterruptedException, URISyntaxException {
|
throws OllamaBaseException, IOException, InterruptedException, URISyntaxException {
|
||||||
List<String> images = new ArrayList<>();
|
List<String> images = new ArrayList<>();
|
||||||
for (String imageURL : imageURLs) {
|
for (String imageURL : imageURLs) {
|
||||||
@ -1217,13 +1229,13 @@ public class OllamaAPI {
|
|||||||
* @param streamHandler optional callback that will be invoked with each
|
* @param streamHandler optional callback that will be invoked with each
|
||||||
* streamed response; if null, streaming is disabled
|
* streamed response; if null, streaming is disabled
|
||||||
* @return OllamaResult containing the response text and the time taken for the
|
* @return OllamaResult containing the response text and the time taken for the
|
||||||
* response
|
* response
|
||||||
* @throws OllamaBaseException if the response indicates an error status
|
* @throws OllamaBaseException if the response indicates an error status
|
||||||
* @throws IOException if an I/O error occurs during the HTTP request
|
* @throws IOException if an I/O error occurs during the HTTP request
|
||||||
* @throws InterruptedException if the operation is interrupted
|
* @throws InterruptedException if the operation is interrupted
|
||||||
*/
|
*/
|
||||||
public OllamaResult generateWithImages(String model, String prompt, List<byte[]> images, Options options,
|
public OllamaResult generateWithImages(String model, String prompt, List<byte[]> images, Options options,
|
||||||
OllamaStreamHandler streamHandler) throws OllamaBaseException, IOException, InterruptedException {
|
OllamaStreamHandler streamHandler) throws OllamaBaseException, IOException, InterruptedException {
|
||||||
List<String> encodedImages = new ArrayList<>();
|
List<String> encodedImages = new ArrayList<>();
|
||||||
for (byte[] image : images) {
|
for (byte[] image : images) {
|
||||||
encodedImages.add(encodeByteArrayToBase64(image));
|
encodedImages.add(encodeByteArrayToBase64(image));
|
||||||
@ -1257,7 +1269,7 @@ public class OllamaAPI {
|
|||||||
* @param model the ollama model to ask the question to
|
* @param model the ollama model to ask the question to
|
||||||
* @param messages chat history / message stack to send to the model
|
* @param messages chat history / message stack to send to the model
|
||||||
* @return {@link OllamaChatResult} containing the api response and the message
|
* @return {@link OllamaChatResult} containing the api response and the message
|
||||||
* history including the newly acquired assistant response.
|
* history including the newly acquired assistant response.
|
||||||
* @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
|
* @throws InterruptedException in case the server is not reachable or
|
||||||
@ -1323,7 +1335,7 @@ public class OllamaAPI {
|
|||||||
* @throws ToolInvocationException if the tool invocation fails
|
* @throws ToolInvocationException if the tool invocation fails
|
||||||
*/
|
*/
|
||||||
public OllamaChatResult chat(OllamaChatRequest request, OllamaStreamHandler thinkingStreamHandler,
|
public OllamaChatResult chat(OllamaChatRequest request, OllamaStreamHandler thinkingStreamHandler,
|
||||||
OllamaStreamHandler responseStreamHandler)
|
OllamaStreamHandler responseStreamHandler)
|
||||||
throws OllamaBaseException, IOException, InterruptedException, ToolInvocationException {
|
throws OllamaBaseException, IOException, InterruptedException, ToolInvocationException {
|
||||||
return chatStreaming(request, new OllamaChatStreamObserver(thinkingStreamHandler, responseStreamHandler));
|
return chatStreaming(request, new OllamaChatStreamObserver(thinkingStreamHandler, responseStreamHandler));
|
||||||
}
|
}
|
||||||
@ -1468,7 +1480,7 @@ public class OllamaAPI {
|
|||||||
registerAnnotatedTools(provider.getDeclaredConstructor().newInstance());
|
registerAnnotatedTools(provider.getDeclaredConstructor().newInstance());
|
||||||
}
|
}
|
||||||
} catch (InstantiationException | NoSuchMethodException | IllegalAccessException
|
} catch (InstantiationException | NoSuchMethodException | IllegalAccessException
|
||||||
| InvocationTargetException e) {
|
| InvocationTargetException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1607,7 +1619,7 @@ public class OllamaAPI {
|
|||||||
* @throws InterruptedException if the thread is interrupted during the request.
|
* @throws InterruptedException if the thread is interrupted during the request.
|
||||||
*/
|
*/
|
||||||
private OllamaResult generateSyncForOllamaRequestModel(OllamaGenerateRequest ollamaRequestModel,
|
private OllamaResult generateSyncForOllamaRequestModel(OllamaGenerateRequest ollamaRequestModel,
|
||||||
OllamaStreamHandler thinkingStreamHandler, OllamaStreamHandler responseStreamHandler)
|
OllamaStreamHandler thinkingStreamHandler, OllamaStreamHandler responseStreamHandler)
|
||||||
throws OllamaBaseException, IOException, InterruptedException {
|
throws OllamaBaseException, IOException, InterruptedException {
|
||||||
OllamaGenerateEndpointCaller requestCaller = new OllamaGenerateEndpointCaller(host, auth, requestTimeoutSeconds,
|
OllamaGenerateEndpointCaller requestCaller = new OllamaGenerateEndpointCaller(host, auth, requestTimeoutSeconds,
|
||||||
verbose);
|
verbose);
|
||||||
|
@ -1,21 +1,15 @@
|
|||||||
package io.github.ollama4j.models.chat;
|
package io.github.ollama4j.models.chat;
|
||||||
|
|
||||||
import static io.github.ollama4j.utils.Utils.getObjectMapper;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
|
||||||
|
|
||||||
import io.github.ollama4j.utils.FileToBase64Serializer;
|
import io.github.ollama4j.utils.FileToBase64Serializer;
|
||||||
|
import lombok.*;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import static io.github.ollama4j.utils.Utils.getObjectMapper;
|
||||||
import lombok.Data;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
import lombok.NonNull;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines a single Message to be used inside a chat request against the ollama /api/chat endpoint.
|
* Defines a single Message to be used inside a chat request against the ollama /api/chat endpoint.
|
||||||
|
@ -1,14 +1,13 @@
|
|||||||
package io.github.ollama4j.models.chat;
|
package io.github.ollama4j.models.chat;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import io.github.ollama4j.models.request.OllamaCommonRequest;
|
import io.github.ollama4j.models.request.OllamaCommonRequest;
|
||||||
import io.github.ollama4j.tools.Tools;
|
import io.github.ollama4j.tools.Tools;
|
||||||
import io.github.ollama4j.utils.OllamaRequestBody;
|
import io.github.ollama4j.utils.OllamaRequestBody;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines a Request to use against the ollama /api/chat endpoint.
|
* Defines a Request to use against the ollama /api/chat endpoint.
|
||||||
*
|
*
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
package io.github.ollama4j.models.chat;
|
package io.github.ollama4j.models.chat;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import static io.github.ollama4j.utils.Utils.getObjectMapper;
|
import static io.github.ollama4j.utils.Utils.getObjectMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
package io.github.ollama4j.models.embeddings;
|
package io.github.ollama4j.models.embeddings;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
@Data
|
@Data
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package io.github.ollama4j.models.embeddings;
|
package io.github.ollama4j.models.embeddings;
|
||||||
|
|
||||||
import static io.github.ollama4j.utils.Utils.getObjectMapper;
|
|
||||||
import java.util.Map;
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@ -9,6 +7,10 @@ import lombok.NoArgsConstructor;
|
|||||||
import lombok.NonNull;
|
import lombok.NonNull;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import static io.github.ollama4j.utils.Utils.getObjectMapper;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
|
@ -3,12 +3,11 @@ package io.github.ollama4j.models.generate;
|
|||||||
|
|
||||||
import io.github.ollama4j.models.request.OllamaCommonRequest;
|
import io.github.ollama4j.models.request.OllamaCommonRequest;
|
||||||
import io.github.ollama4j.utils.OllamaRequestBody;
|
import io.github.ollama4j.utils.OllamaRequestBody;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
public class OllamaGenerateRequest extends OllamaCommonRequest implements OllamaRequestBody{
|
public class OllamaGenerateRequest extends OllamaCommonRequest implements OllamaRequestBody{
|
||||||
|
@ -2,11 +2,10 @@ package io.github.ollama4j.models.generate;
|
|||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||||
public class OllamaGenerateResponseModel {
|
public class OllamaGenerateResponseModel {
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
package io.github.ollama4j.models.request;
|
package io.github.ollama4j.models.request;
|
||||||
|
|
||||||
import java.util.Base64;
|
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
import java.util.Base64;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
package io.github.ollama4j.models.request;
|
package io.github.ollama4j.models.request;
|
||||||
|
|
||||||
import static io.github.ollama4j.utils.Utils.getObjectMapper;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import static io.github.ollama4j.utils.Utils.getObjectMapper;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class CustomModelFileContentsRequest {
|
public class CustomModelFileContentsRequest {
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
package io.github.ollama4j.models.request;
|
package io.github.ollama4j.models.request;
|
||||||
|
|
||||||
import static io.github.ollama4j.utils.Utils.getObjectMapper;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import static io.github.ollama4j.utils.Utils.getObjectMapper;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class CustomModelFilePathRequest {
|
public class CustomModelFilePathRequest {
|
||||||
|
@ -1,17 +1,15 @@
|
|||||||
package io.github.ollama4j.models.request;
|
package io.github.ollama4j.models.request;
|
||||||
|
|
||||||
import static io.github.ollama4j.utils.Utils.getObjectMapper;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import static io.github.ollama4j.utils.Utils.getObjectMapper;
|
||||||
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
package io.github.ollama4j.models.request;
|
package io.github.ollama4j.models.request;
|
||||||
|
|
||||||
import static io.github.ollama4j.utils.Utils.getObjectMapper;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import static io.github.ollama4j.utils.Utils.getObjectMapper;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class ModelRequest {
|
public class ModelRequest {
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
package io.github.ollama4j.models.request;
|
package io.github.ollama4j.models.request;
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
|
|
||||||
import io.github.ollama4j.utils.BooleanToJsonFormatFlagSerializer;
|
import io.github.ollama4j.utils.BooleanToJsonFormatFlagSerializer;
|
||||||
import io.github.ollama4j.utils.Utils;
|
import io.github.ollama4j.utils.Utils;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||||
public abstract class OllamaCommonRequest {
|
public abstract class OllamaCommonRequest {
|
||||||
|
@ -1,16 +1,15 @@
|
|||||||
package io.github.ollama4j.models.request;
|
package io.github.ollama4j.models.request;
|
||||||
|
|
||||||
|
import io.github.ollama4j.OllamaAPI;
|
||||||
|
import io.github.ollama4j.utils.Constants;
|
||||||
|
import lombok.Getter;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.net.http.HttpRequest;
|
import java.net.http.HttpRequest;
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
|
|
||||||
import io.github.ollama4j.utils.Constants;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
import io.github.ollama4j.OllamaAPI;
|
|
||||||
import lombok.Getter;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Abstract helperclass to call the ollama api server.
|
* Abstract helperclass to call the ollama api server.
|
||||||
*/
|
*/
|
||||||
|
@ -2,11 +2,11 @@ package io.github.ollama4j.models.request;
|
|||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import io.github.ollama4j.exceptions.OllamaBaseException;
|
import io.github.ollama4j.exceptions.OllamaBaseException;
|
||||||
import io.github.ollama4j.models.response.OllamaErrorResponse;
|
|
||||||
import io.github.ollama4j.models.response.OllamaResult;
|
|
||||||
import io.github.ollama4j.models.generate.OllamaGenerateResponseModel;
|
import io.github.ollama4j.models.generate.OllamaGenerateResponseModel;
|
||||||
import io.github.ollama4j.models.generate.OllamaGenerateStreamObserver;
|
import io.github.ollama4j.models.generate.OllamaGenerateStreamObserver;
|
||||||
import io.github.ollama4j.models.generate.OllamaStreamHandler;
|
import io.github.ollama4j.models.generate.OllamaStreamHandler;
|
||||||
|
import io.github.ollama4j.models.response.OllamaErrorResponse;
|
||||||
|
import io.github.ollama4j.models.response.OllamaResult;
|
||||||
import io.github.ollama4j.utils.OllamaRequestBody;
|
import io.github.ollama4j.utils.OllamaRequestBody;
|
||||||
import io.github.ollama4j.utils.Utils;
|
import io.github.ollama4j.utils.Utils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
package io.github.ollama4j.models.response;
|
package io.github.ollama4j.models.response;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class LibraryModel {
|
public class LibraryModel {
|
||||||
|
|
||||||
|
@ -2,8 +2,6 @@ package io.github.ollama4j.models.response;
|
|||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class LibraryModelTag {
|
public class LibraryModelTag {
|
||||||
private String name;
|
private String name;
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
package io.github.ollama4j.models.response;
|
package io.github.ollama4j.models.response;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class ListModelsResponse {
|
public class ListModelsResponse {
|
||||||
private List<Model> models;
|
private List<Model> models;
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
package io.github.ollama4j.models.response;
|
package io.github.ollama4j.models.response;
|
||||||
|
|
||||||
import java.time.OffsetDateTime;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import io.github.ollama4j.utils.Utils;
|
import io.github.ollama4j.utils.Utils;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.OffsetDateTime;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||||
public class Model {
|
public class Model {
|
||||||
|
@ -3,12 +3,12 @@ package io.github.ollama4j.models.response;
|
|||||||
import io.github.ollama4j.exceptions.OllamaBaseException;
|
import io.github.ollama4j.exceptions.OllamaBaseException;
|
||||||
import io.github.ollama4j.models.generate.OllamaGenerateRequest;
|
import io.github.ollama4j.models.generate.OllamaGenerateRequest;
|
||||||
import io.github.ollama4j.models.generate.OllamaGenerateResponseModel;
|
import io.github.ollama4j.models.generate.OllamaGenerateResponseModel;
|
||||||
|
import io.github.ollama4j.utils.Constants;
|
||||||
import io.github.ollama4j.utils.Utils;
|
import io.github.ollama4j.utils.Utils;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import io.github.ollama4j.utils.Constants;
|
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
@ -1,20 +1,17 @@
|
|||||||
package io.github.ollama4j.models.response;
|
package io.github.ollama4j.models.response;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.core.type.TypeReference;
|
import com.fasterxml.jackson.core.type.TypeReference;
|
||||||
|
|
||||||
import io.github.ollama4j.models.generate.OllamaGenerateResponseModel;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
import static io.github.ollama4j.utils.Utils.getObjectMapper;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import static io.github.ollama4j.utils.Utils.getObjectMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The type Ollama result.
|
* The type Ollama result.
|
||||||
*/
|
*/
|
||||||
|
@ -1,19 +1,18 @@
|
|||||||
package io.github.ollama4j.models.response;
|
package io.github.ollama4j.models.response;
|
||||||
|
|
||||||
import static io.github.ollama4j.utils.Utils.getObjectMapper;
|
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonCreator;
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.core.type.TypeReference;
|
import com.fasterxml.jackson.core.type.TypeReference;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import static io.github.ollama4j.utils.Utils.getObjectMapper;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
@Data
|
@Data
|
||||||
@ -22,13 +21,21 @@ import lombok.NoArgsConstructor;
|
|||||||
public class OllamaStructuredResult {
|
public class OllamaStructuredResult {
|
||||||
private String response;
|
private String response;
|
||||||
private String thinking;
|
private String thinking;
|
||||||
|
|
||||||
private int httpStatusCode;
|
private int httpStatusCode;
|
||||||
|
|
||||||
private long responseTime = 0;
|
private long responseTime = 0;
|
||||||
|
|
||||||
private String model;
|
private String model;
|
||||||
|
|
||||||
|
private @JsonProperty("created_at") String createdAt;
|
||||||
|
private boolean done;
|
||||||
|
private @JsonProperty("done_reason") String doneReason;
|
||||||
|
private List<Integer> context;
|
||||||
|
private @JsonProperty("total_duration") Long totalDuration;
|
||||||
|
private @JsonProperty("load_duration") Long loadDuration;
|
||||||
|
private @JsonProperty("prompt_eval_count") Integer promptEvalCount;
|
||||||
|
private @JsonProperty("prompt_eval_duration") Long promptEvalDuration;
|
||||||
|
private @JsonProperty("eval_count") Integer evalCount;
|
||||||
|
private @JsonProperty("eval_duration") Long evalDuration;
|
||||||
|
|
||||||
public OllamaStructuredResult(String response, long responseTime, int httpStatusCode) {
|
public OllamaStructuredResult(String response, long responseTime, int httpStatusCode) {
|
||||||
this.response = response;
|
this.response = response;
|
||||||
this.responseTime = responseTime;
|
this.responseTime = responseTime;
|
||||||
|
@ -2,8 +2,6 @@ package io.github.ollama4j.models.response;
|
|||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class OllamaVersion {
|
public class OllamaVersion {
|
||||||
private String version;
|
private String version;
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
package io.github.ollama4j.utils;
|
package io.github.ollama4j.utils;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonGenerator;
|
import com.fasterxml.jackson.core.JsonGenerator;
|
||||||
import com.fasterxml.jackson.databind.JsonSerializer;
|
import com.fasterxml.jackson.databind.JsonSerializer;
|
||||||
import com.fasterxml.jackson.databind.SerializerProvider;
|
import com.fasterxml.jackson.databind.SerializerProvider;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
public class BooleanToJsonFormatFlagSerializer extends JsonSerializer<Boolean>{
|
public class BooleanToJsonFormatFlagSerializer extends JsonSerializer<Boolean>{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
package io.github.ollama4j.utils;
|
package io.github.ollama4j.utils;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.Base64;
|
|
||||||
import java.util.Collection;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonGenerator;
|
import com.fasterxml.jackson.core.JsonGenerator;
|
||||||
import com.fasterxml.jackson.databind.JsonSerializer;
|
import com.fasterxml.jackson.databind.JsonSerializer;
|
||||||
import com.fasterxml.jackson.databind.SerializerProvider;
|
import com.fasterxml.jackson.databind.SerializerProvider;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Base64;
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
public class FileToBase64Serializer extends JsonSerializer<Collection<byte[]>> {
|
public class FileToBase64Serializer extends JsonSerializer<Collection<byte[]>> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
package io.github.ollama4j.utils;
|
package io.github.ollama4j.utils;
|
||||||
|
|
||||||
import java.net.http.HttpRequest.BodyPublisher;
|
|
||||||
import java.net.http.HttpRequest.BodyPublishers;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
|
|
||||||
|
import java.net.http.HttpRequest.BodyPublisher;
|
||||||
|
import java.net.http.HttpRequest.BodyPublishers;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Interface to represent a OllamaRequest as HTTP-Request Body via {@link BodyPublishers}.
|
* Interface to represent a OllamaRequest as HTTP-Request Body via {@link BodyPublishers}.
|
||||||
*/
|
*/
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
package io.github.ollama4j.utils;
|
package io.github.ollama4j.utils;
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/** Class for options for Ollama model. */
|
/** Class for options for Ollama model. */
|
||||||
@Data
|
@Data
|
||||||
public class Options {
|
public class Options {
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package io.github.ollama4j.utils;
|
package io.github.ollama4j.utils;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
/** Builder class for creating options for Ollama model. */
|
/** Builder class for creating options for Ollama model. */
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
package io.github.ollama4j.utils;
|
package io.github.ollama4j.utils;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -9,9 +12,6 @@ import java.net.URISyntaxException;
|
|||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
|
||||||
|
|
||||||
public class Utils {
|
public class Utils {
|
||||||
|
|
||||||
private static ObjectMapper objectMapper;
|
private static ObjectMapper objectMapper;
|
||||||
|
@ -24,7 +24,6 @@ import java.io.FileWriter;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -42,9 +41,8 @@ public class WithAuth {
|
|||||||
private static final String OLLAMA_VERSION = "0.6.1";
|
private static final String OLLAMA_VERSION = "0.6.1";
|
||||||
private static final String NGINX_VERSION = "nginx:1.23.4-alpine";
|
private static final String NGINX_VERSION = "nginx:1.23.4-alpine";
|
||||||
private static final String BEARER_AUTH_TOKEN = "secret-token";
|
private static final String BEARER_AUTH_TOKEN = "secret-token";
|
||||||
|
|
||||||
private static final String GENERAL_PURPOSE_MODEL = "gemma3:270m";
|
private static final String GENERAL_PURPOSE_MODEL = "gemma3:270m";
|
||||||
private static final String THINKING_MODEL = "gpt-oss:20b";
|
// private static final String THINKING_MODEL = "gpt-oss:20b";
|
||||||
|
|
||||||
|
|
||||||
private static OllamaContainer ollama;
|
private static OllamaContainer ollama;
|
||||||
@ -52,7 +50,7 @@ public class WithAuth {
|
|||||||
private static OllamaAPI api;
|
private static OllamaAPI api;
|
||||||
|
|
||||||
@BeforeAll
|
@BeforeAll
|
||||||
public static void setUp() {
|
static void setUp() {
|
||||||
ollama = createOllamaContainer();
|
ollama = createOllamaContainer();
|
||||||
ollama.start();
|
ollama.start();
|
||||||
|
|
||||||
@ -135,14 +133,14 @@ public class WithAuth {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Order(1)
|
@Order(1)
|
||||||
void testOllamaBehindProxy() throws InterruptedException {
|
void testOllamaBehindProxy() {
|
||||||
api.setBearerAuth(BEARER_AUTH_TOKEN);
|
api.setBearerAuth(BEARER_AUTH_TOKEN);
|
||||||
assertTrue(api.ping(), "Expected OllamaAPI to successfully ping through NGINX with valid auth token.");
|
assertTrue(api.ping(), "Expected OllamaAPI to successfully ping through NGINX with valid auth token.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Order(1)
|
@Order(1)
|
||||||
void testWithWrongToken() throws InterruptedException {
|
void testWithWrongToken() {
|
||||||
api.setBearerAuth("wrong-token");
|
api.setBearerAuth("wrong-token");
|
||||||
assertFalse(api.ping(), "Expected OllamaAPI ping to fail through NGINX with an invalid auth token.");
|
assertFalse(api.ping(), "Expected OllamaAPI ping to fail through NGINX with an invalid auth token.");
|
||||||
}
|
}
|
||||||
@ -152,8 +150,8 @@ public class WithAuth {
|
|||||||
void testAskModelWithStructuredOutput()
|
void testAskModelWithStructuredOutput()
|
||||||
throws OllamaBaseException, IOException, InterruptedException, URISyntaxException {
|
throws OllamaBaseException, IOException, InterruptedException, URISyntaxException {
|
||||||
api.setBearerAuth(BEARER_AUTH_TOKEN);
|
api.setBearerAuth(BEARER_AUTH_TOKEN);
|
||||||
|
String model = GENERAL_PURPOSE_MODEL;
|
||||||
api.pullModel(THINKING_MODEL);
|
api.pullModel(model);
|
||||||
|
|
||||||
String prompt = "The sun is shining brightly and is directly overhead at the zenith, casting my shadow over my foot, so it must be noon.";
|
String prompt = "The sun is shining brightly and is directly overhead at the zenith, casting my shadow over my foot, so it must be noon.";
|
||||||
|
|
||||||
@ -170,7 +168,7 @@ public class WithAuth {
|
|||||||
});
|
});
|
||||||
format.put("required", List.of("isNoon"));
|
format.put("required", List.of("isNoon"));
|
||||||
|
|
||||||
OllamaResult result = api.generate(THINKING_MODEL, prompt, format);
|
OllamaResult result = api.generate(model, prompt, format);
|
||||||
|
|
||||||
assertNotNull(result);
|
assertNotNull(result);
|
||||||
assertNotNull(result.getResponse());
|
assertNotNull(result.getResponse());
|
||||||
|
@ -21,7 +21,8 @@ import java.util.ArrayList;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.fail;
|
||||||
import static org.mockito.Mockito.*;
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
class TestMockedAPIs {
|
class TestMockedAPIs {
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
package io.github.ollama4j.unittests.jackson;
|
package io.github.ollama4j.unittests.jackson;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
||||||
import static org.junit.jupiter.api.Assertions.fail;
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import io.github.ollama4j.utils.Utils;
|
import io.github.ollama4j.utils.Utils;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.fail;
|
||||||
|
|
||||||
public abstract class AbstractSerializationTest<T> {
|
public abstract class AbstractSerializationTest<T> {
|
||||||
|
|
||||||
protected ObjectMapper mapper = Utils.getObjectMapper();
|
protected ObjectMapper mapper = Utils.getObjectMapper();
|
||||||
|
@ -1,20 +1,19 @@
|
|||||||
package io.github.ollama4j.unittests.jackson;
|
package io.github.ollama4j.unittests.jackson;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import io.github.ollama4j.models.chat.OllamaChatMessageRole;
|
||||||
import static org.junit.jupiter.api.Assertions.assertThrowsExactly;
|
import io.github.ollama4j.models.chat.OllamaChatRequest;
|
||||||
|
import io.github.ollama4j.models.chat.OllamaChatRequestBuilder;
|
||||||
|
import io.github.ollama4j.utils.OptionsBuilder;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import io.github.ollama4j.models.chat.OllamaChatRequest;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import org.json.JSONObject;
|
import static org.junit.jupiter.api.Assertions.assertThrowsExactly;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
|
|
||||||
import io.github.ollama4j.models.chat.OllamaChatMessageRole;
|
|
||||||
import io.github.ollama4j.models.chat.OllamaChatRequestBuilder;
|
|
||||||
import io.github.ollama4j.utils.OptionsBuilder;
|
|
||||||
|
|
||||||
public class TestChatRequestSerialization extends AbstractSerializationTest<OllamaChatRequest> {
|
public class TestChatRequestSerialization extends AbstractSerializationTest<OllamaChatRequest> {
|
||||||
|
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
package io.github.ollama4j.unittests.jackson;
|
package io.github.ollama4j.unittests.jackson;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
||||||
|
|
||||||
import io.github.ollama4j.models.embeddings.OllamaEmbedRequestBuilder;
|
import io.github.ollama4j.models.embeddings.OllamaEmbedRequestBuilder;
|
||||||
import io.github.ollama4j.models.embeddings.OllamaEmbedRequestModel;
|
import io.github.ollama4j.models.embeddings.OllamaEmbedRequestModel;
|
||||||
|
import io.github.ollama4j.utils.OptionsBuilder;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import io.github.ollama4j.utils.OptionsBuilder;
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
public class TestEmbedRequestSerialization extends AbstractSerializationTest<OllamaEmbedRequestModel> {
|
public class TestEmbedRequestSerialization extends AbstractSerializationTest<OllamaEmbedRequestModel> {
|
||||||
|
|
||||||
|
@ -1,15 +1,13 @@
|
|||||||
package io.github.ollama4j.unittests.jackson;
|
package io.github.ollama4j.unittests.jackson;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
||||||
|
|
||||||
import io.github.ollama4j.models.generate.OllamaGenerateRequest;
|
import io.github.ollama4j.models.generate.OllamaGenerateRequest;
|
||||||
|
import io.github.ollama4j.models.generate.OllamaGenerateRequestBuilder;
|
||||||
|
import io.github.ollama4j.utils.OptionsBuilder;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import io.github.ollama4j.models.generate.OllamaGenerateRequestBuilder;
|
|
||||||
import io.github.ollama4j.utils.OptionsBuilder;
|
|
||||||
|
|
||||||
public class TestGenerateRequestSerialization extends AbstractSerializationTest<OllamaGenerateRequest> {
|
public class TestGenerateRequestSerialization extends AbstractSerializationTest<OllamaGenerateRequest> {
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user