forked from Mirror/ollama4j
		
	Compare commits
	
		
			13 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 96320e7761 | ||
|   | e6472f0a81 | ||
|   | 816bbd9bbf | ||
|   | da1123271d | ||
|   | 12f099260f | ||
|   | 35728ae208 | ||
|   | 7dba9cc798 | ||
|   | bb1c920e22 | ||
|   | 770cbd7639 | ||
|   | b43c9b8d93 | ||
|   | 935964c9b0 | ||
|   | 9aed9a5237 | ||
|   | 6c082c94c4 | 
							
								
								
									
										6
									
								
								.github/workflows/publish-docs.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.github/workflows/publish-docs.yml
									
									
									
									
										vendored
									
									
								
							| @@ -50,6 +50,12 @@ jobs: | |||||||
|       - name: Build with Maven |       - name: Build with Maven | ||||||
|         run: mvn --file pom.xml -U clean package && cp -r ./target/apidocs/. ./docs/build/apidocs |         run: mvn --file pom.xml -U clean package && cp -r ./target/apidocs/. ./docs/build/apidocs | ||||||
|  |  | ||||||
|  |       - name: Doxygen Action | ||||||
|  |         uses: mattnotmitt/doxygen-action@v1.1.0 | ||||||
|  |         with: | ||||||
|  |           doxyfile-path: "./Doxyfile" | ||||||
|  |           working-directory: "." | ||||||
|  |  | ||||||
|       - name: Setup Pages |       - name: Setup Pages | ||||||
|         uses: actions/configure-pages@v3 |         uses: actions/configure-pages@v3 | ||||||
|       - name: Upload artifact |       - name: Upload artifact | ||||||
|   | |||||||
							
								
								
									
										413
									
								
								Doxyfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										413
									
								
								Doxyfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,413 @@ | |||||||
|  | # Doxyfile 1.10.0 | ||||||
|  |  | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | # Project related configuration options | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | DOXYFILE_ENCODING      = UTF-8 | ||||||
|  | PROJECT_NAME           = "Ollama4j" | ||||||
|  | PROJECT_NUMBER         = | ||||||
|  | PROJECT_BRIEF          = "A Java library (wrapper/binding) for Ollama server." | ||||||
|  | PROJECT_LOGO           = ./logo-small.png | ||||||
|  | PROJECT_ICON           = ./logo-small.png | ||||||
|  | OUTPUT_DIRECTORY       = ./docs/build/doxygen | ||||||
|  | CREATE_SUBDIRS         = NO | ||||||
|  | CREATE_SUBDIRS_LEVEL   = 8 | ||||||
|  | ALLOW_UNICODE_NAMES    = NO | ||||||
|  | OUTPUT_LANGUAGE        = English | ||||||
|  | BRIEF_MEMBER_DESC      = YES | ||||||
|  | REPEAT_BRIEF           = YES | ||||||
|  | ABBREVIATE_BRIEF       = "The $name class" \ | ||||||
|  |                          "The $name widget" \ | ||||||
|  |                          "The $name file" \ | ||||||
|  |                          is \ | ||||||
|  |                          provides \ | ||||||
|  |                          specifies \ | ||||||
|  |                          contains \ | ||||||
|  |                          represents \ | ||||||
|  |                          a \ | ||||||
|  |                          an \ | ||||||
|  |                          the | ||||||
|  | ALWAYS_DETAILED_SEC    = NO | ||||||
|  | INLINE_INHERITED_MEMB  = NO | ||||||
|  | FULL_PATH_NAMES        = YES | ||||||
|  | STRIP_FROM_PATH        = | ||||||
|  | STRIP_FROM_INC_PATH    = | ||||||
|  | SHORT_NAMES            = NO | ||||||
|  | JAVADOC_AUTOBRIEF      = NO | ||||||
|  | JAVADOC_BANNER         = NO | ||||||
|  | QT_AUTOBRIEF           = NO | ||||||
|  | MULTILINE_CPP_IS_BRIEF = NO | ||||||
|  | PYTHON_DOCSTRING       = YES | ||||||
|  | INHERIT_DOCS           = YES | ||||||
|  | SEPARATE_MEMBER_PAGES  = NO | ||||||
|  | TAB_SIZE               = 4 | ||||||
|  | ALIASES                = | ||||||
|  | OPTIMIZE_OUTPUT_FOR_C  = NO | ||||||
|  | OPTIMIZE_OUTPUT_JAVA   = YES | ||||||
|  | OPTIMIZE_FOR_FORTRAN   = NO | ||||||
|  | OPTIMIZE_OUTPUT_VHDL   = NO | ||||||
|  | OPTIMIZE_OUTPUT_SLICE  = NO | ||||||
|  | EXTENSION_MAPPING      = | ||||||
|  | MARKDOWN_SUPPORT       = YES | ||||||
|  | TOC_INCLUDE_HEADINGS   = 5 | ||||||
|  | MARKDOWN_ID_STYLE      = DOXYGEN | ||||||
|  | AUTOLINK_SUPPORT       = YES | ||||||
|  | BUILTIN_STL_SUPPORT    = NO | ||||||
|  | CPP_CLI_SUPPORT        = NO | ||||||
|  | SIP_SUPPORT            = NO | ||||||
|  | IDL_PROPERTY_SUPPORT   = YES | ||||||
|  | DISTRIBUTE_GROUP_DOC   = NO | ||||||
|  | GROUP_NESTED_COMPOUNDS = NO | ||||||
|  | SUBGROUPING            = YES | ||||||
|  | INLINE_GROUPED_CLASSES = NO | ||||||
|  | INLINE_SIMPLE_STRUCTS  = NO | ||||||
|  | TYPEDEF_HIDES_STRUCT   = NO | ||||||
|  | LOOKUP_CACHE_SIZE      = 0 | ||||||
|  | NUM_PROC_THREADS       = 1 | ||||||
|  | TIMESTAMP              = NO | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | # Build related configuration options | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | EXTRACT_ALL            = YES | ||||||
|  | EXTRACT_PRIVATE        = NO | ||||||
|  | EXTRACT_PRIV_VIRTUAL   = NO | ||||||
|  | EXTRACT_PACKAGE        = NO | ||||||
|  | EXTRACT_STATIC         = NO | ||||||
|  | EXTRACT_LOCAL_CLASSES  = YES | ||||||
|  | EXTRACT_LOCAL_METHODS  = NO | ||||||
|  | EXTRACT_ANON_NSPACES   = NO | ||||||
|  | RESOLVE_UNNAMED_PARAMS = YES | ||||||
|  | HIDE_UNDOC_MEMBERS     = NO | ||||||
|  | HIDE_UNDOC_CLASSES     = NO | ||||||
|  | HIDE_FRIEND_COMPOUNDS  = NO | ||||||
|  | HIDE_IN_BODY_DOCS      = NO | ||||||
|  | INTERNAL_DOCS          = NO | ||||||
|  | CASE_SENSE_NAMES       = SYSTEM | ||||||
|  | HIDE_SCOPE_NAMES       = NO | ||||||
|  | HIDE_COMPOUND_REFERENCE= NO | ||||||
|  | SHOW_HEADERFILE        = YES | ||||||
|  | SHOW_INCLUDE_FILES     = YES | ||||||
|  | SHOW_GROUPED_MEMB_INC  = NO | ||||||
|  | FORCE_LOCAL_INCLUDES   = NO | ||||||
|  | INLINE_INFO            = YES | ||||||
|  | SORT_MEMBER_DOCS       = YES | ||||||
|  | SORT_BRIEF_DOCS        = NO | ||||||
|  | SORT_MEMBERS_CTORS_1ST = NO | ||||||
|  | SORT_GROUP_NAMES       = NO | ||||||
|  | SORT_BY_SCOPE_NAME     = NO | ||||||
|  | STRICT_PROTO_MATCHING  = NO | ||||||
|  | GENERATE_TODOLIST      = YES | ||||||
|  | GENERATE_TESTLIST      = YES | ||||||
|  | GENERATE_BUGLIST       = YES | ||||||
|  | GENERATE_DEPRECATEDLIST= YES | ||||||
|  | ENABLED_SECTIONS       = | ||||||
|  | MAX_INITIALIZER_LINES  = 30 | ||||||
|  | SHOW_USED_FILES        = YES | ||||||
|  | SHOW_FILES             = YES | ||||||
|  | SHOW_NAMESPACES        = YES | ||||||
|  | FILE_VERSION_FILTER    = | ||||||
|  | LAYOUT_FILE            = | ||||||
|  | CITE_BIB_FILES         = | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | # Configuration options related to warning and progress messages | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | QUIET                  = NO | ||||||
|  | WARNINGS               = YES | ||||||
|  | WARN_IF_UNDOCUMENTED   = YES | ||||||
|  | WARN_IF_DOC_ERROR      = YES | ||||||
|  | WARN_IF_INCOMPLETE_DOC = YES | ||||||
|  | WARN_NO_PARAMDOC       = NO | ||||||
|  | WARN_IF_UNDOC_ENUM_VAL = NO | ||||||
|  | WARN_AS_ERROR          = NO | ||||||
|  | WARN_FORMAT            = "$file:$line: $text" | ||||||
|  | WARN_LINE_FORMAT       = "at line $line of file $file" | ||||||
|  | WARN_LOGFILE           = | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | # Configuration options related to the input files | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | INPUT                  = ./src/main | ||||||
|  | INPUT_ENCODING         = UTF-8 | ||||||
|  | INPUT_FILE_ENCODING    = | ||||||
|  | FILE_PATTERNS          = *.c \ | ||||||
|  |                          *.cc \ | ||||||
|  |                          *.cxx \ | ||||||
|  |                          *.cxxm \ | ||||||
|  |                          *.cpp \ | ||||||
|  |                          *.cppm \ | ||||||
|  |                          *.ccm \ | ||||||
|  |                          *.c++ \ | ||||||
|  |                          *.c++m \ | ||||||
|  |                          *.java \ | ||||||
|  |                          *.ii \ | ||||||
|  |                          *.ixx \ | ||||||
|  |                          *.ipp \ | ||||||
|  |                          *.i++ \ | ||||||
|  |                          *.inl \ | ||||||
|  |                          *.idl \ | ||||||
|  |                          *.ddl \ | ||||||
|  |                          *.odl \ | ||||||
|  |                          *.h \ | ||||||
|  |                          *.hh \ | ||||||
|  |                          *.hxx \ | ||||||
|  |                          *.hpp \ | ||||||
|  |                          *.h++ \ | ||||||
|  |                          *.ixx \ | ||||||
|  |                          *.l \ | ||||||
|  |                          *.cs \ | ||||||
|  |                          *.d \ | ||||||
|  |                          *.php \ | ||||||
|  |                          *.php4 \ | ||||||
|  |                          *.php5 \ | ||||||
|  |                          *.phtml \ | ||||||
|  |                          *.inc \ | ||||||
|  |                          *.m \ | ||||||
|  |                          *.markdown \ | ||||||
|  |                          *.md \ | ||||||
|  |                          *.mm \ | ||||||
|  |                          *.dox \ | ||||||
|  |                          *.py \ | ||||||
|  |                          *.pyw \ | ||||||
|  |                          *.f90 \ | ||||||
|  |                          *.f95 \ | ||||||
|  |                          *.f03 \ | ||||||
|  |                          *.f08 \ | ||||||
|  |                          *.f18 \ | ||||||
|  |                          *.f \ | ||||||
|  |                          *.for \ | ||||||
|  |                          *.vhd \ | ||||||
|  |                          *.vhdl \ | ||||||
|  |                          *.ucf \ | ||||||
|  |                          *.qsf \ | ||||||
|  |                          *.ice | ||||||
|  | RECURSIVE              = YES | ||||||
|  | EXCLUDE                = | ||||||
|  | EXCLUDE_SYMLINKS       = NO | ||||||
|  | EXCLUDE_PATTERNS       = | ||||||
|  | EXCLUDE_SYMBOLS        = | ||||||
|  | EXAMPLE_PATH           = | ||||||
|  | EXAMPLE_PATTERNS       = * | ||||||
|  | EXAMPLE_RECURSIVE      = NO | ||||||
|  | IMAGE_PATH             = | ||||||
|  | INPUT_FILTER           = | ||||||
|  | FILTER_PATTERNS        = | ||||||
|  | FILTER_SOURCE_FILES    = NO | ||||||
|  | FILTER_SOURCE_PATTERNS = | ||||||
|  | USE_MDFILE_AS_MAINPAGE = | ||||||
|  | FORTRAN_COMMENT_AFTER  = 72 | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | # Configuration options related to source browsing | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | SOURCE_BROWSER         = YES | ||||||
|  | INLINE_SOURCES         = NO | ||||||
|  | STRIP_CODE_COMMENTS    = YES | ||||||
|  | REFERENCED_BY_RELATION = NO | ||||||
|  | REFERENCES_RELATION    = NO | ||||||
|  | REFERENCES_LINK_SOURCE = YES | ||||||
|  | SOURCE_TOOLTIPS        = YES | ||||||
|  | USE_HTAGS              = NO | ||||||
|  | VERBATIM_HEADERS       = YES | ||||||
|  | CLANG_ASSISTED_PARSING = NO | ||||||
|  | CLANG_ADD_INC_PATHS    = YES | ||||||
|  | CLANG_OPTIONS          = | ||||||
|  | CLANG_DATABASE_PATH    = | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | # Configuration options related to the alphabetical class index | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | ALPHABETICAL_INDEX     = YES | ||||||
|  | IGNORE_PREFIX          = | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | # Configuration options related to the HTML output | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | GENERATE_HTML          = YES | ||||||
|  | HTML_OUTPUT            = html | ||||||
|  | HTML_FILE_EXTENSION    = .html | ||||||
|  | HTML_HEADER            = | ||||||
|  | HTML_FOOTER            = | ||||||
|  | HTML_STYLESHEET        = | ||||||
|  | HTML_EXTRA_STYLESHEET  = | ||||||
|  | HTML_EXTRA_FILES       = | ||||||
|  | HTML_COLORSTYLE        = LIGHT | ||||||
|  | HTML_COLORSTYLE_HUE    = 220 | ||||||
|  | HTML_COLORSTYLE_SAT    = 100 | ||||||
|  | HTML_COLORSTYLE_GAMMA  = 80 | ||||||
|  | HTML_DYNAMIC_MENUS     = YES | ||||||
|  | HTML_DYNAMIC_SECTIONS  = NO | ||||||
|  | HTML_CODE_FOLDING      = YES | ||||||
|  | HTML_COPY_CLIPBOARD    = YES | ||||||
|  | HTML_PROJECT_COOKIE    = | ||||||
|  | HTML_INDEX_NUM_ENTRIES = 100 | ||||||
|  | GENERATE_DOCSET        = NO | ||||||
|  | DOCSET_FEEDNAME        = "Doxygen generated docs" | ||||||
|  | DOCSET_FEEDURL         = | ||||||
|  | DOCSET_BUNDLE_ID       = org.doxygen.Project | ||||||
|  | DOCSET_PUBLISHER_ID    = org.doxygen.Publisher | ||||||
|  | DOCSET_PUBLISHER_NAME  = Publisher | ||||||
|  | GENERATE_HTMLHELP      = NO | ||||||
|  | CHM_FILE               = | ||||||
|  | HHC_LOCATION           = | ||||||
|  | GENERATE_CHI           = NO | ||||||
|  | CHM_INDEX_ENCODING     = | ||||||
|  | BINARY_TOC             = NO | ||||||
|  | TOC_EXPAND             = NO | ||||||
|  | SITEMAP_URL            = | ||||||
|  | GENERATE_QHP           = NO | ||||||
|  | QCH_FILE               = | ||||||
|  | QHP_NAMESPACE          = org.doxygen.Project | ||||||
|  | QHP_VIRTUAL_FOLDER     = doc | ||||||
|  | QHP_CUST_FILTER_NAME   = | ||||||
|  | QHP_CUST_FILTER_ATTRS  = | ||||||
|  | QHP_SECT_FILTER_ATTRS  = | ||||||
|  | QHG_LOCATION           = | ||||||
|  | GENERATE_ECLIPSEHELP   = NO | ||||||
|  | ECLIPSE_DOC_ID         = org.doxygen.Project | ||||||
|  | DISABLE_INDEX          = NO | ||||||
|  | GENERATE_TREEVIEW      = YES | ||||||
|  | FULL_SIDEBAR           = NO | ||||||
|  | ENUM_VALUES_PER_LINE   = 4 | ||||||
|  | TREEVIEW_WIDTH         = 250 | ||||||
|  | EXT_LINKS_IN_WINDOW    = NO | ||||||
|  | OBFUSCATE_EMAILS       = YES | ||||||
|  | HTML_FORMULA_FORMAT    = png | ||||||
|  | FORMULA_FONTSIZE       = 10 | ||||||
|  | FORMULA_MACROFILE      = | ||||||
|  | USE_MATHJAX            = NO | ||||||
|  | MATHJAX_VERSION        = MathJax_2 | ||||||
|  | MATHJAX_FORMAT         = HTML-CSS | ||||||
|  | MATHJAX_RELPATH        = | ||||||
|  | MATHJAX_EXTENSIONS     = | ||||||
|  | MATHJAX_CODEFILE       = | ||||||
|  | SEARCHENGINE           = YES | ||||||
|  | SERVER_BASED_SEARCH    = NO | ||||||
|  | EXTERNAL_SEARCH        = NO | ||||||
|  | SEARCHENGINE_URL       = | ||||||
|  | SEARCHDATA_FILE        = searchdata.xml | ||||||
|  | EXTERNAL_SEARCH_ID     = | ||||||
|  | EXTRA_SEARCH_MAPPINGS  = | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | # Configuration options related to the LaTeX output | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | GENERATE_LATEX         = YES | ||||||
|  | LATEX_OUTPUT           = latex | ||||||
|  | LATEX_CMD_NAME         = | ||||||
|  | MAKEINDEX_CMD_NAME     = makeindex | ||||||
|  | LATEX_MAKEINDEX_CMD    = makeindex | ||||||
|  | COMPACT_LATEX          = NO | ||||||
|  | PAPER_TYPE             = a4 | ||||||
|  | EXTRA_PACKAGES         = | ||||||
|  | LATEX_HEADER           = | ||||||
|  | LATEX_FOOTER           = | ||||||
|  | LATEX_EXTRA_STYLESHEET = | ||||||
|  | LATEX_EXTRA_FILES      = | ||||||
|  | PDF_HYPERLINKS         = YES | ||||||
|  | USE_PDFLATEX           = YES | ||||||
|  | LATEX_BATCHMODE        = NO | ||||||
|  | LATEX_HIDE_INDICES     = NO | ||||||
|  | LATEX_BIB_STYLE        = plain | ||||||
|  | LATEX_EMOJI_DIRECTORY  = | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | # Configuration options related to the RTF output | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | GENERATE_RTF           = NO | ||||||
|  | RTF_OUTPUT             = rtf | ||||||
|  | COMPACT_RTF            = NO | ||||||
|  | RTF_HYPERLINKS         = NO | ||||||
|  | RTF_STYLESHEET_FILE    = | ||||||
|  | RTF_EXTENSIONS_FILE    = | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | # Configuration options related to the man page output | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | GENERATE_MAN           = NO | ||||||
|  | MAN_OUTPUT             = man | ||||||
|  | MAN_EXTENSION          = .3 | ||||||
|  | MAN_SUBDIR             = | ||||||
|  | MAN_LINKS              = NO | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | # Configuration options related to the XML output | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | GENERATE_XML           = NO | ||||||
|  | XML_OUTPUT             = xml | ||||||
|  | XML_PROGRAMLISTING     = YES | ||||||
|  | XML_NS_MEMB_FILE_SCOPE = NO | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | # Configuration options related to the DOCBOOK output | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | GENERATE_DOCBOOK       = NO | ||||||
|  | DOCBOOK_OUTPUT         = docbook | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | # Configuration options for the AutoGen Definitions output | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | GENERATE_AUTOGEN_DEF   = NO | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | # Configuration options related to Sqlite3 output | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | GENERATE_SQLITE3       = NO | ||||||
|  | SQLITE3_OUTPUT         = sqlite3 | ||||||
|  | SQLITE3_RECREATE_DB    = YES | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | # Configuration options related to the Perl module output | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | GENERATE_PERLMOD       = NO | ||||||
|  | PERLMOD_LATEX          = NO | ||||||
|  | PERLMOD_PRETTY         = YES | ||||||
|  | PERLMOD_MAKEVAR_PREFIX = | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | # Configuration options related to the preprocessor | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | ENABLE_PREPROCESSING   = YES | ||||||
|  | MACRO_EXPANSION        = NO | ||||||
|  | EXPAND_ONLY_PREDEF     = NO | ||||||
|  | SEARCH_INCLUDES        = YES | ||||||
|  | INCLUDE_PATH           = | ||||||
|  | INCLUDE_FILE_PATTERNS  = | ||||||
|  | PREDEFINED             = | ||||||
|  | EXPAND_AS_DEFINED      = | ||||||
|  | SKIP_FUNCTION_MACROS   = YES | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | # Configuration options related to external references | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | TAGFILES               = | ||||||
|  | GENERATE_TAGFILE       = | ||||||
|  | ALLEXTERNALS           = NO | ||||||
|  | EXTERNAL_GROUPS        = YES | ||||||
|  | EXTERNAL_PAGES         = YES | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | # Configuration options related to diagram generator tools | ||||||
|  | #--------------------------------------------------------------------------- | ||||||
|  | HIDE_UNDOC_RELATIONS   = YES | ||||||
|  | HAVE_DOT               = NO | ||||||
|  | DOT_NUM_THREADS        = 0 | ||||||
|  | DOT_COMMON_ATTR        = "fontname=Helvetica,fontsize=10" | ||||||
|  | DOT_EDGE_ATTR          = "labelfontname=Helvetica,labelfontsize=10" | ||||||
|  | DOT_NODE_ATTR          = "shape=box,height=0.2,width=0.4" | ||||||
|  | DOT_FONTPATH           = | ||||||
|  | CLASS_GRAPH            = YES | ||||||
|  | COLLABORATION_GRAPH    = YES | ||||||
|  | GROUP_GRAPHS           = YES | ||||||
|  | UML_LOOK               = NO | ||||||
|  | UML_LIMIT_NUM_FIELDS   = 10 | ||||||
|  | DOT_UML_DETAILS        = NO | ||||||
|  | DOT_WRAP_THRESHOLD     = 17 | ||||||
|  | TEMPLATE_RELATIONS     = NO | ||||||
|  | INCLUDE_GRAPH          = YES | ||||||
|  | INCLUDED_BY_GRAPH      = YES | ||||||
|  | CALL_GRAPH             = NO | ||||||
|  | CALLER_GRAPH           = NO | ||||||
|  | GRAPHICAL_HIERARCHY    = YES | ||||||
|  | DIRECTORY_GRAPH        = YES | ||||||
|  | DIR_GRAPH_MAX_DEPTH    = 1 | ||||||
|  | DOT_IMAGE_FORMAT       = png | ||||||
|  | INTERACTIVE_SVG        = NO | ||||||
|  | DOT_PATH               = | ||||||
|  | DOTFILE_DIRS           = | ||||||
|  | DIA_PATH               = | ||||||
|  | DIAFILE_DIRS           = | ||||||
|  | PLANTUML_JAR_PATH      = | ||||||
|  | PLANTUML_CFG_FILE      = | ||||||
|  | PLANTUML_INCLUDE_PATH  = | ||||||
|  | DOT_GRAPH_MAX_NODES    = 50 | ||||||
|  | MAX_DOT_GRAPH_DEPTH    = 0 | ||||||
|  | DOT_MULTI_TARGETS      = NO | ||||||
|  | GENERATE_LEGEND        = YES | ||||||
|  | DOT_CLEANUP            = YES | ||||||
|  | MSCGEN_TOOL            = | ||||||
|  | MSCFILE_DIRS           = | ||||||
							
								
								
									
										3
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								Makefile
									
									
									
									
									
								
							| @@ -7,6 +7,9 @@ ut: | |||||||
| it: | it: | ||||||
| 	mvn clean verify -Pintegration-tests | 	mvn clean verify -Pintegration-tests | ||||||
|  |  | ||||||
|  | doxygen: | ||||||
|  | 	doxygen Doxyfile | ||||||
|  |  | ||||||
| list-releases: | list-releases: | ||||||
| 	curl 'https://central.sonatype.com/api/internal/browse/component/versions?sortField=normalizedVersion&sortDirection=asc&page=0&size=12&filter=namespace%3Aio.github.amithkoujalgi%2Cname%3Aollama4j' \ | 	curl 'https://central.sonatype.com/api/internal/browse/component/versions?sortField=normalizedVersion&sortDirection=asc&page=0&size=12&filter=namespace%3Aio.github.amithkoujalgi%2Cname%3Aollama4j' \ | ||||||
|       --compressed \ |       --compressed \ | ||||||
|   | |||||||
							
								
								
									
										11
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								README.md
									
									
									
									
									
								
							| @@ -126,13 +126,14 @@ Actions CI workflow. | |||||||
| - [ ] Async APIs for images | - [ ] Async APIs for images | ||||||
| - [ ] Add custom headers to requests | - [ ] Add custom headers to requests | ||||||
| - [ ] Add additional params for `ask` APIs such as: | - [ ] Add additional params for `ask` APIs such as: | ||||||
|     - `options`: additional model parameters for the Modelfile such as `temperature` |     - [x] `options`: additional model parameters for the Modelfile such as `temperature` - | ||||||
|     - `system`: system prompt to (overrides what is defined in the Modelfile) |       Supported [params](https://github.com/jmorganca/ollama/blob/main/docs/modelfile.md#valid-parameters-and-values). | ||||||
|     - `template`: the full prompt or prompt template (overrides what is defined in the Modelfile) |     - [ ] `system`: system prompt to (overrides what is defined in the Modelfile) | ||||||
|     - `context`: the context parameter returned from a previous request, which can be used to keep a |     - [ ] `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 |       short | ||||||
|       conversational memory |       conversational memory | ||||||
|     - `stream`: Add support for streaming responses from the model |     - [ ] `stream`: Add support for streaming responses from the model | ||||||
| - [ ] Add test cases | - [ ] Add test cases | ||||||
| - [ ] Handle exceptions better (maybe throw more appropriate exceptions) | - [ ] Handle exceptions better (maybe throw more appropriate exceptions) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -5,10 +5,35 @@ sidebar_position: 1 | |||||||
| # Options Builder | # Options Builder | ||||||
|  |  | ||||||
| This lets you build options for the `ask()` API. | This lets you build options for the `ask()` API. | ||||||
| Check out the supported |  | ||||||
| options [here](https://github.com/jmorganca/ollama/blob/main/docs/modelfile.md#valid-parameters-and-values). |  | ||||||
|  |  | ||||||
| ## Build an empty Options object | Following are the parameters supported by Ollama: | ||||||
|  |  | ||||||
|  | | Parameter      | Description                                                                                                                                                                                                                                             | Value Type | Example Usage        | | ||||||
|  | |----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------|----------------------| | ||||||
|  | | mirostat       | Enable Mirostat sampling for controlling perplexity. (default: 0, 0 = disabled, 1 = Mirostat, 2 = Mirostat 2.0)                                                                                                                                         | int        | mirostat 0           | | ||||||
|  | | mirostat_eta   | Influences how quickly the algorithm responds to feedback from the generated text. A lower learning rate will result in slower adjustments, while a higher learning rate will make the algorithm more responsive. (Default: 0.1)                        | float      | mirostat_eta 0.1     | | ||||||
|  | | mirostat_tau   | Controls the balance between coherence and diversity of the output. A lower value will result in more focused and coherent text. (Default: 5.0)                                                                                                         | float      | mirostat_tau 5.0     | | ||||||
|  | | num_ctx        | Sets the size of the context window used to generate the next token. (Default: 2048)                                                                                                                                                                    | int        | num_ctx 4096         | | ||||||
|  | | num_gqa        | The number of GQA groups in the transformer layer. Required for some models, for example it is 8 for llama2:70b                                                                                                                                         | int        | num_gqa 1            | | ||||||
|  | | num_gpu        | The number of layers to send to the GPU(s). On macOS it defaults to 1 to enable metal support, 0 to disable.                                                                                                                                            | int        | num_gpu 50           | | ||||||
|  | | num_thread     | Sets the number of threads to use during computation. By default, Ollama will detect this for optimal performance. It is recommended to set this value to the number of physical CPU cores your system has (as opposed to the logical number of cores). | int        | num_thread 8         | | ||||||
|  | | repeat_last_n  | Sets how far back for the model to look back to prevent repetition. (Default: 64, 0 = disabled, -1 = num_ctx)                                                                                                                                           | int        | repeat_last_n 64     | | ||||||
|  | | repeat_penalty | Sets how strongly to penalize repetitions. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. (Default: 1.1)                                                                     | float      | repeat_penalty 1.1   | | ||||||
|  | | temperature    | The temperature of the model. Increasing the temperature will make the model answer more creatively. (Default: 0.8)                                                                                                                                     | float      | temperature 0.7      | | ||||||
|  | | seed           | Sets the random number seed to use for generation. Setting this to a specific number will make the model generate the same text for the same prompt. (Default: 0)                                                                                       | int        | seed 42              | | ||||||
|  | | stop           | Sets the stop sequences to use. When this pattern is encountered the LLM will stop generating text and return. Multiple stop patterns may be set by specifying multiple separate `stop` parameters in a modelfile.                                      | string     | stop "AI assistant:" | | ||||||
|  | | tfs_z          | Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting. (default: 1)                                               | float      | tfs_z 1              | | ||||||
|  | | num_predict    | Maximum number of tokens to predict when generating text. (Default: 128, -1 = infinite generation, -2 = fill context)                                                                                                                                   | int        | num_predict 42       | | ||||||
|  | | top_k          | Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative. (Default: 40)                                                                        | int        | top_k 40             | | ||||||
|  | | top_p          | Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text. (Default: 0.9)                                                                 | float      | top_p 0.9            | | ||||||
|  |  | ||||||
|  | Link to [source](https://github.com/jmorganca/ollama/blob/main/docs/modelfile.md#valid-parameters-and-values). | ||||||
|  |  | ||||||
|  | Also, see how to set those Ollama parameters using | ||||||
|  | the `OptionsBuilder` | ||||||
|  | from [javadoc](https://amithkoujalgi.github.io/ollama4j/apidocs/io/github/amithkoujalgi/ollama4j/core/utils/OptionsBuilder.html). | ||||||
|  |  | ||||||
|  | ## Build an empty `Options` object | ||||||
|  |  | ||||||
| ```java | ```java | ||||||
| import io.github.amithkoujalgi.ollama4j.core.utils.Options; | import io.github.amithkoujalgi.ollama4j.core.utils.Options; | ||||||
| @@ -27,7 +52,7 @@ public class Main { | |||||||
| } | } | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ## Build an empty Options object | ## Build the `Options` object with values | ||||||
|  |  | ||||||
| ```java | ```java | ||||||
| import io.github.amithkoujalgi.ollama4j.core.utils.Options; | import io.github.amithkoujalgi.ollama4j.core.utils.Options; | ||||||
|   | |||||||
| @@ -76,7 +76,7 @@ const config = { | |||||||
|                         type: 'docSidebar', |                         type: 'docSidebar', | ||||||
|                         sidebarId: 'tutorialSidebar', |                         sidebarId: 'tutorialSidebar', | ||||||
|                         position: 'left', |                         position: 'left', | ||||||
|                         label: 'Usage', |                         label: 'Docs', | ||||||
|                     }, |                     }, | ||||||
|                     {to: 'https://amithkoujalgi.github.io/ollama4j/apidocs/', label: 'Javadoc', position: 'left'}, |                     {to: 'https://amithkoujalgi.github.io/ollama4j/apidocs/', label: 'Javadoc', position: 'left'}, | ||||||
|                     {to: '/blog', label: 'Blog', position: 'left'}, |                     {to: '/blog', label: 'Blog', position: 'left'}, | ||||||
|   | |||||||
| @@ -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; | ||||||
| } | } | ||||||
							
								
								
									
										
											BIN
										
									
								
								logo-small.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								logo-small.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 5.0 KiB | 
							
								
								
									
										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.41</version> |     <version>1.0.45</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.41</tag> |         <tag>v1.0.45</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