ollama-ruby 0.0.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.envrc +1 -0
- data/CHANGES.md +78 -0
- data/README.md +62 -23
- data/Rakefile +16 -4
- data/bin/ollama_chat +470 -90
- data/bin/ollama_console +3 -3
- data/bin/ollama_update +17 -0
- data/config/redis.conf +5 -0
- data/docker-compose.yml +11 -0
- data/lib/ollama/client.rb +7 -2
- data/lib/ollama/documents/memory_cache.rb +44 -0
- data/lib/ollama/documents/redis_cache.rb +57 -0
- data/lib/ollama/documents/splitters/character.rb +70 -0
- data/lib/ollama/documents/splitters/semantic.rb +90 -0
- data/lib/ollama/documents.rb +172 -0
- data/lib/ollama/dto.rb +4 -7
- data/lib/ollama/handlers/progress.rb +18 -5
- data/lib/ollama/image.rb +16 -7
- data/lib/ollama/options.rb +4 -0
- data/lib/ollama/utils/chooser.rb +30 -0
- data/lib/ollama/utils/colorize_texts.rb +42 -0
- data/lib/ollama/utils/fetcher.rb +105 -0
- data/lib/ollama/utils/math.rb +48 -0
- data/lib/ollama/utils/tags.rb +7 -0
- data/lib/ollama/utils/width.rb +1 -1
- data/lib/ollama/version.rb +1 -1
- data/lib/ollama.rb +12 -5
- data/ollama-ruby.gemspec +19 -9
- data/spec/assets/embeddings.json +1 -0
- data/spec/ollama/client_spec.rb +2 -2
- data/spec/ollama/commands/chat_spec.rb +2 -2
- data/spec/ollama/commands/copy_spec.rb +2 -2
- data/spec/ollama/commands/create_spec.rb +2 -2
- data/spec/ollama/commands/delete_spec.rb +2 -2
- data/spec/ollama/commands/embed_spec.rb +3 -3
- data/spec/ollama/commands/embeddings_spec.rb +2 -2
- data/spec/ollama/commands/generate_spec.rb +2 -2
- data/spec/ollama/commands/pull_spec.rb +2 -2
- data/spec/ollama/commands/push_spec.rb +2 -2
- data/spec/ollama/commands/show_spec.rb +2 -2
- data/spec/ollama/documents/memory_cache_spec.rb +63 -0
- data/spec/ollama/documents/redis_cache_spec.rb +78 -0
- data/spec/ollama/documents/splitters/character_spec.rb +96 -0
- data/spec/ollama/documents/splitters/semantic_spec.rb +56 -0
- data/spec/ollama/documents_spec.rb +119 -0
- data/spec/ollama/handlers/progress_spec.rb +2 -2
- data/spec/ollama/image_spec.rb +4 -0
- data/spec/ollama/message_spec.rb +3 -4
- data/spec/ollama/options_spec.rb +18 -0
- data/spec/ollama/tool_spec.rb +1 -6
- data/spec/ollama/utils/fetcher_spec.rb +74 -0
- data/spec/ollama/utils/tags_spec.rb +24 -0
- data/spec/spec_helper.rb +8 -0
- data/tmp/.keep +0 -0
- metadata +187 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1f80ae8ee6e8acbbedfff8b56923b25b583fc60b96c733985e32908874d542bb
|
4
|
+
data.tar.gz: 80834beb676929f08f4216e373e56cadd12d16c0b50e95b1a599bdd48bf29c86
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 94823ec618f940056bcee6ac7d706c633087404efcb49122cdccc89a4596b4a5f14a0d1c1d60fd7bb13a28e10f3ba4dc2027cd96cfe384169b25acaf75f532b7
|
7
|
+
data.tar.gz: ef8d4a7001c5502bc787f074f10dfaf16692b8fa90c4a6e32ae3c0c75b94da45b4691094229106cec72438837eef57b933cd5e5c9b28e63d0d4a598c152a9c32
|
data/.envrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
export REDIS_URL=redis://localhost:9736
|
data/CHANGES.md
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
# Changes
|
2
|
+
|
3
|
+
## 2024-09-03 v0.2.0
|
4
|
+
|
5
|
+
### Changes
|
6
|
+
|
7
|
+
* **Added Web Search Functionality to `ollama_chat`**
|
8
|
+
+ Added `/web` command to fetch search results from DuckDuckGo
|
9
|
+
+ Updated `/summarize` command to handle cases where summarization fails
|
10
|
+
+ Fix bug in parsing content type of source document
|
11
|
+
* **Refactored Options Class and Usage**
|
12
|
+
+ Renamed `options` variable to use `Options[]` method in ollama_chat script
|
13
|
+
+ Added `[](value)` method to Ollama::Options class for casting hashes
|
14
|
+
+ Updated options_spec.rb with tests for casting hashes and error handling
|
15
|
+
* **Refactored Web Search Command**
|
16
|
+
+ Added support for specifying a page number in `/web` command
|
17
|
+
+ Updated regular expression to match new format
|
18
|
+
+ Passed page number as an argument to `search_web` method
|
19
|
+
+ Updated content string to reference the query and sources correctly
|
20
|
+
* **DTO Class Changes**
|
21
|
+
+ Renamed `json_create` method to `from_hash` in Ollama::DTO class
|
22
|
+
+ Updated `as_json` method to remove now unnecessary hash creation
|
23
|
+
* **Message and Tool Spec Changes**
|
24
|
+
+ Removed `json_class` from JSON serialization in message_spec
|
25
|
+
+ Removed `json_class` from JSON serialization in tool_spec
|
26
|
+
* **Command Spec Changes**
|
27
|
+
+ Removed `json_class` from JSON serialization in various command specs (e.g. generate_spec, pull_spec, etc.)
|
28
|
+
* **Miscellaneous Changes**
|
29
|
+
+ Improved width calculation for text truncation
|
30
|
+
+ Updated FollowChat class to display evaluation statistics
|
31
|
+
+ Update OllamaChatConfig to use EOT instead of end for heredoc syntax
|
32
|
+
+ Add .keep file to tmp directory
|
33
|
+
|
34
|
+
## 2024-08-30 v0.1.0
|
35
|
+
|
36
|
+
### Change Log for New Version
|
37
|
+
|
38
|
+
#### Significant Changes
|
39
|
+
|
40
|
+
* **Document Splitting and Embedding Functionality**: Added `Ollama::Documents` class with methods for adding documents, checking existence, deleting documents, and finding similar documents.
|
41
|
+
+ Introduced two types of caches: `MemoryCache` and `RedisCache`
|
42
|
+
+ Implemented `SemanticSplitter` class to split text into sentences based on semantic similarity
|
43
|
+
* **Improved Ollama Chat Client**: Added support for document embeddings and web/file RAG
|
44
|
+
+ Allowed configuration per yaml file
|
45
|
+
+ Parse user input for URLs or files to send images to multimodal models
|
46
|
+
* **Redis Docker Service**: Set `REDIS_URL` environment variable to `redis://localhost:9736`
|
47
|
+
+ Added Redis service to `docker-compose.yml`
|
48
|
+
* **Status Display and Progress Updates**: Added infobar.label = response.status when available
|
49
|
+
+ Updated infobar with progress message on each call if total and completed are set
|
50
|
+
+ Display error message from response.error if present
|
51
|
+
* **Refactored Chat Commands**: Simplified regular expression patterns for `/pop`, `/save`, `/load`, and `/image` commands
|
52
|
+
+ Added whitespace to some command patterns for better readability
|
53
|
+
|
54
|
+
#### Other Changes
|
55
|
+
|
56
|
+
* Added `Character` and `RecursiveCharacter` splitter classes to split text into chunks based on character separators
|
57
|
+
* Added RSpec tests for the Ollama::Documents class(es)
|
58
|
+
* Updated dependencies and added new methods for calculating breakpoint thresholds and sentence embeddings
|
59
|
+
* Added 'ollama_update' to executables in Rakefile
|
60
|
+
* Started using webmock
|
61
|
+
* Refactored chooser and add fetcher specs
|
62
|
+
* Added tests for Ollama::Utils::Fetcher
|
63
|
+
* Update README.md
|
64
|
+
|
65
|
+
## 2024-08-16 v0.0.1
|
66
|
+
|
67
|
+
* **New Features**
|
68
|
+
+ Added missing options parameter to Embed command
|
69
|
+
+ Documented new `/api/embed` endpoint
|
70
|
+
* **Improvements**
|
71
|
+
+ Improved example in README.md
|
72
|
+
* **Code Refactoring**
|
73
|
+
+ Renamed `client` to `ollama` in client and command specs
|
74
|
+
+ Updated expectations to use `ollama` instead of `client`
|
75
|
+
|
76
|
+
## 2024-08-12 v0.0.0
|
77
|
+
|
78
|
+
* Start
|
data/README.md
CHANGED
@@ -28,7 +28,7 @@ to your Gemfile and run `bundle install` in your terminal.
|
|
28
28
|
|
29
29
|
## Executables
|
30
30
|
|
31
|
-
###
|
31
|
+
### ollama\_chat
|
32
32
|
|
33
33
|
This a chat client, that can be used to connect to an ollama server and enter a
|
34
34
|
chat converstation with a LLM. It can be called with the following arguments:
|
@@ -36,20 +36,58 @@ chat converstation with a LLM. It can be called with the following arguments:
|
|
36
36
|
```
|
37
37
|
ollama_chat [OPTIONS]
|
38
38
|
|
39
|
-
-
|
40
|
-
-
|
41
|
-
-
|
42
|
-
-s SYSTEM
|
43
|
-
-c CHAT
|
44
|
-
-
|
45
|
-
-
|
46
|
-
-
|
39
|
+
-f CONFIG config file to read
|
40
|
+
-u URL the ollama base url, OLLAMA_URL
|
41
|
+
-m MODEL the ollama model to chat with, OLLAMA_CHAT_MODEL
|
42
|
+
-s SYSTEM the system prompt to use as a file, OLLAMA_CHAT_SYSTEM
|
43
|
+
-c CHAT a saved chat conversation to load
|
44
|
+
-C COLLECTION name of the collection used in this conversation
|
45
|
+
-D DOCUMENT load document and add to collection (multiple)
|
46
|
+
-v use voice output
|
47
|
+
-h this help
|
47
48
|
```
|
48
49
|
|
49
50
|
The base URL can be either set by the environment variable `OLLAMA_URL` or it
|
50
51
|
is derived from the environment variable `OLLAMA_HOST`. The default model to
|
51
52
|
connect can be configured in the environment variable `OLLAMA_MODEL`.
|
52
53
|
|
54
|
+
The YAML config file in `$XDG_CONFIG_HOME/ollama_chat/config.yml`, that you can
|
55
|
+
use for more complex settings, it looks like this:
|
56
|
+
|
57
|
+
```
|
58
|
+
---
|
59
|
+
url: <%= ENV['OLLAMA_URL'] || 'http://%s' % ENV.fetch('OLLAMA_HOST') %>
|
60
|
+
model:
|
61
|
+
name: <%= ENV.fetch('OLLAMA_CHAT_MODEL', 'llama3.1') %>
|
62
|
+
options:
|
63
|
+
num_ctx: 8192
|
64
|
+
system: <%= ENV.fetch('OLLAMA_CHAT_SYSTEM', 'null') %>
|
65
|
+
voice: Samantha
|
66
|
+
markdown: true
|
67
|
+
embedding:
|
68
|
+
enabled: true
|
69
|
+
model:
|
70
|
+
name: mxbai-embed-large
|
71
|
+
options: {}
|
72
|
+
collection: <%= ENV.fetch('OLLAMA_CHAT_COLLECTION', 'ollama_chat') %>
|
73
|
+
found_texts_size: 4096
|
74
|
+
splitter:
|
75
|
+
name: RecursiveCharacter
|
76
|
+
chunk_size: 1024
|
77
|
+
cache: Ollama::Documents::RedisCache
|
78
|
+
redis:
|
79
|
+
url: <%= ENV.fetch('REDIS_URL', 'null') %>
|
80
|
+
debug: <%= ENV['OLLAMA_CHAT_DEBUG'].to_i == 1 ? true : false %>
|
81
|
+
```
|
82
|
+
|
83
|
+
If you want to store embeddings persistently, set an environment variable
|
84
|
+
`REDIS_URL` or update the `redis.url` setting in your `config.yml` file to
|
85
|
+
connect to a Redis server. Without this setup, embeddings will only be stored
|
86
|
+
in process memory, which is less durable.
|
87
|
+
|
88
|
+
Some settings can be passed as arguments as well, e. g. if you want to choose a
|
89
|
+
specific system prompt:
|
90
|
+
|
53
91
|
```
|
54
92
|
$ ollama_chat -s sherlock.txt
|
55
93
|
Model with architecture llama found.
|
@@ -86,9 +124,7 @@ $ ollama_chat -m llava-llama3
|
|
86
124
|
Model with architecture llama found.
|
87
125
|
Connecting to llava-llama3@http://localhost:11434 now…
|
88
126
|
Type /help to display the chat help.
|
89
|
-
|
90
|
-
Attached image spec/assets/kitten.jpg to the next message.
|
91
|
-
📸 user> What's on this image?
|
127
|
+
📸 user> What's on this image? ./spec/assets/kitten.jpg
|
92
128
|
📨 assistant:
|
93
129
|
The image captures a moment of tranquility featuring a young cat. The cat,
|
94
130
|
adorned with gray and white fur marked by black stripes on its face and legs,
|
@@ -116,19 +152,22 @@ subject - the young, blue-eyed cat.
|
|
116
152
|
The following commands can be given inside the chat, if prefixed by a `/`:
|
117
153
|
|
118
154
|
```
|
119
|
-
/paste
|
120
|
-
/
|
121
|
-
/
|
122
|
-
/
|
123
|
-
/
|
124
|
-
/
|
125
|
-
/
|
126
|
-
/
|
127
|
-
/
|
128
|
-
/
|
155
|
+
/paste to paste content
|
156
|
+
/markdown toggle markdown output
|
157
|
+
/list list the messages of the conversation
|
158
|
+
/clear clear the conversation messages
|
159
|
+
/pop [n] pop the last n exchanges, defaults to 1
|
160
|
+
/model change the model
|
161
|
+
/regenerate the last answer message
|
162
|
+
/collection clear|stats|change|new clear or show stats of current collection
|
163
|
+
/summarize source summarize the URL/file source's content
|
164
|
+
/save filename store conversation messages
|
165
|
+
/load filename load conversation messages
|
166
|
+
/quit to quit
|
167
|
+
/help to view this help
|
129
168
|
```
|
130
169
|
|
131
|
-
###
|
170
|
+
### ollama\_console
|
132
171
|
|
133
172
|
This is an interactive console, that can be used to try the different commands
|
134
173
|
provided by an `Ollama::Client` instance. For example this command generate a
|
data/Rakefile
CHANGED
@@ -13,12 +13,12 @@ GemHadar do
|
|
13
13
|
description 'Library that allows interacting with the Ollama API'
|
14
14
|
test_dir 'spec'
|
15
15
|
ignore '.*.sw[pon]', 'pkg', 'Gemfile.lock', '.AppleDouble', '.bundle',
|
16
|
-
'.yardoc', 'tags', 'errors.lst', 'cscope.out', 'coverage', 'tmp'
|
16
|
+
'.yardoc', 'tags', 'errors.lst', 'cscope.out', 'coverage', 'tmp', 'corpus'
|
17
17
|
package_ignore '.all_images.yml', '.tool-versions', '.gitignore', 'VERSION',
|
18
18
|
'.utilsrc', '.rspec', *Dir.glob('.github/**/*', File::FNM_DOTMATCH)
|
19
19
|
readme 'README.md'
|
20
20
|
|
21
|
-
executables << 'ollama_console' << 'ollama_chat'
|
21
|
+
executables << 'ollama_console' << 'ollama_chat' << 'ollama_update'
|
22
22
|
|
23
23
|
required_ruby_version '~> 3.1'
|
24
24
|
|
@@ -27,9 +27,21 @@ GemHadar do
|
|
27
27
|
dependency 'term-ansicolor', '~> 1.11'
|
28
28
|
dependency 'kramdown-parser-gfm', '~> 1.1'
|
29
29
|
dependency 'terminal-table', '~> 3.0'
|
30
|
-
|
31
|
-
|
30
|
+
dependency 'redis', '~> 5.0'
|
31
|
+
dependency 'numo-narray', '~> 0.9'
|
32
|
+
dependency 'more_math', '~> 1.1'
|
33
|
+
dependency 'sorted_set', '~> 1.0'
|
34
|
+
dependency 'mime-types', '~> 3.0'
|
35
|
+
dependency 'reverse_markdown', '~> 2.0'
|
36
|
+
dependency 'complex_config', '~> 0.20'
|
37
|
+
dependency 'search_ui', '~> 0.0'
|
38
|
+
dependency 'amatch', '~> 0.4.1'
|
39
|
+
development_dependency 'all_images', '~> 0.4'
|
40
|
+
development_dependency 'rspec', '~> 3.2'
|
32
41
|
development_dependency 'utils'
|
42
|
+
development_dependency 'webmock'
|
33
43
|
|
34
44
|
licenses << 'MIT'
|
45
|
+
|
46
|
+
clobber 'coverage'
|
35
47
|
end
|