Class: Geminize::TextGeneration
- Inherits:
-
Object
- Object
- Geminize::TextGeneration
- Defined in:
- lib/geminize/text_generation.rb
Overview
Class for text generation functionality
Instance Attribute Summary collapse
-
#client ⇒ Geminize::Client
readonly
The client instance.
Instance Method Summary collapse
-
#cancel_streaming ⇒ Boolean
Cancel the current streaming operation, if any.
-
#generate(content_request) ⇒ Geminize::Models::ContentResponse
Generate text based on a content request.
-
#generate_text(prompt, model_name = nil, params = {}) ⇒ Geminize::Models::ContentResponse
Generate text from a prompt string with optional parameters.
-
#generate_text_multimodal(prompt, images, model_name = nil, params = {}) ⇒ Geminize::Models::ContentResponse
Generate content with both text and images.
-
#generate_text_stream(prompt, model_name = nil, params = {}) {|chunk| ... }
Generate a streaming text response from a prompt string with optional parameters.
-
#generate_with_retries(content_request, max_retries = 3, retry_delay = 1.0) ⇒ Geminize::Models::ContentResponse
Generate text with retries for transient errors.
-
#initialize(client = nil, options = {}) ⇒ TextGeneration
constructor
Initialize a new text generation instance.
Constructor Details
#initialize(client = nil, options = {}) ⇒ TextGeneration
Initialize a new text generation instance
12 13 14 15 |
# File 'lib/geminize/text_generation.rb', line 12 def initialize(client = nil, = {}) @client = client || Client.new() @options = end |
Instance Attribute Details
#client ⇒ Geminize::Client (readonly)
Returns The client instance.
7 8 9 |
# File 'lib/geminize/text_generation.rb', line 7 def client @client end |
Instance Method Details
#cancel_streaming ⇒ Boolean
Cancel the current streaming operation, if any
179 180 181 182 183 184 |
# File 'lib/geminize/text_generation.rb', line 179 def cancel_streaming return false unless @client # Set the cancel_streaming flag to true on the client @client.cancel_streaming = true end |
#generate(content_request) ⇒ Geminize::Models::ContentResponse
Generate text based on a content request
21 22 23 24 25 26 27 28 |
# File 'lib/geminize/text_generation.rb', line 21 def generate(content_request) model_name = content_request.model_name endpoint = RequestBuilder.build_text_generation_endpoint(model_name) payload = RequestBuilder.build_text_generation_request(content_request) response_data = @client.post(endpoint, payload) Models::ContentResponse.from_hash(response_data) end |
#generate_text(prompt, model_name = nil, params = {}) ⇒ Geminize::Models::ContentResponse
Generate text from a prompt string with optional parameters
42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/geminize/text_generation.rb', line 42 def generate_text(prompt, model_name = nil, params = {}) model = model_name || Geminize.configuration.default_model content_request = Models::ContentRequest.new( prompt, model, params ) generate(content_request) end |
#generate_text_multimodal(prompt, images, model_name = nil, params = {}) ⇒ Geminize::Models::ContentResponse
Generate content with both text and images
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
# File 'lib/geminize/text_generation.rb', line 126 def generate_text_multimodal(prompt, images, model_name = nil, params = {}) # Create a new content request with the prompt text content_request = Models::ContentRequest.new( prompt, model_name || Geminize.configuration.default_model, params ) # Add each image to the request based on its source type images.each do |image| case image[:source_type] when "file" content_request.add_image_from_file(image[:data]) when "bytes" content_request.add_image_from_bytes(image[:data], image[:mime_type]) when "url" content_request.add_image_from_url(image[:data]) else raise Geminize::ValidationError.new( "Invalid image source type: #{image[:source_type]}. Must be 'file', 'bytes', or 'url'", "INVALID_ARGUMENT" ) end end # Generate content with the constructed multimodal request generate(content_request) end |
#generate_text_stream(prompt, model_name = nil, params = {}) {|chunk| ... }
This method returns an undefined value.
Generate a streaming text response from a prompt string with optional parameters
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/geminize/text_generation.rb', line 84 def generate_text_stream(prompt, model_name = nil, params = {}, &block) raise ArgumentError, "A block is required for streaming" unless block_given? # Extract stream processing mode stream_mode = params.delete(:stream_mode) || :incremental unless [:raw, :incremental, :delta].include?(stream_mode) raise ArgumentError, "Invalid stream_mode. Must be :raw, :incremental, or :delta" end # Create the content request content_request = Models::ContentRequest.new( prompt, model_name || Geminize.configuration.default_model, params ) # Generate with streaming generate_stream(content_request, stream_mode, &block) end |
#generate_with_retries(content_request, max_retries = 3, retry_delay = 1.0) ⇒ Geminize::Models::ContentResponse
Generate text with retries for transient errors
161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 |
# File 'lib/geminize/text_generation.rb', line 161 def generate_with_retries(content_request, max_retries = 3, retry_delay = 1.0) retries = 0 begin generate(content_request) rescue Geminize::RateLimitError, Geminize::ServerError => e if retries < max_retries retries += 1 sleep retry_delay * retries # Exponential backoff retry else raise e end end end |