forked from Mirror/ollama4j
		
	Compare commits
	
		
			6 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | da1123271d | ||
|   | 12f099260f | ||
|   | 35728ae208 | ||
|   | 7dba9cc798 | ||
|   | bb1c920e22 | ||
|   | 770cbd7639 | 
| @@ -6,25 +6,35 @@ | |||||||
|  |  | ||||||
| /* You can override the default Infima variables here. */ | /* You can override the default Infima variables here. */ | ||||||
| :root { | :root { | ||||||
|   --ifm-color-primary: #2e8555; |     --ifm-color-primary: #2e8555; | ||||||
|   --ifm-color-primary-dark: #29784c; |     --ifm-color-primary-dark: #29784c; | ||||||
|   --ifm-color-primary-darker: #277148; |     --ifm-color-primary-darker: #277148; | ||||||
|   --ifm-color-primary-darkest: #205d3b; |     --ifm-color-primary-darkest: #205d3b; | ||||||
|   --ifm-color-primary-light: #33925d; |     --ifm-color-primary-light: #33925d; | ||||||
|   --ifm-color-primary-lighter: #359962; |     --ifm-color-primary-lighter: #359962; | ||||||
|   --ifm-color-primary-lightest: #3cad6e; |     --ifm-color-primary-lightest: #3cad6e; | ||||||
|   --ifm-code-font-size: 95%; |     --ifm-code-font-size: 95%; | ||||||
|   --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); |     --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); | ||||||
| } | } | ||||||
|  |  | ||||||
| /* For readability concerns, you should choose a lighter palette in dark mode. */ | /* For readability concerns, you should choose a lighter palette in dark mode. */ | ||||||
| [data-theme='dark'] { | [data-theme='dark'] { | ||||||
|   --ifm-color-primary: #25c2a0; |     --ifm-color-primary: #25c2a0; | ||||||
|   --ifm-color-primary-dark: #21af90; |     --ifm-color-primary-dark: #21af90; | ||||||
|   --ifm-color-primary-darker: #1fa588; |     --ifm-color-primary-darker: #1fa588; | ||||||
|   --ifm-color-primary-darkest: #1a8870; |     --ifm-color-primary-darkest: #1a8870; | ||||||
|   --ifm-color-primary-light: #29d5b0; |     --ifm-color-primary-light: #29d5b0; | ||||||
|   --ifm-color-primary-lighter: #32d8b4; |     --ifm-color-primary-lighter: #32d8b4; | ||||||
|   --ifm-color-primary-lightest: #4fddbf; |     --ifm-color-primary-lightest: #4fddbf; | ||||||
|   --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); |     --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | article > header > h1 { | ||||||
|  |     font-size: 2rem !important; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | div > h1, | ||||||
|  | header > h1, | ||||||
|  | h2 > a { | ||||||
|  |     font-size: 2rem !important; | ||||||
| } | } | ||||||
							
								
								
									
										546
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										546
									
								
								pom.xml
									
									
									
									
									
								
							| @@ -4,20 +4,20 @@ | |||||||
|  |  | ||||||
|     <groupId>io.github.amithkoujalgi</groupId> |     <groupId>io.github.amithkoujalgi</groupId> | ||||||
|     <artifactId>ollama4j</artifactId> |     <artifactId>ollama4j</artifactId> | ||||||
|     <version>1.0.42</version> |     <version>1.0.44</version> | ||||||
|  |  | ||||||
|   <name>Ollama4j</name> |     <name>Ollama4j</name> | ||||||
|   <description>Java library for interacting with Ollama API.</description> |     <description>Java library for interacting with Ollama API.</description> | ||||||
|   <url>https://github.com/amithkoujalgi/ollama4j</url> |     <url>https://github.com/amithkoujalgi/ollama4j</url> | ||||||
|  |  | ||||||
|   <properties> |     <properties> | ||||||
|     <maven.compiler.source>11</maven.compiler.source> |         <maven.compiler.source>11</maven.compiler.source> | ||||||
|     <maven.compiler.target>11</maven.compiler.target> |         <maven.compiler.target>11</maven.compiler.target> | ||||||
|     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> |         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | ||||||
|     <maven-surefire-plugin.version>3.0.0-M5</maven-surefire-plugin.version> |         <maven-surefire-plugin.version>3.0.0-M5</maven-surefire-plugin.version> | ||||||
|     <maven-failsafe-plugin.version>3.0.0-M5</maven-failsafe-plugin.version> |         <maven-failsafe-plugin.version>3.0.0-M5</maven-failsafe-plugin.version> | ||||||
|     <lombok.version>1.18.30</lombok.version> |         <lombok.version>1.18.30</lombok.version> | ||||||
|   </properties> |     </properties> | ||||||
|  |  | ||||||
|     <developers> |     <developers> | ||||||
|         <developer> |         <developer> | ||||||
| @@ -28,273 +28,273 @@ | |||||||
|         </developer> |         </developer> | ||||||
|     </developers> |     </developers> | ||||||
|  |  | ||||||
|   <licenses> |     <licenses> | ||||||
|     <license> |         <license> | ||||||
|       <name>MIT License</name> |             <name>MIT License</name> | ||||||
|       <url>https://raw.githubusercontent.com/amithkoujalgi/ollama4j/main/LICENSE</url> |             <url>https://raw.githubusercontent.com/amithkoujalgi/ollama4j/main/LICENSE</url> | ||||||
|     </license> |         </license> | ||||||
|   </licenses> |     </licenses> | ||||||
|  |  | ||||||
|   <scm> |     <scm> | ||||||
|     <connection>scm:git:git@github.com:amithkoujalgi/ollama4j.git</connection> |         <connection>scm:git:git@github.com:amithkoujalgi/ollama4j.git</connection> | ||||||
|     <developerConnection>scm:git:https://github.com/amithkoujalgi/ollama4j.git</developerConnection> |         <developerConnection>scm:git:https://github.com/amithkoujalgi/ollama4j.git</developerConnection> | ||||||
|     <url>https://github.com/amithkoujalgi/ollama4j</url> |         <url>https://github.com/amithkoujalgi/ollama4j</url> | ||||||
|     <tag>v1.0.42</tag> |         <tag>v1.0.44</tag> | ||||||
|   </scm> |     </scm> | ||||||
|  |  | ||||||
|   <build> |     <build> | ||||||
|     <plugins> |  | ||||||
|       <plugin> |  | ||||||
|         <groupId>org.apache.maven.plugins</groupId> |  | ||||||
|         <artifactId>maven-source-plugin</artifactId> |  | ||||||
|         <version>3.3.0</version> |  | ||||||
|         <executions> |  | ||||||
|           <execution> |  | ||||||
|             <id>attach-sources</id> |  | ||||||
|             <goals> |  | ||||||
|               <goal>jar-no-fork</goal> |  | ||||||
|             </goals> |  | ||||||
|           </execution> |  | ||||||
|         </executions> |  | ||||||
|       </plugin> |  | ||||||
|       <plugin> |  | ||||||
|         <groupId>org.apache.maven.plugins</groupId> |  | ||||||
|         <artifactId>maven-javadoc-plugin</artifactId> |  | ||||||
|         <version>3.5.0</version> |  | ||||||
|         <executions> |  | ||||||
|           <execution> |  | ||||||
|             <id>attach-javadocs</id> |  | ||||||
|             <goals> |  | ||||||
|               <goal>jar</goal> |  | ||||||
|             </goals> |  | ||||||
|           </execution> |  | ||||||
|         </executions> |  | ||||||
|       </plugin> |  | ||||||
|       <!--            <plugin>--> |  | ||||||
|       <!--                <groupId>org.apache.maven.plugins</groupId>--> |  | ||||||
|       <!--                <artifactId>maven-gpg-plugin</artifactId>--> |  | ||||||
|       <!--                <version>1.5</version>--> |  | ||||||
|       <!--                <executions>--> |  | ||||||
|       <!--                    <execution>--> |  | ||||||
|       <!--                        <id>sign-artifacts</id>--> |  | ||||||
|       <!--                        <phase>verify</phase>--> |  | ||||||
|       <!--                        <goals>--> |  | ||||||
|       <!--                            <goal>sign</goal>--> |  | ||||||
|       <!--                        </goals>--> |  | ||||||
|       <!--                        <configuration>--> |  | ||||||
|       <!--                            <!– This is necessary for gpg to not try to use the pinentry programs –>--> |  | ||||||
|       <!--                            <gpgArguments>--> |  | ||||||
|       <!--                                <arg>--pinentry-mode</arg>--> |  | ||||||
|       <!--                                <arg>loopback</arg>--> |  | ||||||
|       <!--                            </gpgArguments>--> |  | ||||||
|       <!--                        </configuration>--> |  | ||||||
|       <!--                    </execution>--> |  | ||||||
|       <!--                </executions>--> |  | ||||||
|       <!--            </plugin>--> |  | ||||||
|       <!-- Surefire Plugin for Unit Tests --> |  | ||||||
|       <plugin> |  | ||||||
|         <groupId>org.apache.maven.plugins</groupId> |  | ||||||
|         <artifactId>maven-surefire-plugin</artifactId> |  | ||||||
|         <version>${maven-surefire-plugin.version}</version> |  | ||||||
|         <configuration> |  | ||||||
|           <skipTests>${skipUnitTests}</skipTests> |  | ||||||
|           <includes> |  | ||||||
|             <include>**/unittests/*.java</include> |  | ||||||
|           </includes> |  | ||||||
|         </configuration> |  | ||||||
|       </plugin> |  | ||||||
|  |  | ||||||
|       <!-- Failsafe Plugin for Integration Tests --> |  | ||||||
|       <plugin> |  | ||||||
|         <groupId>org.apache.maven.plugins</groupId> |  | ||||||
|         <artifactId>maven-failsafe-plugin</artifactId> |  | ||||||
|         <version>${maven-failsafe-plugin.version}</version> |  | ||||||
|         <configuration> |  | ||||||
|           <includes> |  | ||||||
|             <include>**/integrationtests/*.java</include> |  | ||||||
|           </includes> |  | ||||||
|           <excludes> |  | ||||||
|             <exclude>**/unittests/*.java</exclude> |  | ||||||
|           </excludes> |  | ||||||
|           <skipTests>${skipIntegrationTests}</skipTests> |  | ||||||
|         </configuration> |  | ||||||
|         <executions> |  | ||||||
|           <execution> |  | ||||||
|             <goals> |  | ||||||
|               <goal>integration-test</goal> |  | ||||||
|               <goal>verify</goal> |  | ||||||
|             </goals> |  | ||||||
|           </execution> |  | ||||||
|         </executions> |  | ||||||
|       </plugin> |  | ||||||
|       <plugin> |  | ||||||
|         <groupId>org.apache.maven.plugins</groupId> |  | ||||||
|         <artifactId>maven-release-plugin</artifactId> |  | ||||||
|         <version>3.0.1</version> |  | ||||||
|         <configuration> |  | ||||||
|           <!--                    <goals>install</goals>--> |  | ||||||
|           <tagNameFormat>v@{project.version}</tagNameFormat> |  | ||||||
|         </configuration> |  | ||||||
|       </plugin> |  | ||||||
|     </plugins> |  | ||||||
|   </build> |  | ||||||
|  |  | ||||||
|   <dependencies> |  | ||||||
|     <dependency> |  | ||||||
|       <groupId>org.projectlombok</groupId> |  | ||||||
|       <artifactId>lombok</artifactId> |  | ||||||
|       <version>${lombok.version}</version> |  | ||||||
|       <scope>provided</scope> |  | ||||||
|     </dependency> |  | ||||||
|     <dependency> |  | ||||||
|       <groupId>com.fasterxml.jackson.core</groupId> |  | ||||||
|       <artifactId>jackson-databind</artifactId> |  | ||||||
|       <version>2.15.3</version> |  | ||||||
|     </dependency> |  | ||||||
|     <dependency> |  | ||||||
|       <groupId>ch.qos.logback</groupId> |  | ||||||
|       <artifactId>logback-classic</artifactId> |  | ||||||
|       <version>1.4.12</version> |  | ||||||
|       <scope>test</scope> |  | ||||||
|     </dependency> |  | ||||||
|     <dependency> |  | ||||||
|       <groupId>org.slf4j</groupId> |  | ||||||
|       <artifactId>slf4j-api</artifactId> |  | ||||||
|       <version>2.0.9</version> |  | ||||||
|     </dependency> |  | ||||||
|     <dependency> |  | ||||||
|       <groupId>org.junit.jupiter</groupId> |  | ||||||
|       <artifactId>junit-jupiter-api</artifactId> |  | ||||||
|       <version>5.10.0</version> |  | ||||||
|       <scope>test</scope> |  | ||||||
|     </dependency> |  | ||||||
|     <dependency> |  | ||||||
|       <groupId>org.mockito</groupId> |  | ||||||
|       <artifactId>mockito-core</artifactId> |  | ||||||
|       <version>4.1.0</version> |  | ||||||
|       <scope>test</scope> |  | ||||||
|     </dependency> |  | ||||||
|   </dependencies> |  | ||||||
|  |  | ||||||
|   <distributionManagement> |  | ||||||
|     <snapshotRepository> |  | ||||||
|       <id>ossrh</id> |  | ||||||
|       <url>https://s01.oss.sonatype.org/content/repositories/snapshots</url> |  | ||||||
|     </snapshotRepository> |  | ||||||
|     <repository> |  | ||||||
|       <id>ossrh</id> |  | ||||||
|       <url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2</url> |  | ||||||
|     </repository> |  | ||||||
|   </distributionManagement> |  | ||||||
|  |  | ||||||
|   <profiles> |  | ||||||
|     <profile> |  | ||||||
|       <id>unit-tests</id> |  | ||||||
|       <properties> |  | ||||||
|         <test.env>unit</test.env> |  | ||||||
|         <skipUnitTests>false</skipUnitTests> |  | ||||||
|         <skipIntegrationTests>true</skipIntegrationTests> |  | ||||||
|       </properties> |  | ||||||
|       <activation> |  | ||||||
|         <activeByDefault>true</activeByDefault> |  | ||||||
|       </activation> |  | ||||||
|       <build> |  | ||||||
|         <plugins> |         <plugins> | ||||||
|           <plugin> |             <plugin> | ||||||
|             <groupId>org.jacoco</groupId> |                 <groupId>org.apache.maven.plugins</groupId> | ||||||
|             <artifactId>jacoco-maven-plugin</artifactId> |                 <artifactId>maven-source-plugin</artifactId> | ||||||
|             <version>0.8.7</version> |                 <version>3.3.0</version> | ||||||
|             <executions> |                 <executions> | ||||||
|               <execution> |                     <execution> | ||||||
|                 <goals> |                         <id>attach-sources</id> | ||||||
|                   <goal>prepare-agent</goal> |                         <goals> | ||||||
|                 </goals> |                             <goal>jar-no-fork</goal> | ||||||
|               </execution> |                         </goals> | ||||||
|               <execution> |                     </execution> | ||||||
|                 <id>report</id> |                 </executions> | ||||||
|                 <phase>test</phase> |             </plugin> | ||||||
|                 <goals> |             <plugin> | ||||||
|                   <goal>report</goal> |                 <groupId>org.apache.maven.plugins</groupId> | ||||||
|                 </goals> |                 <artifactId>maven-javadoc-plugin</artifactId> | ||||||
|               </execution> |                 <version>3.5.0</version> | ||||||
|             </executions> |                 <executions> | ||||||
|           </plugin> |                     <execution> | ||||||
|         </plugins> |                         <id>attach-javadocs</id> | ||||||
|       </build> |                         <goals> | ||||||
|     </profile> |                             <goal>jar</goal> | ||||||
|     <profile> |                         </goals> | ||||||
|       <id>integration-tests</id> |                     </execution> | ||||||
|       <properties> |                 </executions> | ||||||
|         <test.env>integration</test.env> |             </plugin> | ||||||
|         <skipUnitTests>true</skipUnitTests> |             <!--            <plugin>--> | ||||||
|         <skipIntegrationTests>false</skipIntegrationTests> |             <!--                <groupId>org.apache.maven.plugins</groupId>--> | ||||||
|       </properties> |             <!--                <artifactId>maven-gpg-plugin</artifactId>--> | ||||||
|     </profile> |             <!--                <version>1.5</version>--> | ||||||
|     <profile> |             <!--                <executions>--> | ||||||
|       <id>ci-cd</id> |             <!--                    <execution>--> | ||||||
|       <properties> |             <!--                        <id>sign-artifacts</id>--> | ||||||
|         <test.env>unit</test.env> |             <!--                        <phase>verify</phase>--> | ||||||
|         <skipUnitTests>true</skipUnitTests> |             <!--                        <goals>--> | ||||||
|         <skipIntegrationTests>true</skipIntegrationTests> |             <!--                            <goal>sign</goal>--> | ||||||
|       </properties> |             <!--                        </goals>--> | ||||||
|       <build> |             <!--                        <configuration>--> | ||||||
|         <plugins> |             <!--                            <!– This is necessary for gpg to not try to use the pinentry programs –>--> | ||||||
|           <plugin> |             <!--                            <gpgArguments>--> | ||||||
|             <groupId>org.apache.maven.plugins</groupId> |             <!--                                <arg>--pinentry-mode</arg>--> | ||||||
|             <artifactId>maven-gpg-plugin</artifactId> |             <!--                                <arg>loopback</arg>--> | ||||||
|             <version>3.1.0</version> |             <!--                            </gpgArguments>--> | ||||||
|             <executions> |             <!--                        </configuration>--> | ||||||
|               <execution> |             <!--                    </execution>--> | ||||||
|                 <id>sign-artifacts</id> |             <!--                </executions>--> | ||||||
|                 <phase>verify</phase> |             <!--            </plugin>--> | ||||||
|                 <goals> |             <!-- Surefire Plugin for Unit Tests --> | ||||||
|                   <goal>sign</goal> |             <plugin> | ||||||
|                 </goals> |                 <groupId>org.apache.maven.plugins</groupId> | ||||||
|  |                 <artifactId>maven-surefire-plugin</artifactId> | ||||||
|  |                 <version>${maven-surefire-plugin.version}</version> | ||||||
|                 <configuration> |                 <configuration> | ||||||
|                   <!-- Prevent gpg from using pinentry programs. Fixes: |                     <skipTests>${skipUnitTests}</skipTests> | ||||||
|                        gpg: signing failed: Inappropriate ioctl for device --> |                     <includes> | ||||||
|                   <gpgArguments> |                         <include>**/unittests/*.java</include> | ||||||
|                     <arg>--pinentry-mode</arg> |                     </includes> | ||||||
|                     <arg>loopback</arg> |  | ||||||
|                   </gpgArguments> |  | ||||||
|                 </configuration> |                 </configuration> | ||||||
|               </execution> |             </plugin> | ||||||
|             </executions> |  | ||||||
|           </plugin> |  | ||||||
|           <plugin> |  | ||||||
|             <groupId>org.sonatype.plugins</groupId> |  | ||||||
|             <artifactId>nexus-staging-maven-plugin</artifactId> |  | ||||||
|             <version>1.6.13</version> |  | ||||||
|             <extensions>true</extensions> |  | ||||||
|             <configuration> |  | ||||||
|               <serverId>ossrh</serverId> |  | ||||||
|               <nexusUrl>https://s01.oss.sonatype.org/</nexusUrl> |  | ||||||
|               <autoReleaseAfterClose>true</autoReleaseAfterClose> |  | ||||||
|             </configuration> |  | ||||||
|           </plugin> |  | ||||||
|  |  | ||||||
|           <plugin> |             <!-- Failsafe Plugin for Integration Tests --> | ||||||
|             <groupId>org.jacoco</groupId> |             <plugin> | ||||||
|             <artifactId>jacoco-maven-plugin</artifactId> |                 <groupId>org.apache.maven.plugins</groupId> | ||||||
|             <version>0.8.7</version> |                 <artifactId>maven-failsafe-plugin</artifactId> | ||||||
|             <executions> |                 <version>${maven-failsafe-plugin.version}</version> | ||||||
|               <execution> |                 <configuration> | ||||||
|                 <goals> |                     <includes> | ||||||
|                   <goal>prepare-agent</goal> |                         <include>**/integrationtests/*.java</include> | ||||||
|                 </goals> |                     </includes> | ||||||
|               </execution> |                     <excludes> | ||||||
|               <execution> |                         <exclude>**/unittests/*.java</exclude> | ||||||
|                 <id>report</id> |                     </excludes> | ||||||
|                 <phase>test</phase> |                     <skipTests>${skipIntegrationTests}</skipTests> | ||||||
|                 <goals> |                 </configuration> | ||||||
|                   <goal>report</goal> |                 <executions> | ||||||
|                 </goals> |                     <execution> | ||||||
|               </execution> |                         <goals> | ||||||
|             </executions> |                             <goal>integration-test</goal> | ||||||
|           </plugin> |                             <goal>verify</goal> | ||||||
|  |                         </goals> | ||||||
|  |                     </execution> | ||||||
|  |                 </executions> | ||||||
|  |             </plugin> | ||||||
|  |             <plugin> | ||||||
|  |                 <groupId>org.apache.maven.plugins</groupId> | ||||||
|  |                 <artifactId>maven-release-plugin</artifactId> | ||||||
|  |                 <version>3.0.1</version> | ||||||
|  |                 <configuration> | ||||||
|  |                     <!--                    <goals>install</goals>--> | ||||||
|  |                     <tagNameFormat>v@{project.version}</tagNameFormat> | ||||||
|  |                 </configuration> | ||||||
|  |             </plugin> | ||||||
|         </plugins> |         </plugins> | ||||||
|       </build> |     </build> | ||||||
|     </profile> |  | ||||||
|   </profiles> |     <dependencies> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>org.projectlombok</groupId> | ||||||
|  |             <artifactId>lombok</artifactId> | ||||||
|  |             <version>${lombok.version}</version> | ||||||
|  |             <scope>provided</scope> | ||||||
|  |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>com.fasterxml.jackson.core</groupId> | ||||||
|  |             <artifactId>jackson-databind</artifactId> | ||||||
|  |             <version>2.15.3</version> | ||||||
|  |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>ch.qos.logback</groupId> | ||||||
|  |             <artifactId>logback-classic</artifactId> | ||||||
|  |             <version>1.4.12</version> | ||||||
|  |             <scope>test</scope> | ||||||
|  |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>org.slf4j</groupId> | ||||||
|  |             <artifactId>slf4j-api</artifactId> | ||||||
|  |             <version>2.0.9</version> | ||||||
|  |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>org.junit.jupiter</groupId> | ||||||
|  |             <artifactId>junit-jupiter-api</artifactId> | ||||||
|  |             <version>5.10.0</version> | ||||||
|  |             <scope>test</scope> | ||||||
|  |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>org.mockito</groupId> | ||||||
|  |             <artifactId>mockito-core</artifactId> | ||||||
|  |             <version>4.1.0</version> | ||||||
|  |             <scope>test</scope> | ||||||
|  |         </dependency> | ||||||
|  |     </dependencies> | ||||||
|  |  | ||||||
|  |     <distributionManagement> | ||||||
|  |         <snapshotRepository> | ||||||
|  |             <id>ossrh</id> | ||||||
|  |             <url>https://s01.oss.sonatype.org/content/repositories/snapshots</url> | ||||||
|  |         </snapshotRepository> | ||||||
|  |         <repository> | ||||||
|  |             <id>ossrh</id> | ||||||
|  |             <url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2</url> | ||||||
|  |         </repository> | ||||||
|  |     </distributionManagement> | ||||||
|  |  | ||||||
|  |     <profiles> | ||||||
|  |         <profile> | ||||||
|  |             <id>unit-tests</id> | ||||||
|  |             <properties> | ||||||
|  |                 <test.env>unit</test.env> | ||||||
|  |                 <skipUnitTests>false</skipUnitTests> | ||||||
|  |                 <skipIntegrationTests>true</skipIntegrationTests> | ||||||
|  |             </properties> | ||||||
|  |             <activation> | ||||||
|  |                 <activeByDefault>true</activeByDefault> | ||||||
|  |             </activation> | ||||||
|  |             <build> | ||||||
|  |                 <plugins> | ||||||
|  |                     <plugin> | ||||||
|  |                         <groupId>org.jacoco</groupId> | ||||||
|  |                         <artifactId>jacoco-maven-plugin</artifactId> | ||||||
|  |                         <version>0.8.11</version> | ||||||
|  |                         <executions> | ||||||
|  |                             <execution> | ||||||
|  |                                 <goals> | ||||||
|  |                                     <goal>prepare-agent</goal> | ||||||
|  |                                 </goals> | ||||||
|  |                             </execution> | ||||||
|  |                             <execution> | ||||||
|  |                                 <id>report</id> | ||||||
|  |                                 <phase>test</phase> | ||||||
|  |                                 <goals> | ||||||
|  |                                     <goal>report</goal> | ||||||
|  |                                 </goals> | ||||||
|  |                             </execution> | ||||||
|  |                         </executions> | ||||||
|  |                     </plugin> | ||||||
|  |                 </plugins> | ||||||
|  |             </build> | ||||||
|  |         </profile> | ||||||
|  |         <profile> | ||||||
|  |             <id>integration-tests</id> | ||||||
|  |             <properties> | ||||||
|  |                 <test.env>integration</test.env> | ||||||
|  |                 <skipUnitTests>true</skipUnitTests> | ||||||
|  |                 <skipIntegrationTests>false</skipIntegrationTests> | ||||||
|  |             </properties> | ||||||
|  |         </profile> | ||||||
|  |         <profile> | ||||||
|  |             <id>ci-cd</id> | ||||||
|  |             <properties> | ||||||
|  |                 <test.env>unit</test.env> | ||||||
|  |                 <skipUnitTests>true</skipUnitTests> | ||||||
|  |                 <skipIntegrationTests>true</skipIntegrationTests> | ||||||
|  |             </properties> | ||||||
|  |             <build> | ||||||
|  |                 <plugins> | ||||||
|  |                     <plugin> | ||||||
|  |                         <groupId>org.apache.maven.plugins</groupId> | ||||||
|  |                         <artifactId>maven-gpg-plugin</artifactId> | ||||||
|  |                         <version>3.1.0</version> | ||||||
|  |                         <executions> | ||||||
|  |                             <execution> | ||||||
|  |                                 <id>sign-artifacts</id> | ||||||
|  |                                 <phase>verify</phase> | ||||||
|  |                                 <goals> | ||||||
|  |                                     <goal>sign</goal> | ||||||
|  |                                 </goals> | ||||||
|  |                                 <configuration> | ||||||
|  |                                     <!-- Prevent gpg from using pinentry programs. Fixes: | ||||||
|  |                                          gpg: signing failed: Inappropriate ioctl for device --> | ||||||
|  |                                     <gpgArguments> | ||||||
|  |                                         <arg>--pinentry-mode</arg> | ||||||
|  |                                         <arg>loopback</arg> | ||||||
|  |                                     </gpgArguments> | ||||||
|  |                                 </configuration> | ||||||
|  |                             </execution> | ||||||
|  |                         </executions> | ||||||
|  |                     </plugin> | ||||||
|  |                     <plugin> | ||||||
|  |                         <groupId>org.sonatype.plugins</groupId> | ||||||
|  |                         <artifactId>nexus-staging-maven-plugin</artifactId> | ||||||
|  |                         <version>1.6.13</version> | ||||||
|  |                         <extensions>true</extensions> | ||||||
|  |                         <configuration> | ||||||
|  |                             <serverId>ossrh</serverId> | ||||||
|  |                             <nexusUrl>https://s01.oss.sonatype.org/</nexusUrl> | ||||||
|  |                             <autoReleaseAfterClose>true</autoReleaseAfterClose> | ||||||
|  |                         </configuration> | ||||||
|  |                     </plugin> | ||||||
|  |  | ||||||
|  |                     <plugin> | ||||||
|  |                         <groupId>org.jacoco</groupId> | ||||||
|  |                         <artifactId>jacoco-maven-plugin</artifactId> | ||||||
|  |                         <version>0.8.7</version> | ||||||
|  |                         <executions> | ||||||
|  |                             <execution> | ||||||
|  |                                 <goals> | ||||||
|  |                                     <goal>prepare-agent</goal> | ||||||
|  |                                 </goals> | ||||||
|  |                             </execution> | ||||||
|  |                             <execution> | ||||||
|  |                                 <id>report</id> | ||||||
|  |                                 <phase>test</phase> | ||||||
|  |                                 <goals> | ||||||
|  |                                     <goal>report</goal> | ||||||
|  |                                 </goals> | ||||||
|  |                             </execution> | ||||||
|  |                         </executions> | ||||||
|  |                     </plugin> | ||||||
|  |                 </plugins> | ||||||
|  |             </build> | ||||||
|  |         </profile> | ||||||
|  |     </profiles> | ||||||
|  |  | ||||||
| </project> | </project> | ||||||
| @@ -372,15 +372,20 @@ public class OllamaAPI { | |||||||
|    * @param model the ollama model to ask the question to |    * @param model the ollama model to ask the question to | ||||||
|    * @param prompt the prompt/question text |    * @param prompt the prompt/question text | ||||||
|    * @param imageFiles the list of image files to use for the question |    * @param imageFiles the list of image files to use for the question | ||||||
|  |    * @param options the Options object - <a | ||||||
|  |    *     href="https://github.com/jmorganca/ollama/blob/main/docs/modelfile.md#valid-parameters-and-values">More | ||||||
|  |    *     details on the options</a> | ||||||
|    * @return OllamaResult that includes response text and time taken for response |    * @return OllamaResult that includes response text and time taken for response | ||||||
|    */ |    */ | ||||||
|   public OllamaResult askWithImageFiles(String model, String prompt, List<File> imageFiles) |   public OllamaResult askWithImageFiles( | ||||||
|  |       String model, String prompt, List<File> imageFiles, Options options) | ||||||
|       throws OllamaBaseException, IOException, InterruptedException { |       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)); | ||||||
|     } |     } | ||||||
|     OllamaRequestModel ollamaRequestModel = new OllamaRequestModel(model, prompt, images); |     OllamaRequestModel ollamaRequestModel = new OllamaRequestModel(model, prompt, images); | ||||||
|  |     ollamaRequestModel.setOptions(options.getOptionsMap()); | ||||||
|     return askSync(ollamaRequestModel); |     return askSync(ollamaRequestModel); | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @@ -391,15 +396,20 @@ public class OllamaAPI { | |||||||
|    * @param model the ollama model to ask the question to |    * @param model the ollama model to ask the question to | ||||||
|    * @param prompt the prompt/question text |    * @param prompt the prompt/question text | ||||||
|    * @param imageURLs the list of image URLs to use for the question |    * @param imageURLs the list of image URLs to use for the question | ||||||
|  |    * @param options the Options object - <a | ||||||
|  |    *     href="https://github.com/jmorganca/ollama/blob/main/docs/modelfile.md#valid-parameters-and-values">More | ||||||
|  |    *     details on the options</a> | ||||||
|    * @return OllamaResult that includes response text and time taken for response |    * @return OllamaResult that includes response text and time taken for response | ||||||
|    */ |    */ | ||||||
|   public OllamaResult askWithImageURLs(String model, String prompt, List<String> imageURLs) |   public OllamaResult askWithImageURLs( | ||||||
|  |       String model, String prompt, List<String> imageURLs, Options options) | ||||||
|       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) { | ||||||
|       images.add(encodeByteArrayToBase64(loadImageBytesFromUrl(imageURL))); |       images.add(encodeByteArrayToBase64(loadImageBytesFromUrl(imageURL))); | ||||||
|     } |     } | ||||||
|     OllamaRequestModel ollamaRequestModel = new OllamaRequestModel(model, prompt, images); |     OllamaRequestModel ollamaRequestModel = new OllamaRequestModel(model, prompt, images); | ||||||
|  |     ollamaRequestModel.setOptions(options.getOptionsMap()); | ||||||
|     return askSync(ollamaRequestModel); |     return askSync(ollamaRequestModel); | ||||||
|   } |   } | ||||||
|  |  | ||||||
| @@ -436,7 +446,7 @@ public class OllamaAPI { | |||||||
|                 HttpRequest.BodyPublishers.ofString( |                 HttpRequest.BodyPublishers.ofString( | ||||||
|                     Utils.getObjectMapper().writeValueAsString(ollamaRequestModel))); |                     Utils.getObjectMapper().writeValueAsString(ollamaRequestModel))); | ||||||
|     HttpRequest request = requestBuilder.build(); |     HttpRequest request = requestBuilder.build(); | ||||||
|     logger.debug("Ask model '" + ollamaRequestModel + "' ..."); |     if (verbose) logger.info("Asking model: " + ollamaRequestModel); | ||||||
|     HttpResponse<InputStream> response = |     HttpResponse<InputStream> response = | ||||||
|         httpClient.send(request, HttpResponse.BodyHandlers.ofInputStream()); |         httpClient.send(request, HttpResponse.BodyHandlers.ofInputStream()); | ||||||
|     int statusCode = response.statusCode(); |     int statusCode = response.statusCode(); | ||||||
| @@ -466,12 +476,16 @@ public class OllamaAPI { | |||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     if (statusCode != 200) { |     if (statusCode != 200) { | ||||||
|       logger.error("Status code " + statusCode); |       logger.error("Status code " + statusCode); | ||||||
|       throw new OllamaBaseException(responseBuffer.toString()); |       throw new OllamaBaseException(responseBuffer.toString()); | ||||||
|     } else { |     } else { | ||||||
|       long endTime = System.currentTimeMillis(); |       long endTime = System.currentTimeMillis(); | ||||||
|       return new OllamaResult(responseBuffer.toString().trim(), endTime - startTime, statusCode); |       OllamaResult ollamaResult = | ||||||
|  |           new OllamaResult(responseBuffer.toString().trim(), endTime - startTime, statusCode); | ||||||
|  |       if (verbose) logger.info("Model response: " + ollamaResult); | ||||||
|  |       return ollamaResult; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -4,12 +4,17 @@ import static org.junit.jupiter.api.Assertions.*; | |||||||
|  |  | ||||||
| import io.github.amithkoujalgi.ollama4j.core.OllamaAPI; | import io.github.amithkoujalgi.ollama4j.core.OllamaAPI; | ||||||
| import io.github.amithkoujalgi.ollama4j.core.exceptions.OllamaBaseException; | import io.github.amithkoujalgi.ollama4j.core.exceptions.OllamaBaseException; | ||||||
|  | import io.github.amithkoujalgi.ollama4j.core.models.OllamaResult; | ||||||
| import io.github.amithkoujalgi.ollama4j.core.types.OllamaModelType; | import io.github.amithkoujalgi.ollama4j.core.types.OllamaModelType; | ||||||
|  | import io.github.amithkoujalgi.ollama4j.core.utils.OptionsBuilder; | ||||||
|  | import java.io.File; | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
| import java.io.InputStream; | import java.io.InputStream; | ||||||
| import java.net.ConnectException; | import java.net.ConnectException; | ||||||
| import java.net.URISyntaxException; | import java.net.URISyntaxException; | ||||||
| import java.net.http.HttpConnectTimeoutException; | import java.net.http.HttpConnectTimeoutException; | ||||||
|  | import java.util.List; | ||||||
|  | import java.util.Objects; | ||||||
| import java.util.Properties; | import java.util.Properties; | ||||||
| import org.junit.jupiter.api.BeforeEach; | import org.junit.jupiter.api.BeforeEach; | ||||||
| import org.junit.jupiter.api.Order; | import org.junit.jupiter.api.Order; | ||||||
| @@ -32,10 +37,16 @@ class TestRealAPIs { | |||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   private File getImageFileFromClasspath(String fileName) { | ||||||
|  |     ClassLoader classLoader = getClass().getClassLoader(); | ||||||
|  |     return new File(Objects.requireNonNull(classLoader.getResource(fileName)).getFile()); | ||||||
|  |   } | ||||||
|  |  | ||||||
|   @BeforeEach |   @BeforeEach | ||||||
|   void setUp() { |   void setUp() { | ||||||
|     Properties properties = loadProperties(); |     Properties properties = loadProperties(); | ||||||
|     ollamaAPI = new OllamaAPI(properties.getProperty("ollama.api.url")); |     ollamaAPI = new OllamaAPI(properties.getProperty("ollama.api.url")); | ||||||
|  |     ollamaAPI.setRequestTimeoutSeconds(20); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   @Test |   @Test | ||||||
| @@ -83,4 +94,80 @@ class TestRealAPIs { | |||||||
|       throw new RuntimeException(e); |       throw new RuntimeException(e); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   @Test | ||||||
|  |   @Order(3) | ||||||
|  |   void testAskModelWithDefaultOptions() { | ||||||
|  |     testEndpointReachability(); | ||||||
|  |     try { | ||||||
|  |       OllamaResult result = | ||||||
|  |           ollamaAPI.ask( | ||||||
|  |               OllamaModelType.LLAMA2, | ||||||
|  |               "What is the capital of France? And what's France's connection with Mona Lisa?", | ||||||
|  |               new OptionsBuilder().build()); | ||||||
|  |       assertNotNull(result); | ||||||
|  |       assertNotNull(result.getResponse()); | ||||||
|  |       assertFalse(result.getResponse().isEmpty()); | ||||||
|  |     } catch (IOException | OllamaBaseException | InterruptedException e) { | ||||||
|  |       throw new RuntimeException(e); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   @Test | ||||||
|  |   @Order(3) | ||||||
|  |   void testAskModelWithOptions() { | ||||||
|  |     testEndpointReachability(); | ||||||
|  |     try { | ||||||
|  |       OllamaResult result = | ||||||
|  |           ollamaAPI.ask( | ||||||
|  |               OllamaModelType.LLAMA2, | ||||||
|  |               "What is the capital of France? And what's France's connection with Mona Lisa?", | ||||||
|  |               new OptionsBuilder().setTemperature(0.9f).build()); | ||||||
|  |       assertNotNull(result); | ||||||
|  |       assertNotNull(result.getResponse()); | ||||||
|  |       assertFalse(result.getResponse().isEmpty()); | ||||||
|  |     } catch (IOException | OllamaBaseException | InterruptedException e) { | ||||||
|  |       throw new RuntimeException(e); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   @Test | ||||||
|  |   @Order(3) | ||||||
|  |   void testAskModelWithOptionsAndImageFiles() { | ||||||
|  |     testEndpointReachability(); | ||||||
|  |     File imageFile = getImageFileFromClasspath("dog-on-a-boat.jpg"); | ||||||
|  |     try { | ||||||
|  |       OllamaResult result = | ||||||
|  |           ollamaAPI.askWithImageFiles( | ||||||
|  |               OllamaModelType.LLAVA, | ||||||
|  |               "What is in this image?", | ||||||
|  |               List.of(imageFile), | ||||||
|  |               new OptionsBuilder().build()); | ||||||
|  |       assertNotNull(result); | ||||||
|  |       assertNotNull(result.getResponse()); | ||||||
|  |       assertFalse(result.getResponse().isEmpty()); | ||||||
|  |     } catch (IOException | OllamaBaseException | InterruptedException e) { | ||||||
|  |       throw new RuntimeException(e); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   @Test | ||||||
|  |   @Order(3) | ||||||
|  |   void testAskModelWithOptionsAndImageURLs() { | ||||||
|  |     testEndpointReachability(); | ||||||
|  |     try { | ||||||
|  |       OllamaResult result = | ||||||
|  |           ollamaAPI.askWithImageURLs( | ||||||
|  |               OllamaModelType.LLAVA, | ||||||
|  |               "What is in this image?", | ||||||
|  |               List.of( | ||||||
|  |                   "https://t3.ftcdn.net/jpg/02/96/63/80/360_F_296638053_0gUVA4WVBKceGsIr7LNqRWSnkusi07dq.jpg"), | ||||||
|  |               new OptionsBuilder().build()); | ||||||
|  |       assertNotNull(result); | ||||||
|  |       assertNotNull(result.getResponse()); | ||||||
|  |       assertFalse(result.getResponse().isEmpty()); | ||||||
|  |     } catch (IOException | OllamaBaseException | InterruptedException | URISyntaxException e) { | ||||||
|  |       throw new RuntimeException(e); | ||||||
|  |     } | ||||||
|  |   } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -118,10 +118,13 @@ class TestMockedAPIs { | |||||||
|     String model = OllamaModelType.LLAMA2; |     String model = OllamaModelType.LLAMA2; | ||||||
|     String prompt = "some prompt text"; |     String prompt = "some prompt text"; | ||||||
|     try { |     try { | ||||||
|       when(ollamaAPI.askWithImageFiles(model, prompt, Collections.emptyList())) |       when(ollamaAPI.askWithImageFiles( | ||||||
|  |               model, prompt, Collections.emptyList(), new OptionsBuilder().build())) | ||||||
|           .thenReturn(new OllamaResult("", 0, 200)); |           .thenReturn(new OllamaResult("", 0, 200)); | ||||||
|       ollamaAPI.askWithImageFiles(model, prompt, Collections.emptyList()); |       ollamaAPI.askWithImageFiles( | ||||||
|       verify(ollamaAPI, times(1)).askWithImageFiles(model, prompt, Collections.emptyList()); |           model, prompt, Collections.emptyList(), new OptionsBuilder().build()); | ||||||
|  |       verify(ollamaAPI, times(1)) | ||||||
|  |           .askWithImageFiles(model, prompt, Collections.emptyList(), new OptionsBuilder().build()); | ||||||
|     } catch (IOException | OllamaBaseException | InterruptedException e) { |     } catch (IOException | OllamaBaseException | InterruptedException e) { | ||||||
|       throw new RuntimeException(e); |       throw new RuntimeException(e); | ||||||
|     } |     } | ||||||
| @@ -133,10 +136,13 @@ class TestMockedAPIs { | |||||||
|     String model = OllamaModelType.LLAMA2; |     String model = OllamaModelType.LLAMA2; | ||||||
|     String prompt = "some prompt text"; |     String prompt = "some prompt text"; | ||||||
|     try { |     try { | ||||||
|       when(ollamaAPI.askWithImageURLs(model, prompt, Collections.emptyList())) |       when(ollamaAPI.askWithImageURLs( | ||||||
|  |               model, prompt, Collections.emptyList(), new OptionsBuilder().build())) | ||||||
|           .thenReturn(new OllamaResult("", 0, 200)); |           .thenReturn(new OllamaResult("", 0, 200)); | ||||||
|       ollamaAPI.askWithImageURLs(model, prompt, Collections.emptyList()); |       ollamaAPI.askWithImageURLs( | ||||||
|       verify(ollamaAPI, times(1)).askWithImageURLs(model, prompt, Collections.emptyList()); |           model, prompt, Collections.emptyList(), new OptionsBuilder().build()); | ||||||
|  |       verify(ollamaAPI, times(1)) | ||||||
|  |           .askWithImageURLs(model, prompt, Collections.emptyList(), new OptionsBuilder().build()); | ||||||
|     } catch (IOException | OllamaBaseException | InterruptedException | URISyntaxException e) { |     } catch (IOException | OllamaBaseException | InterruptedException | URISyntaxException e) { | ||||||
|       throw new RuntimeException(e); |       throw new RuntimeException(e); | ||||||
|     } |     } | ||||||
|   | |||||||
							
								
								
									
										
											BIN
										
									
								
								src/test/resources/dog-on-a-boat.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/test/resources/dog-on-a-boat.jpg
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 52 KiB | 
| @@ -1 +1,2 @@ | |||||||
| ollama.api.url=http://192.168.29.223:11434 | ollama.api.url=http://192.168.29.223:11434 | ||||||
|  | ollama.model=llava | ||||||
		Reference in New Issue
	
	Block a user