@@ -8,7 +8,6 @@ class Client
88 attr_reader :api_key , :connection
99
1010 ENDPOINT_URL = "https://generativelanguage.googleapis.com/"
11- AUTOPUSH_ENDPOINT_URL = "https://autopush-generativelanguage.sandbox.googleapis.com/"
1211
1312 DEFAULTS = {
1413 temperature : 0.0 ,
@@ -51,11 +50,11 @@ def generate_text(
5150 stop_sequences : nil ,
5251 client : nil
5352 )
54- response = connection ( url : ENDPOINT_URL ) . post ( "/v1beta2/models/#{ model || DEFAULTS [ :completion_model_name ] } :generateText" ) do |req |
53+ response = connection . post ( "/v1beta2/models/#{ model || DEFAULTS [ :completion_model_name ] } :generateText" ) do |req |
5554 req . params = { key : api_key }
5655
5756 req . body = { prompt : { text : prompt } }
58- req . body [ :temperature ] = temperature if temperature
57+ req . body [ :temperature ] = temperature || DEFAULTS [ : temperature]
5958 req . body [ :candidate_count ] = candidate_count if candidate_count
6059 req . body [ :max_output_tokens ] = max_output_tokens if max_output_tokens
6160 req . body [ :top_p ] = top_p if top_p
@@ -99,15 +98,15 @@ def generate_chat_message(
9998 client : nil
10099 )
101100 # Overwrite the default ENDPOINT_URL for this method.
102- response = connection ( url : AUTOPUSH_ENDPOINT_URL ) . post ( "/v1beta2/models/#{ model || DEFAULTS [ :chat_completion_model_name ] } :generateMessage" ) do |req |
101+ response = connection . post ( "/v1beta2/models/#{ model || DEFAULTS [ :chat_completion_model_name ] } :generateMessage" ) do |req |
103102 req . params = { key : api_key }
104103
105104 req . body = { prompt : { messages : [ { content : prompt } ] } }
106105 req . body [ :model ] = model if model
107106 req . body [ :context ] = context if context
108107 req . body [ :examples ] = examples if examples
109108 req . body [ :messages ] = messages if messages
110- req . body [ :temperature ] = temperature if temperature
109+ req . body [ :temperature ] = temperature || DEFAULTS [ : temperature]
111110 req . body [ :candidate_count ] = candidate_count if candidate_count
112111 req . body [ :top_p ] = top_p if top_p
113112 req . body [ :top_k ] = top_k if top_k
@@ -133,7 +132,7 @@ def embed(
133132 model : nil ,
134133 client : nil
135134 )
136- response = connection ( url : ENDPOINT_URL ) . post ( "/v1beta2/models/#{ model || DEFAULTS [ :embeddings_model_name ] } :embedText" ) do |req |
135+ response = connection . post ( "/v1beta2/models/#{ model || DEFAULTS [ :embeddings_model_name ] } :embedText" ) do |req |
137136 req . params = { key : api_key }
138137
139138 req . body = { text : text }
@@ -143,11 +142,57 @@ def embed(
143142 response . body
144143 end
145144
145+ #
146+ # Lists models available through the API.
147+ #
148+ # @param [Integer] page_size
149+ # @param [String] page_token
150+ # @return [Hash]
151+ #
152+ def list_models ( page_size : nil , page_token : nil )
153+ response = connection . get ( "/v1beta2/models" ) do |req |
154+ req . params = { key : api_key }
155+
156+ req . params [ :pageSize ] = page_size if page_size
157+ req . params [ :pageToken ] = page_token if page_token
158+ end
159+ response . body
160+ end
161+
162+ #
163+ # Runs a model's tokenizer on a string and returns the token count.
164+ #
165+ # @param [String] model
166+ # @param [String] prompt
167+ # @return [Hash]
168+ #
169+ def count_message_tokens ( model :, prompt :)
170+ response = connection . post ( "/v1beta2/models/#{ model } :countMessageTokens" ) do |req |
171+ req . params = { key : api_key }
172+
173+ req . body = { prompt : { messages : [ { content : prompt } ] } }
174+ end
175+ response . body
176+ end
177+
178+ #
179+ # Gets information about a specific Model.
180+ #
181+ # @param [String] name
182+ # @return [Hash]
183+ #
184+ def get_model ( model :)
185+ response = connection . get ( "/v1beta2/models/#{ model } " ) do |req |
186+ req . params = { key : api_key }
187+ end
188+ response . body
189+ end
190+
146191 private
147192
148193 # standard:disable Lint/DuplicateMethods
149- def connection ( url : )
150- Faraday . new ( url : url ) do |faraday |
194+ def connection
195+ Faraday . new ( url : ENDPOINT_URL ) do |faraday |
151196 faraday . request :json
152197 faraday . response :json , content_type : /\b json$/
153198 faraday . adapter Faraday . default_adapter
0 commit comments