Class: Ollama::Client
- Inherits:
-
Object
- Object
- Ollama::Client
- Includes:
- Command, Configuration, Handlers, Tins::Annotate
- Defined in:
- lib/ollama/client.rb,
lib/ollama/client.rb
Defined Under Namespace
Modules: Command, Configuration Classes: Doc
Instance Attribute Summary collapse
-
#base_url ⇒ Object
readonly
Returns the value of attribute base_url.
-
#output ⇒ Object
Returns the value of attribute output.
Instance Method Summary collapse
- #commands ⇒ Object
- #help ⇒ Object
-
#initialize(base_url: nil, output: $stdout, connect_timeout: nil, read_timeout: nil, write_timeout: nil, debug: nil, user_agent: nil) ⇒ Client
constructor
A new instance of Client.
- #inspect ⇒ Object (also: #to_s)
- #request(method:, path:, handler:, body: nil, stream: nil) ⇒ Object
- #ssl_verify_peer? ⇒ Boolean
Constructor Details
#initialize(base_url: nil, output: $stdout, connect_timeout: nil, read_timeout: nil, write_timeout: nil, debug: nil, user_agent: nil) ⇒ Client
Returns a new instance of Client.
15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/ollama/client.rb', line 15 def initialize(base_url: nil, output: $stdout, connect_timeout: nil, read_timeout: nil, write_timeout: nil, debug: nil, user_agent: nil) base_url.nil? and base_url = ENV.fetch('OLLAMA_URL') do raise ArgumentError, 'missing :base_url parameter or OLLAMA_URL environment variable' end base_url.is_a? URI or base_url = URI.parse(base_url) base_url.is_a?(URI::HTTP) || base_url.is_a?(URI::HTTPS) or raise ArgumentError, "require #{base_url.inspect} to be http/https-URI" @ssl_verify_peer = base_url.query.to_s.split(?&).inject({}) { |h, l| h.merge Hash[*l.split(?=)] }['ssl_verify_peer'] != 'false' @base_url, @output, @connect_timeout, @read_timeout, @write_timeout, @debug, @user_agent = base_url, output, connect_timeout, read_timeout, write_timeout, debug, user_agent end |
Instance Attribute Details
#base_url ⇒ Object (readonly)
Returns the value of attribute base_url.
32 33 34 |
# File 'lib/ollama/client.rb', line 32 def base_url @base_url end |
#output ⇒ Object
Returns the value of attribute output.
30 31 32 |
# File 'lib/ollama/client.rb', line 30 def output @output end |
Instance Method Details
#commands ⇒ Object
64 65 66 |
# File 'lib/ollama/client.rb', line 64 def commands doc_annotations.sort_by(&:first).transpose.last end |
#help ⇒ Object
69 70 71 |
# File 'lib/ollama/client.rb', line 69 def help @output.puts "Commands: %s" % commands.join(?,) end |
#inspect ⇒ Object Also known as: to_s
108 109 110 |
# File 'lib/ollama/client.rb', line 108 def inspect "#<#{self.class}@#{@base_url.to_s}>" end |
#request(method:, path:, handler:, body: nil, stream: nil) ⇒ Object
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/ollama/client.rb', line 73 def request(method:, path:, handler:, body: nil, stream: nil) url = @base_url + path responses = Enumerator.new do |yielder| if stream response_block = -> chunk, remaining_bytes, total_bytes do response_line = parse_json(chunk) response_line and yielder.yield response_line end response = excon(url).send(method, headers:, body:, response_block:) else response = excon(url).send(method, headers:, body:) end case response.status when 200 response.body.each_line do |l| response_line = parse_json(l) response_line and yielder.yield response_line end when 404 raise Ollama::Errors::NotFoundError, "#{response.status} #{response.body.inspect}" else raise Ollama::Errors::Error, "#{response.status} #{response.body.inspect}" end end responses.each { |response| handler.call(response) } self rescue Excon::Errors::SocketError => e raise Ollama::Errors::SocketError, "Caught #{e.class} #{e..inspect} for #{url.to_s.inspect}" rescue Excon::Errors::Timeout => e raise Ollama::Errors::TimeoutError, "Caught #{e.class} #{e..inspect} for #{url.to_s.inspect}" rescue Excon::Error => e raise Ollama::Errors::Error, "Caught #{e.class} #{e..inspect} for #{url.to_s.inspect}" end |
#ssl_verify_peer? ⇒ Boolean
34 35 36 |
# File 'lib/ollama/client.rb', line 34 def ssl_verify_peer? !!@ssl_verify_peer end |