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) ⇒ Object
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.
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) ⇒ Object
The pull_model_from_remote method attempts to retrieve a model from the remote server if it is not found locally.
35 36 37 38 |
# File 'lib/ollama_chat/model_handling.rb', line 35 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.
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/ollama_chat/model_handling.rb', line 56 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 |