Module: OllamaChat::ModelHandling
- Included in:
- Chat
- Defined in:
- lib/ollama_chat/model_handling.rb
Overview
A module that provides functionality for managing Ollama models, including checking model availability, pulling models from remote servers, and handling model presence verification.
This module encapsulates the logic for interacting with Ollama models, ensuring that required models are available locally before attempting to use them in chat sessions. It handles both local model verification and remote model retrieval when necessary.
Instance Method Summary collapse
-
#model_present?(model) ⇒ String, FalseClass
The model_present? method checks if the specified Ollama model is available.
-
#pull_model_from_remote(model) ⇒ nil
The pull_model_from_remote method attempts to retrieve a model from the remote server if it is not found locally.
-
#pull_model_unless_present(model, options) ⇒ String, FalseClass
The pull_model_unless_present method checks if the specified model is present on the system.
Instance Method Details
#model_present?(model) ⇒ String, FalseClass
The model_present? method checks if the specified Ollama model is available.
false otherwise
25 26 27 28 29 |
# File 'lib/ollama_chat/model_handling.rb', line 25 def model_present?(model) ollama.show(model:) { return _1.system.to_s } rescue Ollama::Errors::NotFoundError false end |
#pull_model_from_remote(model) ⇒ nil
The pull_model_from_remote method attempts to retrieve a model from the remote server if it is not found locally.
37 38 39 40 |
# File 'lib/ollama_chat/model_handling.rb', line 37 def pull_model_from_remote(model) STDOUT.puts "Model #{bold{model}} not found locally, attempting to pull it from remote now…" ollama.pull(model:) end |
#pull_model_unless_present(model, options) ⇒ String, FalseClass
The pull_model_unless_present method checks if the specified model is present on the system.
If the model is already present, it returns the system prompt if it is present.
Otherwise, it attempts to pull the model from the remote server using the pull_model_from_remote method. If the model is still not found after pulling, it exits the program with a message indicating that the model was not found remotely.
present, false otherwise.
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/ollama_chat/model_handling.rb', line 58 def pull_model_unless_present(model, ) if system = model_present?(model) return system.full? else pull_model_from_remote(model) if system = model_present?(model) return system.full? else STDOUT.puts "Model #{bold{model}} not found remotely. => Exiting." exit 1 end end rescue Ollama::Errors::Error => e warn "Caught #{e.class} while pulling model: #{e} => Exiting." exit 1 end |