ollama-ruby 0.0.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|