forked from Mirror/ollama4j
9.6 KiB
9.6 KiB
Ollama4j
A Java library (wrapper/binding) for Ollama server.
Find more details on the website.
Table of Contents
How does it work?
flowchart LR
o4j[Ollama4j]
o[Ollama Server]
o4j -->|Communicates with| o;
m[Models]
subgraph Ollama Deployment
direction TB
o -->|Manages| m
end
Requirements
Installation
Note
Check the releases here and update the dependency version according to your requirements.
For Maven
Using JitPack
- Add
jitpack.io
repository to your project'spom.xml
or yoursettings.xml
:
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
- In your Maven project, add this dependency:
<dependency>
<groupId>io.github.amithkoujalgi</groupId>
<artifactId>ollama4j</artifactId>
<version>1.0.74</version>
</dependency>
Using GitHub's Maven Package Repository
- Add
GitHub Maven Packages
repository to your project'spom.xml
or yoursettings.xml
:
<repositories>
<repository>
<id>github</id>
<name>GitHub Apache Maven Packages</name>
<url>https://maven.pkg.github.com/amithkoujalgi/ollama4j</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
- Add
GitHub
server to settings.xml. (Usually available at ~/.m2/settings.xml)
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<servers>
<server>
<id>github</id>
<username>YOUR-USERNAME</username>
<password>YOUR-TOKEN</password>
</server>
</servers>
</settings>
- In your Maven project, add this dependency:
<dependency>
<groupId>io.github.amithkoujalgi</groupId>
<artifactId>ollama4j</artifactId>
<version>1.0.74</version>
</dependency>
For Gradle
- Add the
JitPack
repository to your build file
Add it in your root build.gradle
at the end of repositories:
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
mavenCentral()
maven { url 'https://jitpack.io' }
}
}
- Add the dependency
dependencies {
implementation 'com.github.amithkoujalgi:ollama4j:Tag'
}
API Spec
Tip
Find the full API specifications on the website.
Development
Build:
make build
Run unit tests:
make ut
Run integration tests:
make it
Releases
Newer artifacts are published via GitHub Actions CI workflow when a new release is created from main
branch.
Who's using Ollama4j?
Datafaker
: a library to generate fake dataVaadin Web UI
: UI-Tester for Interactions with Ollama via ollama4jollama-translator
: Minecraft 1.20.6 spigot plugin allows to easily break language barriers by using ollama on the server to translate all messages into a specfic target language.
Traction
Areas of improvement
- Use Java-naming conventions for attributes in the request/response models instead of the
snake-case conventions. (
possibly with Jackson-mapper's
@JsonProperty
) - Fix deprecated HTTP client code
- Setup logging
- Use lombok
- Update request body creation with Java objects
- Async APIs for images
- Support for function calling with models like Mistral
- generate in sync mode
- generate in async mode
- Add custom headers to requests
- Add additional params for
ask
APIs such as:options
: additional model parameters for the Modelfile such astemperature
- Supported params.system
: system prompt to (overrides what is defined in the Modelfile)template
: the full prompt or prompt template (overrides what is defined in the Modelfile)context
: the context parameter returned from a previous request, which can be used to keep a short conversational memorystream
: Add support for streaming responses from the model
- Add test cases
- Handle exceptions better (maybe throw more appropriate exceptions)
Get Involved
Contributions are most welcome! Whether it's reporting a bug, proposing an enhancement, or helping with code - any sort of contribution is much appreciated.
References
Credits
The nomenclature and the icon have been adopted from the incredible Ollama project.
Thanks to the amazing contributors