google-apis-firebaseml_v2beta 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1331 @@
1
+ # Copyright 2020 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'date'
16
+ require 'google/apis/core/base_service'
17
+ require 'google/apis/core/json_representation'
18
+ require 'google/apis/core/hashable'
19
+ require 'google/apis/errors'
20
+
21
+ module Google
22
+ module Apis
23
+ module FirebasemlV2beta
24
+
25
+ # Content blob. It's preferred to send as text directly rather than raw bytes.
26
+ class Blob
27
+ include Google::Apis::Core::Hashable
28
+
29
+ # Required. Raw bytes.
30
+ # Corresponds to the JSON property `data`
31
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
32
+ # @return [String]
33
+ attr_accessor :data
34
+
35
+ # Required. The IANA standard MIME type of the source data.
36
+ # Corresponds to the JSON property `mimeType`
37
+ # @return [String]
38
+ attr_accessor :mime_type
39
+
40
+ def initialize(**args)
41
+ update!(**args)
42
+ end
43
+
44
+ # Update properties of this object
45
+ def update!(**args)
46
+ @data = args[:data] if args.key?(:data)
47
+ @mime_type = args[:mime_type] if args.key?(:mime_type)
48
+ end
49
+ end
50
+
51
+ # A response candidate generated from the model.
52
+ class Candidate
53
+ include Google::Apis::Core::Hashable
54
+
55
+ # A collection of source attributions for a piece of content.
56
+ # Corresponds to the JSON property `citationMetadata`
57
+ # @return [Google::Apis::FirebasemlV2beta::CitationMetadata]
58
+ attr_accessor :citation_metadata
59
+
60
+ # The base structured datatype containing multi-part content of a message. A `
61
+ # Content` includes a `role` field designating the producer of the `Content` and
62
+ # a `parts` field containing multi-part data that contains the content of the
63
+ # message turn.
64
+ # Corresponds to the JSON property `content`
65
+ # @return [Google::Apis::FirebasemlV2beta::Content]
66
+ attr_accessor :content
67
+
68
+ # Output only. Describes the reason the mode stopped generating tokens in more
69
+ # detail. This is only filled when `finish_reason` is set.
70
+ # Corresponds to the JSON property `finishMessage`
71
+ # @return [String]
72
+ attr_accessor :finish_message
73
+
74
+ # Output only. The reason why the model stopped generating tokens. If empty, the
75
+ # model has not stopped generating the tokens.
76
+ # Corresponds to the JSON property `finishReason`
77
+ # @return [String]
78
+ attr_accessor :finish_reason
79
+
80
+ # Metadata returned to client when grounding is enabled.
81
+ # Corresponds to the JSON property `groundingMetadata`
82
+ # @return [Google::Apis::FirebasemlV2beta::GroundingMetadata]
83
+ attr_accessor :grounding_metadata
84
+
85
+ # Output only. Index of the candidate.
86
+ # Corresponds to the JSON property `index`
87
+ # @return [Fixnum]
88
+ attr_accessor :index
89
+
90
+ # Output only. List of ratings for the safety of a response candidate. There is
91
+ # at most one rating per category.
92
+ # Corresponds to the JSON property `safetyRatings`
93
+ # @return [Array<Google::Apis::FirebasemlV2beta::SafetyRating>]
94
+ attr_accessor :safety_ratings
95
+
96
+ def initialize(**args)
97
+ update!(**args)
98
+ end
99
+
100
+ # Update properties of this object
101
+ def update!(**args)
102
+ @citation_metadata = args[:citation_metadata] if args.key?(:citation_metadata)
103
+ @content = args[:content] if args.key?(:content)
104
+ @finish_message = args[:finish_message] if args.key?(:finish_message)
105
+ @finish_reason = args[:finish_reason] if args.key?(:finish_reason)
106
+ @grounding_metadata = args[:grounding_metadata] if args.key?(:grounding_metadata)
107
+ @index = args[:index] if args.key?(:index)
108
+ @safety_ratings = args[:safety_ratings] if args.key?(:safety_ratings)
109
+ end
110
+ end
111
+
112
+ # Source attributions for content.
113
+ class Citation
114
+ include Google::Apis::Core::Hashable
115
+
116
+ # Output only. End index into the content.
117
+ # Corresponds to the JSON property `endIndex`
118
+ # @return [Fixnum]
119
+ attr_accessor :end_index
120
+
121
+ # Output only. License of the attribution.
122
+ # Corresponds to the JSON property `license`
123
+ # @return [String]
124
+ attr_accessor :license
125
+
126
+ # Represents a whole or partial calendar date, such as a birthday. The time of
127
+ # day and time zone are either specified elsewhere or are insignificant. The
128
+ # date is relative to the Gregorian Calendar. This can represent one of the
129
+ # following: * A full date, with non-zero year, month, and day values. * A month
130
+ # and day, with a zero year (for example, an anniversary). * A year on its own,
131
+ # with a zero month and a zero day. * A year and month, with a zero day (for
132
+ # example, a credit card expiration date). Related types: * google.type.
133
+ # TimeOfDay * google.type.DateTime * google.protobuf.Timestamp
134
+ # Corresponds to the JSON property `publicationDate`
135
+ # @return [Google::Apis::FirebasemlV2beta::Date]
136
+ attr_accessor :publication_date
137
+
138
+ # Output only. Start index into the content.
139
+ # Corresponds to the JSON property `startIndex`
140
+ # @return [Fixnum]
141
+ attr_accessor :start_index
142
+
143
+ # Output only. Title of the attribution.
144
+ # Corresponds to the JSON property `title`
145
+ # @return [String]
146
+ attr_accessor :title
147
+
148
+ # Output only. Url reference of the attribution.
149
+ # Corresponds to the JSON property `uri`
150
+ # @return [String]
151
+ attr_accessor :uri
152
+
153
+ def initialize(**args)
154
+ update!(**args)
155
+ end
156
+
157
+ # Update properties of this object
158
+ def update!(**args)
159
+ @end_index = args[:end_index] if args.key?(:end_index)
160
+ @license = args[:license] if args.key?(:license)
161
+ @publication_date = args[:publication_date] if args.key?(:publication_date)
162
+ @start_index = args[:start_index] if args.key?(:start_index)
163
+ @title = args[:title] if args.key?(:title)
164
+ @uri = args[:uri] if args.key?(:uri)
165
+ end
166
+ end
167
+
168
+ # A collection of source attributions for a piece of content.
169
+ class CitationMetadata
170
+ include Google::Apis::Core::Hashable
171
+
172
+ # Output only. List of citations.
173
+ # Corresponds to the JSON property `citations`
174
+ # @return [Array<Google::Apis::FirebasemlV2beta::Citation>]
175
+ attr_accessor :citations
176
+
177
+ def initialize(**args)
178
+ update!(**args)
179
+ end
180
+
181
+ # Update properties of this object
182
+ def update!(**args)
183
+ @citations = args[:citations] if args.key?(:citations)
184
+ end
185
+ end
186
+
187
+ # The base structured datatype containing multi-part content of a message. A `
188
+ # Content` includes a `role` field designating the producer of the `Content` and
189
+ # a `parts` field containing multi-part data that contains the content of the
190
+ # message turn.
191
+ class Content
192
+ include Google::Apis::Core::Hashable
193
+
194
+ # Required. Ordered `Parts` that constitute a single message. Parts may have
195
+ # different IANA MIME types.
196
+ # Corresponds to the JSON property `parts`
197
+ # @return [Array<Google::Apis::FirebasemlV2beta::Part>]
198
+ attr_accessor :parts
199
+
200
+ # Optional. The producer of the content. Must be either 'user' or 'model'.
201
+ # Useful to set for multi-turn conversations, otherwise can be left blank or
202
+ # unset.
203
+ # Corresponds to the JSON property `role`
204
+ # @return [String]
205
+ attr_accessor :role
206
+
207
+ def initialize(**args)
208
+ update!(**args)
209
+ end
210
+
211
+ # Update properties of this object
212
+ def update!(**args)
213
+ @parts = args[:parts] if args.key?(:parts)
214
+ @role = args[:role] if args.key?(:role)
215
+ end
216
+ end
217
+
218
+ # Request message for PredictionService.CountTokens.
219
+ class CountTokensRequest
220
+ include Google::Apis::Core::Hashable
221
+
222
+ # Required. Input content.
223
+ # Corresponds to the JSON property `contents`
224
+ # @return [Array<Google::Apis::FirebasemlV2beta::Content>]
225
+ attr_accessor :contents
226
+
227
+ # Required. The instances that are the input to token counting call. Schema is
228
+ # identical to the prediction schema of the underlying model.
229
+ # Corresponds to the JSON property `instances`
230
+ # @return [Array<Object>]
231
+ attr_accessor :instances
232
+
233
+ # Required. The name of the publisher model requested to serve the prediction.
234
+ # Format: `projects/`project`/locations/`location`/publishers/*/models/*`
235
+ # Corresponds to the JSON property `model`
236
+ # @return [String]
237
+ attr_accessor :model
238
+
239
+ def initialize(**args)
240
+ update!(**args)
241
+ end
242
+
243
+ # Update properties of this object
244
+ def update!(**args)
245
+ @contents = args[:contents] if args.key?(:contents)
246
+ @instances = args[:instances] if args.key?(:instances)
247
+ @model = args[:model] if args.key?(:model)
248
+ end
249
+ end
250
+
251
+ # Response message for PredictionService.CountTokens.
252
+ class CountTokensResponse
253
+ include Google::Apis::Core::Hashable
254
+
255
+ # The total number of billable characters counted across all instances from the
256
+ # request.
257
+ # Corresponds to the JSON property `totalBillableCharacters`
258
+ # @return [Fixnum]
259
+ attr_accessor :total_billable_characters
260
+
261
+ # The total number of tokens counted across all instances from the request.
262
+ # Corresponds to the JSON property `totalTokens`
263
+ # @return [Fixnum]
264
+ attr_accessor :total_tokens
265
+
266
+ def initialize(**args)
267
+ update!(**args)
268
+ end
269
+
270
+ # Update properties of this object
271
+ def update!(**args)
272
+ @total_billable_characters = args[:total_billable_characters] if args.key?(:total_billable_characters)
273
+ @total_tokens = args[:total_tokens] if args.key?(:total_tokens)
274
+ end
275
+ end
276
+
277
+ # Represents a whole or partial calendar date, such as a birthday. The time of
278
+ # day and time zone are either specified elsewhere or are insignificant. The
279
+ # date is relative to the Gregorian Calendar. This can represent one of the
280
+ # following: * A full date, with non-zero year, month, and day values. * A month
281
+ # and day, with a zero year (for example, an anniversary). * A year on its own,
282
+ # with a zero month and a zero day. * A year and month, with a zero day (for
283
+ # example, a credit card expiration date). Related types: * google.type.
284
+ # TimeOfDay * google.type.DateTime * google.protobuf.Timestamp
285
+ class Date
286
+ include Google::Apis::Core::Hashable
287
+
288
+ # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to
289
+ # specify a year by itself or a year and month where the day isn't significant.
290
+ # Corresponds to the JSON property `day`
291
+ # @return [Fixnum]
292
+ attr_accessor :day
293
+
294
+ # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month
295
+ # and day.
296
+ # Corresponds to the JSON property `month`
297
+ # @return [Fixnum]
298
+ attr_accessor :month
299
+
300
+ # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a
301
+ # year.
302
+ # Corresponds to the JSON property `year`
303
+ # @return [Fixnum]
304
+ attr_accessor :year
305
+
306
+ def initialize(**args)
307
+ update!(**args)
308
+ end
309
+
310
+ # Update properties of this object
311
+ def update!(**args)
312
+ @day = args[:day] if args.key?(:day)
313
+ @month = args[:month] if args.key?(:month)
314
+ @year = args[:year] if args.key?(:year)
315
+ end
316
+ end
317
+
318
+ # URI based data.
319
+ class FileData
320
+ include Google::Apis::Core::Hashable
321
+
322
+ # Required. URI.
323
+ # Corresponds to the JSON property `fileUri`
324
+ # @return [String]
325
+ attr_accessor :file_uri
326
+
327
+ # Required. The IANA standard MIME type of the source data.
328
+ # Corresponds to the JSON property `mimeType`
329
+ # @return [String]
330
+ attr_accessor :mime_type
331
+
332
+ def initialize(**args)
333
+ update!(**args)
334
+ end
335
+
336
+ # Update properties of this object
337
+ def update!(**args)
338
+ @file_uri = args[:file_uri] if args.key?(:file_uri)
339
+ @mime_type = args[:mime_type] if args.key?(:mime_type)
340
+ end
341
+ end
342
+
343
+ # A predicted [FunctionCall] returned from the model that contains a string
344
+ # representing the [FunctionDeclaration.name] and a structured JSON object
345
+ # containing the parameters and their values.
346
+ class FunctionCall
347
+ include Google::Apis::Core::Hashable
348
+
349
+ # Optional. Required. The function parameters and values in JSON object format.
350
+ # See [FunctionDeclaration.parameters] for parameter details.
351
+ # Corresponds to the JSON property `args`
352
+ # @return [Hash<String,Object>]
353
+ attr_accessor :args
354
+
355
+ # Required. The name of the function to call. Matches [FunctionDeclaration.name].
356
+ # Corresponds to the JSON property `name`
357
+ # @return [String]
358
+ attr_accessor :name
359
+
360
+ def initialize(**args)
361
+ update!(**args)
362
+ end
363
+
364
+ # Update properties of this object
365
+ def update!(**args)
366
+ @args = args[:args] if args.key?(:args)
367
+ @name = args[:name] if args.key?(:name)
368
+ end
369
+ end
370
+
371
+ # Function calling config.
372
+ class FunctionCallingConfig
373
+ include Google::Apis::Core::Hashable
374
+
375
+ # Optional. Function names to call. Only set when the Mode is ANY. Function
376
+ # names should match [FunctionDeclaration.name]. With mode set to ANY, model
377
+ # will predict a function call from the set of function names provided.
378
+ # Corresponds to the JSON property `allowedFunctionNames`
379
+ # @return [Array<String>]
380
+ attr_accessor :allowed_function_names
381
+
382
+ # Optional. Function calling mode.
383
+ # Corresponds to the JSON property `mode`
384
+ # @return [String]
385
+ attr_accessor :mode
386
+
387
+ def initialize(**args)
388
+ update!(**args)
389
+ end
390
+
391
+ # Update properties of this object
392
+ def update!(**args)
393
+ @allowed_function_names = args[:allowed_function_names] if args.key?(:allowed_function_names)
394
+ @mode = args[:mode] if args.key?(:mode)
395
+ end
396
+ end
397
+
398
+ # Structured representation of a function declaration as defined by the [OpenAPI
399
+ # 3.0 specification](https://spec.openapis.org/oas/v3.0.3). Included in this
400
+ # declaration are the function name and parameters. This FunctionDeclaration is
401
+ # a representation of a block of code that can be used as a `Tool` by the model
402
+ # and executed by the client.
403
+ class FunctionDeclaration
404
+ include Google::Apis::Core::Hashable
405
+
406
+ # Optional. Description and purpose of the function. Model uses it to decide how
407
+ # and whether to call the function.
408
+ # Corresponds to the JSON property `description`
409
+ # @return [String]
410
+ attr_accessor :description
411
+
412
+ # Required. The name of the function to call. Must start with a letter or an
413
+ # underscore. Must be a-z, A-Z, 0-9, or contain underscores, dots and dashes,
414
+ # with a maximum length of 64.
415
+ # Corresponds to the JSON property `name`
416
+ # @return [String]
417
+ attr_accessor :name
418
+
419
+ # Schema is used to define the format of input/output data. Represents a select
420
+ # subset of an [OpenAPI 3.0 schema object](https://spec.openapis.org/oas/v3.0.3#
421
+ # schema). More fields may be added in the future as needed.
422
+ # Corresponds to the JSON property `parameters`
423
+ # @return [Google::Apis::FirebasemlV2beta::Schema]
424
+ attr_accessor :parameters
425
+
426
+ # Schema is used to define the format of input/output data. Represents a select
427
+ # subset of an [OpenAPI 3.0 schema object](https://spec.openapis.org/oas/v3.0.3#
428
+ # schema). More fields may be added in the future as needed.
429
+ # Corresponds to the JSON property `response`
430
+ # @return [Google::Apis::FirebasemlV2beta::Schema]
431
+ attr_accessor :response
432
+
433
+ def initialize(**args)
434
+ update!(**args)
435
+ end
436
+
437
+ # Update properties of this object
438
+ def update!(**args)
439
+ @description = args[:description] if args.key?(:description)
440
+ @name = args[:name] if args.key?(:name)
441
+ @parameters = args[:parameters] if args.key?(:parameters)
442
+ @response = args[:response] if args.key?(:response)
443
+ end
444
+ end
445
+
446
+ # The result output from a [FunctionCall] that contains a string representing
447
+ # the [FunctionDeclaration.name] and a structured JSON object containing any
448
+ # output from the function is used as context to the model. This should contain
449
+ # the result of a [FunctionCall] made based on model prediction.
450
+ class FunctionResponse
451
+ include Google::Apis::Core::Hashable
452
+
453
+ # Required. The name of the function to call. Matches [FunctionDeclaration.name]
454
+ # and [FunctionCall.name].
455
+ # Corresponds to the JSON property `name`
456
+ # @return [String]
457
+ attr_accessor :name
458
+
459
+ # Required. The function response in JSON object format.
460
+ # Corresponds to the JSON property `response`
461
+ # @return [Hash<String,Object>]
462
+ attr_accessor :response
463
+
464
+ def initialize(**args)
465
+ update!(**args)
466
+ end
467
+
468
+ # Update properties of this object
469
+ def update!(**args)
470
+ @name = args[:name] if args.key?(:name)
471
+ @response = args[:response] if args.key?(:response)
472
+ end
473
+ end
474
+
475
+ # Request message for [PredictionService.GenerateContent].
476
+ class GenerateContentRequest
477
+ include Google::Apis::Core::Hashable
478
+
479
+ # Required. The content of the current conversation with the model. For single-
480
+ # turn queries, this is a single instance. For multi-turn queries, this is a
481
+ # repeated field that contains conversation history + latest request.
482
+ # Corresponds to the JSON property `contents`
483
+ # @return [Array<Google::Apis::FirebasemlV2beta::Content>]
484
+ attr_accessor :contents
485
+
486
+ # Generation config.
487
+ # Corresponds to the JSON property `generationConfig`
488
+ # @return [Google::Apis::FirebasemlV2beta::GenerationConfig]
489
+ attr_accessor :generation_config
490
+
491
+ # Optional. Per request settings for blocking unsafe content. Enforced on
492
+ # GenerateContentResponse.candidates.
493
+ # Corresponds to the JSON property `safetySettings`
494
+ # @return [Array<Google::Apis::FirebasemlV2beta::SafetySetting>]
495
+ attr_accessor :safety_settings
496
+
497
+ # The base structured datatype containing multi-part content of a message. A `
498
+ # Content` includes a `role` field designating the producer of the `Content` and
499
+ # a `parts` field containing multi-part data that contains the content of the
500
+ # message turn.
501
+ # Corresponds to the JSON property `systemInstruction`
502
+ # @return [Google::Apis::FirebasemlV2beta::Content]
503
+ attr_accessor :system_instruction
504
+
505
+ # Tool config. This config is shared for all tools provided in the request.
506
+ # Corresponds to the JSON property `toolConfig`
507
+ # @return [Google::Apis::FirebasemlV2beta::ToolConfig]
508
+ attr_accessor :tool_config
509
+
510
+ # Optional. A list of `Tools` the model may use to generate the next response. A
511
+ # `Tool` is a piece of code that enables the system to interact with external
512
+ # systems to perform an action, or set of actions, outside of knowledge and
513
+ # scope of the model.
514
+ # Corresponds to the JSON property `tools`
515
+ # @return [Array<Google::Apis::FirebasemlV2beta::Tool>]
516
+ attr_accessor :tools
517
+
518
+ def initialize(**args)
519
+ update!(**args)
520
+ end
521
+
522
+ # Update properties of this object
523
+ def update!(**args)
524
+ @contents = args[:contents] if args.key?(:contents)
525
+ @generation_config = args[:generation_config] if args.key?(:generation_config)
526
+ @safety_settings = args[:safety_settings] if args.key?(:safety_settings)
527
+ @system_instruction = args[:system_instruction] if args.key?(:system_instruction)
528
+ @tool_config = args[:tool_config] if args.key?(:tool_config)
529
+ @tools = args[:tools] if args.key?(:tools)
530
+ end
531
+ end
532
+
533
+ # Response message for [PredictionService.GenerateContent].
534
+ class GenerateContentResponse
535
+ include Google::Apis::Core::Hashable
536
+
537
+ # Output only. Generated candidates.
538
+ # Corresponds to the JSON property `candidates`
539
+ # @return [Array<Google::Apis::FirebasemlV2beta::Candidate>]
540
+ attr_accessor :candidates
541
+
542
+ # Content filter results for a prompt sent in the request.
543
+ # Corresponds to the JSON property `promptFeedback`
544
+ # @return [Google::Apis::FirebasemlV2beta::PromptFeedback]
545
+ attr_accessor :prompt_feedback
546
+
547
+ # Usage metadata about response(s).
548
+ # Corresponds to the JSON property `usageMetadata`
549
+ # @return [Google::Apis::FirebasemlV2beta::UsageMetadata]
550
+ attr_accessor :usage_metadata
551
+
552
+ def initialize(**args)
553
+ update!(**args)
554
+ end
555
+
556
+ # Update properties of this object
557
+ def update!(**args)
558
+ @candidates = args[:candidates] if args.key?(:candidates)
559
+ @prompt_feedback = args[:prompt_feedback] if args.key?(:prompt_feedback)
560
+ @usage_metadata = args[:usage_metadata] if args.key?(:usage_metadata)
561
+ end
562
+ end
563
+
564
+ # Generation config.
565
+ class GenerationConfig
566
+ include Google::Apis::Core::Hashable
567
+
568
+ # Optional. Number of candidates to generate.
569
+ # Corresponds to the JSON property `candidateCount`
570
+ # @return [Fixnum]
571
+ attr_accessor :candidate_count
572
+
573
+ # Optional. Frequency penalties.
574
+ # Corresponds to the JSON property `frequencyPenalty`
575
+ # @return [Float]
576
+ attr_accessor :frequency_penalty
577
+
578
+ # Optional. The maximum number of output tokens to generate per message.
579
+ # Corresponds to the JSON property `maxOutputTokens`
580
+ # @return [Fixnum]
581
+ attr_accessor :max_output_tokens
582
+
583
+ # Optional. Positive penalties.
584
+ # Corresponds to the JSON property `presencePenalty`
585
+ # @return [Float]
586
+ attr_accessor :presence_penalty
587
+
588
+ # Optional. Output response mimetype of the generated candidate text. Supported
589
+ # mimetype: - `text/plain`: (default) Text output. - `application/json`: JSON
590
+ # response in the candidates. The model needs to be prompted to output the
591
+ # appropriate response type, otherwise the behavior is undefined. This is a
592
+ # preview feature.
593
+ # Corresponds to the JSON property `responseMimeType`
594
+ # @return [String]
595
+ attr_accessor :response_mime_type
596
+
597
+ # Optional. Stop sequences.
598
+ # Corresponds to the JSON property `stopSequences`
599
+ # @return [Array<String>]
600
+ attr_accessor :stop_sequences
601
+
602
+ # Optional. Controls the randomness of predictions.
603
+ # Corresponds to the JSON property `temperature`
604
+ # @return [Float]
605
+ attr_accessor :temperature
606
+
607
+ # Optional. If specified, top-k sampling will be used.
608
+ # Corresponds to the JSON property `topK`
609
+ # @return [Float]
610
+ attr_accessor :top_k
611
+
612
+ # Optional. If specified, nucleus sampling will be used.
613
+ # Corresponds to the JSON property `topP`
614
+ # @return [Float]
615
+ attr_accessor :top_p
616
+
617
+ def initialize(**args)
618
+ update!(**args)
619
+ end
620
+
621
+ # Update properties of this object
622
+ def update!(**args)
623
+ @candidate_count = args[:candidate_count] if args.key?(:candidate_count)
624
+ @frequency_penalty = args[:frequency_penalty] if args.key?(:frequency_penalty)
625
+ @max_output_tokens = args[:max_output_tokens] if args.key?(:max_output_tokens)
626
+ @presence_penalty = args[:presence_penalty] if args.key?(:presence_penalty)
627
+ @response_mime_type = args[:response_mime_type] if args.key?(:response_mime_type)
628
+ @stop_sequences = args[:stop_sequences] if args.key?(:stop_sequences)
629
+ @temperature = args[:temperature] if args.key?(:temperature)
630
+ @top_k = args[:top_k] if args.key?(:top_k)
631
+ @top_p = args[:top_p] if args.key?(:top_p)
632
+ end
633
+ end
634
+
635
+ # Grounding attribution.
636
+ class GroundingAttribution
637
+ include Google::Apis::Core::Hashable
638
+
639
+ # Optional. Output only. Confidence score of the attribution. Ranges from 0 to 1.
640
+ # 1 is the most confident.
641
+ # Corresponds to the JSON property `confidenceScore`
642
+ # @return [Float]
643
+ attr_accessor :confidence_score
644
+
645
+ # Attribution from context retrieved by the retrieval tools.
646
+ # Corresponds to the JSON property `retrievedContext`
647
+ # @return [Google::Apis::FirebasemlV2beta::RetrievedContext]
648
+ attr_accessor :retrieved_context
649
+
650
+ # Segment of the content.
651
+ # Corresponds to the JSON property `segment`
652
+ # @return [Google::Apis::FirebasemlV2beta::Segment]
653
+ attr_accessor :segment
654
+
655
+ # Attribution from the web.
656
+ # Corresponds to the JSON property `web`
657
+ # @return [Google::Apis::FirebasemlV2beta::Web]
658
+ attr_accessor :web
659
+
660
+ def initialize(**args)
661
+ update!(**args)
662
+ end
663
+
664
+ # Update properties of this object
665
+ def update!(**args)
666
+ @confidence_score = args[:confidence_score] if args.key?(:confidence_score)
667
+ @retrieved_context = args[:retrieved_context] if args.key?(:retrieved_context)
668
+ @segment = args[:segment] if args.key?(:segment)
669
+ @web = args[:web] if args.key?(:web)
670
+ end
671
+ end
672
+
673
+ # Metadata returned to client when grounding is enabled.
674
+ class GroundingMetadata
675
+ include Google::Apis::Core::Hashable
676
+
677
+ # Optional. List of grounding attributions.
678
+ # Corresponds to the JSON property `groundingAttributions`
679
+ # @return [Array<Google::Apis::FirebasemlV2beta::GroundingAttribution>]
680
+ attr_accessor :grounding_attributions
681
+
682
+ # Optional. Queries executed by the retrieval tools.
683
+ # Corresponds to the JSON property `retrievalQueries`
684
+ # @return [Array<String>]
685
+ attr_accessor :retrieval_queries
686
+
687
+ # Optional. Web search queries for the following-up web search.
688
+ # Corresponds to the JSON property `webSearchQueries`
689
+ # @return [Array<String>]
690
+ attr_accessor :web_search_queries
691
+
692
+ def initialize(**args)
693
+ update!(**args)
694
+ end
695
+
696
+ # Update properties of this object
697
+ def update!(**args)
698
+ @grounding_attributions = args[:grounding_attributions] if args.key?(:grounding_attributions)
699
+ @retrieval_queries = args[:retrieval_queries] if args.key?(:retrieval_queries)
700
+ @web_search_queries = args[:web_search_queries] if args.key?(:web_search_queries)
701
+ end
702
+ end
703
+
704
+ # This is returned in the longrunning operations for create/update.
705
+ class ModelOperationMetadata
706
+ include Google::Apis::Core::Hashable
707
+
708
+ #
709
+ # Corresponds to the JSON property `basicOperationStatus`
710
+ # @return [String]
711
+ attr_accessor :basic_operation_status
712
+
713
+ # The name of the model we are creating/updating The name must have the form `
714
+ # projects/`project_id`/models/`model_id``
715
+ # Corresponds to the JSON property `name`
716
+ # @return [String]
717
+ attr_accessor :name
718
+
719
+ def initialize(**args)
720
+ update!(**args)
721
+ end
722
+
723
+ # Update properties of this object
724
+ def update!(**args)
725
+ @basic_operation_status = args[:basic_operation_status] if args.key?(:basic_operation_status)
726
+ @name = args[:name] if args.key?(:name)
727
+ end
728
+ end
729
+
730
+ # A datatype containing media that is part of a multi-part `Content` message. A `
731
+ # Part` consists of data which has an associated datatype. A `Part` can only
732
+ # contain one of the accepted types in `Part.data`. A `Part` must have a fixed
733
+ # IANA MIME type identifying the type and subtype of the media if `inline_data`
734
+ # or `file_data` field is filled with raw bytes.
735
+ class Part
736
+ include Google::Apis::Core::Hashable
737
+
738
+ # URI based data.
739
+ # Corresponds to the JSON property `fileData`
740
+ # @return [Google::Apis::FirebasemlV2beta::FileData]
741
+ attr_accessor :file_data
742
+
743
+ # A predicted [FunctionCall] returned from the model that contains a string
744
+ # representing the [FunctionDeclaration.name] and a structured JSON object
745
+ # containing the parameters and their values.
746
+ # Corresponds to the JSON property `functionCall`
747
+ # @return [Google::Apis::FirebasemlV2beta::FunctionCall]
748
+ attr_accessor :function_call
749
+
750
+ # The result output from a [FunctionCall] that contains a string representing
751
+ # the [FunctionDeclaration.name] and a structured JSON object containing any
752
+ # output from the function is used as context to the model. This should contain
753
+ # the result of a [FunctionCall] made based on model prediction.
754
+ # Corresponds to the JSON property `functionResponse`
755
+ # @return [Google::Apis::FirebasemlV2beta::FunctionResponse]
756
+ attr_accessor :function_response
757
+
758
+ # Content blob. It's preferred to send as text directly rather than raw bytes.
759
+ # Corresponds to the JSON property `inlineData`
760
+ # @return [Google::Apis::FirebasemlV2beta::Blob]
761
+ attr_accessor :inline_data
762
+
763
+ # Optional. Text part (can be code).
764
+ # Corresponds to the JSON property `text`
765
+ # @return [String]
766
+ attr_accessor :text
767
+
768
+ # Metadata describes the input video content.
769
+ # Corresponds to the JSON property `videoMetadata`
770
+ # @return [Google::Apis::FirebasemlV2beta::VideoMetadata]
771
+ attr_accessor :video_metadata
772
+
773
+ def initialize(**args)
774
+ update!(**args)
775
+ end
776
+
777
+ # Update properties of this object
778
+ def update!(**args)
779
+ @file_data = args[:file_data] if args.key?(:file_data)
780
+ @function_call = args[:function_call] if args.key?(:function_call)
781
+ @function_response = args[:function_response] if args.key?(:function_response)
782
+ @inline_data = args[:inline_data] if args.key?(:inline_data)
783
+ @text = args[:text] if args.key?(:text)
784
+ @video_metadata = args[:video_metadata] if args.key?(:video_metadata)
785
+ end
786
+ end
787
+
788
+ # Content filter results for a prompt sent in the request.
789
+ class PromptFeedback
790
+ include Google::Apis::Core::Hashable
791
+
792
+ # Output only. Blocked reason.
793
+ # Corresponds to the JSON property `blockReason`
794
+ # @return [String]
795
+ attr_accessor :block_reason
796
+
797
+ # Output only. A readable block reason message.
798
+ # Corresponds to the JSON property `blockReasonMessage`
799
+ # @return [String]
800
+ attr_accessor :block_reason_message
801
+
802
+ # Output only. Safety ratings.
803
+ # Corresponds to the JSON property `safetyRatings`
804
+ # @return [Array<Google::Apis::FirebasemlV2beta::SafetyRating>]
805
+ attr_accessor :safety_ratings
806
+
807
+ def initialize(**args)
808
+ update!(**args)
809
+ end
810
+
811
+ # Update properties of this object
812
+ def update!(**args)
813
+ @block_reason = args[:block_reason] if args.key?(:block_reason)
814
+ @block_reason_message = args[:block_reason_message] if args.key?(:block_reason_message)
815
+ @safety_ratings = args[:safety_ratings] if args.key?(:safety_ratings)
816
+ end
817
+ end
818
+
819
+ # Defines a retrieval tool that model can call to access external knowledge.
820
+ class Retrieval
821
+ include Google::Apis::Core::Hashable
822
+
823
+ # Optional. Disable using the result from this tool in detecting grounding
824
+ # attribution. This does not affect how the result is given to the model for
825
+ # generation.
826
+ # Corresponds to the JSON property `disableAttribution`
827
+ # @return [Boolean]
828
+ attr_accessor :disable_attribution
829
+ alias_method :disable_attribution?, :disable_attribution
830
+
831
+ # Retrieve from Vertex AI Search datastore for grounding. See https://cloud.
832
+ # google.com/vertex-ai-search-and-conversation
833
+ # Corresponds to the JSON property `vertexAiSearch`
834
+ # @return [Google::Apis::FirebasemlV2beta::VertexAiSearch]
835
+ attr_accessor :vertex_ai_search
836
+
837
+ # Retrieve from Vertex RAG Store for grounding.
838
+ # Corresponds to the JSON property `vertexRagStore`
839
+ # @return [Google::Apis::FirebasemlV2beta::VertexRagStore]
840
+ attr_accessor :vertex_rag_store
841
+
842
+ def initialize(**args)
843
+ update!(**args)
844
+ end
845
+
846
+ # Update properties of this object
847
+ def update!(**args)
848
+ @disable_attribution = args[:disable_attribution] if args.key?(:disable_attribution)
849
+ @vertex_ai_search = args[:vertex_ai_search] if args.key?(:vertex_ai_search)
850
+ @vertex_rag_store = args[:vertex_rag_store] if args.key?(:vertex_rag_store)
851
+ end
852
+ end
853
+
854
+ # Attribution from context retrieved by the retrieval tools.
855
+ class RetrievedContext
856
+ include Google::Apis::Core::Hashable
857
+
858
+ # Output only. Title of the attribution.
859
+ # Corresponds to the JSON property `title`
860
+ # @return [String]
861
+ attr_accessor :title
862
+
863
+ # Output only. URI reference of the attribution.
864
+ # Corresponds to the JSON property `uri`
865
+ # @return [String]
866
+ attr_accessor :uri
867
+
868
+ def initialize(**args)
869
+ update!(**args)
870
+ end
871
+
872
+ # Update properties of this object
873
+ def update!(**args)
874
+ @title = args[:title] if args.key?(:title)
875
+ @uri = args[:uri] if args.key?(:uri)
876
+ end
877
+ end
878
+
879
+ # Safety rating corresponding to the generated content.
880
+ class SafetyRating
881
+ include Google::Apis::Core::Hashable
882
+
883
+ # Output only. Indicates whether the content was filtered out because of this
884
+ # rating.
885
+ # Corresponds to the JSON property `blocked`
886
+ # @return [Boolean]
887
+ attr_accessor :blocked
888
+ alias_method :blocked?, :blocked
889
+
890
+ # Output only. Harm category.
891
+ # Corresponds to the JSON property `category`
892
+ # @return [String]
893
+ attr_accessor :category
894
+
895
+ # Output only. Harm probability levels in the content.
896
+ # Corresponds to the JSON property `probability`
897
+ # @return [String]
898
+ attr_accessor :probability
899
+
900
+ # Output only. Harm probability score.
901
+ # Corresponds to the JSON property `probabilityScore`
902
+ # @return [Float]
903
+ attr_accessor :probability_score
904
+
905
+ # Output only. Harm severity levels in the content.
906
+ # Corresponds to the JSON property `severity`
907
+ # @return [String]
908
+ attr_accessor :severity
909
+
910
+ # Output only. Harm severity score.
911
+ # Corresponds to the JSON property `severityScore`
912
+ # @return [Float]
913
+ attr_accessor :severity_score
914
+
915
+ def initialize(**args)
916
+ update!(**args)
917
+ end
918
+
919
+ # Update properties of this object
920
+ def update!(**args)
921
+ @blocked = args[:blocked] if args.key?(:blocked)
922
+ @category = args[:category] if args.key?(:category)
923
+ @probability = args[:probability] if args.key?(:probability)
924
+ @probability_score = args[:probability_score] if args.key?(:probability_score)
925
+ @severity = args[:severity] if args.key?(:severity)
926
+ @severity_score = args[:severity_score] if args.key?(:severity_score)
927
+ end
928
+ end
929
+
930
+ # Safety settings.
931
+ class SafetySetting
932
+ include Google::Apis::Core::Hashable
933
+
934
+ # Required. Harm category.
935
+ # Corresponds to the JSON property `category`
936
+ # @return [String]
937
+ attr_accessor :category
938
+
939
+ # Optional. Specify if the threshold is used for probability or severity score.
940
+ # If not specified, the threshold is used for probability score.
941
+ # Corresponds to the JSON property `method`
942
+ # @return [String]
943
+ attr_accessor :method_prop
944
+
945
+ # Required. The harm block threshold.
946
+ # Corresponds to the JSON property `threshold`
947
+ # @return [String]
948
+ attr_accessor :threshold
949
+
950
+ def initialize(**args)
951
+ update!(**args)
952
+ end
953
+
954
+ # Update properties of this object
955
+ def update!(**args)
956
+ @category = args[:category] if args.key?(:category)
957
+ @method_prop = args[:method_prop] if args.key?(:method_prop)
958
+ @threshold = args[:threshold] if args.key?(:threshold)
959
+ end
960
+ end
961
+
962
+ # Schema is used to define the format of input/output data. Represents a select
963
+ # subset of an [OpenAPI 3.0 schema object](https://spec.openapis.org/oas/v3.0.3#
964
+ # schema). More fields may be added in the future as needed.
965
+ class Schema
966
+ include Google::Apis::Core::Hashable
967
+
968
+ # Optional. Default value of the data.
969
+ # Corresponds to the JSON property `default`
970
+ # @return [Object]
971
+ attr_accessor :default
972
+
973
+ # Optional. The description of the data.
974
+ # Corresponds to the JSON property `description`
975
+ # @return [String]
976
+ attr_accessor :description
977
+
978
+ # Optional. Possible values of the element of Type.STRING with enum format. For
979
+ # example we can define an Enum Direction as : `type:STRING, format:enum, enum:["
980
+ # EAST", NORTH", "SOUTH", "WEST"]`
981
+ # Corresponds to the JSON property `enum`
982
+ # @return [Array<String>]
983
+ attr_accessor :enum
984
+
985
+ # Optional. Example of the object. Will only populated when the object is the
986
+ # root.
987
+ # Corresponds to the JSON property `example`
988
+ # @return [Object]
989
+ attr_accessor :example
990
+
991
+ # Optional. The format of the data. Supported formats: for NUMBER type: "float",
992
+ # "double" for INTEGER type: "int32", "int64" for STRING type: "email", "byte",
993
+ # etc
994
+ # Corresponds to the JSON property `format`
995
+ # @return [String]
996
+ attr_accessor :format
997
+
998
+ # Schema is used to define the format of input/output data. Represents a select
999
+ # subset of an [OpenAPI 3.0 schema object](https://spec.openapis.org/oas/v3.0.3#
1000
+ # schema). More fields may be added in the future as needed.
1001
+ # Corresponds to the JSON property `items`
1002
+ # @return [Google::Apis::FirebasemlV2beta::Schema]
1003
+ attr_accessor :items
1004
+
1005
+ # Optional. Maximum number of the elements for Type.ARRAY.
1006
+ # Corresponds to the JSON property `maxItems`
1007
+ # @return [Fixnum]
1008
+ attr_accessor :max_items
1009
+
1010
+ # Optional. Maximum length of the Type.STRING
1011
+ # Corresponds to the JSON property `maxLength`
1012
+ # @return [Fixnum]
1013
+ attr_accessor :max_length
1014
+
1015
+ # Optional. Maximum number of the properties for Type.OBJECT.
1016
+ # Corresponds to the JSON property `maxProperties`
1017
+ # @return [Fixnum]
1018
+ attr_accessor :max_properties
1019
+
1020
+ # Optional. Maximum value of the Type.INTEGER and Type.NUMBER
1021
+ # Corresponds to the JSON property `maximum`
1022
+ # @return [Float]
1023
+ attr_accessor :maximum
1024
+
1025
+ # Optional. Minimum number of the elements for Type.ARRAY.
1026
+ # Corresponds to the JSON property `minItems`
1027
+ # @return [Fixnum]
1028
+ attr_accessor :min_items
1029
+
1030
+ # Optional. SCHEMA FIELDS FOR TYPE STRING Minimum length of the Type.STRING
1031
+ # Corresponds to the JSON property `minLength`
1032
+ # @return [Fixnum]
1033
+ attr_accessor :min_length
1034
+
1035
+ # Optional. Minimum number of the properties for Type.OBJECT.
1036
+ # Corresponds to the JSON property `minProperties`
1037
+ # @return [Fixnum]
1038
+ attr_accessor :min_properties
1039
+
1040
+ # Optional. SCHEMA FIELDS FOR TYPE INTEGER and NUMBER Minimum value of the Type.
1041
+ # INTEGER and Type.NUMBER
1042
+ # Corresponds to the JSON property `minimum`
1043
+ # @return [Float]
1044
+ attr_accessor :minimum
1045
+
1046
+ # Optional. Indicates if the value may be null.
1047
+ # Corresponds to the JSON property `nullable`
1048
+ # @return [Boolean]
1049
+ attr_accessor :nullable
1050
+ alias_method :nullable?, :nullable
1051
+
1052
+ # Optional. Pattern of the Type.STRING to restrict a string to a regular
1053
+ # expression.
1054
+ # Corresponds to the JSON property `pattern`
1055
+ # @return [String]
1056
+ attr_accessor :pattern
1057
+
1058
+ # Optional. SCHEMA FIELDS FOR TYPE OBJECT Properties of Type.OBJECT.
1059
+ # Corresponds to the JSON property `properties`
1060
+ # @return [Hash<String,Google::Apis::FirebasemlV2beta::Schema>]
1061
+ attr_accessor :properties
1062
+
1063
+ # Optional. Required properties of Type.OBJECT.
1064
+ # Corresponds to the JSON property `required`
1065
+ # @return [Array<String>]
1066
+ attr_accessor :required
1067
+
1068
+ # Optional. The title of the Schema.
1069
+ # Corresponds to the JSON property `title`
1070
+ # @return [String]
1071
+ attr_accessor :title
1072
+
1073
+ # Optional. The type of the data.
1074
+ # Corresponds to the JSON property `type`
1075
+ # @return [String]
1076
+ attr_accessor :type
1077
+
1078
+ def initialize(**args)
1079
+ update!(**args)
1080
+ end
1081
+
1082
+ # Update properties of this object
1083
+ def update!(**args)
1084
+ @default = args[:default] if args.key?(:default)
1085
+ @description = args[:description] if args.key?(:description)
1086
+ @enum = args[:enum] if args.key?(:enum)
1087
+ @example = args[:example] if args.key?(:example)
1088
+ @format = args[:format] if args.key?(:format)
1089
+ @items = args[:items] if args.key?(:items)
1090
+ @max_items = args[:max_items] if args.key?(:max_items)
1091
+ @max_length = args[:max_length] if args.key?(:max_length)
1092
+ @max_properties = args[:max_properties] if args.key?(:max_properties)
1093
+ @maximum = args[:maximum] if args.key?(:maximum)
1094
+ @min_items = args[:min_items] if args.key?(:min_items)
1095
+ @min_length = args[:min_length] if args.key?(:min_length)
1096
+ @min_properties = args[:min_properties] if args.key?(:min_properties)
1097
+ @minimum = args[:minimum] if args.key?(:minimum)
1098
+ @nullable = args[:nullable] if args.key?(:nullable)
1099
+ @pattern = args[:pattern] if args.key?(:pattern)
1100
+ @properties = args[:properties] if args.key?(:properties)
1101
+ @required = args[:required] if args.key?(:required)
1102
+ @title = args[:title] if args.key?(:title)
1103
+ @type = args[:type] if args.key?(:type)
1104
+ end
1105
+ end
1106
+
1107
+ # Segment of the content.
1108
+ class Segment
1109
+ include Google::Apis::Core::Hashable
1110
+
1111
+ # Output only. End index in the given Part, measured in bytes. Offset from the
1112
+ # start of the Part, exclusive, starting at zero.
1113
+ # Corresponds to the JSON property `endIndex`
1114
+ # @return [Fixnum]
1115
+ attr_accessor :end_index
1116
+
1117
+ # Output only. The index of a Part object within its parent Content object.
1118
+ # Corresponds to the JSON property `partIndex`
1119
+ # @return [Fixnum]
1120
+ attr_accessor :part_index
1121
+
1122
+ # Output only. Start index in the given Part, measured in bytes. Offset from the
1123
+ # start of the Part, inclusive, starting at zero.
1124
+ # Corresponds to the JSON property `startIndex`
1125
+ # @return [Fixnum]
1126
+ attr_accessor :start_index
1127
+
1128
+ def initialize(**args)
1129
+ update!(**args)
1130
+ end
1131
+
1132
+ # Update properties of this object
1133
+ def update!(**args)
1134
+ @end_index = args[:end_index] if args.key?(:end_index)
1135
+ @part_index = args[:part_index] if args.key?(:part_index)
1136
+ @start_index = args[:start_index] if args.key?(:start_index)
1137
+ end
1138
+ end
1139
+
1140
+ # Tool details that the model may use to generate response. A `Tool` is a piece
1141
+ # of code that enables the system to interact with external systems to perform
1142
+ # an action, or set of actions, outside of knowledge and scope of the model. A
1143
+ # Tool object should contain exactly one type of Tool (e.g FunctionDeclaration,
1144
+ # Retrieval or GoogleSearchRetrieval).
1145
+ class Tool
1146
+ include Google::Apis::Core::Hashable
1147
+
1148
+ # Optional. Function tool type. One or more function declarations to be passed
1149
+ # to the model along with the current user query. Model may decide to call a
1150
+ # subset of these functions by populating FunctionCall in the response. User
1151
+ # should provide a FunctionResponse for each function call in the next turn.
1152
+ # Based on the function responses, Model will generate the final response back
1153
+ # to the user. Maximum 64 function declarations can be provided.
1154
+ # Corresponds to the JSON property `functionDeclarations`
1155
+ # @return [Array<Google::Apis::FirebasemlV2beta::FunctionDeclaration>]
1156
+ attr_accessor :function_declarations
1157
+
1158
+ # Defines a retrieval tool that model can call to access external knowledge.
1159
+ # Corresponds to the JSON property `retrieval`
1160
+ # @return [Google::Apis::FirebasemlV2beta::Retrieval]
1161
+ attr_accessor :retrieval
1162
+
1163
+ def initialize(**args)
1164
+ update!(**args)
1165
+ end
1166
+
1167
+ # Update properties of this object
1168
+ def update!(**args)
1169
+ @function_declarations = args[:function_declarations] if args.key?(:function_declarations)
1170
+ @retrieval = args[:retrieval] if args.key?(:retrieval)
1171
+ end
1172
+ end
1173
+
1174
+ # Tool config. This config is shared for all tools provided in the request.
1175
+ class ToolConfig
1176
+ include Google::Apis::Core::Hashable
1177
+
1178
+ # Function calling config.
1179
+ # Corresponds to the JSON property `functionCallingConfig`
1180
+ # @return [Google::Apis::FirebasemlV2beta::FunctionCallingConfig]
1181
+ attr_accessor :function_calling_config
1182
+
1183
+ def initialize(**args)
1184
+ update!(**args)
1185
+ end
1186
+
1187
+ # Update properties of this object
1188
+ def update!(**args)
1189
+ @function_calling_config = args[:function_calling_config] if args.key?(:function_calling_config)
1190
+ end
1191
+ end
1192
+
1193
+ # Usage metadata about response(s).
1194
+ class UsageMetadata
1195
+ include Google::Apis::Core::Hashable
1196
+
1197
+ # Number of tokens in the response(s).
1198
+ # Corresponds to the JSON property `candidatesTokenCount`
1199
+ # @return [Fixnum]
1200
+ attr_accessor :candidates_token_count
1201
+
1202
+ # Number of tokens in the request.
1203
+ # Corresponds to the JSON property `promptTokenCount`
1204
+ # @return [Fixnum]
1205
+ attr_accessor :prompt_token_count
1206
+
1207
+ #
1208
+ # Corresponds to the JSON property `totalTokenCount`
1209
+ # @return [Fixnum]
1210
+ attr_accessor :total_token_count
1211
+
1212
+ def initialize(**args)
1213
+ update!(**args)
1214
+ end
1215
+
1216
+ # Update properties of this object
1217
+ def update!(**args)
1218
+ @candidates_token_count = args[:candidates_token_count] if args.key?(:candidates_token_count)
1219
+ @prompt_token_count = args[:prompt_token_count] if args.key?(:prompt_token_count)
1220
+ @total_token_count = args[:total_token_count] if args.key?(:total_token_count)
1221
+ end
1222
+ end
1223
+
1224
+ # Retrieve from Vertex AI Search datastore for grounding. See https://cloud.
1225
+ # google.com/vertex-ai-search-and-conversation
1226
+ class VertexAiSearch
1227
+ include Google::Apis::Core::Hashable
1228
+
1229
+ # Required. Fully-qualified Vertex AI Search's datastore resource ID. Format: `
1230
+ # projects/`project`/locations/`location`/collections/`collection`/dataStores/`
1231
+ # dataStore``
1232
+ # Corresponds to the JSON property `datastore`
1233
+ # @return [String]
1234
+ attr_accessor :datastore
1235
+
1236
+ def initialize(**args)
1237
+ update!(**args)
1238
+ end
1239
+
1240
+ # Update properties of this object
1241
+ def update!(**args)
1242
+ @datastore = args[:datastore] if args.key?(:datastore)
1243
+ end
1244
+ end
1245
+
1246
+ # Retrieve from Vertex RAG Store for grounding.
1247
+ class VertexRagStore
1248
+ include Google::Apis::Core::Hashable
1249
+
1250
+ # Required. Vertex RAG Store corpus resource name: `projects/`project`/locations/
1251
+ # `location`/ragCorpora/`ragCorpus`` Currently only one corpus is allowed. In
1252
+ # the future we may open up multiple corpora support. However, they should be
1253
+ # from the same project and location.
1254
+ # Corresponds to the JSON property `ragCorpora`
1255
+ # @return [Array<String>]
1256
+ attr_accessor :rag_corpora
1257
+
1258
+ # Optional. Number of top k results to return from the selected corpora.
1259
+ # Corresponds to the JSON property `similarityTopK`
1260
+ # @return [Fixnum]
1261
+ attr_accessor :similarity_top_k
1262
+
1263
+ # Optional. Only return results with vector distance smaller than the threshold.
1264
+ # Corresponds to the JSON property `vectorDistanceThreshold`
1265
+ # @return [Float]
1266
+ attr_accessor :vector_distance_threshold
1267
+
1268
+ def initialize(**args)
1269
+ update!(**args)
1270
+ end
1271
+
1272
+ # Update properties of this object
1273
+ def update!(**args)
1274
+ @rag_corpora = args[:rag_corpora] if args.key?(:rag_corpora)
1275
+ @similarity_top_k = args[:similarity_top_k] if args.key?(:similarity_top_k)
1276
+ @vector_distance_threshold = args[:vector_distance_threshold] if args.key?(:vector_distance_threshold)
1277
+ end
1278
+ end
1279
+
1280
+ # Metadata describes the input video content.
1281
+ class VideoMetadata
1282
+ include Google::Apis::Core::Hashable
1283
+
1284
+ # Optional. The end offset of the video.
1285
+ # Corresponds to the JSON property `endOffset`
1286
+ # @return [String]
1287
+ attr_accessor :end_offset
1288
+
1289
+ # Optional. The start offset of the video.
1290
+ # Corresponds to the JSON property `startOffset`
1291
+ # @return [String]
1292
+ attr_accessor :start_offset
1293
+
1294
+ def initialize(**args)
1295
+ update!(**args)
1296
+ end
1297
+
1298
+ # Update properties of this object
1299
+ def update!(**args)
1300
+ @end_offset = args[:end_offset] if args.key?(:end_offset)
1301
+ @start_offset = args[:start_offset] if args.key?(:start_offset)
1302
+ end
1303
+ end
1304
+
1305
+ # Attribution from the web.
1306
+ class Web
1307
+ include Google::Apis::Core::Hashable
1308
+
1309
+ # Output only. Title of the attribution.
1310
+ # Corresponds to the JSON property `title`
1311
+ # @return [String]
1312
+ attr_accessor :title
1313
+
1314
+ # Output only. URI reference of the attribution.
1315
+ # Corresponds to the JSON property `uri`
1316
+ # @return [String]
1317
+ attr_accessor :uri
1318
+
1319
+ def initialize(**args)
1320
+ update!(**args)
1321
+ end
1322
+
1323
+ # Update properties of this object
1324
+ def update!(**args)
1325
+ @title = args[:title] if args.key?(:title)
1326
+ @uri = args[:uri] if args.key?(:uri)
1327
+ end
1328
+ end
1329
+ end
1330
+ end
1331
+ end