ollama-ruby 0.8.0 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7a6a94882e3f76e84fbceadd80ec844f9a93febd18ed294b01f7874867c53e68
4
- data.tar.gz: 47cda3eef10438ff1cd136ffcc4469d2275bc2e26cdab985c7a001e2d0178b7f
3
+ metadata.gz: 3976b4254bbedc3655a6a737000903217eff8b4b941971eb6ae4fda630ba40c3
4
+ data.tar.gz: 29187dded0f2748e8e684648ab374d027aaff18a6f85ede48df78dc34b705645
5
5
  SHA512:
6
- metadata.gz: 5c42f47be513e41465693c47dee68447ac42a967f7ecaaf88ea51df6ea30eb9beb61b25595fc145909a0c9b8838d22756f47e71bc6acdd33bb47e4876545ccdc
7
- data.tar.gz: b4ac6bf59882a23774fbfb3503607c1a22d200037b31613a8f9d565ebf174b99d66259cc62d99f0635e7ac99fd07cc51aec735dd7dbb31259dc767e403eaa5d7
6
+ metadata.gz: 69ad552c73c297d23db6a65681008c79329de3d4a02a07f28b027a94820f9505488870e4bce6b43c1ae6a6fb64c6107ce4cc3d28b307f07573987464e6eaed84
7
+ data.tar.gz: 79dd0a71d48726900ed7df4508f2031191f00f15b3713cc562aa29112c4942e72836c5d487c8883b173dc760d8e815461b66e3c4b0fbdccd1226e6019af2419a
data/CHANGES.md CHANGED
@@ -1,5 +1,39 @@
1
1
  # Changes
2
2
 
3
+ ## 2024-10-19 v0.9.1
4
+
5
+ * Fixing string interpolation in `import_source` method:
6
+ + Changed result to use `#{}` instead of `%{}` for string interpolation
7
+ * Move `pull_model_unless_present` method:
8
+ + Moved the method before other methods
9
+ * Moved Switch classes and `setup_switches` method into Switches module:
10
+ + Moved the classes and method into a new module
11
+ * Utils::Fetcher: Normalize URL in fetcher utility:
12
+ + Added `normalize_url` method to class Ollama::Utils::Fetcher
13
+ + Normalizes URL by decoding URI components, removing anchors, and escaping special characters
14
+ + `excon` method now calls `normalize_url` on the provided URL
15
+ + Added specs for `normalize_url` in `fetcher_spec.rb`
16
+ * Remove Ollama top level Namespace b/c we include it from `ollama_chat`:
17
+ + Removed the top-level namespace
18
+
19
+ ## 2024-10-18 v0.9.0
20
+
21
+ * Add document policy chooser and modify embedding/importing/summarizing
22
+ behavior:
23
+ + Add `/document_policy` command to choose a scan policy for document
24
+ references
25
+ + Modify `embed_source`, `import_source`, and `summarize_source` methods to
26
+ use the chosen document policy
27
+ + Update `choose_model` method to set `$document_policy` based on
28
+ configuration or chat command
29
+ * Fix regular expression in `ollama_chat` script:
30
+ + Updated regular expression for `/info` to `/^/info$`
31
+ * Improve ask prompt to ask about clearing messages and collection.
32
+ * Update specs to use `expect` instead of `allow`
33
+ * Fix library homepage URL in README.md
34
+ * Refactor Markdown handler to remove unnecessary puts statement
35
+ * Reorder chapters in README.md a bit
36
+
3
37
  ## 2024-10-07 v0.8.0
4
38
 
5
39
  * **Refactor source handling in Ollama chat**:
data/README.md CHANGED
@@ -26,161 +26,23 @@ gem 'ollama-ruby'
26
26
 
27
27
  to your Gemfile and run `bundle install` in your terminal.
28
28
 
29
- ## Executables
30
-
31
- ### ollama\_chat
32
-
33
- This a chat client, that can be used to connect to an ollama server and enter a
34
- chat converstation with a LLM. It can be called with the following arguments:
35
-
36
- ```
37
- Usage: ollama_chat [OPTIONS]
38
-
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 embeddings collection (multiple)
46
- -M use (empty) MemoryCache for this chat session
47
- -E disable embeddings for this chat session
48
- -V display the current version number and quit
49
- -h this help
50
- ```
51
-
52
- The base URL can be either set by the environment variable `OLLAMA_URL` or it
53
- is derived from the environment variable `OLLAMA_HOST`. The default model to
54
- connect can be configured in the environment variable `OLLAMA_MODEL`.
55
-
56
- The YAML config file in `$XDG_CONFIG_HOME/ollama_chat/config.yml`, that you can
57
- use for more complex settings, it looks like this:
58
-
59
- ```
60
- ---
61
- url: <%= ENV['OLLAMA_URL'] || 'http://%s' % ENV.fetch('OLLAMA_HOST') %>
62
- model:
63
- name: <%= ENV.fetch('OLLAMA_CHAT_MODEL', 'llama3.1') %>
64
- options:
65
- num_ctx: 8192
66
- system: <%= ENV.fetch('OLLAMA_CHAT_SYSTEM', 'null') %>
67
- voice: Samantha
68
- markdown: true
69
- embedding:
70
- enabled: true
71
- model:
72
- name: mxbai-embed-large
73
- options: {}
74
- collection: <%= ENV.fetch('OLLAMA_CHAT_COLLECTION', 'ollama_chat') %>
75
- found_texts_size: 4096
76
- splitter:
77
- name: RecursiveCharacter
78
- chunk_size: 1024
79
- cache: Ollama::Documents::RedisCache
80
- redis:
81
- url: <%= ENV.fetch('REDIS_URL', 'null') %>
82
- debug: <%= ENV['OLLAMA_CHAT_DEBUG'].to_i == 1 ? true : false %>
83
- ```
84
-
85
- If you want to store embeddings persistently, set an environment variable
86
- `REDIS_URL` or update the `redis.url` setting in your `config.yml` file to
87
- connect to a Redis server. Without this setup, embeddings will only be stored
88
- in process memory, which is less durable.
89
-
90
- Some settings can be passed as arguments as well, e. g. if you want to choose a
91
- specific system prompt:
92
-
93
- ```
94
- $ ollama_chat -s sherlock.txt
95
- Model with architecture llama found.
96
- Connecting to llama3.1@http://ollama.local.net:11434 now…
97
- Configured system prompt is:
98
- You are Sherlock Holmes and the user is your new client, Dr. Watson is also in
99
- the room. You will talk and act in the typical manner of Sherlock Holmes do and
100
- try to solve the user's case using logic and deduction.
101
-
102
- Type /help to display the chat help.
103
- 📨 user:
104
- Good morning.
105
- 📨 assistant:
106
- Ah, good morning, my dear fellow! It is a pleasure to make your acquaintance. I
107
- am Sherlock Holmes, the renowned detective, and this is my trusty sidekick, Dr.
108
- Watson. Please, have a seat and tell us about the nature of your visit. What
109
- seems to be the problem that has brought you to our humble abode at 221B Baker
110
- Street?
111
-
112
- (Watson nods in encouragement as he takes notes)
113
-
114
- Now, pray tell, what is it that puzzles you, my dear client? A missing item,
115
- perhaps? Or a mysterious occurrence that requires clarification? The game, as
116
- they say, is afoot!
117
- ```
118
-
119
- This example shows how an image like this can be sent to a vision model for
120
- analysis:
121
-
122
- ![cat](spec/assets/kitten.jpg)
123
-
124
- ```
125
- $ ollama_chat -m llava-llama3
126
- Model with architecture llama found.
127
- Connecting to llava-llama3@http://localhost:11434 now…
128
- Type /help to display the chat help.
129
- 📸 user> What's on this image? ./spec/assets/kitten.jpg
130
- 📨 assistant:
131
- The image captures a moment of tranquility featuring a young cat. The cat,
132
- adorned with gray and white fur marked by black stripes on its face and legs,
133
- is the central figure in this scene. Its eyes, a striking shade of blue, are
134
- wide open and directed towards the camera, giving an impression of curiosity or
135
- alertness.
136
-
137
- The cat is comfortably nestled on a red blanket, which contrasts vividly with
138
- its fur. The blanket, soft and inviting, provides a sense of warmth to the
139
- image. In the background, partially obscured by the cat's head, is another
140
- blanket of similar red hue. The repetition of the color adds a sense of harmony
141
- to the composition.
142
-
143
- The cat's position on the right side of the photo creates an interesting
144
- asymmetry with the camera lens, which occupies the left side of the frame. This
145
- visual balance enhances the overall composition of the image.
29
+ ## Usage
146
30
 
147
- There are no discernible texts or other objects in the image. The focus is
148
- solely on the cat and its immediate surroundings. The image does not provide
149
- any information about the location or setting beyond what has been described.
150
- The simplicity of the scene allows the viewer to concentrate on the main
151
- subject - the young, blue-eyed cat.
152
- ```
31
+ In your own software the library can be used as shown in this example:
153
32
 
154
- The following commands can be given inside the chat, if prefixed by a `/`:
33
+ ```ruby
34
+ require "ollama"
35
+ include Ollama
155
36
 
156
- ```
157
- /copy to copy last response to clipboard
158
- /paste to paste content
159
- /markdown toggle markdown output
160
- /stream toggle stream output
161
- /location toggle location submission
162
- /voice( change) toggle voice output or change the voice
163
- /list [n] list the last n / all conversation exchanges
164
- /clear clear the whole conversation
165
- /clobber clear the conversation and collection
166
- /pop [n] pop the last n exchanges, defaults to 1
167
- /model change the model
168
- /system change system prompt (clears conversation)
169
- /regenerate the last answer message
170
- /collection( clear|change) change (default) collection or clear
171
- /info show information for current session
172
- /import source import the source's content
173
- /summarize [n] source summarize the source's content in n words
174
- /embedding toggle embedding paused or not
175
- /embed source embed the source's content
176
- /web [n] query query web search & return n or 1 results
177
- /save filename store conversation messages
178
- /load filename load conversation messages
179
- /quit to quit
180
- /help to view this help
37
+ ollama = Client.new(base_url: 'http://localhost:11434')
38
+ messages = Message.new(role: 'user', content: 'Why is the sky blue?')
39
+ ollama.chat(model: 'llama3.1', stream: true, messages:, &Print) # or
40
+ print ollama.chat(model: 'llama3.1', stream: true, messages:).lazy.map { |response|
41
+ response.message.content
42
+ }
181
43
  ```
182
44
 
183
- ### ollama\_console
45
+ ## Try out things in ollama\_console
184
46
 
185
47
  This is an interactive console, that can be used to try the different commands
186
48
  provided by an `Ollama::Client` instance. For example this command generate a
@@ -197,21 +59,6 @@ Commands: chat,copy,create,delete,embeddings,generate,help,ps,pull,push,show,tag
197
59
  > In a small village nestled between two great palm trees 🌳, there lived a
198
60
  > brave adventurer named Alex 👦. […]
199
61
 
200
- ## Usage
201
-
202
- In your own software the library can be used as shown in this example:
203
-
204
- ```ruby
205
- require "ollama"
206
- include Ollama
207
-
208
- ollama = Client.new(base_url: 'http://localhost:11434')
209
- messages = Message.new(role: 'user', content: 'Why is the sky blue?')
210
- ollama.chat(model: 'llama3.1', stream: true, messages:, &Print) # or
211
- print ollama.chat(model: 'llama3.1', stream: true, messages:).lazy.map { |response|
212
- response.message.content
213
- }
214
- ```
215
62
 
216
63
  ## API
217
64
 
@@ -463,11 +310,166 @@ If `Ollama::Errors::TimeoutError` is raised, it might help to increase the
463
310
 
464
311
  For more generic errors an `Ollama::Errors::Error` is raised.
465
312
 
313
+ ## Other executables
314
+
315
+ ### ollama\_chat
316
+
317
+ This a chat client, that can be used to connect to an ollama server and enter a
318
+ chat converstation with a LLM. It can be called with the following arguments:
319
+
320
+ ```
321
+ Usage: ollama_chat [OPTIONS]
322
+
323
+ -f CONFIG config file to read
324
+ -u URL the ollama base url, OLLAMA_URL
325
+ -m MODEL the ollama model to chat with, OLLAMA_CHAT_MODEL
326
+ -s SYSTEM the system prompt to use as a file, OLLAMA_CHAT_SYSTEM
327
+ -c CHAT a saved chat conversation to load
328
+ -C COLLECTION name of the collection used in this conversation
329
+ -D DOCUMENT load document and add to embeddings collection (multiple)
330
+ -M use (empty) MemoryCache for this chat session
331
+ -E disable embeddings for this chat session
332
+ -V display the current version number and quit
333
+ -h this help
334
+ ```
335
+
336
+ The base URL can be either set by the environment variable `OLLAMA_URL` or it
337
+ is derived from the environment variable `OLLAMA_HOST`. The default model to
338
+ connect can be configured in the environment variable `OLLAMA_MODEL`.
339
+
340
+ The YAML config file in `$XDG_CONFIG_HOME/ollama_chat/config.yml`, that you can
341
+ use for more complex settings, it looks like this:
342
+
343
+ ```
344
+ ---
345
+ url: <%= ENV['OLLAMA_URL'] || 'http://%s' % ENV.fetch('OLLAMA_HOST') %>
346
+ model:
347
+ name: <%= ENV.fetch('OLLAMA_CHAT_MODEL', 'llama3.1') %>
348
+ options:
349
+ num_ctx: 8192
350
+ system: <%= ENV.fetch('OLLAMA_CHAT_SYSTEM', 'null') %>
351
+ voice: Samantha
352
+ markdown: true
353
+ embedding:
354
+ enabled: true
355
+ model:
356
+ name: mxbai-embed-large
357
+ options: {}
358
+ collection: <%= ENV.fetch('OLLAMA_CHAT_COLLECTION', 'ollama_chat') %>
359
+ found_texts_size: 4096
360
+ splitter:
361
+ name: RecursiveCharacter
362
+ chunk_size: 1024
363
+ cache: Ollama::Documents::RedisCache
364
+ redis:
365
+ url: <%= ENV.fetch('REDIS_URL', 'null') %>
366
+ debug: <%= ENV['OLLAMA_CHAT_DEBUG'].to_i == 1 ? true : false %>
367
+ ```
368
+
369
+ If you want to store embeddings persistently, set an environment variable
370
+ `REDIS_URL` or update the `redis.url` setting in your `config.yml` file to
371
+ connect to a Redis server. Without this setup, embeddings will only be stored
372
+ in process memory, which is less durable.
373
+
374
+ Some settings can be passed as arguments as well, e. g. if you want to choose a
375
+ specific system prompt:
376
+
377
+ ```
378
+ $ ollama_chat -s sherlock.txt
379
+ Model with architecture llama found.
380
+ Connecting to llama3.1@http://ollama.local.net:11434 now…
381
+ Configured system prompt is:
382
+ You are Sherlock Holmes and the user is your new client, Dr. Watson is also in
383
+ the room. You will talk and act in the typical manner of Sherlock Holmes do and
384
+ try to solve the user's case using logic and deduction.
385
+
386
+ Type /help to display the chat help.
387
+ 📨 user:
388
+ Good morning.
389
+ 📨 assistant:
390
+ Ah, good morning, my dear fellow! It is a pleasure to make your acquaintance. I
391
+ am Sherlock Holmes, the renowned detective, and this is my trusty sidekick, Dr.
392
+ Watson. Please, have a seat and tell us about the nature of your visit. What
393
+ seems to be the problem that has brought you to our humble abode at 221B Baker
394
+ Street?
395
+
396
+ (Watson nods in encouragement as he takes notes)
397
+
398
+ Now, pray tell, what is it that puzzles you, my dear client? A missing item,
399
+ perhaps? Or a mysterious occurrence that requires clarification? The game, as
400
+ they say, is afoot!
401
+ ```
402
+
403
+ This example shows how an image like this can be sent to a vision model for
404
+ analysis:
405
+
406
+ ![cat](spec/assets/kitten.jpg)
407
+
408
+ ```
409
+ $ ollama_chat -m llava-llama3
410
+ Model with architecture llama found.
411
+ Connecting to llava-llama3@http://localhost:11434 now…
412
+ Type /help to display the chat help.
413
+ 📸 user> What's on this image? ./spec/assets/kitten.jpg
414
+ 📨 assistant:
415
+ The image captures a moment of tranquility featuring a young cat. The cat,
416
+ adorned with gray and white fur marked by black stripes on its face and legs,
417
+ is the central figure in this scene. Its eyes, a striking shade of blue, are
418
+ wide open and directed towards the camera, giving an impression of curiosity or
419
+ alertness.
420
+
421
+ The cat is comfortably nestled on a red blanket, which contrasts vividly with
422
+ its fur. The blanket, soft and inviting, provides a sense of warmth to the
423
+ image. In the background, partially obscured by the cat's head, is another
424
+ blanket of similar red hue. The repetition of the color adds a sense of harmony
425
+ to the composition.
426
+
427
+ The cat's position on the right side of the photo creates an interesting
428
+ asymmetry with the camera lens, which occupies the left side of the frame. This
429
+ visual balance enhances the overall composition of the image.
430
+
431
+ There are no discernible texts or other objects in the image. The focus is
432
+ solely on the cat and its immediate surroundings. The image does not provide
433
+ any information about the location or setting beyond what has been described.
434
+ The simplicity of the scene allows the viewer to concentrate on the main
435
+ subject - the young, blue-eyed cat.
436
+ ```
437
+
438
+ The following commands can be given inside the chat, if prefixed by a `/`:
439
+
440
+ ```
441
+ /copy to copy last response to clipboard
442
+ /paste to paste content
443
+ /markdown toggle markdown output
444
+ /stream toggle stream output
445
+ /location toggle location submission
446
+ /voice( change) toggle voice output or change the voice
447
+ /list [n] list the last n / all conversation exchanges
448
+ /clear clear the whole conversation
449
+ /clobber clear the conversation and collection
450
+ /pop [n] pop the last n exchanges, defaults to 1
451
+ /model change the model
452
+ /system change system prompt (clears conversation)
453
+ /regenerate the last answer message
454
+ /collection( clear|change) change (default) collection or clear
455
+ /info show information for current session
456
+ /document_policy pick a scan policy for document references
457
+ /import source import the source's content
458
+ /summarize [n] source summarize the source's content in n words
459
+ /embedding toggle embedding paused or not
460
+ /embed source embed the source's content
461
+ /web [n] query query web search & return n or 1 results
462
+ /save filename store conversation messages
463
+ /load filename load conversation messages
464
+ /quit to quit
465
+ /help to view this help
466
+ ```
467
+
466
468
  ## Download
467
469
 
468
470
  The homepage of this library is located at
469
471
 
470
- * https://github.com/flori/ollama
472
+ * https://github.com/flori/ollama-ruby
471
473
 
472
474
  ## Author
473
475