ollama-ruby 0.15.0 → 0.16.0

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: 44b2b4e2384b4f05a8457cf9dbcd7d9c654ceff267080245d5d7a1915554743b
4
- data.tar.gz: b03c72fed7968802c87681464b6bcd365f05906a351f7cdcde61dc60661f15cd
3
+ metadata.gz: 96d3c8afe0962abc4938b2e2d6cea5dd773e224ac05e87f819b371429083d79d
4
+ data.tar.gz: 6e293ec73919c33eede640b9043b9adfff00f5d9761c1d2759f022016a2b6daa
5
5
  SHA512:
6
- metadata.gz: 7ab16b2e5b23dbe1b94f240124c70a9073184af44d7cbdc31c6fedab92960f30b0a605c4e499eb7ac0a93f7cdf2b72ea62a380d4ea29e2d5d79d2667eabfc1c0
7
- data.tar.gz: 20e6c0e290ad0c076fede5bde2d0959da37697e17d0ed90fb6e136bc8f6ab3c4084202086299a38b27ca62084dafb6979394b9bb2d52c47f553ca2eeaa32959f
6
+ metadata.gz: c11223503b8ff33ed77c0629f52ea5eb703ac8fc838b6a258e27e07eda297c66ad40ec672fccf1e5dd9e00f432754b219196114dd1bed93bacdd7760451d88db
7
+ data.tar.gz: 2d089cfaaeccced65a17dbe622ec9f621238241c25c24b6504815310e3bc157f3a7baba95747275d4300292722dc5df2a74fa6cef581a7997af65e9bd86613cb
data/CHANGES.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Changes
2
2
 
3
+ ## 2025-02-17 v0.16.0
4
+
5
+ * Updated Ollama CLI with new handler that allows saving of chat and
6
+ continuation with `ollama_chat`:
7
+ * Added `require 'tins/xt/secure_write'` and `require 'tmpdir'`.
8
+ * Created a new `ChatStart` class that handles chat responses.
9
+ * Updated options parsing to use `ChatStart` as the default handler.
10
+ * Changed code to handle `ChatStart` instances.
11
+ * Added secure write functionality for chat conversation in tmpdir.
12
+ * Added `yaml-dev` to `apk add` command in `.all_images.yml`
13
+
3
14
  ## 2025-02-12 v0.15.0
4
15
 
5
16
  * Added "version" command to display version of the ollama server:
data/bin/ollama_cli CHANGED
@@ -4,7 +4,30 @@ require 'ollama'
4
4
  include Ollama
5
5
  require 'tins'
6
6
  include Tins::GO
7
+ require 'tins/xt/secure_write'
7
8
  require 'json'
9
+ require 'tmpdir'
10
+
11
+ class ChatStart
12
+ include Ollama::Handlers::Concern
13
+
14
+ def initialize(output: $stdout)
15
+ super
16
+ @output.sync = true
17
+ @content = ''
18
+ end
19
+
20
+ attr_reader :content
21
+
22
+ def call(response)
23
+ if content = response.response
24
+ @content << content
25
+ @output << content
26
+ end
27
+ response.done and @output.puts
28
+ self
29
+ end
30
+ end
8
31
 
9
32
  # Returns the contents of a file or string, or a default value if neither is provided.
10
33
  #
@@ -49,7 +72,7 @@ def usage
49
72
  -p PROMPT the user prompt to use as a file, $OLLAMA_PROMPT
50
73
  if it contains %{stdin} it is substituted by stdin input
51
74
  -P VARIABLE sets prompt var %{foo} to "bar" if VARIABLE is foo=bar
52
- -H HANDLER the handler to use for the response, defaults to Print
75
+ -H HANDLER the handler to use for the response, defaults to ChatStart
53
76
  -S use streaming for generation
54
77
  -h this help
55
78
 
@@ -57,7 +80,7 @@ def usage
57
80
  exit 0
58
81
  end
59
82
 
60
- opts = go 'u:m:M:s:p:P:H:Sh', defaults: { ?H => 'Print', ?M => '{}' }
83
+ opts = go 'u:m:M:s:p:P:H:Sh', defaults: { ?H => 'ChatStart', ?M => '{}' }
61
84
 
62
85
  opts[?h] and usage
63
86
 
@@ -91,11 +114,30 @@ if ENV['DEBUG'].to_i == 1
91
114
  EOT
92
115
  end
93
116
 
117
+ handler = Object.const_get(opts[?H])
118
+ handler == ChatStart and handler = handler.new
119
+
94
120
  Client.new(base_url:, read_timeout: 120).generate(
95
121
  model:,
96
122
  system:,
97
123
  prompt:,
98
124
  options:,
99
125
  stream: !!opts[?S],
100
- &Object.const_get(opts[?H])
126
+ &handler
101
127
  )
128
+
129
+ if handler.is_a?(ChatStart)
130
+ filename = File.join(Dir.tmpdir, 'chat_start_%u.json' % $$)
131
+ File.secure_write(filename) do |out|
132
+ JSON.dump(
133
+ [
134
+ Message.new(role: 'user', content: prompt),
135
+ Message.new(role: 'assistant', content: handler.content),
136
+ ],
137
+ out
138
+ )
139
+ end
140
+ if STDERR.tty?
141
+ STDERR.puts "\nContinue the chat with: ollama_chat -c '%s'" % filename
142
+ end
143
+ end
@@ -1,6 +1,6 @@
1
1
  module Ollama
2
2
  # Ollama version
3
- VERSION = '0.15.0'
3
+ VERSION = '0.16.0'
4
4
  VERSION_ARRAY = VERSION.split('.').map(&:to_i) # :nodoc:
5
5
  VERSION_MAJOR = VERSION_ARRAY[0] # :nodoc:
6
6
  VERSION_MINOR = VERSION_ARRAY[1] # :nodoc:
data/ollama-ruby.gemspec CHANGED
@@ -1,14 +1,14 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: ollama-ruby 0.15.0 ruby lib
2
+ # stub: ollama-ruby 0.16.0 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "ollama-ruby".freeze
6
- s.version = "0.15.0".freeze
6
+ s.version = "0.16.0".freeze
7
7
 
8
8
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
9
9
  s.require_paths = ["lib".freeze]
10
10
  s.authors = ["Florian Frank".freeze]
11
- s.date = "2025-02-12"
11
+ s.date = "2025-02-17"
12
12
  s.description = "Library that allows interacting with the Ollama API".freeze
13
13
  s.email = "flori@ping.de".freeze
14
14
  s.executables = ["ollama_console".freeze, "ollama_update".freeze, "ollama_cli".freeze]
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ollama-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.0
4
+ version: 0.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Frank
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-02-12 00:00:00.000000000 Z
10
+ date: 2025-02-17 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: gem_hadar