Class: Geminize::Models::ModelList
- Inherits:
-
Object
- Object
- Geminize::Models::ModelList
- Extended by:
- Forwardable
- Includes:
- Enumerable
- Defined in:
- lib/geminize/models/model_list.rb
Overview
Represents a collection of AI models with filtering capabilities
Instance Attribute Summary collapse
-
#models ⇒ Array<Model>
readonly
The list of models.
-
#next_page_token ⇒ String?
readonly
Token for fetching the next page of results.
Class Method Summary collapse
-
.from_api_data(data) ⇒ ModelList
Create a ModelList from API response data.
Instance Method Summary collapse
-
#add(model) ⇒ ModelList
Add a model to the list.
-
#chat_models ⇒ ModelList
Find all models that support chat/conversation.
-
#content_generation_models ⇒ ModelList
Find all models that support content generation.
-
#each {|Model| ... } ⇒ Object
Implement Enumerable's required each method.
-
#embedding_models ⇒ ModelList
Find all models that support embeddings.
-
#filter_by_base_model_id(base_model_id) ⇒ ModelList
Filter models by base model ID.
-
#filter_by_display_name(pattern) ⇒ ModelList
Filter models by display name pattern.
-
#filter_by_method(method) ⇒ ModelList
Find all models that support a specific generation method.
-
#filter_by_min_input_tokens(min_limit) ⇒ ModelList
Find models with a minimum input token limit.
-
#filter_by_min_output_tokens(min_limit) ⇒ ModelList
Find models with a minimum output token limit.
-
#filter_by_version(version) ⇒ ModelList
Filter models by version.
-
#find_by_id(id) ⇒ Model?
Find a model by its ID (last part of the resource name).
-
#find_by_name(name) ⇒ Model?
Find a model by its resource name.
-
#has_more_pages? ⇒ Boolean
Check if there are more pages of results available.
-
#initialize(models = [], next_page_token = nil) ⇒ ModelList
constructor
Create a new ModelList.
-
#streaming_models ⇒ ModelList
Find all models that support streaming content generation.
-
#to_a ⇒ Array<Hash>
Convert to array of hashes representation.
-
#to_json(*args) ⇒ String
Convert to JSON string.
Constructor Details
#initialize(models = [], next_page_token = nil) ⇒ ModelList
Create a new ModelList
24 25 26 27 |
# File 'lib/geminize/models/model_list.rb', line 24 def initialize(models = [], next_page_token = nil) @models = models @next_page_token = next_page_token end |
Instance Attribute Details
#models ⇒ Array<Model> (readonly)
Returns The list of models.
13 14 15 |
# File 'lib/geminize/models/model_list.rb', line 13 def models @models end |
#next_page_token ⇒ String? (readonly)
Returns Token for fetching the next page of results.
16 17 18 |
# File 'lib/geminize/models/model_list.rb', line 16 def next_page_token @next_page_token end |
Class Method Details
.from_api_data(data) ⇒ ModelList
Create a ModelList from API response data
133 134 135 136 137 138 139 140 141 142 143 144 145 |
# File 'lib/geminize/models/model_list.rb', line 133 def self.from_api_data(data) models = [] next_page_token = data["nextPageToken"] # Process model data from API response if data.key?("models") models = data["models"].map do |model_data| Model.from_api_data(model_data) end end new(models, next_page_token) end |
Instance Method Details
#add(model) ⇒ ModelList
Add a model to the list
38 39 40 41 |
# File 'lib/geminize/models/model_list.rb', line 38 def add(model) @models << model self end |
#chat_models ⇒ ModelList
Find all models that support chat/conversation
85 86 87 |
# File 'lib/geminize/models/model_list.rb', line 85 def chat_models filter_by_method("generateMessage") end |
#content_generation_models ⇒ ModelList
Find all models that support content generation
67 68 69 |
# File 'lib/geminize/models/model_list.rb', line 67 def content_generation_models filter_by_method("generateContent") end |
#each {|Model| ... } ⇒ Object
Implement Enumerable's required each method
31 32 33 |
# File 'lib/geminize/models/model_list.rb', line 31 def each(&block) @models.each(&block) end |
#embedding_models ⇒ ModelList
Find all models that support embeddings
79 80 81 |
# File 'lib/geminize/models/model_list.rb', line 79 def filter_by_method("embedContent") end |
#filter_by_base_model_id(base_model_id) ⇒ ModelList
Filter models by base model ID
109 110 111 112 |
# File 'lib/geminize/models/model_list.rb', line 109 def filter_by_base_model_id(base_model_id) filtered = @models.select { |model| model.base_model_id == base_model_id } ModelList.new(filtered, nil) end |
#filter_by_display_name(pattern) ⇒ ModelList
Filter models by display name pattern
100 101 102 103 104 |
# File 'lib/geminize/models/model_list.rb', line 100 def filter_by_display_name(pattern) pattern = Regexp.new(pattern.to_s, Regexp::IGNORECASE) if pattern.is_a?(String) filtered = @models.select { |model| model.display_name&.match?(pattern) } ModelList.new(filtered, nil) end |
#filter_by_method(method) ⇒ ModelList
Find all models that support a specific generation method
60 61 62 63 |
# File 'lib/geminize/models/model_list.rb', line 60 def filter_by_method(method) filtered = @models.select { |model| model.supports_method?(method) } ModelList.new(filtered, nil) end |
#filter_by_min_input_tokens(min_limit) ⇒ ModelList
Find models with a minimum input token limit
117 118 119 120 |
# File 'lib/geminize/models/model_list.rb', line 117 def filter_by_min_input_tokens(min_limit) filtered = @models.select { |model| model.input_token_limit && model.input_token_limit >= min_limit } ModelList.new(filtered, nil) end |
#filter_by_min_output_tokens(min_limit) ⇒ ModelList
Find models with a minimum output token limit
125 126 127 128 |
# File 'lib/geminize/models/model_list.rb', line 125 def filter_by_min_output_tokens(min_limit) filtered = @models.select { |model| model.output_token_limit && model.output_token_limit >= min_limit } ModelList.new(filtered, nil) end |
#filter_by_version(version) ⇒ ModelList
Filter models by version
92 93 94 95 |
# File 'lib/geminize/models/model_list.rb', line 92 def filter_by_version(version) filtered = @models.select { |model| model.version == version } ModelList.new(filtered, nil) end |
#find_by_id(id) ⇒ Model?
Find a model by its ID (last part of the resource name)
53 54 55 |
# File 'lib/geminize/models/model_list.rb', line 53 def find_by_id(id) @models.find { |model| model.id == id } end |
#find_by_name(name) ⇒ Model?
Find a model by its resource name
46 47 48 |
# File 'lib/geminize/models/model_list.rb', line 46 def find_by_name(name) @models.find { |model| model.name == name } end |
#has_more_pages? ⇒ Boolean
Check if there are more pages of results available
149 150 151 |
# File 'lib/geminize/models/model_list.rb', line 149 def has_more_pages? !next_page_token.nil? && !next_page_token.empty? end |
#streaming_models ⇒ ModelList
Find all models that support streaming content generation
73 74 75 |
# File 'lib/geminize/models/model_list.rb', line 73 def streaming_models filter_by_method("streamGenerateContent") end |
#to_a ⇒ Array<Hash>
Convert to array of hashes representation
155 156 157 |
# File 'lib/geminize/models/model_list.rb', line 155 def to_a @models.map(&:to_h) end |
#to_json(*args) ⇒ String
Convert to JSON string
161 162 163 |
# File 'lib/geminize/models/model_list.rb', line 161 def to_json(*args) to_a.to_json(*args) end |