# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

require 'date'
require 'google/apis/core/base_service'
require 'google/apis/core/json_representation'
require 'google/apis/core/hashable'
require 'google/apis/errors'

module Google
  module Apis
    module AiplatformV1
      
      # Generate video response.
      class CloudAiLargeModelsVisionGenerateVideoResponse
        include Google::Apis::Core::Hashable
      
        # The generates samples.
        # Corresponds to the JSON property `generatedSamples`
        # @return [Array<Google::Apis::AiplatformV1::CloudAiLargeModelsVisionMedia>]
        attr_accessor :generated_samples
      
        # Returns if any videos were filtered due to RAI policies.
        # Corresponds to the JSON property `raiMediaFilteredCount`
        # @return [Fixnum]
        attr_accessor :rai_media_filtered_count
      
        # Returns rai failure reasons if any.
        # Corresponds to the JSON property `raiMediaFilteredReasons`
        # @return [Array<String>]
        attr_accessor :rai_media_filtered_reasons
      
        # List of videos, used to align naming with the external response.
        # Corresponds to the JSON property `videos`
        # @return [Array<Google::Apis::AiplatformV1::CloudAiLargeModelsVisionGenerateVideoResponseVideo>]
        attr_accessor :videos
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generated_samples = args[:generated_samples] if args.key?(:generated_samples)
          @rai_media_filtered_count = args[:rai_media_filtered_count] if args.key?(:rai_media_filtered_count)
          @rai_media_filtered_reasons = args[:rai_media_filtered_reasons] if args.key?(:rai_media_filtered_reasons)
          @videos = args[:videos] if args.key?(:videos)
        end
      end
      
      # 
      class CloudAiLargeModelsVisionGenerateVideoResponseVideo
        include Google::Apis::Core::Hashable
      
        # Base64 encoded bytes string representing the video.
        # Corresponds to the JSON property `bytesBase64Encoded`
        # @return [String]
        attr_accessor :bytes_base64_encoded
      
        # Cloud Storage URI where the generated video is written.
        # Corresponds to the JSON property `gcsUri`
        # @return [String]
        attr_accessor :gcs_uri
      
        # The MIME type of the content of the video. - video/mp4
        # Corresponds to the JSON property `mimeType`
        # @return [String]
        attr_accessor :mime_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @bytes_base64_encoded = args[:bytes_base64_encoded] if args.key?(:bytes_base64_encoded)
          @gcs_uri = args[:gcs_uri] if args.key?(:gcs_uri)
          @mime_type = args[:mime_type] if args.key?(:mime_type)
        end
      end
      
      # Image.
      class CloudAiLargeModelsVisionImage
        include Google::Apis::Core::Hashable
      
        # Image encoding, encoded as "image/png" or "image/jpg".
        # Corresponds to the JSON property `encoding`
        # @return [String]
        attr_accessor :encoding
      
        # Generation seed for the sampled image. This parameter is exposed to the user
        # only if one of the following is true: 1. The user specified per-example seeds
        # in the request. 2. The user doesn't specify the generation seed in the request.
        # Corresponds to the JSON property `generationSeed`
        # @return [Fixnum]
        attr_accessor :generation_seed
      
        # Raw bytes.
        # Corresponds to the JSON property `image`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :image
      
        # RAI scores for generated image returned.
        # Corresponds to the JSON property `imageRaiScores`
        # @return [Google::Apis::AiplatformV1::CloudAiLargeModelsVisionImageRaiScores]
        attr_accessor :image_rai_scores
      
        # Image size.
        # Corresponds to the JSON property `imageSize`
        # @return [Google::Apis::AiplatformV1::CloudAiLargeModelsVisionImageImageSize]
        attr_accessor :image_size
      
        # Next ID: 6
        # Corresponds to the JSON property `raiInfo`
        # @return [Google::Apis::AiplatformV1::CloudAiLargeModelsVisionRaiInfo]
        attr_accessor :rai_info
      
        # Semantic filter info for image.
        # Corresponds to the JSON property `semanticFilterResponse`
        # @return [Google::Apis::AiplatformV1::CloudAiLargeModelsVisionSemanticFilterResponse]
        attr_accessor :semantic_filter_response
      
        # Text/Expanded text input for imagen.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        # Path to another storage (typically Google Cloud Storage).
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @encoding = args[:encoding] if args.key?(:encoding)
          @generation_seed = args[:generation_seed] if args.key?(:generation_seed)
          @image = args[:image] if args.key?(:image)
          @image_rai_scores = args[:image_rai_scores] if args.key?(:image_rai_scores)
          @image_size = args[:image_size] if args.key?(:image_size)
          @rai_info = args[:rai_info] if args.key?(:rai_info)
          @semantic_filter_response = args[:semantic_filter_response] if args.key?(:semantic_filter_response)
          @text = args[:text] if args.key?(:text)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # Image size.
      class CloudAiLargeModelsVisionImageImageSize
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `channels`
        # @return [Fixnum]
        attr_accessor :channels
      
        # 
        # Corresponds to the JSON property `height`
        # @return [Fixnum]
        attr_accessor :height
      
        # 
        # Corresponds to the JSON property `width`
        # @return [Fixnum]
        attr_accessor :width
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @channels = args[:channels] if args.key?(:channels)
          @height = args[:height] if args.key?(:height)
          @width = args[:width] if args.key?(:width)
        end
      end
      
      # RAI scores for generated image returned.
      class CloudAiLargeModelsVisionImageRaiScores
        include Google::Apis::Core::Hashable
      
        # Agile watermark score for image.
        # Corresponds to the JSON property `agileWatermarkDetectionScore`
        # @return [Float]
        attr_accessor :agile_watermark_detection_score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @agile_watermark_detection_score = args[:agile_watermark_detection_score] if args.key?(:agile_watermark_detection_score)
        end
      end
      
      # Media.
      class CloudAiLargeModelsVisionMedia
        include Google::Apis::Core::Hashable
      
        # Image.
        # Corresponds to the JSON property `image`
        # @return [Google::Apis::AiplatformV1::CloudAiLargeModelsVisionImage]
        attr_accessor :image
      
        # Video
        # Corresponds to the JSON property `video`
        # @return [Google::Apis::AiplatformV1::CloudAiLargeModelsVisionVideo]
        attr_accessor :video
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @image = args[:image] if args.key?(:image)
          @video = args[:video] if args.key?(:video)
        end
      end
      
      # 
      class CloudAiLargeModelsVisionNamedBoundingBox
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `classes`
        # @return [Array<String>]
        attr_accessor :classes
      
        # 
        # Corresponds to the JSON property `entities`
        # @return [Array<String>]
        attr_accessor :entities
      
        # 
        # Corresponds to the JSON property `scores`
        # @return [Array<Float>]
        attr_accessor :scores
      
        # 
        # Corresponds to the JSON property `x1`
        # @return [Float]
        attr_accessor :x1
      
        # 
        # Corresponds to the JSON property `x2`
        # @return [Float]
        attr_accessor :x2
      
        # 
        # Corresponds to the JSON property `y1`
        # @return [Float]
        attr_accessor :y1
      
        # 
        # Corresponds to the JSON property `y2`
        # @return [Float]
        attr_accessor :y2
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @classes = args[:classes] if args.key?(:classes)
          @entities = args[:entities] if args.key?(:entities)
          @scores = args[:scores] if args.key?(:scores)
          @x1 = args[:x1] if args.key?(:x1)
          @x2 = args[:x2] if args.key?(:x2)
          @y1 = args[:y1] if args.key?(:y1)
          @y2 = args[:y2] if args.key?(:y2)
        end
      end
      
      # Next ID: 6
      class CloudAiLargeModelsVisionRaiInfo
        include Google::Apis::Core::Hashable
      
        # List of blocked entities from the blocklist if it is detected.
        # Corresponds to the JSON property `blockedEntities`
        # @return [Array<String>]
        attr_accessor :blocked_entities
      
        # The list of detected labels for different rai categories.
        # Corresponds to the JSON property `detectedLabels`
        # @return [Array<Google::Apis::AiplatformV1::CloudAiLargeModelsVisionRaiInfoDetectedLabels>]
        attr_accessor :detected_labels
      
        # The model name used to indexing into the RaiFilterConfig map. Would either be
        # one of imagegeneration@002-006, imagen-3.0-... api endpoint names, or internal
        # names used for mapping to different filter configs (genselfie, ai_watermark)
        # than its api endpoint.
        # Corresponds to the JSON property `modelName`
        # @return [String]
        attr_accessor :model_name
      
        # List of rai categories' information to return
        # Corresponds to the JSON property `raiCategories`
        # @return [Array<String>]
        attr_accessor :rai_categories
      
        # List of rai scores mapping to the rai categories. Rounded to 1 decimal place.
        # Corresponds to the JSON property `scores`
        # @return [Array<Float>]
        attr_accessor :scores
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @blocked_entities = args[:blocked_entities] if args.key?(:blocked_entities)
          @detected_labels = args[:detected_labels] if args.key?(:detected_labels)
          @model_name = args[:model_name] if args.key?(:model_name)
          @rai_categories = args[:rai_categories] if args.key?(:rai_categories)
          @scores = args[:scores] if args.key?(:scores)
        end
      end
      
      # Filters returning list of deteceted labels, scores, and bounding boxes.
      class CloudAiLargeModelsVisionRaiInfoDetectedLabels
        include Google::Apis::Core::Hashable
      
        # The list of detected entities for the rai signal.
        # Corresponds to the JSON property `entities`
        # @return [Array<Google::Apis::AiplatformV1::CloudAiLargeModelsVisionRaiInfoDetectedLabelsEntity>]
        attr_accessor :entities
      
        # The RAI category for the deteceted labels.
        # Corresponds to the JSON property `raiCategory`
        # @return [String]
        attr_accessor :rai_category
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entities = args[:entities] if args.key?(:entities)
          @rai_category = args[:rai_category] if args.key?(:rai_category)
        end
      end
      
      # An integer bounding box of original pixels of the image for the detected
      # labels.
      class CloudAiLargeModelsVisionRaiInfoDetectedLabelsBoundingBox
        include Google::Apis::Core::Hashable
      
        # The X coordinate of the top-left corner, in pixels.
        # Corresponds to the JSON property `x1`
        # @return [Fixnum]
        attr_accessor :x1
      
        # The X coordinate of the bottom-right corner, in pixels.
        # Corresponds to the JSON property `x2`
        # @return [Fixnum]
        attr_accessor :x2
      
        # The Y coordinate of the top-left corner, in pixels.
        # Corresponds to the JSON property `y1`
        # @return [Fixnum]
        attr_accessor :y1
      
        # The Y coordinate of the bottom-right corner, in pixels.
        # Corresponds to the JSON property `y2`
        # @return [Fixnum]
        attr_accessor :y2
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @x1 = args[:x1] if args.key?(:x1)
          @x2 = args[:x2] if args.key?(:x2)
          @y1 = args[:y1] if args.key?(:y1)
          @y2 = args[:y2] if args.key?(:y2)
        end
      end
      
      # The properties for a detected entity from the rai signal.
      class CloudAiLargeModelsVisionRaiInfoDetectedLabelsEntity
        include Google::Apis::Core::Hashable
      
        # An integer bounding box of original pixels of the image for the detected
        # labels.
        # Corresponds to the JSON property `boundingBox`
        # @return [Google::Apis::AiplatformV1::CloudAiLargeModelsVisionRaiInfoDetectedLabelsBoundingBox]
        attr_accessor :bounding_box
      
        # Description of the label
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # The intersection ratio between the detection bounding box and the mask.
        # Corresponds to the JSON property `iouScore`
        # @return [Float]
        attr_accessor :iou_score
      
        # MID of the label
        # Corresponds to the JSON property `mid`
        # @return [String]
        attr_accessor :mid
      
        # Confidence score of the label
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @bounding_box = args[:bounding_box] if args.key?(:bounding_box)
          @description = args[:description] if args.key?(:description)
          @iou_score = args[:iou_score] if args.key?(:iou_score)
          @mid = args[:mid] if args.key?(:mid)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # 
      class CloudAiLargeModelsVisionSemanticFilterResponse
        include Google::Apis::Core::Hashable
      
        # Class labels of the bounding boxes that failed the semantic filtering.
        # Bounding box coordinates.
        # Corresponds to the JSON property `namedBoundingBoxes`
        # @return [Array<Google::Apis::AiplatformV1::CloudAiLargeModelsVisionNamedBoundingBox>]
        attr_accessor :named_bounding_boxes
      
        # This response is added when semantic filter config is turned on in EditConfig.
        # It reports if this image is passed semantic filter response. If
        # passed_semantic_filter is false, the bounding box information will be
        # populated for user to check what caused the semantic filter to fail.
        # Corresponds to the JSON property `passedSemanticFilter`
        # @return [Boolean]
        attr_accessor :passed_semantic_filter
        alias_method :passed_semantic_filter?, :passed_semantic_filter
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @named_bounding_boxes = args[:named_bounding_boxes] if args.key?(:named_bounding_boxes)
          @passed_semantic_filter = args[:passed_semantic_filter] if args.key?(:passed_semantic_filter)
        end
      end
      
      # Video
      class CloudAiLargeModelsVisionVideo
        include Google::Apis::Core::Hashable
      
        # Base 64 encoded video bytes.
        # Corresponds to the JSON property `encodedVideo`
        # @return [String]
        attr_accessor :encoded_video
      
        # Video encoding, for example "video/mp4".
        # Corresponds to the JSON property `encoding`
        # @return [String]
        attr_accessor :encoding
      
        # Text/Expanded text input for Help Me Write.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        # Path to another storage (typically Google Cloud Storage).
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        # Raw bytes.
        # Corresponds to the JSON property `video`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :video
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @encoded_video = args[:encoded_video] if args.key?(:encoded_video)
          @encoding = args[:encoding] if args.key?(:encoding)
          @text = args[:text] if args.key?(:text)
          @uri = args[:uri] if args.key?(:uri)
          @video = args[:video] if args.key?(:video)
        end
      end
      
      # Create API error message for Vertex Pipeline.
      class CloudAiPlatformCommonCreatePipelineJobApiErrorDetail
        include Google::Apis::Core::Hashable
      
        # The error root cause returned by CreatePipelineJob API.
        # Corresponds to the JSON property `errorCause`
        # @return [String]
        attr_accessor :error_cause
      
        # Public messages contains actionable items for the error cause.
        # Corresponds to the JSON property `publicMessage`
        # @return [String]
        attr_accessor :public_message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @error_cause = args[:error_cause] if args.key?(:error_cause)
          @public_message = args[:public_message] if args.key?(:public_message)
        end
      end
      
      # Message that represents an arbitrary HTTP body. It should only be used for
      # payload formats that can't be represented as JSON, such as raw binary or an
      # HTML page. This message can be used both in streaming and non-streaming API
      # methods in the request as well as the response. It can be used as a top-level
      # request field, which is convenient if one wants to extract parameters from
      # either the URL or HTTP template into the request fields and also want access
      # to the raw HTTP body. Example: message GetResourceRequest ` // A unique
      # request id. string request_id = 1; // The raw HTTP body is bound to this field.
      # google.api.HttpBody http_body = 2; ` service ResourceService ` rpc
      # GetResource(GetResourceRequest) returns (google.api.HttpBody); rpc
      # UpdateResource(google.api.HttpBody) returns (google.protobuf.Empty); ` Example
      # with streaming methods: service CaldavService ` rpc GetCalendar(stream google.
      # api.HttpBody) returns (stream google.api.HttpBody); rpc UpdateCalendar(stream
      # google.api.HttpBody) returns (stream google.api.HttpBody); ` Use of this type
      # only changes how the request and response bodies are handled, all other
      # features will continue to work unchanged.
      class GoogleApiHttpBody
        include Google::Apis::Core::Hashable
      
        # The HTTP Content-Type header value specifying the content type of the body.
        # Corresponds to the JSON property `contentType`
        # @return [String]
        attr_accessor :content_type
      
        # The HTTP request/response body as raw binary.
        # Corresponds to the JSON property `data`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :data
      
        # Application specific response metadata. Must be set in the first response for
        # streaming APIs.
        # Corresponds to the JSON property `extensions`
        # @return [Array<Hash<String,Object>>]
        attr_accessor :extensions
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content_type = args[:content_type] if args.key?(:content_type)
          @data = args[:data] if args.key?(:data)
          @extensions = args[:extensions] if args.key?(:extensions)
        end
      end
      
      # Parameters that configure the active learning pipeline. Active learning will
      # label the data incrementally by several iterations. For every iteration, it
      # will select a batch of data based on the sampling strategy.
      class GoogleCloudAiplatformV1ActiveLearningConfig
        include Google::Apis::Core::Hashable
      
        # Max number of human labeled DataItems.
        # Corresponds to the JSON property `maxDataItemCount`
        # @return [Fixnum]
        attr_accessor :max_data_item_count
      
        # Max percent of total DataItems for human labeling.
        # Corresponds to the JSON property `maxDataItemPercentage`
        # @return [Fixnum]
        attr_accessor :max_data_item_percentage
      
        # Active learning data sampling config. For every active learning labeling
        # iteration, it will select a batch of data based on the sampling strategy.
        # Corresponds to the JSON property `sampleConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SampleConfig]
        attr_accessor :sample_config
      
        # CMLE training config. For every active learning labeling iteration, system
        # will train a machine learning model on CMLE. The trained model will be used by
        # data sampling algorithm to select DataItems.
        # Corresponds to the JSON property `trainingConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrainingConfig]
        attr_accessor :training_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @max_data_item_count = args[:max_data_item_count] if args.key?(:max_data_item_count)
          @max_data_item_percentage = args[:max_data_item_percentage] if args.key?(:max_data_item_percentage)
          @sample_config = args[:sample_config] if args.key?(:sample_config)
          @training_config = args[:training_config] if args.key?(:training_config)
        end
      end
      
      # Request message for MetadataService.AddContextArtifactsAndExecutions.
      class GoogleCloudAiplatformV1AddContextArtifactsAndExecutionsRequest
        include Google::Apis::Core::Hashable
      
        # The resource names of the Artifacts to attribute to the Context. Format: `
        # projects/`project`/locations/`location`/metadataStores/`metadatastore`/
        # artifacts/`artifact``
        # Corresponds to the JSON property `artifacts`
        # @return [Array<String>]
        attr_accessor :artifacts
      
        # The resource names of the Executions to associate with the Context. Format: `
        # projects/`project`/locations/`location`/metadataStores/`metadatastore`/
        # executions/`execution``
        # Corresponds to the JSON property `executions`
        # @return [Array<String>]
        attr_accessor :executions
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @artifacts = args[:artifacts] if args.key?(:artifacts)
          @executions = args[:executions] if args.key?(:executions)
        end
      end
      
      # Response message for MetadataService.AddContextArtifactsAndExecutions.
      class GoogleCloudAiplatformV1AddContextArtifactsAndExecutionsResponse
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Request message for MetadataService.AddContextChildren.
      class GoogleCloudAiplatformV1AddContextChildrenRequest
        include Google::Apis::Core::Hashable
      
        # The resource names of the child Contexts.
        # Corresponds to the JSON property `childContexts`
        # @return [Array<String>]
        attr_accessor :child_contexts
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @child_contexts = args[:child_contexts] if args.key?(:child_contexts)
        end
      end
      
      # Response message for MetadataService.AddContextChildren.
      class GoogleCloudAiplatformV1AddContextChildrenResponse
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Request message for MetadataService.AddExecutionEvents.
      class GoogleCloudAiplatformV1AddExecutionEventsRequest
        include Google::Apis::Core::Hashable
      
        # The Events to create and add.
        # Corresponds to the JSON property `events`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Event>]
        attr_accessor :events
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @events = args[:events] if args.key?(:events)
        end
      end
      
      # Response message for MetadataService.AddExecutionEvents.
      class GoogleCloudAiplatformV1AddExecutionEventsResponse
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Request message for VizierService.AddTrialMeasurement.
      class GoogleCloudAiplatformV1AddTrialMeasurementRequest
        include Google::Apis::Core::Hashable
      
        # A message representing a Measurement of a Trial. A Measurement contains the
        # Metrics got by executing a Trial using suggested hyperparameter values.
        # Corresponds to the JSON property `measurement`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Measurement]
        attr_accessor :measurement
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @measurement = args[:measurement] if args.key?(:measurement)
        end
      end
      
      # Used to assign specific AnnotationSpec to a particular area of a DataItem or
      # the whole part of the DataItem.
      class GoogleCloudAiplatformV1Annotation
        include Google::Apis::Core::Hashable
      
        # References an API call. It contains more information about long running
        # operation and Jobs that are triggered by the API call.
        # Corresponds to the JSON property `annotationSource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1UserActionReference]
        attr_accessor :annotation_source
      
        # Output only. Timestamp when this Annotation was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Optional. Used to perform consistent read-modify-write updates. If not set, a
        # blind "overwrite" update happens.
        # Corresponds to the JSON property `etag`
        # @return [String]
        attr_accessor :etag
      
        # Optional. The labels with user-defined metadata to organize your Annotations.
        # Label keys and values can be no longer than 64 characters (Unicode codepoints),
        # can only contain lowercase letters, numeric characters, underscores and
        # dashes. International characters are allowed. No more than 64 user labels can
        # be associated with one Annotation(System labels are excluded). See https://goo.
        # gl/xmQnxf for more information and examples of labels. System reserved label
        # keys are prefixed with "aiplatform.googleapis.com/" and are immutable.
        # Following system labels exist for each Annotation: * "aiplatform.googleapis.
        # com/annotation_set_name": optional, name of the UI's annotation set this
        # Annotation belongs to. If not set, the Annotation is not visible in the UI. * "
        # aiplatform.googleapis.com/payload_schema": output only, its value is the
        # payload_schema's title.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Output only. Resource name of the Annotation.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Required. The schema of the payload can be found in payload_schema.
        # Corresponds to the JSON property `payload`
        # @return [Object]
        attr_accessor :payload
      
        # Required. Google Cloud Storage URI points to a YAML file describing payload.
        # The schema is defined as an [OpenAPI 3.0.2 Schema Object](https://github.com/
        # OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject). The
        # schema files that can be used here are found in gs://google-cloud-aiplatform/
        # schema/dataset/annotation/, note that the chosen schema must be consistent
        # with the parent Dataset's metadata.
        # Corresponds to the JSON property `payloadSchemaUri`
        # @return [String]
        attr_accessor :payload_schema_uri
      
        # Output only. Timestamp when this Annotation was last updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @annotation_source = args[:annotation_source] if args.key?(:annotation_source)
          @create_time = args[:create_time] if args.key?(:create_time)
          @etag = args[:etag] if args.key?(:etag)
          @labels = args[:labels] if args.key?(:labels)
          @name = args[:name] if args.key?(:name)
          @payload = args[:payload] if args.key?(:payload)
          @payload_schema_uri = args[:payload_schema_uri] if args.key?(:payload_schema_uri)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # Identifies a concept with which DataItems may be annotated with.
      class GoogleCloudAiplatformV1AnnotationSpec
        include Google::Apis::Core::Hashable
      
        # Output only. Timestamp when this AnnotationSpec was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Required. The user-defined name of the AnnotationSpec. The name can be up to
        # 128 characters long and can consist of any UTF-8 characters.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Optional. Used to perform consistent read-modify-write updates. If not set, a
        # blind "overwrite" update happens.
        # Corresponds to the JSON property `etag`
        # @return [String]
        attr_accessor :etag
      
        # Output only. Resource name of the AnnotationSpec.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Output only. Timestamp when AnnotationSpec was last updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @display_name = args[:display_name] if args.key?(:display_name)
          @etag = args[:etag] if args.key?(:etag)
          @name = args[:name] if args.key?(:name)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # The generic reusable api auth config. Deprecated. Please use AuthConfig (
      # google/cloud/aiplatform/master/auth.proto) instead.
      class GoogleCloudAiplatformV1ApiAuth
        include Google::Apis::Core::Hashable
      
        # The API secret.
        # Corresponds to the JSON property `apiKeyConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ApiAuthApiKeyConfig]
        attr_accessor :api_key_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @api_key_config = args[:api_key_config] if args.key?(:api_key_config)
        end
      end
      
      # The API secret.
      class GoogleCloudAiplatformV1ApiAuthApiKeyConfig
        include Google::Apis::Core::Hashable
      
        # Required. The SecretManager secret version resource name storing API key. e.g.
        # projects/`project`/secrets/`secret`/versions/`version`
        # Corresponds to the JSON property `apiKeySecretVersion`
        # @return [String]
        attr_accessor :api_key_secret_version
      
        # The API key string. Either this or `api_key_secret_version` must be set.
        # Corresponds to the JSON property `apiKeyString`
        # @return [String]
        attr_accessor :api_key_string
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @api_key_secret_version = args[:api_key_secret_version] if args.key?(:api_key_secret_version)
          @api_key_string = args[:api_key_string] if args.key?(:api_key_string)
        end
      end
      
      # Instance of a general artifact.
      class GoogleCloudAiplatformV1Artifact
        include Google::Apis::Core::Hashable
      
        # Output only. Timestamp when this Artifact was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Description of the Artifact
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # User provided display name of the Artifact. May be up to 128 Unicode
        # characters.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # An eTag used to perform consistent read-modify-write updates. If not set, a
        # blind "overwrite" update happens.
        # Corresponds to the JSON property `etag`
        # @return [String]
        attr_accessor :etag
      
        # The labels with user-defined metadata to organize your Artifacts. Label keys
        # and values can be no longer than 64 characters (Unicode codepoints), can only
        # contain lowercase letters, numeric characters, underscores and dashes.
        # International characters are allowed. No more than 64 user labels can be
        # associated with one Artifact (System labels are excluded).
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Properties of the Artifact. Top level metadata keys' heading and trailing
        # spaces will be trimmed. The size of this field should not exceed 200KB.
        # Corresponds to the JSON property `metadata`
        # @return [Hash<String,Object>]
        attr_accessor :metadata
      
        # Output only. The resource name of the Artifact.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # The title of the schema describing the metadata. Schema title and version is
        # expected to be registered in earlier Create Schema calls. And both are used
        # together as unique identifiers to identify schemas within the local metadata
        # store.
        # Corresponds to the JSON property `schemaTitle`
        # @return [String]
        attr_accessor :schema_title
      
        # The version of the schema in schema_name to use. Schema title and version is
        # expected to be registered in earlier Create Schema calls. And both are used
        # together as unique identifiers to identify schemas within the local metadata
        # store.
        # Corresponds to the JSON property `schemaVersion`
        # @return [String]
        attr_accessor :schema_version
      
        # The state of this Artifact. This is a property of the Artifact, and does not
        # imply or capture any ongoing process. This property is managed by clients (
        # such as Vertex AI Pipelines), and the system does not prescribe or check the
        # validity of state transitions.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        # Output only. Timestamp when this Artifact was last updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        # The uniform resource identifier of the artifact file. May be empty if there is
        # no actual artifact file.
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @description = args[:description] if args.key?(:description)
          @display_name = args[:display_name] if args.key?(:display_name)
          @etag = args[:etag] if args.key?(:etag)
          @labels = args[:labels] if args.key?(:labels)
          @metadata = args[:metadata] if args.key?(:metadata)
          @name = args[:name] if args.key?(:name)
          @schema_title = args[:schema_title] if args.key?(:schema_title)
          @schema_version = args[:schema_version] if args.key?(:schema_version)
          @state = args[:state] if args.key?(:state)
          @update_time = args[:update_time] if args.key?(:update_time)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # Metadata information for NotebookService.AssignNotebookRuntime.
      class GoogleCloudAiplatformV1AssignNotebookRuntimeOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        # A human-readable message that shows the intermediate progress details of
        # NotebookRuntime.
        # Corresponds to the JSON property `progressMessage`
        # @return [String]
        attr_accessor :progress_message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
          @progress_message = args[:progress_message] if args.key?(:progress_message)
        end
      end
      
      # Request message for NotebookService.AssignNotebookRuntime.
      class GoogleCloudAiplatformV1AssignNotebookRuntimeRequest
        include Google::Apis::Core::Hashable
      
        # A runtime is a virtual machine allocated to a particular user for a particular
        # Notebook file on temporary basis with lifetime. Default runtimes have a
        # lifetime of 18 hours, while custom runtimes last for 6 months from their
        # creation or last upgrade.
        # Corresponds to the JSON property `notebookRuntime`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NotebookRuntime]
        attr_accessor :notebook_runtime
      
        # Optional. User specified ID for the notebook runtime.
        # Corresponds to the JSON property `notebookRuntimeId`
        # @return [String]
        attr_accessor :notebook_runtime_id
      
        # Required. The resource name of the NotebookRuntimeTemplate based on which a
        # NotebookRuntime will be assigned (reuse or create a new one).
        # Corresponds to the JSON property `notebookRuntimeTemplate`
        # @return [String]
        attr_accessor :notebook_runtime_template
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @notebook_runtime = args[:notebook_runtime] if args.key?(:notebook_runtime)
          @notebook_runtime_id = args[:notebook_runtime_id] if args.key?(:notebook_runtime_id)
          @notebook_runtime_template = args[:notebook_runtime_template] if args.key?(:notebook_runtime_template)
        end
      end
      
      # Attribution that explains a particular prediction output.
      class GoogleCloudAiplatformV1Attribution
        include Google::Apis::Core::Hashable
      
        # Output only. Error of feature_attributions caused by approximation used in the
        # explanation method. Lower value means more precise attributions. * For Sampled
        # Shapley attribution, increasing path_count might reduce the error. * For
        # Integrated Gradients attribution, increasing step_count might reduce the error.
        # * For XRAI attribution, increasing step_count might reduce the error. See [
        # this introduction](/vertex-ai/docs/explainable-ai/overview) for more
        # information.
        # Corresponds to the JSON property `approximationError`
        # @return [Float]
        attr_accessor :approximation_error
      
        # Output only. Model predicted output if the input instance is constructed from
        # the baselines of all the features defined in ExplanationMetadata.inputs. The
        # field name of the output is determined by the key in ExplanationMetadata.
        # outputs. If the Model's predicted output has multiple dimensions (rank > 1),
        # this is the value in the output located by output_index. If there are multiple
        # baselines, their output values are averaged.
        # Corresponds to the JSON property `baselineOutputValue`
        # @return [Float]
        attr_accessor :baseline_output_value
      
        # Output only. Attributions of each explained feature. Features are extracted
        # from the prediction instances according to explanation metadata for inputs.
        # The value is a struct, whose keys are the name of the feature. The values are
        # how much the feature in the instance contributed to the predicted result. The
        # format of the value is determined by the feature's input format: * If the
        # feature is a scalar value, the attribution value is a floating number. * If
        # the feature is an array of scalar values, the attribution value is an array. *
        # If the feature is a struct, the attribution value is a struct. The keys in the
        # attribution value struct are the same as the keys in the feature struct. The
        # formats of the values in the attribution struct are determined by the formats
        # of the values in the feature struct. The ExplanationMetadata.
        # feature_attributions_schema_uri field, pointed to by the ExplanationSpec field
        # of the Endpoint.deployed_models object, points to the schema file that
        # describes the features and their attribution values (if it is populated).
        # Corresponds to the JSON property `featureAttributions`
        # @return [Object]
        attr_accessor :feature_attributions
      
        # Output only. Model predicted output on the corresponding explanation instance.
        # The field name of the output is determined by the key in ExplanationMetadata.
        # outputs. If the Model predicted output has multiple dimensions, this is the
        # value in the output located by output_index.
        # Corresponds to the JSON property `instanceOutputValue`
        # @return [Float]
        attr_accessor :instance_output_value
      
        # Output only. The display name of the output identified by output_index. For
        # example, the predicted class name by a multi-classification Model. This field
        # is only populated iff the Model predicts display names as a separate field
        # along with the explained output. The predicted display name must has the same
        # shape of the explained output, and can be located using output_index.
        # Corresponds to the JSON property `outputDisplayName`
        # @return [String]
        attr_accessor :output_display_name
      
        # Output only. The index that locates the explained prediction output. If the
        # prediction output is a scalar value, output_index is not populated. If the
        # prediction output has multiple dimensions, the length of the output_index list
        # is the same as the number of dimensions of the output. The i-th element in
        # output_index is the element index of the i-th dimension of the output vector.
        # Indices start from 0.
        # Corresponds to the JSON property `outputIndex`
        # @return [Array<Fixnum>]
        attr_accessor :output_index
      
        # Output only. Name of the explain output. Specified as the key in
        # ExplanationMetadata.outputs.
        # Corresponds to the JSON property `outputName`
        # @return [String]
        attr_accessor :output_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @approximation_error = args[:approximation_error] if args.key?(:approximation_error)
          @baseline_output_value = args[:baseline_output_value] if args.key?(:baseline_output_value)
          @feature_attributions = args[:feature_attributions] if args.key?(:feature_attributions)
          @instance_output_value = args[:instance_output_value] if args.key?(:instance_output_value)
          @output_display_name = args[:output_display_name] if args.key?(:output_display_name)
          @output_index = args[:output_index] if args.key?(:output_index)
          @output_name = args[:output_name] if args.key?(:output_name)
        end
      end
      
      # Request message for AugmentPrompt.
      class GoogleCloudAiplatformV1AugmentPromptRequest
        include Google::Apis::Core::Hashable
      
        # Optional. Input content to augment, only text format is supported for now.
        # Corresponds to the JSON property `contents`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Content>]
        attr_accessor :contents
      
        # Metadata of the backend deployed model.
        # Corresponds to the JSON property `model`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1AugmentPromptRequestModel]
        attr_accessor :model
      
        # Retrieve from Vertex RAG Store for grounding.
        # Corresponds to the JSON property `vertexRagStore`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1VertexRagStore]
        attr_accessor :vertex_rag_store
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @contents = args[:contents] if args.key?(:contents)
          @model = args[:model] if args.key?(:model)
          @vertex_rag_store = args[:vertex_rag_store] if args.key?(:vertex_rag_store)
        end
      end
      
      # Metadata of the backend deployed model.
      class GoogleCloudAiplatformV1AugmentPromptRequestModel
        include Google::Apis::Core::Hashable
      
        # Optional. The model that the user will send the augmented prompt for content
        # generation.
        # Corresponds to the JSON property `model`
        # @return [String]
        attr_accessor :model
      
        # Optional. The model version of the backend deployed model.
        # Corresponds to the JSON property `modelVersion`
        # @return [String]
        attr_accessor :model_version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @model = args[:model] if args.key?(:model)
          @model_version = args[:model_version] if args.key?(:model_version)
        end
      end
      
      # Response message for AugmentPrompt.
      class GoogleCloudAiplatformV1AugmentPromptResponse
        include Google::Apis::Core::Hashable
      
        # Augmented prompt, only text format is supported for now.
        # Corresponds to the JSON property `augmentedPrompt`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Content>]
        attr_accessor :augmented_prompt
      
        # Retrieved facts from RAG data sources.
        # Corresponds to the JSON property `facts`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Fact>]
        attr_accessor :facts
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @augmented_prompt = args[:augmented_prompt] if args.key?(:augmented_prompt)
          @facts = args[:facts] if args.key?(:facts)
        end
      end
      
      # Auth configuration to run the extension.
      class GoogleCloudAiplatformV1AuthConfig
        include Google::Apis::Core::Hashable
      
        # Config for authentication with API key.
        # Corresponds to the JSON property `apiKeyConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1AuthConfigApiKeyConfig]
        attr_accessor :api_key_config
      
        # Type of auth scheme.
        # Corresponds to the JSON property `authType`
        # @return [String]
        attr_accessor :auth_type
      
        # Config for Google Service Account Authentication.
        # Corresponds to the JSON property `googleServiceAccountConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1AuthConfigGoogleServiceAccountConfig]
        attr_accessor :google_service_account_config
      
        # Config for HTTP Basic Authentication.
        # Corresponds to the JSON property `httpBasicAuthConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1AuthConfigHttpBasicAuthConfig]
        attr_accessor :http_basic_auth_config
      
        # Config for user oauth.
        # Corresponds to the JSON property `oauthConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1AuthConfigOauthConfig]
        attr_accessor :oauth_config
      
        # Config for user OIDC auth.
        # Corresponds to the JSON property `oidcConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1AuthConfigOidcConfig]
        attr_accessor :oidc_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @api_key_config = args[:api_key_config] if args.key?(:api_key_config)
          @auth_type = args[:auth_type] if args.key?(:auth_type)
          @google_service_account_config = args[:google_service_account_config] if args.key?(:google_service_account_config)
          @http_basic_auth_config = args[:http_basic_auth_config] if args.key?(:http_basic_auth_config)
          @oauth_config = args[:oauth_config] if args.key?(:oauth_config)
          @oidc_config = args[:oidc_config] if args.key?(:oidc_config)
        end
      end
      
      # Config for authentication with API key.
      class GoogleCloudAiplatformV1AuthConfigApiKeyConfig
        include Google::Apis::Core::Hashable
      
        # Optional. The name of the SecretManager secret version resource storing the
        # API key. Format: `projects/`project`/secrets/`secrete`/versions/`version`` -
        # If both `api_key_secret` and `api_key_string` are specified, this field takes
        # precedence over `api_key_string`. - If specified, the `secretmanager.versions.
        # access` permission should be granted to Vertex AI Extension Service Agent (
        # https://cloud.google.com/vertex-ai/docs/general/access-control#service-agents)
        # on the specified resource.
        # Corresponds to the JSON property `apiKeySecret`
        # @return [String]
        attr_accessor :api_key_secret
      
        # Optional. The API key to be used in the request directly.
        # Corresponds to the JSON property `apiKeyString`
        # @return [String]
        attr_accessor :api_key_string
      
        # Optional. The location of the API key.
        # Corresponds to the JSON property `httpElementLocation`
        # @return [String]
        attr_accessor :http_element_location
      
        # Optional. The parameter name of the API key. E.g. If the API request is "https:
        # //example.com/act?api_key=", "api_key" would be the parameter name.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @api_key_secret = args[:api_key_secret] if args.key?(:api_key_secret)
          @api_key_string = args[:api_key_string] if args.key?(:api_key_string)
          @http_element_location = args[:http_element_location] if args.key?(:http_element_location)
          @name = args[:name] if args.key?(:name)
        end
      end
      
      # Config for Google Service Account Authentication.
      class GoogleCloudAiplatformV1AuthConfigGoogleServiceAccountConfig
        include Google::Apis::Core::Hashable
      
        # Optional. The service account that the extension execution service runs as. -
        # If the service account is specified, the `iam.serviceAccounts.getAccessToken`
        # permission should be granted to Vertex AI Extension Service Agent (https://
        # cloud.google.com/vertex-ai/docs/general/access-control#service-agents) on the
        # specified service account. - If not specified, the Vertex AI Extension Service
        # Agent will be used to execute the Extension.
        # Corresponds to the JSON property `serviceAccount`
        # @return [String]
        attr_accessor :service_account
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @service_account = args[:service_account] if args.key?(:service_account)
        end
      end
      
      # Config for HTTP Basic Authentication.
      class GoogleCloudAiplatformV1AuthConfigHttpBasicAuthConfig
        include Google::Apis::Core::Hashable
      
        # Required. The name of the SecretManager secret version resource storing the
        # base64 encoded credentials. Format: `projects/`project`/secrets/`secrete`/
        # versions/`version`` - If specified, the `secretmanager.versions.access`
        # permission should be granted to Vertex AI Extension Service Agent (https://
        # cloud.google.com/vertex-ai/docs/general/access-control#service-agents) on the
        # specified resource.
        # Corresponds to the JSON property `credentialSecret`
        # @return [String]
        attr_accessor :credential_secret
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @credential_secret = args[:credential_secret] if args.key?(:credential_secret)
        end
      end
      
      # Config for user oauth.
      class GoogleCloudAiplatformV1AuthConfigOauthConfig
        include Google::Apis::Core::Hashable
      
        # Access token for extension endpoint. Only used to propagate token from [[
        # ExecuteExtensionRequest.runtime_auth_config]] at request time.
        # Corresponds to the JSON property `accessToken`
        # @return [String]
        attr_accessor :access_token
      
        # The service account used to generate access tokens for executing the Extension.
        # - If the service account is specified, the `iam.serviceAccounts.
        # getAccessToken` permission should be granted to Vertex AI Extension Service
        # Agent (https://cloud.google.com/vertex-ai/docs/general/access-control#service-
        # agents) on the provided service account.
        # Corresponds to the JSON property `serviceAccount`
        # @return [String]
        attr_accessor :service_account
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @access_token = args[:access_token] if args.key?(:access_token)
          @service_account = args[:service_account] if args.key?(:service_account)
        end
      end
      
      # Config for user OIDC auth.
      class GoogleCloudAiplatformV1AuthConfigOidcConfig
        include Google::Apis::Core::Hashable
      
        # OpenID Connect formatted ID token for extension endpoint. Only used to
        # propagate token from [[ExecuteExtensionRequest.runtime_auth_config]] at
        # request time.
        # Corresponds to the JSON property `idToken`
        # @return [String]
        attr_accessor :id_token
      
        # The service account used to generate an OpenID Connect (OIDC)-compatible JWT
        # token signed by the Google OIDC Provider (accounts.google.com) for extension
        # endpoint (https://cloud.google.com/iam/docs/create-short-lived-credentials-
        # direct#sa-credentials-oidc). - The audience for the token will be set to the
        # URL in the server url defined in the OpenApi spec. - If the service account is
        # provided, the service account should grant `iam.serviceAccounts.getOpenIdToken`
        # permission to Vertex AI Extension Service Agent (https://cloud.google.com/
        # vertex-ai/docs/general/access-control#service-agents).
        # Corresponds to the JSON property `serviceAccount`
        # @return [String]
        attr_accessor :service_account
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @id_token = args[:id_token] if args.key?(:id_token)
          @service_account = args[:service_account] if args.key?(:service_account)
        end
      end
      
      # A description of resources that to large degree are decided by Vertex AI, and
      # require only a modest additional configuration. Each Model supporting these
      # resources documents its specific guidelines.
      class GoogleCloudAiplatformV1AutomaticResources
        include Google::Apis::Core::Hashable
      
        # Immutable. The maximum number of replicas that may be deployed on when the
        # traffic against it increases. If the requested value is too large, the
        # deployment will error, but if deployment succeeds then the ability to scale to
        # that many replicas is guaranteed (barring service outages). If traffic
        # increases beyond what its replicas at maximum may handle, a portion of the
        # traffic will be dropped. If this value is not provided, a no upper bound for
        # scaling under heavy traffic will be assume, though Vertex AI may be unable to
        # scale beyond certain replica number.
        # Corresponds to the JSON property `maxReplicaCount`
        # @return [Fixnum]
        attr_accessor :max_replica_count
      
        # Immutable. The minimum number of replicas that will be always deployed on. If
        # traffic against it increases, it may dynamically be deployed onto more
        # replicas up to max_replica_count, and as traffic decreases, some of these
        # extra replicas may be freed. If the requested value is too large, the
        # deployment will error.
        # Corresponds to the JSON property `minReplicaCount`
        # @return [Fixnum]
        attr_accessor :min_replica_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @max_replica_count = args[:max_replica_count] if args.key?(:max_replica_count)
          @min_replica_count = args[:min_replica_count] if args.key?(:min_replica_count)
        end
      end
      
      # The configs for autorater. This is applicable to both EvaluateInstances and
      # EvaluateDataset.
      class GoogleCloudAiplatformV1AutoraterConfig
        include Google::Apis::Core::Hashable
      
        # Optional. The fully qualified name of the publisher model or tuned autorater
        # endpoint to use. Publisher model format: `projects/`project`/locations/`
        # location`/publishers/*/models/*` Tuned model endpoint format: `projects/`
        # project`/locations/`location`/endpoints/`endpoint``
        # Corresponds to the JSON property `autoraterModel`
        # @return [String]
        attr_accessor :autorater_model
      
        # Optional. Default is true. Whether to flip the candidate and baseline
        # responses. This is only applicable to the pairwise metric. If enabled, also
        # provide PairwiseMetricSpec.candidate_response_field_name and
        # PairwiseMetricSpec.baseline_response_field_name. When rendering
        # PairwiseMetricSpec.metric_prompt_template, the candidate and baseline fields
        # will be flipped for half of the samples to reduce bias.
        # Corresponds to the JSON property `flipEnabled`
        # @return [Boolean]
        attr_accessor :flip_enabled
        alias_method :flip_enabled?, :flip_enabled
      
        # Generation config.
        # Corresponds to the JSON property `generationConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenerationConfig]
        attr_accessor :generation_config
      
        # Optional. Number of samples for each instance in the dataset. If not specified,
        # the default is 4. Minimum value is 1, maximum value is 32.
        # Corresponds to the JSON property `samplingCount`
        # @return [Fixnum]
        attr_accessor :sampling_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @autorater_model = args[:autorater_model] if args.key?(:autorater_model)
          @flip_enabled = args[:flip_enabled] if args.key?(:flip_enabled)
          @generation_config = args[:generation_config] if args.key?(:generation_config)
          @sampling_count = args[:sampling_count] if args.key?(:sampling_count)
        end
      end
      
      # The metric specification that defines the target resource utilization (CPU
      # utilization, accelerator's duty cycle, and so on) for calculating the desired
      # replica count.
      class GoogleCloudAiplatformV1AutoscalingMetricSpec
        include Google::Apis::Core::Hashable
      
        # Required. The resource metric name. Supported metrics: * For Online Prediction:
        # * `aiplatform.googleapis.com/prediction/online/accelerator/duty_cycle` * `
        # aiplatform.googleapis.com/prediction/online/cpu/utilization` * `aiplatform.
        # googleapis.com/prediction/online/request_count`
        # Corresponds to the JSON property `metricName`
        # @return [String]
        attr_accessor :metric_name
      
        # The target resource utilization in percentage (1% - 100%) for the given metric;
        # once the real usage deviates from the target by a certain percentage, the
        # machine replicas change. The default value is 60 (representing 60%) if not
        # provided.
        # Corresponds to the JSON property `target`
        # @return [Fixnum]
        attr_accessor :target
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @metric_name = args[:metric_name] if args.key?(:metric_name)
          @target = args[:target] if args.key?(:target)
        end
      end
      
      # The storage details for Avro input content.
      class GoogleCloudAiplatformV1AvroSource
        include Google::Apis::Core::Hashable
      
        # The Google Cloud Storage location for the input content.
        # Corresponds to the JSON property `gcsSource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GcsSource]
        attr_accessor :gcs_source
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @gcs_source = args[:gcs_source] if args.key?(:gcs_source)
        end
      end
      
      # Request message for PipelineService.BatchCancelPipelineJobs.
      class GoogleCloudAiplatformV1BatchCancelPipelineJobsRequest
        include Google::Apis::Core::Hashable
      
        # Required. The names of the PipelineJobs to cancel. A maximum of 32
        # PipelineJobs can be cancelled in a batch. Format: `projects/`project`/
        # locations/`location`/pipelineJobs/`pipelineJob``
        # Corresponds to the JSON property `names`
        # @return [Array<String>]
        attr_accessor :names
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @names = args[:names] if args.key?(:names)
        end
      end
      
      # Details of operations that perform batch create Features.
      class GoogleCloudAiplatformV1BatchCreateFeaturesOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Request message for FeaturestoreService.BatchCreateFeatures. Request message
      # for FeatureRegistryService.BatchCreateFeatures.
      class GoogleCloudAiplatformV1BatchCreateFeaturesRequest
        include Google::Apis::Core::Hashable
      
        # Required. The request message specifying the Features to create. All Features
        # must be created under the same parent EntityType / FeatureGroup. The `parent`
        # field in each child request message can be omitted. If `parent` is set in a
        # child request, then the value must match the `parent` value in this request
        # message.
        # Corresponds to the JSON property `requests`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CreateFeatureRequest>]
        attr_accessor :requests
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @requests = args[:requests] if args.key?(:requests)
        end
      end
      
      # Response message for FeaturestoreService.BatchCreateFeatures.
      class GoogleCloudAiplatformV1BatchCreateFeaturesResponse
        include Google::Apis::Core::Hashable
      
        # The Features created.
        # Corresponds to the JSON property `features`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Feature>]
        attr_accessor :features
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @features = args[:features] if args.key?(:features)
        end
      end
      
      # Request message for TensorboardService.BatchCreateTensorboardRuns.
      class GoogleCloudAiplatformV1BatchCreateTensorboardRunsRequest
        include Google::Apis::Core::Hashable
      
        # Required. The request message specifying the TensorboardRuns to create. A
        # maximum of 1000 TensorboardRuns can be created in a batch.
        # Corresponds to the JSON property `requests`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CreateTensorboardRunRequest>]
        attr_accessor :requests
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @requests = args[:requests] if args.key?(:requests)
        end
      end
      
      # Response message for TensorboardService.BatchCreateTensorboardRuns.
      class GoogleCloudAiplatformV1BatchCreateTensorboardRunsResponse
        include Google::Apis::Core::Hashable
      
        # The created TensorboardRuns.
        # Corresponds to the JSON property `tensorboardRuns`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TensorboardRun>]
        attr_accessor :tensorboard_runs
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @tensorboard_runs = args[:tensorboard_runs] if args.key?(:tensorboard_runs)
        end
      end
      
      # Request message for TensorboardService.BatchCreateTensorboardTimeSeries.
      class GoogleCloudAiplatformV1BatchCreateTensorboardTimeSeriesRequest
        include Google::Apis::Core::Hashable
      
        # Required. The request message specifying the TensorboardTimeSeries to create.
        # A maximum of 1000 TensorboardTimeSeries can be created in a batch.
        # Corresponds to the JSON property `requests`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CreateTensorboardTimeSeriesRequest>]
        attr_accessor :requests
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @requests = args[:requests] if args.key?(:requests)
        end
      end
      
      # Response message for TensorboardService.BatchCreateTensorboardTimeSeries.
      class GoogleCloudAiplatformV1BatchCreateTensorboardTimeSeriesResponse
        include Google::Apis::Core::Hashable
      
        # The created TensorboardTimeSeries.
        # Corresponds to the JSON property `tensorboardTimeSeries`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TensorboardTimeSeries>]
        attr_accessor :tensorboard_time_series
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @tensorboard_time_series = args[:tensorboard_time_series] if args.key?(:tensorboard_time_series)
        end
      end
      
      # A description of resources that are used for performing batch operations, are
      # dedicated to a Model, and need manual configuration.
      class GoogleCloudAiplatformV1BatchDedicatedResources
        include Google::Apis::Core::Hashable
      
        # Specification of a single machine.
        # Corresponds to the JSON property `machineSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1MachineSpec]
        attr_accessor :machine_spec
      
        # Immutable. The maximum number of machine replicas the batch operation may be
        # scaled to. The default value is 10.
        # Corresponds to the JSON property `maxReplicaCount`
        # @return [Fixnum]
        attr_accessor :max_replica_count
      
        # Immutable. The number of machine replicas used at the start of the batch
        # operation. If not set, Vertex AI decides starting number, not greater than
        # max_replica_count
        # Corresponds to the JSON property `startingReplicaCount`
        # @return [Fixnum]
        attr_accessor :starting_replica_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @machine_spec = args[:machine_spec] if args.key?(:machine_spec)
          @max_replica_count = args[:max_replica_count] if args.key?(:max_replica_count)
          @starting_replica_count = args[:starting_replica_count] if args.key?(:starting_replica_count)
        end
      end
      
      # Request message for PipelineService.BatchDeletePipelineJobs.
      class GoogleCloudAiplatformV1BatchDeletePipelineJobsRequest
        include Google::Apis::Core::Hashable
      
        # Required. The names of the PipelineJobs to delete. A maximum of 32
        # PipelineJobs can be deleted in a batch. Format: `projects/`project`/locations/`
        # location`/pipelineJobs/`pipelineJob``
        # Corresponds to the JSON property `names`
        # @return [Array<String>]
        attr_accessor :names
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @names = args[:names] if args.key?(:names)
        end
      end
      
      # Request message for ModelService.BatchImportEvaluatedAnnotations
      class GoogleCloudAiplatformV1BatchImportEvaluatedAnnotationsRequest
        include Google::Apis::Core::Hashable
      
        # Required. Evaluated annotations resource to be imported.
        # Corresponds to the JSON property `evaluatedAnnotations`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluatedAnnotation>]
        attr_accessor :evaluated_annotations
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @evaluated_annotations = args[:evaluated_annotations] if args.key?(:evaluated_annotations)
        end
      end
      
      # Response message for ModelService.BatchImportEvaluatedAnnotations
      class GoogleCloudAiplatformV1BatchImportEvaluatedAnnotationsResponse
        include Google::Apis::Core::Hashable
      
        # Output only. Number of EvaluatedAnnotations imported.
        # Corresponds to the JSON property `importedEvaluatedAnnotationsCount`
        # @return [Fixnum]
        attr_accessor :imported_evaluated_annotations_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @imported_evaluated_annotations_count = args[:imported_evaluated_annotations_count] if args.key?(:imported_evaluated_annotations_count)
        end
      end
      
      # Request message for ModelService.BatchImportModelEvaluationSlices
      class GoogleCloudAiplatformV1BatchImportModelEvaluationSlicesRequest
        include Google::Apis::Core::Hashable
      
        # Required. Model evaluation slice resource to be imported.
        # Corresponds to the JSON property `modelEvaluationSlices`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelEvaluationSlice>]
        attr_accessor :model_evaluation_slices
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @model_evaluation_slices = args[:model_evaluation_slices] if args.key?(:model_evaluation_slices)
        end
      end
      
      # Response message for ModelService.BatchImportModelEvaluationSlices
      class GoogleCloudAiplatformV1BatchImportModelEvaluationSlicesResponse
        include Google::Apis::Core::Hashable
      
        # Output only. List of imported ModelEvaluationSlice.name.
        # Corresponds to the JSON property `importedModelEvaluationSlices`
        # @return [Array<String>]
        attr_accessor :imported_model_evaluation_slices
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @imported_model_evaluation_slices = args[:imported_model_evaluation_slices] if args.key?(:imported_model_evaluation_slices)
        end
      end
      
      # Runtime operation information for MigrationService.BatchMigrateResources.
      class GoogleCloudAiplatformV1BatchMigrateResourcesOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        # Partial results that reflect the latest migration operation progress.
        # Corresponds to the JSON property `partialResults`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BatchMigrateResourcesOperationMetadataPartialResult>]
        attr_accessor :partial_results
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
          @partial_results = args[:partial_results] if args.key?(:partial_results)
        end
      end
      
      # Represents a partial result in batch migration operation for one
      # MigrateResourceRequest.
      class GoogleCloudAiplatformV1BatchMigrateResourcesOperationMetadataPartialResult
        include Google::Apis::Core::Hashable
      
        # Migrated dataset resource name.
        # Corresponds to the JSON property `dataset`
        # @return [String]
        attr_accessor :dataset
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `error`
        # @return [Google::Apis::AiplatformV1::GoogleRpcStatus]
        attr_accessor :error
      
        # Migrated model resource name.
        # Corresponds to the JSON property `model`
        # @return [String]
        attr_accessor :model
      
        # Config of migrating one resource from automl.googleapis.com, datalabeling.
        # googleapis.com and ml.googleapis.com to Vertex AI.
        # Corresponds to the JSON property `request`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1MigrateResourceRequest]
        attr_accessor :request
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @dataset = args[:dataset] if args.key?(:dataset)
          @error = args[:error] if args.key?(:error)
          @model = args[:model] if args.key?(:model)
          @request = args[:request] if args.key?(:request)
        end
      end
      
      # Request message for MigrationService.BatchMigrateResources.
      class GoogleCloudAiplatformV1BatchMigrateResourcesRequest
        include Google::Apis::Core::Hashable
      
        # Required. The request messages specifying the resources to migrate. They must
        # be in the same location as the destination. Up to 50 resources can be migrated
        # in one batch.
        # Corresponds to the JSON property `migrateResourceRequests`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1MigrateResourceRequest>]
        attr_accessor :migrate_resource_requests
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @migrate_resource_requests = args[:migrate_resource_requests] if args.key?(:migrate_resource_requests)
        end
      end
      
      # Response message for MigrationService.BatchMigrateResources.
      class GoogleCloudAiplatformV1BatchMigrateResourcesResponse
        include Google::Apis::Core::Hashable
      
        # Successfully migrated resources.
        # Corresponds to the JSON property `migrateResourceResponses`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1MigrateResourceResponse>]
        attr_accessor :migrate_resource_responses
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @migrate_resource_responses = args[:migrate_resource_responses] if args.key?(:migrate_resource_responses)
        end
      end
      
      # A job that uses a Model to produce predictions on multiple input instances. If
      # predictions for significant portion of the instances fail, the job may finish
      # without attempting predictions for all remaining instances.
      class GoogleCloudAiplatformV1BatchPredictionJob
        include Google::Apis::Core::Hashable
      
        # Success and error statistics of processing multiple entities (for example,
        # DataItems or structured data rows) in batch.
        # Corresponds to the JSON property `completionStats`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CompletionStats]
        attr_accessor :completion_stats
      
        # Output only. Time when the BatchPredictionJob was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # A description of resources that are used for performing batch operations, are
        # dedicated to a Model, and need manual configuration.
        # Corresponds to the JSON property `dedicatedResources`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BatchDedicatedResources]
        attr_accessor :dedicated_resources
      
        # For custom-trained Models and AutoML Tabular Models, the container of the
        # DeployedModel instances will send `stderr` and `stdout` streams to Cloud
        # Logging by default. Please note that the logs incur cost, which are subject to
        # [Cloud Logging pricing](https://cloud.google.com/logging/pricing). User can
        # disable container logging by setting this flag to true.
        # Corresponds to the JSON property `disableContainerLogging`
        # @return [Boolean]
        attr_accessor :disable_container_logging
        alias_method :disable_container_logging?, :disable_container_logging
      
        # Required. The user-defined name of this BatchPredictionJob.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Represents a customer-managed encryption key spec that can be applied to a top-
        # level resource.
        # Corresponds to the JSON property `encryptionSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EncryptionSpec]
        attr_accessor :encryption_spec
      
        # Output only. Time when the BatchPredictionJob entered any of the following
        # states: `JOB_STATE_SUCCEEDED`, `JOB_STATE_FAILED`, `JOB_STATE_CANCELLED`.
        # Corresponds to the JSON property `endTime`
        # @return [String]
        attr_accessor :end_time
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `error`
        # @return [Google::Apis::AiplatformV1::GoogleRpcStatus]
        attr_accessor :error
      
        # Specification of Model explanation.
        # Corresponds to the JSON property `explanationSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExplanationSpec]
        attr_accessor :explanation_spec
      
        # Generate explanation with the batch prediction results. When set to `true`,
        # the batch prediction output changes based on the `predictions_format` field of
        # the BatchPredictionJob.output_config object: * `bigquery`: output includes a
        # column named `explanation`. The value is a struct that conforms to the
        # Explanation object. * `jsonl`: The JSON objects on each line include an
        # additional entry keyed `explanation`. The value of the entry is a JSON object
        # that conforms to the Explanation object. * `csv`: Generating explanations for
        # CSV format is not supported. If this field is set to true, either the Model.
        # explanation_spec or explanation_spec must be populated.
        # Corresponds to the JSON property `generateExplanation`
        # @return [Boolean]
        attr_accessor :generate_explanation
        alias_method :generate_explanation?, :generate_explanation
      
        # Configures the input to BatchPredictionJob. See Model.
        # supported_input_storage_formats for Model's supported input formats, and how
        # instances should be expressed via any of them.
        # Corresponds to the JSON property `inputConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BatchPredictionJobInputConfig]
        attr_accessor :input_config
      
        # Configuration defining how to transform batch prediction input instances to
        # the instances that the Model accepts.
        # Corresponds to the JSON property `instanceConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BatchPredictionJobInstanceConfig]
        attr_accessor :instance_config
      
        # The labels with user-defined metadata to organize BatchPredictionJobs. Label
        # keys and values can be no longer than 64 characters (Unicode codepoints), can
        # only contain lowercase letters, numeric characters, underscores and dashes.
        # International characters are allowed. See https://goo.gl/xmQnxf for more
        # information and examples of labels.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Manual batch tuning parameters.
        # Corresponds to the JSON property `manualBatchTuningParameters`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ManualBatchTuningParameters]
        attr_accessor :manual_batch_tuning_parameters
      
        # The name of the Model resource that produces the predictions via this job,
        # must share the same ancestor Location. Starting this job has no impact on any
        # existing deployments of the Model and their resources. Exactly one of model
        # and unmanaged_container_model must be set. The model resource name may contain
        # version id or version alias to specify the version. Example: `projects/`
        # project`/locations/`location`/models/`model`@2` or `projects/`project`/
        # locations/`location`/models/`model`@golden` if no version is specified, the
        # default version will be deployed. The model resource could also be a publisher
        # model. Example: `publishers/`publisher`/models/`model`` or `projects/`project`/
        # locations/`location`/publishers/`publisher`/models/`model``
        # Corresponds to the JSON property `model`
        # @return [String]
        attr_accessor :model
      
        # The parameters that govern the predictions. The schema of the parameters may
        # be specified via the Model's PredictSchemata's parameters_schema_uri.
        # Corresponds to the JSON property `modelParameters`
        # @return [Object]
        attr_accessor :model_parameters
      
        # Output only. The version ID of the Model that produces the predictions via
        # this job.
        # Corresponds to the JSON property `modelVersionId`
        # @return [String]
        attr_accessor :model_version_id
      
        # Output only. Resource name of the BatchPredictionJob.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Configures the output of BatchPredictionJob. See Model.
        # supported_output_storage_formats for supported output formats, and how
        # predictions are expressed via any of them.
        # Corresponds to the JSON property `outputConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BatchPredictionJobOutputConfig]
        attr_accessor :output_config
      
        # Further describes this job's output. Supplements output_config.
        # Corresponds to the JSON property `outputInfo`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BatchPredictionJobOutputInfo]
        attr_accessor :output_info
      
        # Output only. Partial failures encountered. For example, single files that can'
        # t be read. This field never exceeds 20 entries. Status details fields contain
        # standard Google Cloud error details.
        # Corresponds to the JSON property `partialFailures`
        # @return [Array<Google::Apis::AiplatformV1::GoogleRpcStatus>]
        attr_accessor :partial_failures
      
        # Statistics information about resource consumption.
        # Corresponds to the JSON property `resourcesConsumed`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ResourcesConsumed]
        attr_accessor :resources_consumed
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzi`
        # @return [Boolean]
        attr_accessor :satisfies_pzi
        alias_method :satisfies_pzi?, :satisfies_pzi
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzs`
        # @return [Boolean]
        attr_accessor :satisfies_pzs
        alias_method :satisfies_pzs?, :satisfies_pzs
      
        # The service account that the DeployedModel's container runs as. If not
        # specified, a system generated one will be used, which has minimal permissions
        # and the custom container, if used, may not have enough permission to access
        # other Google Cloud resources. Users deploying the Model must have the `iam.
        # serviceAccounts.actAs` permission on this service account.
        # Corresponds to the JSON property `serviceAccount`
        # @return [String]
        attr_accessor :service_account
      
        # Output only. Time when the BatchPredictionJob for the first time entered the `
        # JOB_STATE_RUNNING` state.
        # Corresponds to the JSON property `startTime`
        # @return [String]
        attr_accessor :start_time
      
        # Output only. The detailed state of the job.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        # Contains model information necessary to perform batch prediction without
        # requiring a full model import.
        # Corresponds to the JSON property `unmanagedContainerModel`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1UnmanagedContainerModel]
        attr_accessor :unmanaged_container_model
      
        # Output only. Time when the BatchPredictionJob was most recently updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @completion_stats = args[:completion_stats] if args.key?(:completion_stats)
          @create_time = args[:create_time] if args.key?(:create_time)
          @dedicated_resources = args[:dedicated_resources] if args.key?(:dedicated_resources)
          @disable_container_logging = args[:disable_container_logging] if args.key?(:disable_container_logging)
          @display_name = args[:display_name] if args.key?(:display_name)
          @encryption_spec = args[:encryption_spec] if args.key?(:encryption_spec)
          @end_time = args[:end_time] if args.key?(:end_time)
          @error = args[:error] if args.key?(:error)
          @explanation_spec = args[:explanation_spec] if args.key?(:explanation_spec)
          @generate_explanation = args[:generate_explanation] if args.key?(:generate_explanation)
          @input_config = args[:input_config] if args.key?(:input_config)
          @instance_config = args[:instance_config] if args.key?(:instance_config)
          @labels = args[:labels] if args.key?(:labels)
          @manual_batch_tuning_parameters = args[:manual_batch_tuning_parameters] if args.key?(:manual_batch_tuning_parameters)
          @model = args[:model] if args.key?(:model)
          @model_parameters = args[:model_parameters] if args.key?(:model_parameters)
          @model_version_id = args[:model_version_id] if args.key?(:model_version_id)
          @name = args[:name] if args.key?(:name)
          @output_config = args[:output_config] if args.key?(:output_config)
          @output_info = args[:output_info] if args.key?(:output_info)
          @partial_failures = args[:partial_failures] if args.key?(:partial_failures)
          @resources_consumed = args[:resources_consumed] if args.key?(:resources_consumed)
          @satisfies_pzi = args[:satisfies_pzi] if args.key?(:satisfies_pzi)
          @satisfies_pzs = args[:satisfies_pzs] if args.key?(:satisfies_pzs)
          @service_account = args[:service_account] if args.key?(:service_account)
          @start_time = args[:start_time] if args.key?(:start_time)
          @state = args[:state] if args.key?(:state)
          @unmanaged_container_model = args[:unmanaged_container_model] if args.key?(:unmanaged_container_model)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # Configures the input to BatchPredictionJob. See Model.
      # supported_input_storage_formats for Model's supported input formats, and how
      # instances should be expressed via any of them.
      class GoogleCloudAiplatformV1BatchPredictionJobInputConfig
        include Google::Apis::Core::Hashable
      
        # The BigQuery location for the input content.
        # Corresponds to the JSON property `bigquerySource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BigQuerySource]
        attr_accessor :bigquery_source
      
        # The Google Cloud Storage location for the input content.
        # Corresponds to the JSON property `gcsSource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GcsSource]
        attr_accessor :gcs_source
      
        # Required. The format in which instances are given, must be one of the Model's
        # supported_input_storage_formats.
        # Corresponds to the JSON property `instancesFormat`
        # @return [String]
        attr_accessor :instances_format
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @bigquery_source = args[:bigquery_source] if args.key?(:bigquery_source)
          @gcs_source = args[:gcs_source] if args.key?(:gcs_source)
          @instances_format = args[:instances_format] if args.key?(:instances_format)
        end
      end
      
      # Configuration defining how to transform batch prediction input instances to
      # the instances that the Model accepts.
      class GoogleCloudAiplatformV1BatchPredictionJobInstanceConfig
        include Google::Apis::Core::Hashable
      
        # Fields that will be excluded in the prediction instance that is sent to the
        # Model. Excluded will be attached to the batch prediction output if key_field
        # is not specified. When excluded_fields is populated, included_fields must be
        # empty. The input must be JSONL with objects at each line, BigQuery or TfRecord.
        # Corresponds to the JSON property `excludedFields`
        # @return [Array<String>]
        attr_accessor :excluded_fields
      
        # Fields that will be included in the prediction instance that is sent to the
        # Model. If instance_type is `array`, the order of field names in
        # included_fields also determines the order of the values in the array. When
        # included_fields is populated, excluded_fields must be empty. The input must be
        # JSONL with objects at each line, BigQuery or TfRecord.
        # Corresponds to the JSON property `includedFields`
        # @return [Array<String>]
        attr_accessor :included_fields
      
        # The format of the instance that the Model accepts. Vertex AI will convert
        # compatible batch prediction input instance formats to the specified format.
        # Supported values are: * `object`: Each input is converted to JSON object
        # format. * For `bigquery`, each row is converted to an object. * For `jsonl`,
        # each line of the JSONL input must be an object. * Does not apply to `csv`, `
        # file-list`, `tf-record`, or `tf-record-gzip`. * `array`: Each input is
        # converted to JSON array format. * For `bigquery`, each row is converted to an
        # array. The order of columns is determined by the BigQuery column order, unless
        # included_fields is populated. included_fields must be populated for specifying
        # field orders. * For `jsonl`, if each line of the JSONL input is an object,
        # included_fields must be populated for specifying field orders. * Does not
        # apply to `csv`, `file-list`, `tf-record`, or `tf-record-gzip`. If not
        # specified, Vertex AI converts the batch prediction input as follows: * For `
        # bigquery` and `csv`, the behavior is the same as `array`. The order of columns
        # is the same as defined in the file or table, unless included_fields is
        # populated. * For `jsonl`, the prediction instance format is determined by each
        # line of the input. * For `tf-record`/`tf-record-gzip`, each record will be
        # converted to an object in the format of ``"b64": ``, where `` is the Base64-
        # encoded string of the content of the record. * For `file-list`, each file in
        # the list will be converted to an object in the format of ``"b64": ``, where ``
        # is the Base64-encoded string of the content of the file.
        # Corresponds to the JSON property `instanceType`
        # @return [String]
        attr_accessor :instance_type
      
        # The name of the field that is considered as a key. The values identified by
        # the key field is not included in the transformed instances that is sent to the
        # Model. This is similar to specifying this name of the field in excluded_fields.
        # In addition, the batch prediction output will not include the instances.
        # Instead the output will only include the value of the key field, in a field
        # named `key` in the output: * For `jsonl` output format, the output will have a
        # `key` field instead of the `instance` field. * For `csv`/`bigquery` output
        # format, the output will have have a `key` column instead of the instance
        # feature columns. The input must be JSONL with objects at each line, CSV,
        # BigQuery or TfRecord.
        # Corresponds to the JSON property `keyField`
        # @return [String]
        attr_accessor :key_field
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @excluded_fields = args[:excluded_fields] if args.key?(:excluded_fields)
          @included_fields = args[:included_fields] if args.key?(:included_fields)
          @instance_type = args[:instance_type] if args.key?(:instance_type)
          @key_field = args[:key_field] if args.key?(:key_field)
        end
      end
      
      # Configures the output of BatchPredictionJob. See Model.
      # supported_output_storage_formats for supported output formats, and how
      # predictions are expressed via any of them.
      class GoogleCloudAiplatformV1BatchPredictionJobOutputConfig
        include Google::Apis::Core::Hashable
      
        # The BigQuery location for the output content.
        # Corresponds to the JSON property `bigqueryDestination`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BigQueryDestination]
        attr_accessor :bigquery_destination
      
        # The Google Cloud Storage location where the output is to be written to.
        # Corresponds to the JSON property `gcsDestination`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GcsDestination]
        attr_accessor :gcs_destination
      
        # Required. The format in which Vertex AI gives the predictions, must be one of
        # the Model's supported_output_storage_formats.
        # Corresponds to the JSON property `predictionsFormat`
        # @return [String]
        attr_accessor :predictions_format
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @bigquery_destination = args[:bigquery_destination] if args.key?(:bigquery_destination)
          @gcs_destination = args[:gcs_destination] if args.key?(:gcs_destination)
          @predictions_format = args[:predictions_format] if args.key?(:predictions_format)
        end
      end
      
      # Further describes this job's output. Supplements output_config.
      class GoogleCloudAiplatformV1BatchPredictionJobOutputInfo
        include Google::Apis::Core::Hashable
      
        # Output only. The path of the BigQuery dataset created, in `bq://projectId.
        # bqDatasetId` format, into which the prediction output is written.
        # Corresponds to the JSON property `bigqueryOutputDataset`
        # @return [String]
        attr_accessor :bigquery_output_dataset
      
        # Output only. The name of the BigQuery table created, in `predictions_` format,
        # into which the prediction output is written. Can be used by UI to generate the
        # BigQuery output path, for example.
        # Corresponds to the JSON property `bigqueryOutputTable`
        # @return [String]
        attr_accessor :bigquery_output_table
      
        # Output only. The full path of the Cloud Storage directory created, into which
        # the prediction output is written.
        # Corresponds to the JSON property `gcsOutputDirectory`
        # @return [String]
        attr_accessor :gcs_output_directory
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @bigquery_output_dataset = args[:bigquery_output_dataset] if args.key?(:bigquery_output_dataset)
          @bigquery_output_table = args[:bigquery_output_table] if args.key?(:bigquery_output_table)
          @gcs_output_directory = args[:gcs_output_directory] if args.key?(:gcs_output_directory)
        end
      end
      
      # Details of operations that batch reads Feature values.
      class GoogleCloudAiplatformV1BatchReadFeatureValuesOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Request message for FeaturestoreService.BatchReadFeatureValues.
      class GoogleCloudAiplatformV1BatchReadFeatureValuesRequest
        include Google::Apis::Core::Hashable
      
        # The BigQuery location for the input content.
        # Corresponds to the JSON property `bigqueryReadInstances`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BigQuerySource]
        attr_accessor :bigquery_read_instances
      
        # The storage details for CSV input content.
        # Corresponds to the JSON property `csvReadInstances`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CsvSource]
        attr_accessor :csv_read_instances
      
        # A destination location for Feature values and format.
        # Corresponds to the JSON property `destination`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureValueDestination]
        attr_accessor :destination
      
        # Required. Specifies EntityType grouping Features to read values of and
        # settings.
        # Corresponds to the JSON property `entityTypeSpecs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BatchReadFeatureValuesRequestEntityTypeSpec>]
        attr_accessor :entity_type_specs
      
        # When not empty, the specified fields in the *_read_instances source will be
        # joined as-is in the output, in addition to those fields from the Featurestore
        # Entity. For BigQuery source, the type of the pass-through values will be
        # automatically inferred. For CSV source, the pass-through values will be passed
        # as opaque bytes.
        # Corresponds to the JSON property `passThroughFields`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BatchReadFeatureValuesRequestPassThroughField>]
        attr_accessor :pass_through_fields
      
        # Optional. Excludes Feature values with feature generation timestamp before
        # this timestamp. If not set, retrieve oldest values kept in Feature Store.
        # Timestamp, if present, must not have higher than millisecond precision.
        # Corresponds to the JSON property `startTime`
        # @return [String]
        attr_accessor :start_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @bigquery_read_instances = args[:bigquery_read_instances] if args.key?(:bigquery_read_instances)
          @csv_read_instances = args[:csv_read_instances] if args.key?(:csv_read_instances)
          @destination = args[:destination] if args.key?(:destination)
          @entity_type_specs = args[:entity_type_specs] if args.key?(:entity_type_specs)
          @pass_through_fields = args[:pass_through_fields] if args.key?(:pass_through_fields)
          @start_time = args[:start_time] if args.key?(:start_time)
        end
      end
      
      # Selects Features of an EntityType to read values of and specifies read
      # settings.
      class GoogleCloudAiplatformV1BatchReadFeatureValuesRequestEntityTypeSpec
        include Google::Apis::Core::Hashable
      
        # Required. ID of the EntityType to select Features. The EntityType id is the
        # entity_type_id specified during EntityType creation.
        # Corresponds to the JSON property `entityTypeId`
        # @return [String]
        attr_accessor :entity_type_id
      
        # Selector for Features of an EntityType.
        # Corresponds to the JSON property `featureSelector`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureSelector]
        attr_accessor :feature_selector
      
        # Per-Feature settings for the batch read.
        # Corresponds to the JSON property `settings`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DestinationFeatureSetting>]
        attr_accessor :settings
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entity_type_id = args[:entity_type_id] if args.key?(:entity_type_id)
          @feature_selector = args[:feature_selector] if args.key?(:feature_selector)
          @settings = args[:settings] if args.key?(:settings)
        end
      end
      
      # Describe pass-through fields in read_instance source.
      class GoogleCloudAiplatformV1BatchReadFeatureValuesRequestPassThroughField
        include Google::Apis::Core::Hashable
      
        # Required. The name of the field in the CSV header or the name of the column in
        # BigQuery table. The naming restriction is the same as Feature.name.
        # Corresponds to the JSON property `fieldName`
        # @return [String]
        attr_accessor :field_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @field_name = args[:field_name] if args.key?(:field_name)
        end
      end
      
      # Response message for FeaturestoreService.BatchReadFeatureValues.
      class GoogleCloudAiplatformV1BatchReadFeatureValuesResponse
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Response message for TensorboardService.BatchReadTensorboardTimeSeriesData.
      class GoogleCloudAiplatformV1BatchReadTensorboardTimeSeriesDataResponse
        include Google::Apis::Core::Hashable
      
        # The returned time series data.
        # Corresponds to the JSON property `timeSeriesData`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TimeSeriesData>]
        attr_accessor :time_series_data
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @time_series_data = args[:time_series_data] if args.key?(:time_series_data)
        end
      end
      
      # The BigQuery location for the output content.
      class GoogleCloudAiplatformV1BigQueryDestination
        include Google::Apis::Core::Hashable
      
        # Required. BigQuery URI to a project or table, up to 2000 characters long. When
        # only the project is specified, the Dataset and Table is created. When the full
        # table reference is specified, the Dataset must exist and table must not exist.
        # Accepted forms: * BigQuery path. For example: `bq://projectId` or `bq://
        # projectId.bqDatasetId` or `bq://projectId.bqDatasetId.bqTableId`.
        # Corresponds to the JSON property `outputUri`
        # @return [String]
        attr_accessor :output_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @output_uri = args[:output_uri] if args.key?(:output_uri)
        end
      end
      
      # The request set for the evaluation run.
      class GoogleCloudAiplatformV1BigQueryRequestSet
        include Google::Apis::Core::Hashable
      
        # Optional. Map of candidate name to candidate response column name. The column
        # will be in evaluation_item.CandidateResponse format.
        # Corresponds to the JSON property `candidateResponseColumns`
        # @return [Hash<String,String>]
        attr_accessor :candidate_response_columns
      
        # Optional. The name of the column that contains the requests to evaluate. This
        # will be in evaluation_item.EvalPrompt format.
        # Corresponds to the JSON property `promptColumn`
        # @return [String]
        attr_accessor :prompt_column
      
        # Optional. The name of the column that contains the rubrics. This is in
        # evaluation_rubric.RubricGroup format.
        # Corresponds to the JSON property `rubricsColumn`
        # @return [String]
        attr_accessor :rubrics_column
      
        # The sampling config.
        # Corresponds to the JSON property `samplingConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BigQueryRequestSetSamplingConfig]
        attr_accessor :sampling_config
      
        # Required. The URI of a BigQuery table. e.g. bq://projectId.bqDatasetId.
        # bqTableId
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @candidate_response_columns = args[:candidate_response_columns] if args.key?(:candidate_response_columns)
          @prompt_column = args[:prompt_column] if args.key?(:prompt_column)
          @rubrics_column = args[:rubrics_column] if args.key?(:rubrics_column)
          @sampling_config = args[:sampling_config] if args.key?(:sampling_config)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # The sampling config.
      class GoogleCloudAiplatformV1BigQueryRequestSetSamplingConfig
        include Google::Apis::Core::Hashable
      
        # Optional. The total number of logged data to import. If available data is less
        # than the sampling count, all data will be imported. Default is 100.
        # Corresponds to the JSON property `samplingCount`
        # @return [Fixnum]
        attr_accessor :sampling_count
      
        # Optional. How long to wait before sampling data from the BigQuery table. If
        # not specified, defaults to 0.
        # Corresponds to the JSON property `samplingDuration`
        # @return [String]
        attr_accessor :sampling_duration
      
        # Optional. The sampling method to use.
        # Corresponds to the JSON property `samplingMethod`
        # @return [String]
        attr_accessor :sampling_method
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @sampling_count = args[:sampling_count] if args.key?(:sampling_count)
          @sampling_duration = args[:sampling_duration] if args.key?(:sampling_duration)
          @sampling_method = args[:sampling_method] if args.key?(:sampling_method)
        end
      end
      
      # The BigQuery location for the input content.
      class GoogleCloudAiplatformV1BigQuerySource
        include Google::Apis::Core::Hashable
      
        # Required. BigQuery URI to a table, up to 2000 characters long. Accepted forms:
        # * BigQuery path. For example: `bq://projectId.bqDatasetId.bqTableId`.
        # Corresponds to the JSON property `inputUri`
        # @return [String]
        attr_accessor :input_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @input_uri = args[:input_uri] if args.key?(:input_uri)
        end
      end
      
      # Input for bleu metric.
      class GoogleCloudAiplatformV1BleuInput
        include Google::Apis::Core::Hashable
      
        # Required. Repeated bleu instances.
        # Corresponds to the JSON property `instances`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BleuInstance>]
        attr_accessor :instances
      
        # Spec for bleu score metric - calculates the precision of n-grams in the
        # prediction as compared to reference - returns a score ranging between 0 to 1.
        # Corresponds to the JSON property `metricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BleuSpec]
        attr_accessor :metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instances = args[:instances] if args.key?(:instances)
          @metric_spec = args[:metric_spec] if args.key?(:metric_spec)
        end
      end
      
      # Spec for bleu instance.
      class GoogleCloudAiplatformV1BleuInstance
        include Google::Apis::Core::Hashable
      
        # Required. Output of the evaluated model.
        # Corresponds to the JSON property `prediction`
        # @return [String]
        attr_accessor :prediction
      
        # Required. Ground truth used to compare against the prediction.
        # Corresponds to the JSON property `reference`
        # @return [String]
        attr_accessor :reference
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @prediction = args[:prediction] if args.key?(:prediction)
          @reference = args[:reference] if args.key?(:reference)
        end
      end
      
      # Bleu metric value for an instance.
      class GoogleCloudAiplatformV1BleuMetricValue
        include Google::Apis::Core::Hashable
      
        # Output only. Bleu score.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # Results for bleu metric.
      class GoogleCloudAiplatformV1BleuResults
        include Google::Apis::Core::Hashable
      
        # Output only. Bleu metric values.
        # Corresponds to the JSON property `bleuMetricValues`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BleuMetricValue>]
        attr_accessor :bleu_metric_values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @bleu_metric_values = args[:bleu_metric_values] if args.key?(:bleu_metric_values)
        end
      end
      
      # Spec for bleu score metric - calculates the precision of n-grams in the
      # prediction as compared to reference - returns a score ranging between 0 to 1.
      class GoogleCloudAiplatformV1BleuSpec
        include Google::Apis::Core::Hashable
      
        # Optional. Whether to use_effective_order to compute bleu score.
        # Corresponds to the JSON property `useEffectiveOrder`
        # @return [Boolean]
        attr_accessor :use_effective_order
        alias_method :use_effective_order?, :use_effective_order
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @use_effective_order = args[:use_effective_order] if args.key?(:use_effective_order)
        end
      end
      
      # Content blob.
      class GoogleCloudAiplatformV1Blob
        include Google::Apis::Core::Hashable
      
        # Required. Raw bytes.
        # Corresponds to the JSON property `data`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :data
      
        # Optional. Display name of the blob. Used to provide a label or filename to
        # distinguish blobs. This field is only returned in PromptMessage for prompt
        # management. It is currently used in the Gemini GenerateContent calls only when
        # server side tools (code_execution, google_search, and url_context) are enabled.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Required. The IANA standard MIME type of the source data.
        # Corresponds to the JSON property `mimeType`
        # @return [String]
        attr_accessor :mime_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @data = args[:data] if args.key?(:data)
          @display_name = args[:display_name] if args.key?(:display_name)
          @mime_type = args[:mime_type] if args.key?(:mime_type)
        end
      end
      
      # Config for blur baseline. When enabled, a linear path from the maximally
      # blurred image to the input image is created. Using a blurred baseline instead
      # of zero (black image) is motivated by the BlurIG approach explained here:
      # https://arxiv.org/abs/2004.03383
      class GoogleCloudAiplatformV1BlurBaselineConfig
        include Google::Apis::Core::Hashable
      
        # The standard deviation of the blur kernel for the blurred baseline. The same
        # blurring parameter is used for both the height and the width dimension. If not
        # set, the method defaults to the zero (i.e. black for images) baseline.
        # Corresponds to the JSON property `maxBlurSigma`
        # @return [Float]
        attr_accessor :max_blur_sigma
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @max_blur_sigma = args[:max_blur_sigma] if args.key?(:max_blur_sigma)
        end
      end
      
      # A list of boolean values.
      class GoogleCloudAiplatformV1BoolArray
        include Google::Apis::Core::Hashable
      
        # A list of bool values.
        # Corresponds to the JSON property `values`
        # @return [Array<Boolean>]
        attr_accessor :values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @values = args[:values] if args.key?(:values)
        end
      end
      
      # Config of GenAI caching features. This is a singleton resource.
      class GoogleCloudAiplatformV1CacheConfig
        include Google::Apis::Core::Hashable
      
        # If set to true, disables GenAI caching. Otherwise caching is enabled.
        # Corresponds to the JSON property `disableCache`
        # @return [Boolean]
        attr_accessor :disable_cache
        alias_method :disable_cache?, :disable_cache
      
        # Identifier. Name of the cache config. Format: - `projects/`project`/
        # cacheConfig`.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @disable_cache = args[:disable_cache] if args.key?(:disable_cache)
          @name = args[:name] if args.key?(:name)
        end
      end
      
      # A resource used in LLM queries for users to explicitly specify what to cache
      # and how to cache.
      class GoogleCloudAiplatformV1CachedContent
        include Google::Apis::Core::Hashable
      
        # Optional. Input only. Immutable. The content to cache
        # Corresponds to the JSON property `contents`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Content>]
        attr_accessor :contents
      
        # Output only. Creation time of the cache entry.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Optional. Immutable. The user-generated meaningful display name of the cached
        # content.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Represents a customer-managed encryption key spec that can be applied to a top-
        # level resource.
        # Corresponds to the JSON property `encryptionSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EncryptionSpec]
        attr_accessor :encryption_spec
      
        # Timestamp of when this resource is considered expired. This is *always*
        # provided on output, regardless of what was sent on input.
        # Corresponds to the JSON property `expireTime`
        # @return [String]
        attr_accessor :expire_time
      
        # Immutable. The name of the `Model` to use for cached content. Currently, only
        # the published Gemini base models are supported, in form of projects/`PROJECT`/
        # locations/`LOCATION`/publishers/google/models/`MODEL`
        # Corresponds to the JSON property `model`
        # @return [String]
        attr_accessor :model
      
        # Immutable. Identifier. The server-generated resource name of the cached
        # content Format: projects/`project`/locations/`location`/cachedContents/`
        # cached_content`
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # The base structured datatype containing multi-part content of a message. A `
        # Content` includes a `role` field designating the producer of the `Content` and
        # a `parts` field containing multi-part data that contains the content of the
        # message turn.
        # Corresponds to the JSON property `systemInstruction`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Content]
        attr_accessor :system_instruction
      
        # Tool config. This config is shared for all tools provided in the request.
        # Corresponds to the JSON property `toolConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ToolConfig]
        attr_accessor :tool_config
      
        # Optional. Input only. Immutable. A list of `Tools` the model may use to
        # generate the next response
        # Corresponds to the JSON property `tools`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Tool>]
        attr_accessor :tools
      
        # Input only. The TTL for this resource. The expiration time is computed: now +
        # TTL.
        # Corresponds to the JSON property `ttl`
        # @return [String]
        attr_accessor :ttl
      
        # Output only. When the cache entry was last updated in UTC time.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        # Metadata on the usage of the cached content.
        # Corresponds to the JSON property `usageMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CachedContentUsageMetadata]
        attr_accessor :usage_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @contents = args[:contents] if args.key?(:contents)
          @create_time = args[:create_time] if args.key?(:create_time)
          @display_name = args[:display_name] if args.key?(:display_name)
          @encryption_spec = args[:encryption_spec] if args.key?(:encryption_spec)
          @expire_time = args[:expire_time] if args.key?(:expire_time)
          @model = args[:model] if args.key?(:model)
          @name = args[:name] if args.key?(:name)
          @system_instruction = args[:system_instruction] if args.key?(:system_instruction)
          @tool_config = args[:tool_config] if args.key?(:tool_config)
          @tools = args[:tools] if args.key?(:tools)
          @ttl = args[:ttl] if args.key?(:ttl)
          @update_time = args[:update_time] if args.key?(:update_time)
          @usage_metadata = args[:usage_metadata] if args.key?(:usage_metadata)
        end
      end
      
      # Metadata on the usage of the cached content.
      class GoogleCloudAiplatformV1CachedContentUsageMetadata
        include Google::Apis::Core::Hashable
      
        # Duration of audio in seconds.
        # Corresponds to the JSON property `audioDurationSeconds`
        # @return [Fixnum]
        attr_accessor :audio_duration_seconds
      
        # Number of images.
        # Corresponds to the JSON property `imageCount`
        # @return [Fixnum]
        attr_accessor :image_count
      
        # Number of text characters.
        # Corresponds to the JSON property `textCount`
        # @return [Fixnum]
        attr_accessor :text_count
      
        # Total number of tokens that the cached content consumes.
        # Corresponds to the JSON property `totalTokenCount`
        # @return [Fixnum]
        attr_accessor :total_token_count
      
        # Duration of video in seconds.
        # Corresponds to the JSON property `videoDurationSeconds`
        # @return [Fixnum]
        attr_accessor :video_duration_seconds
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @audio_duration_seconds = args[:audio_duration_seconds] if args.key?(:audio_duration_seconds)
          @image_count = args[:image_count] if args.key?(:image_count)
          @text_count = args[:text_count] if args.key?(:text_count)
          @total_token_count = args[:total_token_count] if args.key?(:total_token_count)
          @video_duration_seconds = args[:video_duration_seconds] if args.key?(:video_duration_seconds)
        end
      end
      
      # Request message for JobService.CancelBatchPredictionJob.
      class GoogleCloudAiplatformV1CancelBatchPredictionJobRequest
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Request message for JobService.CancelCustomJob.
      class GoogleCloudAiplatformV1CancelCustomJobRequest
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Request message for JobService.CancelDataLabelingJob.
      class GoogleCloudAiplatformV1CancelDataLabelingJobRequest
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Request message for EvaluationManagementService.CancelEvaluationRun.
      class GoogleCloudAiplatformV1CancelEvaluationRunRequest
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Request message for JobService.CancelHyperparameterTuningJob.
      class GoogleCloudAiplatformV1CancelHyperparameterTuningJobRequest
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Request message for JobService.CancelNasJob.
      class GoogleCloudAiplatformV1CancelNasJobRequest
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Request message for PipelineService.CancelPipelineJob.
      class GoogleCloudAiplatformV1CancelPipelineJobRequest
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Request message for PipelineService.CancelTrainingPipeline.
      class GoogleCloudAiplatformV1CancelTrainingPipelineRequest
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Request message for GenAiTuningService.CancelTuningJob.
      class GoogleCloudAiplatformV1CancelTuningJobRequest
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # A response candidate generated from the model.
      class GoogleCloudAiplatformV1Candidate
        include Google::Apis::Core::Hashable
      
        # Output only. Average log probability score of the candidate.
        # Corresponds to the JSON property `avgLogprobs`
        # @return [Float]
        attr_accessor :avg_logprobs
      
        # A collection of source attributions for a piece of content.
        # Corresponds to the JSON property `citationMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CitationMetadata]
        attr_accessor :citation_metadata
      
        # The base structured datatype containing multi-part content of a message. A `
        # Content` includes a `role` field designating the producer of the `Content` and
        # a `parts` field containing multi-part data that contains the content of the
        # message turn.
        # Corresponds to the JSON property `content`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Content]
        attr_accessor :content
      
        # Output only. Describes the reason the mode stopped generating tokens in more
        # detail. This is only filled when `finish_reason` is set.
        # Corresponds to the JSON property `finishMessage`
        # @return [String]
        attr_accessor :finish_message
      
        # Output only. The reason why the model stopped generating tokens. If empty, the
        # model has not stopped generating the tokens.
        # Corresponds to the JSON property `finishReason`
        # @return [String]
        attr_accessor :finish_reason
      
        # Metadata returned to client when grounding is enabled.
        # Corresponds to the JSON property `groundingMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GroundingMetadata]
        attr_accessor :grounding_metadata
      
        # Output only. Index of the candidate.
        # Corresponds to the JSON property `index`
        # @return [Fixnum]
        attr_accessor :index
      
        # Logprobs Result
        # Corresponds to the JSON property `logprobsResult`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1LogprobsResult]
        attr_accessor :logprobs_result
      
        # Output only. List of ratings for the safety of a response candidate. There is
        # at most one rating per category.
        # Corresponds to the JSON property `safetyRatings`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SafetyRating>]
        attr_accessor :safety_ratings
      
        # Metadata related to url context retrieval tool.
        # Corresponds to the JSON property `urlContextMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1UrlContextMetadata]
        attr_accessor :url_context_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @avg_logprobs = args[:avg_logprobs] if args.key?(:avg_logprobs)
          @citation_metadata = args[:citation_metadata] if args.key?(:citation_metadata)
          @content = args[:content] if args.key?(:content)
          @finish_message = args[:finish_message] if args.key?(:finish_message)
          @finish_reason = args[:finish_reason] if args.key?(:finish_reason)
          @grounding_metadata = args[:grounding_metadata] if args.key?(:grounding_metadata)
          @index = args[:index] if args.key?(:index)
          @logprobs_result = args[:logprobs_result] if args.key?(:logprobs_result)
          @safety_ratings = args[:safety_ratings] if args.key?(:safety_ratings)
          @url_context_metadata = args[:url_context_metadata] if args.key?(:url_context_metadata)
        end
      end
      
      # Responses from model or agent.
      class GoogleCloudAiplatformV1CandidateResponse
        include Google::Apis::Core::Hashable
      
        # Required. The name of the candidate that produced the response.
        # Corresponds to the JSON property `candidate`
        # @return [String]
        attr_accessor :candidate
      
        # Text response.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        # Fields and values that can be used to populate the response template.
        # Corresponds to the JSON property `value`
        # @return [Object]
        attr_accessor :value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @candidate = args[:candidate] if args.key?(:candidate)
          @text = args[:text] if args.key?(:text)
          @value = args[:value] if args.key?(:value)
        end
      end
      
      # Result for a single candidate.
      class GoogleCloudAiplatformV1CandidateResult
        include Google::Apis::Core::Hashable
      
        # Optional. Additional results for the metric.
        # Corresponds to the JSON property `additionalResults`
        # @return [Object]
        attr_accessor :additional_results
      
        # Required. The candidate that is being evaluated. The value is the same as the
        # candidate name in the EvaluationRequest.
        # Corresponds to the JSON property `candidate`
        # @return [String]
        attr_accessor :candidate
      
        # Optional. The explanation for the metric.
        # Corresponds to the JSON property `explanation`
        # @return [String]
        attr_accessor :explanation
      
        # Required. The metric that was evaluated.
        # Corresponds to the JSON property `metric`
        # @return [String]
        attr_accessor :metric
      
        # Optional. The rubric verdicts for the metric.
        # Corresponds to the JSON property `rubricVerdicts`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RubricVerdict>]
        attr_accessor :rubric_verdicts
      
        # Optional. The score for the metric.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @additional_results = args[:additional_results] if args.key?(:additional_results)
          @candidate = args[:candidate] if args.key?(:candidate)
          @explanation = args[:explanation] if args.key?(:explanation)
          @metric = args[:metric] if args.key?(:metric)
          @rubric_verdicts = args[:rubric_verdicts] if args.key?(:rubric_verdicts)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # This message will be placed in the metadata field of a google.longrunning.
      # Operation associated with a CheckTrialEarlyStoppingState request.
      class GoogleCloudAiplatformV1CheckTrialEarlyStoppingStateMetatdata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        # The name of the Study that the Trial belongs to.
        # Corresponds to the JSON property `study`
        # @return [String]
        attr_accessor :study
      
        # The Trial name.
        # Corresponds to the JSON property `trial`
        # @return [String]
        attr_accessor :trial
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
          @study = args[:study] if args.key?(:study)
          @trial = args[:trial] if args.key?(:trial)
        end
      end
      
      # Request message for VizierService.CheckTrialEarlyStoppingState.
      class GoogleCloudAiplatformV1CheckTrialEarlyStoppingStateRequest
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Response message for VizierService.CheckTrialEarlyStoppingState.
      class GoogleCloudAiplatformV1CheckTrialEarlyStoppingStateResponse
        include Google::Apis::Core::Hashable
      
        # True if the Trial should stop.
        # Corresponds to the JSON property `shouldStop`
        # @return [Boolean]
        attr_accessor :should_stop
        alias_method :should_stop?, :should_stop
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @should_stop = args[:should_stop] if args.key?(:should_stop)
        end
      end
      
      # Describes the machine learning model version checkpoint.
      class GoogleCloudAiplatformV1Checkpoint
        include Google::Apis::Core::Hashable
      
        # The ID of the checkpoint.
        # Corresponds to the JSON property `checkpointId`
        # @return [String]
        attr_accessor :checkpoint_id
      
        # The epoch of the checkpoint.
        # Corresponds to the JSON property `epoch`
        # @return [Fixnum]
        attr_accessor :epoch
      
        # The step of the checkpoint.
        # Corresponds to the JSON property `step`
        # @return [Fixnum]
        attr_accessor :step
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @checkpoint_id = args[:checkpoint_id] if args.key?(:checkpoint_id)
          @epoch = args[:epoch] if args.key?(:epoch)
          @step = args[:step] if args.key?(:step)
        end
      end
      
      # Source attributions for content.
      class GoogleCloudAiplatformV1Citation
        include Google::Apis::Core::Hashable
      
        # Output only. End index into the content.
        # Corresponds to the JSON property `endIndex`
        # @return [Fixnum]
        attr_accessor :end_index
      
        # Output only. License of the attribution.
        # Corresponds to the JSON property `license`
        # @return [String]
        attr_accessor :license
      
        # Represents a whole or partial calendar date, such as a birthday. The time of
        # day and time zone are either specified elsewhere or are insignificant. The
        # date is relative to the Gregorian Calendar. This can represent one of the
        # following: * A full date, with non-zero year, month, and day values. * A month
        # and day, with a zero year (for example, an anniversary). * A year on its own,
        # with a zero month and a zero day. * A year and month, with a zero day (for
        # example, a credit card expiration date). Related types: * google.type.
        # TimeOfDay * google.type.DateTime * google.protobuf.Timestamp
        # Corresponds to the JSON property `publicationDate`
        # @return [Google::Apis::AiplatformV1::GoogleTypeDate]
        attr_accessor :publication_date
      
        # Output only. Start index into the content.
        # Corresponds to the JSON property `startIndex`
        # @return [Fixnum]
        attr_accessor :start_index
      
        # Output only. Title of the attribution.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        # Output only. Url reference of the attribution.
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @end_index = args[:end_index] if args.key?(:end_index)
          @license = args[:license] if args.key?(:license)
          @publication_date = args[:publication_date] if args.key?(:publication_date)
          @start_index = args[:start_index] if args.key?(:start_index)
          @title = args[:title] if args.key?(:title)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # A collection of source attributions for a piece of content.
      class GoogleCloudAiplatformV1CitationMetadata
        include Google::Apis::Core::Hashable
      
        # Output only. List of citations.
        # Corresponds to the JSON property `citations`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Citation>]
        attr_accessor :citations
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @citations = args[:citations] if args.key?(:citations)
        end
      end
      
      # Claim that is extracted from the input text and facts that support it.
      class GoogleCloudAiplatformV1Claim
        include Google::Apis::Core::Hashable
      
        # Index in the input text where the claim ends (exclusive).
        # Corresponds to the JSON property `endIndex`
        # @return [Fixnum]
        attr_accessor :end_index
      
        # Indexes of the facts supporting this claim.
        # Corresponds to the JSON property `factIndexes`
        # @return [Array<Fixnum>]
        attr_accessor :fact_indexes
      
        # Confidence score of this corroboration.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        # Index in the input text where the claim starts (inclusive).
        # Corresponds to the JSON property `startIndex`
        # @return [Fixnum]
        attr_accessor :start_index
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @end_index = args[:end_index] if args.key?(:end_index)
          @fact_indexes = args[:fact_indexes] if args.key?(:fact_indexes)
          @score = args[:score] if args.key?(:score)
          @start_index = args[:start_index] if args.key?(:start_index)
        end
      end
      
      # Configurations (e.g. inference timeout) that are applied on your endpoints.
      class GoogleCloudAiplatformV1ClientConnectionConfig
        include Google::Apis::Core::Hashable
      
        # Customizable online prediction request timeout.
        # Corresponds to the JSON property `inferenceTimeout`
        # @return [String]
        attr_accessor :inference_timeout
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @inference_timeout = args[:inference_timeout] if args.key?(:inference_timeout)
        end
      end
      
      # Result of executing the [ExecutableCode]. Only generated when using the [
      # CodeExecution] tool, and always follows a `part` containing the [
      # ExecutableCode].
      class GoogleCloudAiplatformV1CodeExecutionResult
        include Google::Apis::Core::Hashable
      
        # Required. Outcome of the code execution.
        # Corresponds to the JSON property `outcome`
        # @return [String]
        attr_accessor :outcome
      
        # Optional. Contains stdout when code execution is successful, stderr or other
        # description otherwise.
        # Corresponds to the JSON property `output`
        # @return [String]
        attr_accessor :output
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @outcome = args[:outcome] if args.key?(:outcome)
          @output = args[:output] if args.key?(:output)
        end
      end
      
      # Input for coherence metric.
      class GoogleCloudAiplatformV1CoherenceInput
        include Google::Apis::Core::Hashable
      
        # Spec for coherence instance.
        # Corresponds to the JSON property `instance`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CoherenceInstance]
        attr_accessor :instance
      
        # Spec for coherence score metric.
        # Corresponds to the JSON property `metricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CoherenceSpec]
        attr_accessor :metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instance = args[:instance] if args.key?(:instance)
          @metric_spec = args[:metric_spec] if args.key?(:metric_spec)
        end
      end
      
      # Spec for coherence instance.
      class GoogleCloudAiplatformV1CoherenceInstance
        include Google::Apis::Core::Hashable
      
        # Required. Output of the evaluated model.
        # Corresponds to the JSON property `prediction`
        # @return [String]
        attr_accessor :prediction
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @prediction = args[:prediction] if args.key?(:prediction)
        end
      end
      
      # Spec for coherence result.
      class GoogleCloudAiplatformV1CoherenceResult
        include Google::Apis::Core::Hashable
      
        # Output only. Confidence for coherence score.
        # Corresponds to the JSON property `confidence`
        # @return [Float]
        attr_accessor :confidence
      
        # Output only. Explanation for coherence score.
        # Corresponds to the JSON property `explanation`
        # @return [String]
        attr_accessor :explanation
      
        # Output only. Coherence score.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence = args[:confidence] if args.key?(:confidence)
          @explanation = args[:explanation] if args.key?(:explanation)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # Spec for coherence score metric.
      class GoogleCloudAiplatformV1CoherenceSpec
        include Google::Apis::Core::Hashable
      
        # Optional. Which version to use for evaluation.
        # Corresponds to the JSON property `version`
        # @return [Fixnum]
        attr_accessor :version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @version = args[:version] if args.key?(:version)
        end
      end
      
      # Colab image of the runtime.
      class GoogleCloudAiplatformV1ColabImage
        include Google::Apis::Core::Hashable
      
        # Output only. A human-readable description of the specified colab image release,
        # populated by the system. Example: "Python 3.10", "Latest - current Python 3.
        # 11"
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Optional. The release name of the NotebookRuntime Colab image, e.g. "py310".
        # If not specified, detault to the latest release.
        # Corresponds to the JSON property `releaseName`
        # @return [String]
        attr_accessor :release_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @description = args[:description] if args.key?(:description)
          @release_name = args[:release_name] if args.key?(:release_name)
        end
      end
      
      # Input for Comet metric.
      class GoogleCloudAiplatformV1CometInput
        include Google::Apis::Core::Hashable
      
        # Spec for Comet instance - The fields used for evaluation are dependent on the
        # comet version.
        # Corresponds to the JSON property `instance`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CometInstance]
        attr_accessor :instance
      
        # Spec for Comet metric.
        # Corresponds to the JSON property `metricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CometSpec]
        attr_accessor :metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instance = args[:instance] if args.key?(:instance)
          @metric_spec = args[:metric_spec] if args.key?(:metric_spec)
        end
      end
      
      # Spec for Comet instance - The fields used for evaluation are dependent on the
      # comet version.
      class GoogleCloudAiplatformV1CometInstance
        include Google::Apis::Core::Hashable
      
        # Required. Output of the evaluated model.
        # Corresponds to the JSON property `prediction`
        # @return [String]
        attr_accessor :prediction
      
        # Optional. Ground truth used to compare against the prediction.
        # Corresponds to the JSON property `reference`
        # @return [String]
        attr_accessor :reference
      
        # Optional. Source text in original language.
        # Corresponds to the JSON property `source`
        # @return [String]
        attr_accessor :source
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @prediction = args[:prediction] if args.key?(:prediction)
          @reference = args[:reference] if args.key?(:reference)
          @source = args[:source] if args.key?(:source)
        end
      end
      
      # Spec for Comet result - calculates the comet score for the given instance
      # using the version specified in the spec.
      class GoogleCloudAiplatformV1CometResult
        include Google::Apis::Core::Hashable
      
        # Output only. Comet score. Range depends on version.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # Spec for Comet metric.
      class GoogleCloudAiplatformV1CometSpec
        include Google::Apis::Core::Hashable
      
        # Optional. Source language in BCP-47 format.
        # Corresponds to the JSON property `sourceLanguage`
        # @return [String]
        attr_accessor :source_language
      
        # Optional. Target language in BCP-47 format. Covers both prediction and
        # reference.
        # Corresponds to the JSON property `targetLanguage`
        # @return [String]
        attr_accessor :target_language
      
        # Required. Which version to use for evaluation.
        # Corresponds to the JSON property `version`
        # @return [String]
        attr_accessor :version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @source_language = args[:source_language] if args.key?(:source_language)
          @target_language = args[:target_language] if args.key?(:target_language)
          @version = args[:version] if args.key?(:version)
        end
      end
      
      # Request message for VizierService.CompleteTrial.
      class GoogleCloudAiplatformV1CompleteTrialRequest
        include Google::Apis::Core::Hashable
      
        # A message representing a Measurement of a Trial. A Measurement contains the
        # Metrics got by executing a Trial using suggested hyperparameter values.
        # Corresponds to the JSON property `finalMeasurement`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Measurement]
        attr_accessor :final_measurement
      
        # Optional. A human readable reason why the trial was infeasible. This should
        # only be provided if `trial_infeasible` is true.
        # Corresponds to the JSON property `infeasibleReason`
        # @return [String]
        attr_accessor :infeasible_reason
      
        # Optional. True if the Trial cannot be run with the given Parameter, and
        # final_measurement will be ignored.
        # Corresponds to the JSON property `trialInfeasible`
        # @return [Boolean]
        attr_accessor :trial_infeasible
        alias_method :trial_infeasible?, :trial_infeasible
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @final_measurement = args[:final_measurement] if args.key?(:final_measurement)
          @infeasible_reason = args[:infeasible_reason] if args.key?(:infeasible_reason)
          @trial_infeasible = args[:trial_infeasible] if args.key?(:trial_infeasible)
        end
      end
      
      # Success and error statistics of processing multiple entities (for example,
      # DataItems or structured data rows) in batch.
      class GoogleCloudAiplatformV1CompletionStats
        include Google::Apis::Core::Hashable
      
        # Output only. The number of entities for which any error was encountered.
        # Corresponds to the JSON property `failedCount`
        # @return [Fixnum]
        attr_accessor :failed_count
      
        # Output only. In cases when enough errors are encountered a job, pipeline, or
        # operation may be failed as a whole. Below is the number of entities for which
        # the processing had not been finished (either in successful or failed state).
        # Set to -1 if the number is unknown (for example, the operation failed before
        # the total entity number could be collected).
        # Corresponds to the JSON property `incompleteCount`
        # @return [Fixnum]
        attr_accessor :incomplete_count
      
        # Output only. The number of entities that had been processed successfully.
        # Corresponds to the JSON property `successfulCount`
        # @return [Fixnum]
        attr_accessor :successful_count
      
        # Output only. The number of the successful forecast points that are generated
        # by the forecasting model. This is ONLY used by the forecasting batch
        # prediction.
        # Corresponds to the JSON property `successfulForecastPointCount`
        # @return [Fixnum]
        attr_accessor :successful_forecast_point_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @failed_count = args[:failed_count] if args.key?(:failed_count)
          @incomplete_count = args[:incomplete_count] if args.key?(:incomplete_count)
          @successful_count = args[:successful_count] if args.key?(:successful_count)
          @successful_forecast_point_count = args[:successful_forecast_point_count] if args.key?(:successful_forecast_point_count)
        end
      end
      
      # Request message for ComputeTokens RPC call.
      class GoogleCloudAiplatformV1ComputeTokensRequest
        include Google::Apis::Core::Hashable
      
        # Optional. Input content.
        # Corresponds to the JSON property `contents`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Content>]
        attr_accessor :contents
      
        # Optional. The instances that are the input to token computing API call. Schema
        # is identical to the prediction schema of the text model, even for the non-text
        # models, like chat models, or Codey models.
        # Corresponds to the JSON property `instances`
        # @return [Array<Object>]
        attr_accessor :instances
      
        # Optional. The name of the publisher model requested to serve the prediction.
        # Format: projects/`project`/locations/`location`/publishers/*/models/*
        # Corresponds to the JSON property `model`
        # @return [String]
        attr_accessor :model
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @contents = args[:contents] if args.key?(:contents)
          @instances = args[:instances] if args.key?(:instances)
          @model = args[:model] if args.key?(:model)
        end
      end
      
      # Response message for ComputeTokens RPC call.
      class GoogleCloudAiplatformV1ComputeTokensResponse
        include Google::Apis::Core::Hashable
      
        # Lists of tokens info from the input. A ComputeTokensRequest could have
        # multiple instances with a prompt in each instance. We also need to return
        # lists of tokens info for the request with multiple instances.
        # Corresponds to the JSON property `tokensInfo`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TokensInfo>]
        attr_accessor :tokens_info
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @tokens_info = args[:tokens_info] if args.key?(:tokens_info)
        end
      end
      
      # The Container Registry location for the container image.
      class GoogleCloudAiplatformV1ContainerRegistryDestination
        include Google::Apis::Core::Hashable
      
        # Required. Container Registry URI of a container image. Only Google Container
        # Registry and Artifact Registry are supported now. Accepted forms: * Google
        # Container Registry path. For example: `gcr.io/projectId/imageName:tag`. *
        # Artifact Registry path. For example: `us-central1-docker.pkg.dev/projectId/
        # repoName/imageName:tag`. If a tag is not specified, "latest" will be used as
        # the default tag.
        # Corresponds to the JSON property `outputUri`
        # @return [String]
        attr_accessor :output_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @output_uri = args[:output_uri] if args.key?(:output_uri)
        end
      end
      
      # The spec of a Container.
      class GoogleCloudAiplatformV1ContainerSpec
        include Google::Apis::Core::Hashable
      
        # The arguments to be passed when starting the container.
        # Corresponds to the JSON property `args`
        # @return [Array<String>]
        attr_accessor :args
      
        # The command to be invoked when the container is started. It overrides the
        # entrypoint instruction in Dockerfile when provided.
        # Corresponds to the JSON property `command`
        # @return [Array<String>]
        attr_accessor :command
      
        # Environment variables to be passed to the container. Maximum limit is 100.
        # Corresponds to the JSON property `env`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EnvVar>]
        attr_accessor :env
      
        # Required. The URI of a container image in the Container Registry that is to be
        # run on each worker replica.
        # Corresponds to the JSON property `imageUri`
        # @return [String]
        attr_accessor :image_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @args = args[:args] if args.key?(:args)
          @command = args[:command] if args.key?(:command)
          @env = args[:env] if args.key?(:env)
          @image_uri = args[:image_uri] if args.key?(:image_uri)
        end
      end
      
      # The base structured datatype containing multi-part content of a message. A `
      # Content` includes a `role` field designating the producer of the `Content` and
      # a `parts` field containing multi-part data that contains the content of the
      # message turn.
      class GoogleCloudAiplatformV1Content
        include Google::Apis::Core::Hashable
      
        # Required. Ordered `Parts` that constitute a single message. Parts may have
        # different IANA MIME types.
        # Corresponds to the JSON property `parts`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Part>]
        attr_accessor :parts
      
        # Optional. The producer of the content. Must be either 'user' or 'model'.
        # Useful to set for multi-turn conversations, otherwise can be left blank or
        # unset.
        # Corresponds to the JSON property `role`
        # @return [String]
        attr_accessor :role
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @parts = args[:parts] if args.key?(:parts)
          @role = args[:role] if args.key?(:role)
        end
      end
      
      # Map of placeholder in metric prompt template to contents of model input.
      class GoogleCloudAiplatformV1ContentMap
        include Google::Apis::Core::Hashable
      
        # Optional. Map of placeholder to contents.
        # Corresponds to the JSON property `values`
        # @return [Hash<String,Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ContentMapContents>]
        attr_accessor :values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @values = args[:values] if args.key?(:values)
        end
      end
      
      # Repeated Content type.
      class GoogleCloudAiplatformV1ContentMapContents
        include Google::Apis::Core::Hashable
      
        # Optional. Repeated contents.
        # Corresponds to the JSON property `contents`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Content>]
        attr_accessor :contents
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @contents = args[:contents] if args.key?(:contents)
        end
      end
      
      # Instance of a general context.
      class GoogleCloudAiplatformV1Context
        include Google::Apis::Core::Hashable
      
        # Output only. Timestamp when this Context was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Description of the Context
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # User provided display name of the Context. May be up to 128 Unicode characters.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # An eTag used to perform consistent read-modify-write updates. If not set, a
        # blind "overwrite" update happens.
        # Corresponds to the JSON property `etag`
        # @return [String]
        attr_accessor :etag
      
        # The labels with user-defined metadata to organize your Contexts. Label keys
        # and values can be no longer than 64 characters (Unicode codepoints), can only
        # contain lowercase letters, numeric characters, underscores and dashes.
        # International characters are allowed. No more than 64 user labels can be
        # associated with one Context (System labels are excluded).
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Properties of the Context. Top level metadata keys' heading and trailing
        # spaces will be trimmed. The size of this field should not exceed 200KB.
        # Corresponds to the JSON property `metadata`
        # @return [Hash<String,Object>]
        attr_accessor :metadata
      
        # Immutable. The resource name of the Context.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Output only. A list of resource names of Contexts that are parents of this
        # Context. A Context may have at most 10 parent_contexts.
        # Corresponds to the JSON property `parentContexts`
        # @return [Array<String>]
        attr_accessor :parent_contexts
      
        # The title of the schema describing the metadata. Schema title and version is
        # expected to be registered in earlier Create Schema calls. And both are used
        # together as unique identifiers to identify schemas within the local metadata
        # store.
        # Corresponds to the JSON property `schemaTitle`
        # @return [String]
        attr_accessor :schema_title
      
        # The version of the schema in schema_name to use. Schema title and version is
        # expected to be registered in earlier Create Schema calls. And both are used
        # together as unique identifiers to identify schemas within the local metadata
        # store.
        # Corresponds to the JSON property `schemaVersion`
        # @return [String]
        attr_accessor :schema_version
      
        # Output only. Timestamp when this Context was last updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @description = args[:description] if args.key?(:description)
          @display_name = args[:display_name] if args.key?(:display_name)
          @etag = args[:etag] if args.key?(:etag)
          @labels = args[:labels] if args.key?(:labels)
          @metadata = args[:metadata] if args.key?(:metadata)
          @name = args[:name] if args.key?(:name)
          @parent_contexts = args[:parent_contexts] if args.key?(:parent_contexts)
          @schema_title = args[:schema_title] if args.key?(:schema_title)
          @schema_version = args[:schema_version] if args.key?(:schema_version)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # Details of ModelService.CopyModel operation.
      class GoogleCloudAiplatformV1CopyModelOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Request message for ModelService.CopyModel.
      class GoogleCloudAiplatformV1CopyModelRequest
        include Google::Apis::Core::Hashable
      
        # Represents a customer-managed encryption key spec that can be applied to a top-
        # level resource.
        # Corresponds to the JSON property `encryptionSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EncryptionSpec]
        attr_accessor :encryption_spec
      
        # Optional. Copy source_model into a new Model with this ID. The ID will become
        # the final component of the model resource name. This value may be up to 63
        # characters, and valid characters are `[a-z0-9_-]`. The first character cannot
        # be a number or hyphen.
        # Corresponds to the JSON property `modelId`
        # @return [String]
        attr_accessor :model_id
      
        # Optional. Specify this field to copy source_model into this existing Model as
        # a new version. Format: `projects/`project`/locations/`location`/models/`model``
        # Corresponds to the JSON property `parentModel`
        # @return [String]
        attr_accessor :parent_model
      
        # Required. The resource name of the Model to copy. That Model must be in the
        # same Project. Format: `projects/`project`/locations/`location`/models/`model``
        # Corresponds to the JSON property `sourceModel`
        # @return [String]
        attr_accessor :source_model
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @encryption_spec = args[:encryption_spec] if args.key?(:encryption_spec)
          @model_id = args[:model_id] if args.key?(:model_id)
          @parent_model = args[:parent_model] if args.key?(:parent_model)
          @source_model = args[:source_model] if args.key?(:source_model)
        end
      end
      
      # Response message of ModelService.CopyModel operation.
      class GoogleCloudAiplatformV1CopyModelResponse
        include Google::Apis::Core::Hashable
      
        # The name of the copied Model resource. Format: `projects/`project`/locations/`
        # location`/models/`model``
        # Corresponds to the JSON property `model`
        # @return [String]
        attr_accessor :model
      
        # Output only. The version ID of the model that is copied.
        # Corresponds to the JSON property `modelVersionId`
        # @return [String]
        attr_accessor :model_version_id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @model = args[:model] if args.key?(:model)
          @model_version_id = args[:model_version_id] if args.key?(:model_version_id)
        end
      end
      
      # RagCorpus status.
      class GoogleCloudAiplatformV1CorpusStatus
        include Google::Apis::Core::Hashable
      
        # Output only. Only when the `state` field is ERROR.
        # Corresponds to the JSON property `errorStatus`
        # @return [String]
        attr_accessor :error_status
      
        # Output only. RagCorpus life state.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @error_status = args[:error_status] if args.key?(:error_status)
          @state = args[:state] if args.key?(:state)
        end
      end
      
      # Request message for CorroborateContent.
      class GoogleCloudAiplatformV1CorroborateContentRequest
        include Google::Apis::Core::Hashable
      
        # The base structured datatype containing multi-part content of a message. A `
        # Content` includes a `role` field designating the producer of the `Content` and
        # a `parts` field containing multi-part data that contains the content of the
        # message turn.
        # Corresponds to the JSON property `content`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Content]
        attr_accessor :content
      
        # Optional. Facts used to generate the text can also be used to corroborate the
        # text.
        # Corresponds to the JSON property `facts`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Fact>]
        attr_accessor :facts
      
        # Parameters that can be overrided per request.
        # Corresponds to the JSON property `parameters`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CorroborateContentRequestParameters]
        attr_accessor :parameters
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content = args[:content] if args.key?(:content)
          @facts = args[:facts] if args.key?(:facts)
          @parameters = args[:parameters] if args.key?(:parameters)
        end
      end
      
      # Parameters that can be overrided per request.
      class GoogleCloudAiplatformV1CorroborateContentRequestParameters
        include Google::Apis::Core::Hashable
      
        # Optional. Only return claims with citation score larger than the threshold.
        # Corresponds to the JSON property `citationThreshold`
        # @return [Float]
        attr_accessor :citation_threshold
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @citation_threshold = args[:citation_threshold] if args.key?(:citation_threshold)
        end
      end
      
      # Response message for CorroborateContent.
      class GoogleCloudAiplatformV1CorroborateContentResponse
        include Google::Apis::Core::Hashable
      
        # Claims that are extracted from the input content and facts that support the
        # claims.
        # Corresponds to the JSON property `claims`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Claim>]
        attr_accessor :claims
      
        # Confidence score of corroborating content. Value is [0,1] with 1 is the most
        # confidence.
        # Corresponds to the JSON property `corroborationScore`
        # @return [Float]
        attr_accessor :corroboration_score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @claims = args[:claims] if args.key?(:claims)
          @corroboration_score = args[:corroboration_score] if args.key?(:corroboration_score)
        end
      end
      
      # Request message for PredictionService.CountTokens.
      class GoogleCloudAiplatformV1CountTokensRequest
        include Google::Apis::Core::Hashable
      
        # Optional. Input content.
        # Corresponds to the JSON property `contents`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Content>]
        attr_accessor :contents
      
        # Generation config.
        # Corresponds to the JSON property `generationConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenerationConfig]
        attr_accessor :generation_config
      
        # Optional. The instances that are the input to token counting call. Schema is
        # identical to the prediction schema of the underlying model.
        # Corresponds to the JSON property `instances`
        # @return [Array<Object>]
        attr_accessor :instances
      
        # Optional. The name of the publisher model requested to serve the prediction.
        # Format: `projects/`project`/locations/`location`/publishers/*/models/*`
        # Corresponds to the JSON property `model`
        # @return [String]
        attr_accessor :model
      
        # The base structured datatype containing multi-part content of a message. A `
        # Content` includes a `role` field designating the producer of the `Content` and
        # a `parts` field containing multi-part data that contains the content of the
        # message turn.
        # Corresponds to the JSON property `systemInstruction`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Content]
        attr_accessor :system_instruction
      
        # Optional. A list of `Tools` the model may use to generate the next response. A
        # `Tool` is a piece of code that enables the system to interact with external
        # systems to perform an action, or set of actions, outside of knowledge and
        # scope of the model.
        # Corresponds to the JSON property `tools`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Tool>]
        attr_accessor :tools
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @contents = args[:contents] if args.key?(:contents)
          @generation_config = args[:generation_config] if args.key?(:generation_config)
          @instances = args[:instances] if args.key?(:instances)
          @model = args[:model] if args.key?(:model)
          @system_instruction = args[:system_instruction] if args.key?(:system_instruction)
          @tools = args[:tools] if args.key?(:tools)
        end
      end
      
      # Response message for PredictionService.CountTokens.
      class GoogleCloudAiplatformV1CountTokensResponse
        include Google::Apis::Core::Hashable
      
        # Output only. List of modalities that were processed in the request input.
        # Corresponds to the JSON property `promptTokensDetails`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModalityTokenCount>]
        attr_accessor :prompt_tokens_details
      
        # The total number of billable characters counted across all instances from the
        # request.
        # Corresponds to the JSON property `totalBillableCharacters`
        # @return [Fixnum]
        attr_accessor :total_billable_characters
      
        # The total number of tokens counted across all instances from the request.
        # Corresponds to the JSON property `totalTokens`
        # @return [Fixnum]
        attr_accessor :total_tokens
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @prompt_tokens_details = args[:prompt_tokens_details] if args.key?(:prompt_tokens_details)
          @total_billable_characters = args[:total_billable_characters] if args.key?(:total_billable_characters)
          @total_tokens = args[:total_tokens] if args.key?(:total_tokens)
        end
      end
      
      # Runtime operation information for DatasetService.CreateDataset.
      class GoogleCloudAiplatformV1CreateDatasetOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Runtime operation information for DatasetService.CreateDatasetVersion.
      class GoogleCloudAiplatformV1CreateDatasetVersionOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Runtime operation information for CreateDeploymentResourcePool method.
      class GoogleCloudAiplatformV1CreateDeploymentResourcePoolOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Request message for CreateDeploymentResourcePool method.
      class GoogleCloudAiplatformV1CreateDeploymentResourcePoolRequest
        include Google::Apis::Core::Hashable
      
        # A description of resources that can be shared by multiple DeployedModels,
        # whose underlying specification consists of a DedicatedResources.
        # Corresponds to the JSON property `deploymentResourcePool`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DeploymentResourcePool]
        attr_accessor :deployment_resource_pool
      
        # Required. The ID to use for the DeploymentResourcePool, which will become the
        # final component of the DeploymentResourcePool's resource name. The maximum
        # length is 63 characters, and valid characters are `/^[a-z]([a-z0-9-]`0,61`[a-
        # z0-9])?$/`.
        # Corresponds to the JSON property `deploymentResourcePoolId`
        # @return [String]
        attr_accessor :deployment_resource_pool_id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @deployment_resource_pool = args[:deployment_resource_pool] if args.key?(:deployment_resource_pool)
          @deployment_resource_pool_id = args[:deployment_resource_pool_id] if args.key?(:deployment_resource_pool_id)
        end
      end
      
      # Runtime operation information for EndpointService.CreateEndpoint.
      class GoogleCloudAiplatformV1CreateEndpointOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Output only. The deployment stage of the model. Only populated if this
        # CreateEndpoint request deploys a model at the same time.
        # Corresponds to the JSON property `deploymentStage`
        # @return [String]
        attr_accessor :deployment_stage
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @deployment_stage = args[:deployment_stage] if args.key?(:deployment_stage)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Details of operations that perform create EntityType.
      class GoogleCloudAiplatformV1CreateEntityTypeOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Details of operations that perform create FeatureGroup.
      class GoogleCloudAiplatformV1CreateFeatureGroupOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Details of operations that perform create FeatureOnlineStore.
      class GoogleCloudAiplatformV1CreateFeatureOnlineStoreOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Details of operations that perform create Feature.
      class GoogleCloudAiplatformV1CreateFeatureOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Request message for FeaturestoreService.CreateFeature. Request message for
      # FeatureRegistryService.CreateFeature.
      class GoogleCloudAiplatformV1CreateFeatureRequest
        include Google::Apis::Core::Hashable
      
        # Feature Metadata information. For example, color is a feature that describes
        # an apple.
        # Corresponds to the JSON property `feature`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Feature]
        attr_accessor :feature
      
        # Required. The ID to use for the Feature, which will become the final component
        # of the Feature's resource name. This value may be up to 128 characters, and
        # valid characters are `[a-z0-9_]`. The first character cannot be a number. The
        # value must be unique within an EntityType/FeatureGroup.
        # Corresponds to the JSON property `featureId`
        # @return [String]
        attr_accessor :feature_id
      
        # Required. The resource name of the EntityType or FeatureGroup to create a
        # Feature. Format for entity_type as parent: `projects/`project`/locations/`
        # location`/featurestores/`featurestore`/entityTypes/`entity_type`` Format for
        # feature_group as parent: `projects/`project`/locations/`location`/
        # featureGroups/`feature_group``
        # Corresponds to the JSON property `parent`
        # @return [String]
        attr_accessor :parent
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @feature = args[:feature] if args.key?(:feature)
          @feature_id = args[:feature_id] if args.key?(:feature_id)
          @parent = args[:parent] if args.key?(:parent)
        end
      end
      
      # Details of operations that perform create FeatureView.
      class GoogleCloudAiplatformV1CreateFeatureViewOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Details of operations that perform create Featurestore.
      class GoogleCloudAiplatformV1CreateFeaturestoreOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Runtime operation information for IndexEndpointService.CreateIndexEndpoint.
      class GoogleCloudAiplatformV1CreateIndexEndpointOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Runtime operation information for IndexService.CreateIndex.
      class GoogleCloudAiplatformV1CreateIndexOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        # Runtime operation metadata with regard to Matching Engine Index.
        # Corresponds to the JSON property `nearestNeighborSearchOperationMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NearestNeighborSearchOperationMetadata]
        attr_accessor :nearest_neighbor_search_operation_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
          @nearest_neighbor_search_operation_metadata = args[:nearest_neighbor_search_operation_metadata] if args.key?(:nearest_neighbor_search_operation_metadata)
        end
      end
      
      # Details of operations that perform MetadataService.CreateMetadataStore.
      class GoogleCloudAiplatformV1CreateMetadataStoreOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Metadata information for NotebookService.CreateNotebookExecutionJob.
      class GoogleCloudAiplatformV1CreateNotebookExecutionJobOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        # A human-readable message that shows the intermediate progress details of
        # NotebookRuntime.
        # Corresponds to the JSON property `progressMessage`
        # @return [String]
        attr_accessor :progress_message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
          @progress_message = args[:progress_message] if args.key?(:progress_message)
        end
      end
      
      # Request message for [NotebookService.CreateNotebookExecutionJob]
      class GoogleCloudAiplatformV1CreateNotebookExecutionJobRequest
        include Google::Apis::Core::Hashable
      
        # NotebookExecutionJob represents an instance of a notebook execution.
        # Corresponds to the JSON property `notebookExecutionJob`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NotebookExecutionJob]
        attr_accessor :notebook_execution_job
      
        # Optional. User specified ID for the NotebookExecutionJob.
        # Corresponds to the JSON property `notebookExecutionJobId`
        # @return [String]
        attr_accessor :notebook_execution_job_id
      
        # Required. The resource name of the Location to create the NotebookExecutionJob.
        # Format: `projects/`project`/locations/`location``
        # Corresponds to the JSON property `parent`
        # @return [String]
        attr_accessor :parent
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @notebook_execution_job = args[:notebook_execution_job] if args.key?(:notebook_execution_job)
          @notebook_execution_job_id = args[:notebook_execution_job_id] if args.key?(:notebook_execution_job_id)
          @parent = args[:parent] if args.key?(:parent)
        end
      end
      
      # Metadata information for NotebookService.CreateNotebookRuntimeTemplate.
      class GoogleCloudAiplatformV1CreateNotebookRuntimeTemplateOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Details of operations that perform create PersistentResource.
      class GoogleCloudAiplatformV1CreatePersistentResourceOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        # Progress Message for Create LRO
        # Corresponds to the JSON property `progressMessage`
        # @return [String]
        attr_accessor :progress_message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
          @progress_message = args[:progress_message] if args.key?(:progress_message)
        end
      end
      
      # Request message for PipelineService.CreatePipelineJob.
      class GoogleCloudAiplatformV1CreatePipelineJobRequest
        include Google::Apis::Core::Hashable
      
        # Required. The resource name of the Location to create the PipelineJob in.
        # Format: `projects/`project`/locations/`location``
        # Corresponds to the JSON property `parent`
        # @return [String]
        attr_accessor :parent
      
        # An instance of a machine learning PipelineJob.
        # Corresponds to the JSON property `pipelineJob`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PipelineJob]
        attr_accessor :pipeline_job
      
        # The ID to use for the PipelineJob, which will become the final component of
        # the PipelineJob name. If not provided, an ID will be automatically generated.
        # This value should be less than 128 characters, and valid characters are `/a-z-/
        # `.
        # Corresponds to the JSON property `pipelineJobId`
        # @return [String]
        attr_accessor :pipeline_job_id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @parent = args[:parent] if args.key?(:parent)
          @pipeline_job = args[:pipeline_job] if args.key?(:pipeline_job)
          @pipeline_job_id = args[:pipeline_job_id] if args.key?(:pipeline_job_id)
        end
      end
      
      # Details of operations that perform create FeatureGroup.
      class GoogleCloudAiplatformV1CreateRegistryFeatureOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Runtime operation information for SpecialistPoolService.CreateSpecialistPool.
      class GoogleCloudAiplatformV1CreateSpecialistPoolOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Details of operations that perform create Tensorboard.
      class GoogleCloudAiplatformV1CreateTensorboardOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Request message for TensorboardService.CreateTensorboardRun.
      class GoogleCloudAiplatformV1CreateTensorboardRunRequest
        include Google::Apis::Core::Hashable
      
        # Required. The resource name of the TensorboardExperiment to create the
        # TensorboardRun in. Format: `projects/`project`/locations/`location`/
        # tensorboards/`tensorboard`/experiments/`experiment``
        # Corresponds to the JSON property `parent`
        # @return [String]
        attr_accessor :parent
      
        # TensorboardRun maps to a specific execution of a training job with a given set
        # of hyperparameter values, model definition, dataset, etc
        # Corresponds to the JSON property `tensorboardRun`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TensorboardRun]
        attr_accessor :tensorboard_run
      
        # Required. The ID to use for the Tensorboard run, which becomes the final
        # component of the Tensorboard run's resource name. This value should be 1-128
        # characters, and valid characters are `/a-z-/`.
        # Corresponds to the JSON property `tensorboardRunId`
        # @return [String]
        attr_accessor :tensorboard_run_id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @parent = args[:parent] if args.key?(:parent)
          @tensorboard_run = args[:tensorboard_run] if args.key?(:tensorboard_run)
          @tensorboard_run_id = args[:tensorboard_run_id] if args.key?(:tensorboard_run_id)
        end
      end
      
      # Request message for TensorboardService.CreateTensorboardTimeSeries.
      class GoogleCloudAiplatformV1CreateTensorboardTimeSeriesRequest
        include Google::Apis::Core::Hashable
      
        # Required. The resource name of the TensorboardRun to create the
        # TensorboardTimeSeries in. Format: `projects/`project`/locations/`location`/
        # tensorboards/`tensorboard`/experiments/`experiment`/runs/`run``
        # Corresponds to the JSON property `parent`
        # @return [String]
        attr_accessor :parent
      
        # TensorboardTimeSeries maps to times series produced in training runs
        # Corresponds to the JSON property `tensorboardTimeSeries`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TensorboardTimeSeries]
        attr_accessor :tensorboard_time_series
      
        # Optional. The user specified unique ID to use for the TensorboardTimeSeries,
        # which becomes the final component of the TensorboardTimeSeries's resource name.
        # This value should match "a-z0-9`0, 127`"
        # Corresponds to the JSON property `tensorboardTimeSeriesId`
        # @return [String]
        attr_accessor :tensorboard_time_series_id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @parent = args[:parent] if args.key?(:parent)
          @tensorboard_time_series = args[:tensorboard_time_series] if args.key?(:tensorboard_time_series)
          @tensorboard_time_series_id = args[:tensorboard_time_series_id] if args.key?(:tensorboard_time_series_id)
        end
      end
      
      # The storage details for CSV output content.
      class GoogleCloudAiplatformV1CsvDestination
        include Google::Apis::Core::Hashable
      
        # The Google Cloud Storage location where the output is to be written to.
        # Corresponds to the JSON property `gcsDestination`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GcsDestination]
        attr_accessor :gcs_destination
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @gcs_destination = args[:gcs_destination] if args.key?(:gcs_destination)
        end
      end
      
      # The storage details for CSV input content.
      class GoogleCloudAiplatformV1CsvSource
        include Google::Apis::Core::Hashable
      
        # The Google Cloud Storage location for the input content.
        # Corresponds to the JSON property `gcsSource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GcsSource]
        attr_accessor :gcs_source
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @gcs_source = args[:gcs_source] if args.key?(:gcs_source)
        end
      end
      
      # Represents a job that runs custom workloads such as a Docker container or a
      # Python package. A CustomJob can have multiple worker pools and each worker
      # pool can have its own machine and input spec. A CustomJob will be cleaned up
      # once the job enters terminal state (failed or succeeded).
      class GoogleCloudAiplatformV1CustomJob
        include Google::Apis::Core::Hashable
      
        # Output only. Time when the CustomJob was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Required. The display name of the CustomJob. The name can be up to 128
        # characters long and can consist of any UTF-8 characters.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Represents a customer-managed encryption key spec that can be applied to a top-
        # level resource.
        # Corresponds to the JSON property `encryptionSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EncryptionSpec]
        attr_accessor :encryption_spec
      
        # Output only. Time when the CustomJob entered any of the following states: `
        # JOB_STATE_SUCCEEDED`, `JOB_STATE_FAILED`, `JOB_STATE_CANCELLED`.
        # Corresponds to the JSON property `endTime`
        # @return [String]
        attr_accessor :end_time
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `error`
        # @return [Google::Apis::AiplatformV1::GoogleRpcStatus]
        attr_accessor :error
      
        # Represents the spec of a CustomJob.
        # Corresponds to the JSON property `jobSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CustomJobSpec]
        attr_accessor :job_spec
      
        # The labels with user-defined metadata to organize CustomJobs. Label keys and
        # values can be no longer than 64 characters (Unicode codepoints), can only
        # contain lowercase letters, numeric characters, underscores and dashes.
        # International characters are allowed. See https://goo.gl/xmQnxf for more
        # information and examples of labels.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Output only. Resource name of a CustomJob.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzi`
        # @return [Boolean]
        attr_accessor :satisfies_pzi
        alias_method :satisfies_pzi?, :satisfies_pzi
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzs`
        # @return [Boolean]
        attr_accessor :satisfies_pzs
        alias_method :satisfies_pzs?, :satisfies_pzs
      
        # Output only. Time when the CustomJob for the first time entered the `
        # JOB_STATE_RUNNING` state.
        # Corresponds to the JSON property `startTime`
        # @return [String]
        attr_accessor :start_time
      
        # Output only. The detailed state of the job.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        # Output only. Time when the CustomJob was most recently updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        # Output only. URIs for accessing [interactive shells](https://cloud.google.com/
        # vertex-ai/docs/training/monitor-debug-interactive-shell) (one URI for each
        # training node). Only available if job_spec.enable_web_access is `true`. The
        # keys are names of each node in the training job; for example, `workerpool0-0`
        # for the primary node, `workerpool1-0` for the first node in the second worker
        # pool, and `workerpool1-1` for the second node in the second worker pool. The
        # values are the URIs for each node's interactive shell.
        # Corresponds to the JSON property `webAccessUris`
        # @return [Hash<String,String>]
        attr_accessor :web_access_uris
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @display_name = args[:display_name] if args.key?(:display_name)
          @encryption_spec = args[:encryption_spec] if args.key?(:encryption_spec)
          @end_time = args[:end_time] if args.key?(:end_time)
          @error = args[:error] if args.key?(:error)
          @job_spec = args[:job_spec] if args.key?(:job_spec)
          @labels = args[:labels] if args.key?(:labels)
          @name = args[:name] if args.key?(:name)
          @satisfies_pzi = args[:satisfies_pzi] if args.key?(:satisfies_pzi)
          @satisfies_pzs = args[:satisfies_pzs] if args.key?(:satisfies_pzs)
          @start_time = args[:start_time] if args.key?(:start_time)
          @state = args[:state] if args.key?(:state)
          @update_time = args[:update_time] if args.key?(:update_time)
          @web_access_uris = args[:web_access_uris] if args.key?(:web_access_uris)
        end
      end
      
      # Represents the spec of a CustomJob.
      class GoogleCloudAiplatformV1CustomJobSpec
        include Google::Apis::Core::Hashable
      
        # The Google Cloud Storage location where the output is to be written to.
        # Corresponds to the JSON property `baseOutputDirectory`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GcsDestination]
        attr_accessor :base_output_directory
      
        # Optional. Whether you want Vertex AI to enable access to the customized
        # dashboard in training chief container. If set to `true`, you can access the
        # dashboard at the URIs given by CustomJob.web_access_uris or Trial.
        # web_access_uris (within HyperparameterTuningJob.trials).
        # Corresponds to the JSON property `enableDashboardAccess`
        # @return [Boolean]
        attr_accessor :enable_dashboard_access
        alias_method :enable_dashboard_access?, :enable_dashboard_access
      
        # Optional. Whether you want Vertex AI to enable [interactive shell access](
        # https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-
        # shell) to training containers. If set to `true`, you can access interactive
        # shells at the URIs given by CustomJob.web_access_uris or Trial.web_access_uris
        # (within HyperparameterTuningJob.trials).
        # Corresponds to the JSON property `enableWebAccess`
        # @return [Boolean]
        attr_accessor :enable_web_access
        alias_method :enable_web_access?, :enable_web_access
      
        # Optional. The Experiment associated with this job. Format: `projects/`project`/
        # locations/`location`/metadataStores/`metadataStores`/contexts/`experiment-name`
        # `
        # Corresponds to the JSON property `experiment`
        # @return [String]
        attr_accessor :experiment
      
        # Optional. The Experiment Run associated with this job. Format: `projects/`
        # project`/locations/`location`/metadataStores/`metadataStores`/contexts/`
        # experiment-name`-`experiment-run-name``
        # Corresponds to the JSON property `experimentRun`
        # @return [String]
        attr_accessor :experiment_run
      
        # Optional. The name of the Model resources for which to generate a mapping to
        # artifact URIs. Applicable only to some of the Google-provided custom jobs.
        # Format: `projects/`project`/locations/`location`/models/`model`` In order to
        # retrieve a specific version of the model, also provide the version ID or
        # version alias. Example: `projects/`project`/locations/`location`/models/`model`
        # @2` or `projects/`project`/locations/`location`/models/`model`@golden` If no
        # version ID or alias is specified, the "default" version will be returned. The "
        # default" version alias is created for the first version of the model, and can
        # be moved to other versions later on. There will be exactly one default version.
        # Corresponds to the JSON property `models`
        # @return [Array<String>]
        attr_accessor :models
      
        # Optional. The full name of the Compute Engine [network](/compute/docs/networks-
        # and-firewalls#networks) to which the Job should be peered. For example, `
        # projects/12345/global/networks/myVPC`. [Format](/compute/docs/reference/rest/
        # v1/networks/insert) is of the form `projects/`project`/global/networks/`
        # network``. Where `project` is a project number, as in `12345`, and `network`
        # is a network name. To specify this field, you must have already [configured
        # VPC Network Peering for Vertex AI](https://cloud.google.com/vertex-ai/docs/
        # general/vpc-peering). If this field is left unspecified, the job is not peered
        # with any network.
        # Corresponds to the JSON property `network`
        # @return [String]
        attr_accessor :network
      
        # Optional. The ID of the PersistentResource in the same Project and Location
        # which to run If this is specified, the job will be run on existing machines
        # held by the PersistentResource instead of on-demand short-live machines. The
        # network and CMEK configs on the job should be consistent with those on the
        # PersistentResource, otherwise, the job will be rejected.
        # Corresponds to the JSON property `persistentResourceId`
        # @return [String]
        attr_accessor :persistent_resource_id
      
        # The ID of the location to store protected artifacts. e.g. us-central1.
        # Populate only when the location is different than CustomJob location. List of
        # supported locations: https://cloud.google.com/vertex-ai/docs/general/locations
        # Corresponds to the JSON property `protectedArtifactLocationId`
        # @return [String]
        attr_accessor :protected_artifact_location_id
      
        # Configuration for PSC-I.
        # Corresponds to the JSON property `pscInterfaceConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PscInterfaceConfig]
        attr_accessor :psc_interface_config
      
        # Optional. A list of names for the reserved ip ranges under the VPC network
        # that can be used for this job. If set, we will deploy the job within the
        # provided ip ranges. Otherwise, the job will be deployed to any ip ranges under
        # the provided VPC network. Example: ['vertex-ai-ip-range'].
        # Corresponds to the JSON property `reservedIpRanges`
        # @return [Array<String>]
        attr_accessor :reserved_ip_ranges
      
        # All parameters related to queuing and scheduling of custom jobs.
        # Corresponds to the JSON property `scheduling`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Scheduling]
        attr_accessor :scheduling
      
        # Specifies the service account for workload run-as account. Users submitting
        # jobs must have act-as permission on this run-as account. If unspecified, the [
        # Vertex AI Custom Code Service Agent](https://cloud.google.com/vertex-ai/docs/
        # general/access-control#service-agents) for the CustomJob's project is used.
        # Corresponds to the JSON property `serviceAccount`
        # @return [String]
        attr_accessor :service_account
      
        # Optional. The name of a Vertex AI Tensorboard resource to which this CustomJob
        # will upload Tensorboard logs. Format: `projects/`project`/locations/`location`/
        # tensorboards/`tensorboard``
        # Corresponds to the JSON property `tensorboard`
        # @return [String]
        attr_accessor :tensorboard
      
        # Required. The spec of the worker pools including machine type and Docker image.
        # All worker pools except the first one are optional and can be skipped by
        # providing an empty value.
        # Corresponds to the JSON property `workerPoolSpecs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1WorkerPoolSpec>]
        attr_accessor :worker_pool_specs
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @base_output_directory = args[:base_output_directory] if args.key?(:base_output_directory)
          @enable_dashboard_access = args[:enable_dashboard_access] if args.key?(:enable_dashboard_access)
          @enable_web_access = args[:enable_web_access] if args.key?(:enable_web_access)
          @experiment = args[:experiment] if args.key?(:experiment)
          @experiment_run = args[:experiment_run] if args.key?(:experiment_run)
          @models = args[:models] if args.key?(:models)
          @network = args[:network] if args.key?(:network)
          @persistent_resource_id = args[:persistent_resource_id] if args.key?(:persistent_resource_id)
          @protected_artifact_location_id = args[:protected_artifact_location_id] if args.key?(:protected_artifact_location_id)
          @psc_interface_config = args[:psc_interface_config] if args.key?(:psc_interface_config)
          @reserved_ip_ranges = args[:reserved_ip_ranges] if args.key?(:reserved_ip_ranges)
          @scheduling = args[:scheduling] if args.key?(:scheduling)
          @service_account = args[:service_account] if args.key?(:service_account)
          @tensorboard = args[:tensorboard] if args.key?(:tensorboard)
          @worker_pool_specs = args[:worker_pool_specs] if args.key?(:worker_pool_specs)
        end
      end
      
      # Spec for custom output.
      class GoogleCloudAiplatformV1CustomOutput
        include Google::Apis::Core::Hashable
      
        # Raw output.
        # Corresponds to the JSON property `rawOutputs`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RawOutput]
        attr_accessor :raw_outputs
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @raw_outputs = args[:raw_outputs] if args.key?(:raw_outputs)
        end
      end
      
      # Spec for custom output format configuration.
      class GoogleCloudAiplatformV1CustomOutputFormatConfig
        include Google::Apis::Core::Hashable
      
        # Optional. Whether to return raw output.
        # Corresponds to the JSON property `returnRawOutput`
        # @return [Boolean]
        attr_accessor :return_raw_output
        alias_method :return_raw_output?, :return_raw_output
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @return_raw_output = args[:return_raw_output] if args.key?(:return_raw_output)
        end
      end
      
      # A piece of data in a Dataset. Could be an image, a video, a document or plain
      # text.
      class GoogleCloudAiplatformV1DataItem
        include Google::Apis::Core::Hashable
      
        # Output only. Timestamp when this DataItem was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Optional. Used to perform consistent read-modify-write updates. If not set, a
        # blind "overwrite" update happens.
        # Corresponds to the JSON property `etag`
        # @return [String]
        attr_accessor :etag
      
        # Optional. The labels with user-defined metadata to organize your DataItems.
        # Label keys and values can be no longer than 64 characters (Unicode codepoints),
        # can only contain lowercase letters, numeric characters, underscores and
        # dashes. International characters are allowed. No more than 64 user labels can
        # be associated with one DataItem(System labels are excluded). See https://goo.
        # gl/xmQnxf for more information and examples of labels. System reserved label
        # keys are prefixed with "aiplatform.googleapis.com/" and are immutable.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Output only. The resource name of the DataItem.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Required. The data that the DataItem represents (for example, an image or a
        # text snippet). The schema of the payload is stored in the parent Dataset's
        # metadata schema's dataItemSchemaUri field.
        # Corresponds to the JSON property `payload`
        # @return [Object]
        attr_accessor :payload
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzi`
        # @return [Boolean]
        attr_accessor :satisfies_pzi
        alias_method :satisfies_pzi?, :satisfies_pzi
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzs`
        # @return [Boolean]
        attr_accessor :satisfies_pzs
        alias_method :satisfies_pzs?, :satisfies_pzs
      
        # Output only. Timestamp when this DataItem was last updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @etag = args[:etag] if args.key?(:etag)
          @labels = args[:labels] if args.key?(:labels)
          @name = args[:name] if args.key?(:name)
          @payload = args[:payload] if args.key?(:payload)
          @satisfies_pzi = args[:satisfies_pzi] if args.key?(:satisfies_pzi)
          @satisfies_pzs = args[:satisfies_pzs] if args.key?(:satisfies_pzs)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # A container for a single DataItem and Annotations on it.
      class GoogleCloudAiplatformV1DataItemView
        include Google::Apis::Core::Hashable
      
        # The Annotations on the DataItem. If too many Annotations should be returned
        # for the DataItem, this field will be truncated per annotations_limit in
        # request. If it was, then the has_truncated_annotations will be set to true.
        # Corresponds to the JSON property `annotations`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Annotation>]
        attr_accessor :annotations
      
        # A piece of data in a Dataset. Could be an image, a video, a document or plain
        # text.
        # Corresponds to the JSON property `dataItem`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DataItem]
        attr_accessor :data_item
      
        # True if and only if the Annotations field has been truncated. It happens if
        # more Annotations for this DataItem met the request's annotation_filter than
        # are allowed to be returned by annotations_limit. Note that if Annotations
        # field is not being returned due to field mask, then this field will not be set
        # to true no matter how many Annotations are there.
        # Corresponds to the JSON property `hasTruncatedAnnotations`
        # @return [Boolean]
        attr_accessor :has_truncated_annotations
        alias_method :has_truncated_annotations?, :has_truncated_annotations
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @annotations = args[:annotations] if args.key?(:annotations)
          @data_item = args[:data_item] if args.key?(:data_item)
          @has_truncated_annotations = args[:has_truncated_annotations] if args.key?(:has_truncated_annotations)
        end
      end
      
      # DataLabelingJob is used to trigger a human labeling job on unlabeled data from
      # the following Dataset:
      class GoogleCloudAiplatformV1DataLabelingJob
        include Google::Apis::Core::Hashable
      
        # Parameters that configure the active learning pipeline. Active learning will
        # label the data incrementally by several iterations. For every iteration, it
        # will select a batch of data based on the sampling strategy.
        # Corresponds to the JSON property `activeLearningConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ActiveLearningConfig]
        attr_accessor :active_learning_config
      
        # Labels to assign to annotations generated by this DataLabelingJob. Label keys
        # and values can be no longer than 64 characters (Unicode codepoints), can only
        # contain lowercase letters, numeric characters, underscores and dashes.
        # International characters are allowed. See https://goo.gl/xmQnxf for more
        # information and examples of labels. System reserved label keys are prefixed
        # with "aiplatform.googleapis.com/" and are immutable.
        # Corresponds to the JSON property `annotationLabels`
        # @return [Hash<String,String>]
        attr_accessor :annotation_labels
      
        # Output only. Timestamp when this DataLabelingJob was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Represents an amount of money with its currency type.
        # Corresponds to the JSON property `currentSpend`
        # @return [Google::Apis::AiplatformV1::GoogleTypeMoney]
        attr_accessor :current_spend
      
        # Required. Dataset resource names. Right now we only support labeling from a
        # single Dataset. Format: `projects/`project`/locations/`location`/datasets/`
        # dataset``
        # Corresponds to the JSON property `datasets`
        # @return [Array<String>]
        attr_accessor :datasets
      
        # Required. The user-defined name of the DataLabelingJob. The name can be up to
        # 128 characters long and can consist of any UTF-8 characters. Display name of a
        # DataLabelingJob.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Represents a customer-managed encryption key spec that can be applied to a top-
        # level resource.
        # Corresponds to the JSON property `encryptionSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EncryptionSpec]
        attr_accessor :encryption_spec
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `error`
        # @return [Google::Apis::AiplatformV1::GoogleRpcStatus]
        attr_accessor :error
      
        # Required. Input config parameters for the DataLabelingJob.
        # Corresponds to the JSON property `inputs`
        # @return [Object]
        attr_accessor :inputs
      
        # Required. Points to a YAML file stored on Google Cloud Storage describing the
        # config for a specific type of DataLabelingJob. The schema files that can be
        # used here are found in the https://storage.googleapis.com/google-cloud-
        # aiplatform bucket in the /schema/datalabelingjob/inputs/ folder.
        # Corresponds to the JSON property `inputsSchemaUri`
        # @return [String]
        attr_accessor :inputs_schema_uri
      
        # Required. The Google Cloud Storage location of the instruction pdf. This pdf
        # is shared with labelers, and provides detailed description on how to label
        # DataItems in Datasets.
        # Corresponds to the JSON property `instructionUri`
        # @return [String]
        attr_accessor :instruction_uri
      
        # Required. Number of labelers to work on each DataItem.
        # Corresponds to the JSON property `labelerCount`
        # @return [Fixnum]
        attr_accessor :labeler_count
      
        # Output only. Current labeling job progress percentage scaled in interval [0,
        # 100], indicating the percentage of DataItems that has been finished.
        # Corresponds to the JSON property `labelingProgress`
        # @return [Fixnum]
        attr_accessor :labeling_progress
      
        # The labels with user-defined metadata to organize your DataLabelingJobs. Label
        # keys and values can be no longer than 64 characters (Unicode codepoints), can
        # only contain lowercase letters, numeric characters, underscores and dashes.
        # International characters are allowed. See https://goo.gl/xmQnxf for more
        # information and examples of labels. System reserved label keys are prefixed
        # with "aiplatform.googleapis.com/" and are immutable. Following system labels
        # exist for each DataLabelingJob: * "aiplatform.googleapis.com/schema": output
        # only, its value is the inputs_schema's title.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Output only. Resource name of the DataLabelingJob.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # The SpecialistPools' resource names associated with this job.
        # Corresponds to the JSON property `specialistPools`
        # @return [Array<String>]
        attr_accessor :specialist_pools
      
        # Output only. The detailed state of the job.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        # Output only. Timestamp when this DataLabelingJob was updated most recently.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @active_learning_config = args[:active_learning_config] if args.key?(:active_learning_config)
          @annotation_labels = args[:annotation_labels] if args.key?(:annotation_labels)
          @create_time = args[:create_time] if args.key?(:create_time)
          @current_spend = args[:current_spend] if args.key?(:current_spend)
          @datasets = args[:datasets] if args.key?(:datasets)
          @display_name = args[:display_name] if args.key?(:display_name)
          @encryption_spec = args[:encryption_spec] if args.key?(:encryption_spec)
          @error = args[:error] if args.key?(:error)
          @inputs = args[:inputs] if args.key?(:inputs)
          @inputs_schema_uri = args[:inputs_schema_uri] if args.key?(:inputs_schema_uri)
          @instruction_uri = args[:instruction_uri] if args.key?(:instruction_uri)
          @labeler_count = args[:labeler_count] if args.key?(:labeler_count)
          @labeling_progress = args[:labeling_progress] if args.key?(:labeling_progress)
          @labels = args[:labels] if args.key?(:labels)
          @name = args[:name] if args.key?(:name)
          @specialist_pools = args[:specialist_pools] if args.key?(:specialist_pools)
          @state = args[:state] if args.key?(:state)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # A collection of DataItems and Annotations on them.
      class GoogleCloudAiplatformV1Dataset
        include Google::Apis::Core::Hashable
      
        # Output only. Timestamp when this Dataset was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Output only. The number of DataItems in this Dataset. Only apply for non-
        # structured Dataset.
        # Corresponds to the JSON property `dataItemCount`
        # @return [Fixnum]
        attr_accessor :data_item_count
      
        # The description of the Dataset.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Required. The user-defined name of the Dataset. The name can be up to 128
        # characters long and can consist of any UTF-8 characters.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Represents a customer-managed encryption key spec that can be applied to a top-
        # level resource.
        # Corresponds to the JSON property `encryptionSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EncryptionSpec]
        attr_accessor :encryption_spec
      
        # Used to perform consistent read-modify-write updates. If not set, a blind "
        # overwrite" update happens.
        # Corresponds to the JSON property `etag`
        # @return [String]
        attr_accessor :etag
      
        # The labels with user-defined metadata to organize your Datasets. Label keys
        # and values can be no longer than 64 characters (Unicode codepoints), can only
        # contain lowercase letters, numeric characters, underscores and dashes.
        # International characters are allowed. No more than 64 user labels can be
        # associated with one Dataset (System labels are excluded). See https://goo.gl/
        # xmQnxf for more information and examples of labels. System reserved label keys
        # are prefixed with "aiplatform.googleapis.com/" and are immutable. Following
        # system labels exist for each Dataset: * "aiplatform.googleapis.com/
        # dataset_metadata_schema": output only, its value is the metadata_schema's
        # title.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Required. Additional information about the Dataset.
        # Corresponds to the JSON property `metadata`
        # @return [Object]
        attr_accessor :metadata
      
        # Output only. The resource name of the Artifact that was created in
        # MetadataStore when creating the Dataset. The Artifact resource name pattern is
        # `projects/`project`/locations/`location`/metadataStores/`metadata_store`/
        # artifacts/`artifact``.
        # Corresponds to the JSON property `metadataArtifact`
        # @return [String]
        attr_accessor :metadata_artifact
      
        # Required. Points to a YAML file stored on Google Cloud Storage describing
        # additional information about the Dataset. The schema is defined as an OpenAPI
        # 3.0.2 Schema Object. The schema files that can be used here are found in gs://
        # google-cloud-aiplatform/schema/dataset/metadata/.
        # Corresponds to the JSON property `metadataSchemaUri`
        # @return [String]
        attr_accessor :metadata_schema_uri
      
        # Optional. Reference to the public base model last used by the dataset. Only
        # set for prompt datasets.
        # Corresponds to the JSON property `modelReference`
        # @return [String]
        attr_accessor :model_reference
      
        # Output only. Identifier. The resource name of the Dataset. Format: `projects/`
        # project`/locations/`location`/datasets/`dataset``
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzi`
        # @return [Boolean]
        attr_accessor :satisfies_pzi
        alias_method :satisfies_pzi?, :satisfies_pzi
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzs`
        # @return [Boolean]
        attr_accessor :satisfies_pzs
        alias_method :satisfies_pzs?, :satisfies_pzs
      
        # All SavedQueries belong to the Dataset will be returned in List/Get Dataset
        # response. The annotation_specs field will not be populated except for UI cases
        # which will only use annotation_spec_count. In CreateDataset request, a
        # SavedQuery is created together if this field is set, up to one SavedQuery can
        # be set in CreateDatasetRequest. The SavedQuery should not contain any
        # AnnotationSpec.
        # Corresponds to the JSON property `savedQueries`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SavedQuery>]
        attr_accessor :saved_queries
      
        # Output only. Timestamp when this Dataset was last updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @data_item_count = args[:data_item_count] if args.key?(:data_item_count)
          @description = args[:description] if args.key?(:description)
          @display_name = args[:display_name] if args.key?(:display_name)
          @encryption_spec = args[:encryption_spec] if args.key?(:encryption_spec)
          @etag = args[:etag] if args.key?(:etag)
          @labels = args[:labels] if args.key?(:labels)
          @metadata = args[:metadata] if args.key?(:metadata)
          @metadata_artifact = args[:metadata_artifact] if args.key?(:metadata_artifact)
          @metadata_schema_uri = args[:metadata_schema_uri] if args.key?(:metadata_schema_uri)
          @model_reference = args[:model_reference] if args.key?(:model_reference)
          @name = args[:name] if args.key?(:name)
          @satisfies_pzi = args[:satisfies_pzi] if args.key?(:satisfies_pzi)
          @satisfies_pzs = args[:satisfies_pzs] if args.key?(:satisfies_pzs)
          @saved_queries = args[:saved_queries] if args.key?(:saved_queries)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # Describes the dataset version.
      class GoogleCloudAiplatformV1DatasetVersion
        include Google::Apis::Core::Hashable
      
        # Output only. Name of the associated BigQuery dataset.
        # Corresponds to the JSON property `bigQueryDatasetName`
        # @return [String]
        attr_accessor :big_query_dataset_name
      
        # Output only. Timestamp when this DatasetVersion was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # The user-defined name of the DatasetVersion. The name can be up to 128
        # characters long and can consist of any UTF-8 characters.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Used to perform consistent read-modify-write updates. If not set, a blind "
        # overwrite" update happens.
        # Corresponds to the JSON property `etag`
        # @return [String]
        attr_accessor :etag
      
        # Required. Output only. Additional information about the DatasetVersion.
        # Corresponds to the JSON property `metadata`
        # @return [Object]
        attr_accessor :metadata
      
        # Output only. Reference to the public base model last used by the dataset
        # version. Only set for prompt dataset versions.
        # Corresponds to the JSON property `modelReference`
        # @return [String]
        attr_accessor :model_reference
      
        # Output only. Identifier. The resource name of the DatasetVersion. Format: `
        # projects/`project`/locations/`location`/datasets/`dataset`/datasetVersions/`
        # dataset_version``
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzi`
        # @return [Boolean]
        attr_accessor :satisfies_pzi
        alias_method :satisfies_pzi?, :satisfies_pzi
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzs`
        # @return [Boolean]
        attr_accessor :satisfies_pzs
        alias_method :satisfies_pzs?, :satisfies_pzs
      
        # Output only. Timestamp when this DatasetVersion was last updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @big_query_dataset_name = args[:big_query_dataset_name] if args.key?(:big_query_dataset_name)
          @create_time = args[:create_time] if args.key?(:create_time)
          @display_name = args[:display_name] if args.key?(:display_name)
          @etag = args[:etag] if args.key?(:etag)
          @metadata = args[:metadata] if args.key?(:metadata)
          @model_reference = args[:model_reference] if args.key?(:model_reference)
          @name = args[:name] if args.key?(:name)
          @satisfies_pzi = args[:satisfies_pzi] if args.key?(:satisfies_pzi)
          @satisfies_pzs = args[:satisfies_pzs] if args.key?(:satisfies_pzs)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # A description of resources that are dedicated to a DeployedModel or
      # DeployedIndex, and that need a higher degree of manual configuration.
      class GoogleCloudAiplatformV1DedicatedResources
        include Google::Apis::Core::Hashable
      
        # Immutable. The metric specifications that overrides a resource utilization
        # metric (CPU utilization, accelerator's duty cycle, and so on) target value (
        # default to 60 if not set). At most one entry is allowed per metric. If
        # machine_spec.accelerator_count is above 0, the autoscaling will be based on
        # both CPU utilization and accelerator's duty cycle metrics and scale up when
        # either metrics exceeds its target value while scale down if both metrics are
        # under their target value. The default target value is 60 for both metrics. If
        # machine_spec.accelerator_count is 0, the autoscaling will be based on CPU
        # utilization metric only with default target value 60 if not explicitly set.
        # For example, in the case of Online Prediction, if you want to override target
        # CPU utilization to 80, you should set autoscaling_metric_specs.metric_name to `
        # aiplatform.googleapis.com/prediction/online/cpu/utilization` and
        # autoscaling_metric_specs.target to `80`.
        # Corresponds to the JSON property `autoscalingMetricSpecs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1AutoscalingMetricSpec>]
        attr_accessor :autoscaling_metric_specs
      
        # Specification of a single machine.
        # Corresponds to the JSON property `machineSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1MachineSpec]
        attr_accessor :machine_spec
      
        # Immutable. The maximum number of replicas that may be deployed on when the
        # traffic against it increases. If the requested value is too large, the
        # deployment will error, but if deployment succeeds then the ability to scale to
        # that many replicas is guaranteed (barring service outages). If traffic
        # increases beyond what its replicas at maximum may handle, a portion of the
        # traffic will be dropped. If this value is not provided, will use
        # min_replica_count as the default value. The value of this field impacts the
        # charge against Vertex CPU and GPU quotas. Specifically, you will be charged
        # for (max_replica_count * number of cores in the selected machine type) and (
        # max_replica_count * number of GPUs per replica in the selected machine type).
        # Corresponds to the JSON property `maxReplicaCount`
        # @return [Fixnum]
        attr_accessor :max_replica_count
      
        # Required. Immutable. The minimum number of machine replicas that will be
        # always deployed on. This value must be greater than or equal to 1. If traffic
        # increases, it may dynamically be deployed onto more replicas, and as traffic
        # decreases, some of these extra replicas may be freed.
        # Corresponds to the JSON property `minReplicaCount`
        # @return [Fixnum]
        attr_accessor :min_replica_count
      
        # Optional. Number of required available replicas for the deployment to succeed.
        # This field is only needed when partial deployment/mutation is desired. If set,
        # the deploy/mutate operation will succeed once available_replica_count reaches
        # required_replica_count, and the rest of the replicas will be retried. If not
        # set, the default required_replica_count will be min_replica_count.
        # Corresponds to the JSON property `requiredReplicaCount`
        # @return [Fixnum]
        attr_accessor :required_replica_count
      
        # Optional. If true, schedule the deployment workload on [spot VMs](https://
        # cloud.google.com/kubernetes-engine/docs/concepts/spot-vms).
        # Corresponds to the JSON property `spot`
        # @return [Boolean]
        attr_accessor :spot
        alias_method :spot?, :spot
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @autoscaling_metric_specs = args[:autoscaling_metric_specs] if args.key?(:autoscaling_metric_specs)
          @machine_spec = args[:machine_spec] if args.key?(:machine_spec)
          @max_replica_count = args[:max_replica_count] if args.key?(:max_replica_count)
          @min_replica_count = args[:min_replica_count] if args.key?(:min_replica_count)
          @required_replica_count = args[:required_replica_count] if args.key?(:required_replica_count)
          @spot = args[:spot] if args.key?(:spot)
        end
      end
      
      # Details of operations that delete Feature values.
      class GoogleCloudAiplatformV1DeleteFeatureValuesOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Request message for FeaturestoreService.DeleteFeatureValues.
      class GoogleCloudAiplatformV1DeleteFeatureValuesRequest
        include Google::Apis::Core::Hashable
      
        # Message to select entity. If an entity id is selected, all the feature values
        # corresponding to the entity id will be deleted, including the entityId.
        # Corresponds to the JSON property `selectEntity`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DeleteFeatureValuesRequestSelectEntity]
        attr_accessor :select_entity
      
        # Message to select time range and feature. Values of the selected feature
        # generated within an inclusive time range will be deleted. Using this option
        # permanently deletes the feature values from the specified feature IDs within
        # the specified time range. This might include data from the online storage. If
        # you want to retain any deleted historical data in the online storage, you must
        # re-ingest it.
        # Corresponds to the JSON property `selectTimeRangeAndFeature`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DeleteFeatureValuesRequestSelectTimeRangeAndFeature]
        attr_accessor :select_time_range_and_feature
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @select_entity = args[:select_entity] if args.key?(:select_entity)
          @select_time_range_and_feature = args[:select_time_range_and_feature] if args.key?(:select_time_range_and_feature)
        end
      end
      
      # Message to select entity. If an entity id is selected, all the feature values
      # corresponding to the entity id will be deleted, including the entityId.
      class GoogleCloudAiplatformV1DeleteFeatureValuesRequestSelectEntity
        include Google::Apis::Core::Hashable
      
        # Selector for entityId. Getting ids from the given source.
        # Corresponds to the JSON property `entityIdSelector`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EntityIdSelector]
        attr_accessor :entity_id_selector
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entity_id_selector = args[:entity_id_selector] if args.key?(:entity_id_selector)
        end
      end
      
      # Message to select time range and feature. Values of the selected feature
      # generated within an inclusive time range will be deleted. Using this option
      # permanently deletes the feature values from the specified feature IDs within
      # the specified time range. This might include data from the online storage. If
      # you want to retain any deleted historical data in the online storage, you must
      # re-ingest it.
      class GoogleCloudAiplatformV1DeleteFeatureValuesRequestSelectTimeRangeAndFeature
        include Google::Apis::Core::Hashable
      
        # Selector for Features of an EntityType.
        # Corresponds to the JSON property `featureSelector`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureSelector]
        attr_accessor :feature_selector
      
        # If set, data will not be deleted from online storage. When time range is older
        # than the data in online storage, setting this to be true will make the
        # deletion have no impact on online serving.
        # Corresponds to the JSON property `skipOnlineStorageDelete`
        # @return [Boolean]
        attr_accessor :skip_online_storage_delete
        alias_method :skip_online_storage_delete?, :skip_online_storage_delete
      
        # Represents a time interval, encoded as a Timestamp start (inclusive) and a
        # Timestamp end (exclusive). The start must be less than or equal to the end.
        # When the start equals the end, the interval is empty (matches no time). When
        # both start and end are unspecified, the interval matches any time.
        # Corresponds to the JSON property `timeRange`
        # @return [Google::Apis::AiplatformV1::GoogleTypeInterval]
        attr_accessor :time_range
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @feature_selector = args[:feature_selector] if args.key?(:feature_selector)
          @skip_online_storage_delete = args[:skip_online_storage_delete] if args.key?(:skip_online_storage_delete)
          @time_range = args[:time_range] if args.key?(:time_range)
        end
      end
      
      # Response message for FeaturestoreService.DeleteFeatureValues.
      class GoogleCloudAiplatformV1DeleteFeatureValuesResponse
        include Google::Apis::Core::Hashable
      
        # Response message if the request uses the SelectEntity option.
        # Corresponds to the JSON property `selectEntity`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DeleteFeatureValuesResponseSelectEntity]
        attr_accessor :select_entity
      
        # Response message if the request uses the SelectTimeRangeAndFeature option.
        # Corresponds to the JSON property `selectTimeRangeAndFeature`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DeleteFeatureValuesResponseSelectTimeRangeAndFeature]
        attr_accessor :select_time_range_and_feature
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @select_entity = args[:select_entity] if args.key?(:select_entity)
          @select_time_range_and_feature = args[:select_time_range_and_feature] if args.key?(:select_time_range_and_feature)
        end
      end
      
      # Response message if the request uses the SelectEntity option.
      class GoogleCloudAiplatformV1DeleteFeatureValuesResponseSelectEntity
        include Google::Apis::Core::Hashable
      
        # The count of deleted entity rows in the offline storage. Each row corresponds
        # to the combination of an entity ID and a timestamp. One entity ID can have
        # multiple rows in the offline storage.
        # Corresponds to the JSON property `offlineStorageDeletedEntityRowCount`
        # @return [Fixnum]
        attr_accessor :offline_storage_deleted_entity_row_count
      
        # The count of deleted entities in the online storage. Each entity ID
        # corresponds to one entity.
        # Corresponds to the JSON property `onlineStorageDeletedEntityCount`
        # @return [Fixnum]
        attr_accessor :online_storage_deleted_entity_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @offline_storage_deleted_entity_row_count = args[:offline_storage_deleted_entity_row_count] if args.key?(:offline_storage_deleted_entity_row_count)
          @online_storage_deleted_entity_count = args[:online_storage_deleted_entity_count] if args.key?(:online_storage_deleted_entity_count)
        end
      end
      
      # Response message if the request uses the SelectTimeRangeAndFeature option.
      class GoogleCloudAiplatformV1DeleteFeatureValuesResponseSelectTimeRangeAndFeature
        include Google::Apis::Core::Hashable
      
        # The count of the features or columns impacted. This is the same as the feature
        # count in the request.
        # Corresponds to the JSON property `impactedFeatureCount`
        # @return [Fixnum]
        attr_accessor :impacted_feature_count
      
        # The count of modified entity rows in the offline storage. Each row corresponds
        # to the combination of an entity ID and a timestamp. One entity ID can have
        # multiple rows in the offline storage. Within each row, only the features
        # specified in the request are deleted.
        # Corresponds to the JSON property `offlineStorageModifiedEntityRowCount`
        # @return [Fixnum]
        attr_accessor :offline_storage_modified_entity_row_count
      
        # The count of modified entities in the online storage. Each entity ID
        # corresponds to one entity. Within each entity, only the features specified in
        # the request are deleted.
        # Corresponds to the JSON property `onlineStorageModifiedEntityCount`
        # @return [Fixnum]
        attr_accessor :online_storage_modified_entity_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @impacted_feature_count = args[:impacted_feature_count] if args.key?(:impacted_feature_count)
          @offline_storage_modified_entity_row_count = args[:offline_storage_modified_entity_row_count] if args.key?(:offline_storage_modified_entity_row_count)
          @online_storage_modified_entity_count = args[:online_storage_modified_entity_count] if args.key?(:online_storage_modified_entity_count)
        end
      end
      
      # Details of operations that perform MetadataService.DeleteMetadataStore.
      class GoogleCloudAiplatformV1DeleteMetadataStoreOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Details of operations that perform deletes of any entities.
      class GoogleCloudAiplatformV1DeleteOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Runtime operation information for IndexEndpointService.DeployIndex.
      class GoogleCloudAiplatformV1DeployIndexOperationMetadata
        include Google::Apis::Core::Hashable
      
        # The unique index id specified by user
        # Corresponds to the JSON property `deployedIndexId`
        # @return [String]
        attr_accessor :deployed_index_id
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @deployed_index_id = args[:deployed_index_id] if args.key?(:deployed_index_id)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Request message for IndexEndpointService.DeployIndex.
      class GoogleCloudAiplatformV1DeployIndexRequest
        include Google::Apis::Core::Hashable
      
        # A deployment of an Index. IndexEndpoints contain one or more DeployedIndexes.
        # Corresponds to the JSON property `deployedIndex`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DeployedIndex]
        attr_accessor :deployed_index
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @deployed_index = args[:deployed_index] if args.key?(:deployed_index)
        end
      end
      
      # Response message for IndexEndpointService.DeployIndex.
      class GoogleCloudAiplatformV1DeployIndexResponse
        include Google::Apis::Core::Hashable
      
        # A deployment of an Index. IndexEndpoints contain one or more DeployedIndexes.
        # Corresponds to the JSON property `deployedIndex`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DeployedIndex]
        attr_accessor :deployed_index
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @deployed_index = args[:deployed_index] if args.key?(:deployed_index)
        end
      end
      
      # Runtime operation information for EndpointService.DeployModel.
      class GoogleCloudAiplatformV1DeployModelOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Output only. The deployment stage of the model.
        # Corresponds to the JSON property `deploymentStage`
        # @return [String]
        attr_accessor :deployment_stage
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @deployment_stage = args[:deployment_stage] if args.key?(:deployment_stage)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Request message for EndpointService.DeployModel.
      class GoogleCloudAiplatformV1DeployModelRequest
        include Google::Apis::Core::Hashable
      
        # A deployment of a Model. Endpoints contain one or more DeployedModels.
        # Corresponds to the JSON property `deployedModel`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DeployedModel]
        attr_accessor :deployed_model
      
        # A map from a DeployedModel's ID to the percentage of this Endpoint's traffic
        # that should be forwarded to that DeployedModel. If this field is non-empty,
        # then the Endpoint's traffic_split will be overwritten with it. To refer to the
        # ID of the just being deployed Model, a "0" should be used, and the actual ID
        # of the new DeployedModel will be filled in its place by this method. The
        # traffic percentage values must add up to 100. If this field is empty, then the
        # Endpoint's traffic_split is not updated.
        # Corresponds to the JSON property `trafficSplit`
        # @return [Hash<String,Fixnum>]
        attr_accessor :traffic_split
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @deployed_model = args[:deployed_model] if args.key?(:deployed_model)
          @traffic_split = args[:traffic_split] if args.key?(:traffic_split)
        end
      end
      
      # Response message for EndpointService.DeployModel.
      class GoogleCloudAiplatformV1DeployModelResponse
        include Google::Apis::Core::Hashable
      
        # A deployment of a Model. Endpoints contain one or more DeployedModels.
        # Corresponds to the JSON property `deployedModel`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DeployedModel]
        attr_accessor :deployed_model
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @deployed_model = args[:deployed_model] if args.key?(:deployed_model)
        end
      end
      
      # Runtime operation information for ModelGardenService.Deploy.
      class GoogleCloudAiplatformV1DeployOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Output only. The resource name of the Location to deploy the model in. Format:
        # `projects/`project`/locations/`location``
        # Corresponds to the JSON property `destination`
        # @return [String]
        attr_accessor :destination
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        # Output only. The model id to be used at query time.
        # Corresponds to the JSON property `modelId`
        # @return [String]
        attr_accessor :model_id
      
        # Output only. The project number where the deploy model request is sent.
        # Corresponds to the JSON property `projectNumber`
        # @return [Fixnum]
        attr_accessor :project_number
      
        # Output only. The name of the model resource.
        # Corresponds to the JSON property `publisherModel`
        # @return [String]
        attr_accessor :publisher_model
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @destination = args[:destination] if args.key?(:destination)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
          @model_id = args[:model_id] if args.key?(:model_id)
          @project_number = args[:project_number] if args.key?(:project_number)
          @publisher_model = args[:publisher_model] if args.key?(:publisher_model)
        end
      end
      
      # Request message for ModelGardenService.Deploy.
      class GoogleCloudAiplatformV1DeployRequest
        include Google::Apis::Core::Hashable
      
        # The deploy config to use for the deployment.
        # Corresponds to the JSON property `deployConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DeployRequestDeployConfig]
        attr_accessor :deploy_config
      
        # The endpoint config to use for the deployment.
        # Corresponds to the JSON property `endpointConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DeployRequestEndpointConfig]
        attr_accessor :endpoint_config
      
        # The Hugging Face model to deploy. Format: Hugging Face model ID like `google/
        # gemma-2-2b-it`.
        # Corresponds to the JSON property `huggingFaceModelId`
        # @return [String]
        attr_accessor :hugging_face_model_id
      
        # The model config to use for the deployment.
        # Corresponds to the JSON property `modelConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DeployRequestModelConfig]
        attr_accessor :model_config
      
        # The Model Garden model to deploy. Format: `publishers/`publisher`/models/`
        # publisher_model`@`version_id``, or `publishers/hf-`hugging-face-author`/models/
        # `hugging-face-model-name`@001`.
        # Corresponds to the JSON property `publisherModelName`
        # @return [String]
        attr_accessor :publisher_model_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @deploy_config = args[:deploy_config] if args.key?(:deploy_config)
          @endpoint_config = args[:endpoint_config] if args.key?(:endpoint_config)
          @hugging_face_model_id = args[:hugging_face_model_id] if args.key?(:hugging_face_model_id)
          @model_config = args[:model_config] if args.key?(:model_config)
          @publisher_model_name = args[:publisher_model_name] if args.key?(:publisher_model_name)
        end
      end
      
      # The deploy config to use for the deployment.
      class GoogleCloudAiplatformV1DeployRequestDeployConfig
        include Google::Apis::Core::Hashable
      
        # A description of resources that are dedicated to a DeployedModel or
        # DeployedIndex, and that need a higher degree of manual configuration.
        # Corresponds to the JSON property `dedicatedResources`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DedicatedResources]
        attr_accessor :dedicated_resources
      
        # Optional. If true, enable the QMT fast tryout feature for this model if
        # possible.
        # Corresponds to the JSON property `fastTryoutEnabled`
        # @return [Boolean]
        attr_accessor :fast_tryout_enabled
        alias_method :fast_tryout_enabled?, :fast_tryout_enabled
      
        # Optional. System labels for Model Garden deployments. These labels are managed
        # by Google and for tracking purposes only.
        # Corresponds to the JSON property `systemLabels`
        # @return [Hash<String,String>]
        attr_accessor :system_labels
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @dedicated_resources = args[:dedicated_resources] if args.key?(:dedicated_resources)
          @fast_tryout_enabled = args[:fast_tryout_enabled] if args.key?(:fast_tryout_enabled)
          @system_labels = args[:system_labels] if args.key?(:system_labels)
        end
      end
      
      # The endpoint config to use for the deployment.
      class GoogleCloudAiplatformV1DeployRequestEndpointConfig
        include Google::Apis::Core::Hashable
      
        # Optional. By default, if dedicated endpoint is enabled and private service
        # connect config is not set, the endpoint will be exposed through a dedicated
        # DNS [Endpoint.dedicated_endpoint_dns]. If private service connect config is
        # set, the endpoint will be exposed through private service connect. Your
        # request to the dedicated DNS will be isolated from other users' traffic and
        # will have better performance and reliability. Note: Once you enabled dedicated
        # endpoint, you won't be able to send request to the shared DNS `region`-
        # aiplatform.googleapis.com. The limitations will be removed soon. If this field
        # is set to true, the dedicated endpoint will be disabled and the deployed model
        # will be exposed through the shared DNS `region`-aiplatform.googleapis.com.
        # Corresponds to the JSON property `dedicatedEndpointDisabled`
        # @return [Boolean]
        attr_accessor :dedicated_endpoint_disabled
        alias_method :dedicated_endpoint_disabled?, :dedicated_endpoint_disabled
      
        # Optional. Deprecated. Use dedicated_endpoint_disabled instead. If true, the
        # endpoint will be exposed through a dedicated DNS [Endpoint.
        # dedicated_endpoint_dns]. Your request to the dedicated DNS will be isolated
        # from other users' traffic and will have better performance and reliability.
        # Note: Once you enabled dedicated endpoint, you won't be able to send request
        # to the shared DNS `region`-aiplatform.googleapis.com. The limitations will be
        # removed soon.
        # Corresponds to the JSON property `dedicatedEndpointEnabled`
        # @return [Boolean]
        attr_accessor :dedicated_endpoint_enabled
        alias_method :dedicated_endpoint_enabled?, :dedicated_endpoint_enabled
      
        # Optional. The user-specified display name of the endpoint. If not set, a
        # default name will be used.
        # Corresponds to the JSON property `endpointDisplayName`
        # @return [String]
        attr_accessor :endpoint_display_name
      
        # Optional. Immutable. The ID to use for endpoint, which will become the final
        # component of the endpoint resource name. If not provided, Vertex AI will
        # generate a value for this ID. If the first character is a letter, this value
        # may be up to 63 characters, and valid characters are `[a-z0-9-]`. The last
        # character must be a letter or number. If the first character is a number, this
        # value may be up to 9 characters, and valid characters are `[0-9]` with no
        # leading zeros. When using HTTP/JSON, this field is populated based on a query
        # string argument, such as `?endpoint_id=12345`. This is the fallback for fields
        # that are not included in either the URI or the body.
        # Corresponds to the JSON property `endpointUserId`
        # @return [String]
        attr_accessor :endpoint_user_id
      
        # Represents configuration for private service connect.
        # Corresponds to the JSON property `privateServiceConnectConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PrivateServiceConnectConfig]
        attr_accessor :private_service_connect_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @dedicated_endpoint_disabled = args[:dedicated_endpoint_disabled] if args.key?(:dedicated_endpoint_disabled)
          @dedicated_endpoint_enabled = args[:dedicated_endpoint_enabled] if args.key?(:dedicated_endpoint_enabled)
          @endpoint_display_name = args[:endpoint_display_name] if args.key?(:endpoint_display_name)
          @endpoint_user_id = args[:endpoint_user_id] if args.key?(:endpoint_user_id)
          @private_service_connect_config = args[:private_service_connect_config] if args.key?(:private_service_connect_config)
        end
      end
      
      # The model config to use for the deployment.
      class GoogleCloudAiplatformV1DeployRequestModelConfig
        include Google::Apis::Core::Hashable
      
        # Optional. Whether the user accepts the End User License Agreement (EULA) for
        # the model.
        # Corresponds to the JSON property `acceptEula`
        # @return [Boolean]
        attr_accessor :accept_eula
        alias_method :accept_eula?, :accept_eula
      
        # Specification of a container for serving predictions. Some fields in this
        # message correspond to fields in the [Kubernetes Container v1 core
        # specification](https://kubernetes.io/docs/reference/generated/kubernetes-api/
        # v1.23/#container-v1-core).
        # Corresponds to the JSON property `containerSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelContainerSpec]
        attr_accessor :container_spec
      
        # Optional. The Hugging Face read access token used to access the model
        # artifacts of gated models.
        # Corresponds to the JSON property `huggingFaceAccessToken`
        # @return [String]
        attr_accessor :hugging_face_access_token
      
        # Optional. If true, the model will deploy with a cached version instead of
        # directly downloading the model artifacts from Hugging Face. This is suitable
        # for VPC-SC users with limited internet access.
        # Corresponds to the JSON property `huggingFaceCacheEnabled`
        # @return [Boolean]
        attr_accessor :hugging_face_cache_enabled
        alias_method :hugging_face_cache_enabled?, :hugging_face_cache_enabled
      
        # Optional. The user-specified display name of the uploaded model. If not set, a
        # default name will be used.
        # Corresponds to the JSON property `modelDisplayName`
        # @return [String]
        attr_accessor :model_display_name
      
        # Optional. The ID to use for the uploaded Model, which will become the final
        # component of the model resource name. When not provided, Vertex AI will
        # generate a value for this ID. When Model Registry model is provided, this
        # field will be ignored. This value may be up to 63 characters, and valid
        # characters are `[a-z0-9_-]`. The first character cannot be a number or hyphen.
        # Corresponds to the JSON property `modelUserId`
        # @return [String]
        attr_accessor :model_user_id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @accept_eula = args[:accept_eula] if args.key?(:accept_eula)
          @container_spec = args[:container_spec] if args.key?(:container_spec)
          @hugging_face_access_token = args[:hugging_face_access_token] if args.key?(:hugging_face_access_token)
          @hugging_face_cache_enabled = args[:hugging_face_cache_enabled] if args.key?(:hugging_face_cache_enabled)
          @model_display_name = args[:model_display_name] if args.key?(:model_display_name)
          @model_user_id = args[:model_user_id] if args.key?(:model_user_id)
        end
      end
      
      # Response message for ModelGardenService.Deploy.
      class GoogleCloudAiplatformV1DeployResponse
        include Google::Apis::Core::Hashable
      
        # Output only. The name of the Endpoint created. Format: `projects/`project`/
        # locations/`location`/endpoints/`endpoint``
        # Corresponds to the JSON property `endpoint`
        # @return [String]
        attr_accessor :endpoint
      
        # Output only. The name of the Model created. Format: `projects/`project`/
        # locations/`location`/models/`model``
        # Corresponds to the JSON property `model`
        # @return [String]
        attr_accessor :model
      
        # Output only. The name of the PublisherModel resource. Format: `publishers/`
        # publisher`/models/`publisher_model`@`version_id``, or `publishers/hf-`hugging-
        # face-author`/models/`hugging-face-model-name`@001`
        # Corresponds to the JSON property `publisherModel`
        # @return [String]
        attr_accessor :publisher_model
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @endpoint = args[:endpoint] if args.key?(:endpoint)
          @model = args[:model] if args.key?(:model)
          @publisher_model = args[:publisher_model] if args.key?(:publisher_model)
        end
      end
      
      # A deployment of an Index. IndexEndpoints contain one or more DeployedIndexes.
      class GoogleCloudAiplatformV1DeployedIndex
        include Google::Apis::Core::Hashable
      
        # A description of resources that to large degree are decided by Vertex AI, and
        # require only a modest additional configuration. Each Model supporting these
        # resources documents its specific guidelines.
        # Corresponds to the JSON property `automaticResources`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1AutomaticResources]
        attr_accessor :automatic_resources
      
        # Output only. Timestamp when the DeployedIndex was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # A description of resources that are dedicated to a DeployedModel or
        # DeployedIndex, and that need a higher degree of manual configuration.
        # Corresponds to the JSON property `dedicatedResources`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DedicatedResources]
        attr_accessor :dedicated_resources
      
        # Used to set up the auth on the DeployedIndex's private endpoint.
        # Corresponds to the JSON property `deployedIndexAuthConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DeployedIndexAuthConfig]
        attr_accessor :deployed_index_auth_config
      
        # Optional. The deployment group can be no longer than 64 characters (eg: 'test',
        # 'prod'). If not set, we will use the 'default' deployment group. Creating `
        # deployment_groups` with `reserved_ip_ranges` is a recommended practice when
        # the peered network has multiple peering ranges. This creates your deployments
        # from predictable IP spaces for easier traffic administration. Also, one
        # deployment_group (except 'default') can only be used with the same
        # reserved_ip_ranges which means if the deployment_group has been used with
        # reserved_ip_ranges: [a, b, c], using it with [a, b] or [d, e] is disallowed.
        # Note: we only support up to 5 deployment groups(not including 'default').
        # Corresponds to the JSON property `deploymentGroup`
        # @return [String]
        attr_accessor :deployment_group
      
        # Optional. The deployment tier that the index is deployed to.
        # DEPLOYMENT_TIER_UNSPECIFIED defaults to PERFORMANCE.
        # Corresponds to the JSON property `deploymentTier`
        # @return [String]
        attr_accessor :deployment_tier
      
        # The display name of the DeployedIndex. If not provided upon creation, the
        # Index's display_name is used.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Optional. If true, private endpoint's access logs are sent to Cloud Logging.
        # These logs are like standard server access logs, containing information like
        # timestamp and latency for each MatchRequest. Note that logs may incur a cost,
        # especially if the deployed index receives a high queries per second rate (QPS).
        # Estimate your costs before enabling this option.
        # Corresponds to the JSON property `enableAccessLogging`
        # @return [Boolean]
        attr_accessor :enable_access_logging
        alias_method :enable_access_logging?, :enable_access_logging
      
        # Optional. If true, logs to Cloud Logging errors relating to datapoint upserts.
        # Under normal operation conditions, these log entries should be very rare.
        # However, if incompatible datapoint updates are being uploaded to an index, a
        # high volume of log entries may be generated in a short period of time. Note
        # that logs may incur a cost, especially if the deployed index receives a high
        # volume of datapoint upserts. Estimate your costs before enabling this option.
        # Corresponds to the JSON property `enableDatapointUpsertLogging`
        # @return [Boolean]
        attr_accessor :enable_datapoint_upsert_logging
        alias_method :enable_datapoint_upsert_logging?, :enable_datapoint_upsert_logging
      
        # Required. The user specified ID of the DeployedIndex. The ID can be up to 128
        # characters long and must start with a letter and only contain letters, numbers,
        # and underscores. The ID must be unique within the project it is created in.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        # Required. The name of the Index this is the deployment of. We may refer to
        # this Index as the DeployedIndex's "original" Index.
        # Corresponds to the JSON property `index`
        # @return [String]
        attr_accessor :index
      
        # Output only. The DeployedIndex may depend on various data on its original
        # Index. Additionally when certain changes to the original Index are being done (
        # e.g. when what the Index contains is being changed) the DeployedIndex may be
        # asynchronously updated in the background to reflect these changes. If this
        # timestamp's value is at least the Index.update_time of the original Index, it
        # means that this DeployedIndex and the original Index are in sync. If this
        # timestamp is older, then to see which updates this DeployedIndex already
        # contains (and which it does not), one must list the operations that are
        # running on the original Index. Only the successfully completed Operations with
        # update_time equal or before this sync time are contained in this DeployedIndex.
        # Corresponds to the JSON property `indexSyncTime`
        # @return [String]
        attr_accessor :index_sync_time
      
        # IndexPrivateEndpoints proto is used to provide paths for users to send
        # requests via private endpoints (e.g. private service access, private service
        # connect). To send request via private service access, use match_grpc_address.
        # To send request via private service connect, use service_attachment.
        # Corresponds to the JSON property `privateEndpoints`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1IndexPrivateEndpoints]
        attr_accessor :private_endpoints
      
        # Optional. If set for PSC deployed index, PSC connection will be automatically
        # created after deployment is done and the endpoint information is populated in
        # private_endpoints.psc_automated_endpoints.
        # Corresponds to the JSON property `pscAutomationConfigs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PscAutomationConfig>]
        attr_accessor :psc_automation_configs
      
        # Optional. A list of reserved ip ranges under the VPC network that can be used
        # for this DeployedIndex. If set, we will deploy the index within the provided
        # ip ranges. Otherwise, the index might be deployed to any ip ranges under the
        # provided VPC network. The value should be the name of the address (https://
        # cloud.google.com/compute/docs/reference/rest/v1/addresses) Example: ['vertex-
        # ai-ip-range']. For more information about subnets and network IP ranges,
        # please see https://cloud.google.com/vpc/docs/subnets#
        # manually_created_subnet_ip_ranges.
        # Corresponds to the JSON property `reservedIpRanges`
        # @return [Array<String>]
        attr_accessor :reserved_ip_ranges
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @automatic_resources = args[:automatic_resources] if args.key?(:automatic_resources)
          @create_time = args[:create_time] if args.key?(:create_time)
          @dedicated_resources = args[:dedicated_resources] if args.key?(:dedicated_resources)
          @deployed_index_auth_config = args[:deployed_index_auth_config] if args.key?(:deployed_index_auth_config)
          @deployment_group = args[:deployment_group] if args.key?(:deployment_group)
          @deployment_tier = args[:deployment_tier] if args.key?(:deployment_tier)
          @display_name = args[:display_name] if args.key?(:display_name)
          @enable_access_logging = args[:enable_access_logging] if args.key?(:enable_access_logging)
          @enable_datapoint_upsert_logging = args[:enable_datapoint_upsert_logging] if args.key?(:enable_datapoint_upsert_logging)
          @id = args[:id] if args.key?(:id)
          @index = args[:index] if args.key?(:index)
          @index_sync_time = args[:index_sync_time] if args.key?(:index_sync_time)
          @private_endpoints = args[:private_endpoints] if args.key?(:private_endpoints)
          @psc_automation_configs = args[:psc_automation_configs] if args.key?(:psc_automation_configs)
          @reserved_ip_ranges = args[:reserved_ip_ranges] if args.key?(:reserved_ip_ranges)
        end
      end
      
      # Used to set up the auth on the DeployedIndex's private endpoint.
      class GoogleCloudAiplatformV1DeployedIndexAuthConfig
        include Google::Apis::Core::Hashable
      
        # Configuration for an authentication provider, including support for [JSON Web
        # Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
        # Corresponds to the JSON property `authProvider`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DeployedIndexAuthConfigAuthProvider]
        attr_accessor :auth_provider
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @auth_provider = args[:auth_provider] if args.key?(:auth_provider)
        end
      end
      
      # Configuration for an authentication provider, including support for [JSON Web
      # Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
      class GoogleCloudAiplatformV1DeployedIndexAuthConfigAuthProvider
        include Google::Apis::Core::Hashable
      
        # A list of allowed JWT issuers. Each entry must be a valid Google service
        # account, in the following format: `service-account-name@project-id.iam.
        # gserviceaccount.com`
        # Corresponds to the JSON property `allowedIssuers`
        # @return [Array<String>]
        attr_accessor :allowed_issuers
      
        # The list of JWT [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-
        # web-token-32#section-4.1.3). that are allowed to access. A JWT containing any
        # of these audiences will be accepted.
        # Corresponds to the JSON property `audiences`
        # @return [Array<String>]
        attr_accessor :audiences
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @allowed_issuers = args[:allowed_issuers] if args.key?(:allowed_issuers)
          @audiences = args[:audiences] if args.key?(:audiences)
        end
      end
      
      # Points to a DeployedIndex.
      class GoogleCloudAiplatformV1DeployedIndexRef
        include Google::Apis::Core::Hashable
      
        # Immutable. The ID of the DeployedIndex in the above IndexEndpoint.
        # Corresponds to the JSON property `deployedIndexId`
        # @return [String]
        attr_accessor :deployed_index_id
      
        # Output only. The display name of the DeployedIndex.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Immutable. A resource name of the IndexEndpoint.
        # Corresponds to the JSON property `indexEndpoint`
        # @return [String]
        attr_accessor :index_endpoint
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @deployed_index_id = args[:deployed_index_id] if args.key?(:deployed_index_id)
          @display_name = args[:display_name] if args.key?(:display_name)
          @index_endpoint = args[:index_endpoint] if args.key?(:index_endpoint)
        end
      end
      
      # A deployment of a Model. Endpoints contain one or more DeployedModels.
      class GoogleCloudAiplatformV1DeployedModel
        include Google::Apis::Core::Hashable
      
        # A description of resources that to large degree are decided by Vertex AI, and
        # require only a modest additional configuration. Each Model supporting these
        # resources documents its specific guidelines.
        # Corresponds to the JSON property `automaticResources`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1AutomaticResources]
        attr_accessor :automatic_resources
      
        # The checkpoint id of the model.
        # Corresponds to the JSON property `checkpointId`
        # @return [String]
        attr_accessor :checkpoint_id
      
        # Output only. Timestamp when the DeployedModel was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # A description of resources that are dedicated to a DeployedModel or
        # DeployedIndex, and that need a higher degree of manual configuration.
        # Corresponds to the JSON property `dedicatedResources`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DedicatedResources]
        attr_accessor :dedicated_resources
      
        # For custom-trained Models and AutoML Tabular Models, the container of the
        # DeployedModel instances will send `stderr` and `stdout` streams to Cloud
        # Logging by default. Please note that the logs incur cost, which are subject to
        # [Cloud Logging pricing](https://cloud.google.com/logging/pricing). User can
        # disable container logging by setting this flag to true.
        # Corresponds to the JSON property `disableContainerLogging`
        # @return [Boolean]
        attr_accessor :disable_container_logging
        alias_method :disable_container_logging?, :disable_container_logging
      
        # If true, deploy the model without explainable feature, regardless the
        # existence of Model.explanation_spec or explanation_spec.
        # Corresponds to the JSON property `disableExplanations`
        # @return [Boolean]
        attr_accessor :disable_explanations
        alias_method :disable_explanations?, :disable_explanations
      
        # The display name of the DeployedModel. If not provided upon creation, the
        # Model's display_name is used.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # If true, online prediction access logs are sent to Cloud Logging. These logs
        # are like standard server access logs, containing information like timestamp
        # and latency for each prediction request. Note that logs may incur a cost,
        # especially if your project receives prediction requests at a high queries per
        # second rate (QPS). Estimate your costs before enabling this option.
        # Corresponds to the JSON property `enableAccessLogging`
        # @return [Boolean]
        attr_accessor :enable_access_logging
        alias_method :enable_access_logging?, :enable_access_logging
      
        # Specification of Model explanation.
        # Corresponds to the JSON property `explanationSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExplanationSpec]
        attr_accessor :explanation_spec
      
        # Configuration for faster model deployment.
        # Corresponds to the JSON property `fasterDeploymentConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FasterDeploymentConfig]
        attr_accessor :faster_deployment_config
      
        # GDC pretrained / Gemini model name. The model name is a plain model name, e.g.
        # gemini-1.5-flash-002.
        # Corresponds to the JSON property `gdcConnectedModel`
        # @return [String]
        attr_accessor :gdc_connected_model
      
        # Immutable. The ID of the DeployedModel. If not provided upon deployment,
        # Vertex AI will generate a value for this ID. This value should be 1-10
        # characters, and valid characters are `/[0-9]/`.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        # The resource name of the Model that this is the deployment of. Note that the
        # Model may be in a different location than the DeployedModel's Endpoint. The
        # resource name may contain version id or version alias to specify the version.
        # Example: `projects/`project`/locations/`location`/models/`model`@2` or `
        # projects/`project`/locations/`location`/models/`model`@golden` if no version
        # is specified, the default version will be deployed.
        # Corresponds to the JSON property `model`
        # @return [String]
        attr_accessor :model
      
        # Output only. The version ID of the model that is deployed.
        # Corresponds to the JSON property `modelVersionId`
        # @return [String]
        attr_accessor :model_version_id
      
        # PrivateEndpoints proto is used to provide paths for users to send requests
        # privately. To send request via private service access, use predict_http_uri,
        # explain_http_uri or health_http_uri. To send request via private service
        # connect, use service_attachment.
        # Corresponds to the JSON property `privateEndpoints`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PrivateEndpoints]
        attr_accessor :private_endpoints
      
        # The service account that the DeployedModel's container runs as. Specify the
        # email address of the service account. If this service account is not specified,
        # the container runs as a service account that doesn't have access to the
        # resource project. Users deploying the Model must have the `iam.serviceAccounts.
        # actAs` permission on this service account.
        # Corresponds to the JSON property `serviceAccount`
        # @return [String]
        attr_accessor :service_account
      
        # The resource name of the shared DeploymentResourcePool to deploy on. Format: `
        # projects/`project`/locations/`location`/deploymentResourcePools/`
        # deployment_resource_pool``
        # Corresponds to the JSON property `sharedResources`
        # @return [String]
        attr_accessor :shared_resources
      
        # Configuration for Speculative Decoding.
        # Corresponds to the JSON property `speculativeDecodingSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SpeculativeDecodingSpec]
        attr_accessor :speculative_decoding_spec
      
        # Runtime status of the deployed model.
        # Corresponds to the JSON property `status`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DeployedModelStatus]
        attr_accessor :status
      
        # System labels to apply to Model Garden deployments. System labels are managed
        # by Google for internal use only.
        # Corresponds to the JSON property `systemLabels`
        # @return [Hash<String,String>]
        attr_accessor :system_labels
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @automatic_resources = args[:automatic_resources] if args.key?(:automatic_resources)
          @checkpoint_id = args[:checkpoint_id] if args.key?(:checkpoint_id)
          @create_time = args[:create_time] if args.key?(:create_time)
          @dedicated_resources = args[:dedicated_resources] if args.key?(:dedicated_resources)
          @disable_container_logging = args[:disable_container_logging] if args.key?(:disable_container_logging)
          @disable_explanations = args[:disable_explanations] if args.key?(:disable_explanations)
          @display_name = args[:display_name] if args.key?(:display_name)
          @enable_access_logging = args[:enable_access_logging] if args.key?(:enable_access_logging)
          @explanation_spec = args[:explanation_spec] if args.key?(:explanation_spec)
          @faster_deployment_config = args[:faster_deployment_config] if args.key?(:faster_deployment_config)
          @gdc_connected_model = args[:gdc_connected_model] if args.key?(:gdc_connected_model)
          @id = args[:id] if args.key?(:id)
          @model = args[:model] if args.key?(:model)
          @model_version_id = args[:model_version_id] if args.key?(:model_version_id)
          @private_endpoints = args[:private_endpoints] if args.key?(:private_endpoints)
          @service_account = args[:service_account] if args.key?(:service_account)
          @shared_resources = args[:shared_resources] if args.key?(:shared_resources)
          @speculative_decoding_spec = args[:speculative_decoding_spec] if args.key?(:speculative_decoding_spec)
          @status = args[:status] if args.key?(:status)
          @system_labels = args[:system_labels] if args.key?(:system_labels)
        end
      end
      
      # Points to a DeployedModel.
      class GoogleCloudAiplatformV1DeployedModelRef
        include Google::Apis::Core::Hashable
      
        # Immutable. The ID of the Checkpoint deployed in the DeployedModel.
        # Corresponds to the JSON property `checkpointId`
        # @return [String]
        attr_accessor :checkpoint_id
      
        # Immutable. An ID of a DeployedModel in the above Endpoint.
        # Corresponds to the JSON property `deployedModelId`
        # @return [String]
        attr_accessor :deployed_model_id
      
        # Immutable. A resource name of an Endpoint.
        # Corresponds to the JSON property `endpoint`
        # @return [String]
        attr_accessor :endpoint
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @checkpoint_id = args[:checkpoint_id] if args.key?(:checkpoint_id)
          @deployed_model_id = args[:deployed_model_id] if args.key?(:deployed_model_id)
          @endpoint = args[:endpoint] if args.key?(:endpoint)
        end
      end
      
      # Runtime status of the deployed model.
      class GoogleCloudAiplatformV1DeployedModelStatus
        include Google::Apis::Core::Hashable
      
        # Output only. The number of available replicas of the deployed model.
        # Corresponds to the JSON property `availableReplicaCount`
        # @return [Fixnum]
        attr_accessor :available_replica_count
      
        # Output only. The time at which the status was last updated.
        # Corresponds to the JSON property `lastUpdateTime`
        # @return [String]
        attr_accessor :last_update_time
      
        # Output only. The latest deployed model's status message (if any).
        # Corresponds to the JSON property `message`
        # @return [String]
        attr_accessor :message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @available_replica_count = args[:available_replica_count] if args.key?(:available_replica_count)
          @last_update_time = args[:last_update_time] if args.key?(:last_update_time)
          @message = args[:message] if args.key?(:message)
        end
      end
      
      # A description of resources that can be shared by multiple DeployedModels,
      # whose underlying specification consists of a DedicatedResources.
      class GoogleCloudAiplatformV1DeploymentResourcePool
        include Google::Apis::Core::Hashable
      
        # Output only. Timestamp when this DeploymentResourcePool was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # A description of resources that are dedicated to a DeployedModel or
        # DeployedIndex, and that need a higher degree of manual configuration.
        # Corresponds to the JSON property `dedicatedResources`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DedicatedResources]
        attr_accessor :dedicated_resources
      
        # If the DeploymentResourcePool is deployed with custom-trained Models or AutoML
        # Tabular Models, the container(s) of the DeploymentResourcePool will send `
        # stderr` and `stdout` streams to Cloud Logging by default. Please note that the
        # logs incur cost, which are subject to [Cloud Logging pricing](https://cloud.
        # google.com/logging/pricing). User can disable container logging by setting
        # this flag to true.
        # Corresponds to the JSON property `disableContainerLogging`
        # @return [Boolean]
        attr_accessor :disable_container_logging
        alias_method :disable_container_logging?, :disable_container_logging
      
        # Represents a customer-managed encryption key spec that can be applied to a top-
        # level resource.
        # Corresponds to the JSON property `encryptionSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EncryptionSpec]
        attr_accessor :encryption_spec
      
        # Immutable. The resource name of the DeploymentResourcePool. Format: `projects/`
        # project`/locations/`location`/deploymentResourcePools/`
        # deployment_resource_pool``
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzi`
        # @return [Boolean]
        attr_accessor :satisfies_pzi
        alias_method :satisfies_pzi?, :satisfies_pzi
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzs`
        # @return [Boolean]
        attr_accessor :satisfies_pzs
        alias_method :satisfies_pzs?, :satisfies_pzs
      
        # The service account that the DeploymentResourcePool's container(s) run as.
        # Specify the email address of the service account. If this service account is
        # not specified, the container(s) run as a service account that doesn't have
        # access to the resource project. Users deploying the Models to this
        # DeploymentResourcePool must have the `iam.serviceAccounts.actAs` permission on
        # this service account.
        # Corresponds to the JSON property `serviceAccount`
        # @return [String]
        attr_accessor :service_account
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @dedicated_resources = args[:dedicated_resources] if args.key?(:dedicated_resources)
          @disable_container_logging = args[:disable_container_logging] if args.key?(:disable_container_logging)
          @encryption_spec = args[:encryption_spec] if args.key?(:encryption_spec)
          @name = args[:name] if args.key?(:name)
          @satisfies_pzi = args[:satisfies_pzi] if args.key?(:satisfies_pzi)
          @satisfies_pzs = args[:satisfies_pzs] if args.key?(:satisfies_pzs)
          @service_account = args[:service_account] if args.key?(:service_account)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1DestinationFeatureSetting
        include Google::Apis::Core::Hashable
      
        # Specify the field name in the export destination. If not specified, Feature ID
        # is used.
        # Corresponds to the JSON property `destinationField`
        # @return [String]
        attr_accessor :destination_field
      
        # Required. The ID of the Feature to apply the setting to.
        # Corresponds to the JSON property `featureId`
        # @return [String]
        attr_accessor :feature_id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @destination_field = args[:destination_field] if args.key?(:destination_field)
          @feature_id = args[:feature_id] if args.key?(:feature_id)
        end
      end
      
      # Request message for PredictionService.DirectPredict.
      class GoogleCloudAiplatformV1DirectPredictRequest
        include Google::Apis::Core::Hashable
      
        # The prediction input.
        # Corresponds to the JSON property `inputs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Tensor>]
        attr_accessor :inputs
      
        # A tensor value type.
        # Corresponds to the JSON property `parameters`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Tensor]
        attr_accessor :parameters
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @inputs = args[:inputs] if args.key?(:inputs)
          @parameters = args[:parameters] if args.key?(:parameters)
        end
      end
      
      # Response message for PredictionService.DirectPredict.
      class GoogleCloudAiplatformV1DirectPredictResponse
        include Google::Apis::Core::Hashable
      
        # The prediction output.
        # Corresponds to the JSON property `outputs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Tensor>]
        attr_accessor :outputs
      
        # A tensor value type.
        # Corresponds to the JSON property `parameters`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Tensor]
        attr_accessor :parameters
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @outputs = args[:outputs] if args.key?(:outputs)
          @parameters = args[:parameters] if args.key?(:parameters)
        end
      end
      
      # Request message for PredictionService.DirectRawPredict.
      class GoogleCloudAiplatformV1DirectRawPredictRequest
        include Google::Apis::Core::Hashable
      
        # The prediction input.
        # Corresponds to the JSON property `input`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :input
      
        # Fully qualified name of the API method being invoked to perform predictions.
        # Format: `/namespace.Service/Method/` Example: `/tensorflow.serving.
        # PredictionService/Predict`
        # Corresponds to the JSON property `methodName`
        # @return [String]
        attr_accessor :method_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @input = args[:input] if args.key?(:input)
          @method_name = args[:method_name] if args.key?(:method_name)
        end
      end
      
      # Response message for PredictionService.DirectRawPredict.
      class GoogleCloudAiplatformV1DirectRawPredictResponse
        include Google::Apis::Core::Hashable
      
        # The prediction output.
        # Corresponds to the JSON property `output`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :output
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @output = args[:output] if args.key?(:output)
        end
      end
      
      # The input content is encapsulated and uploaded in the request.
      class GoogleCloudAiplatformV1DirectUploadSource
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Represents the spec of disk options.
      class GoogleCloudAiplatformV1DiskSpec
        include Google::Apis::Core::Hashable
      
        # Size in GB of the boot disk (default is 100GB).
        # Corresponds to the JSON property `bootDiskSizeGb`
        # @return [Fixnum]
        attr_accessor :boot_disk_size_gb
      
        # Type of the boot disk. For non-A3U machines, the default value is "pd-ssd",
        # for A3U machines, the default value is "hyperdisk-balanced". Valid values: "pd-
        # ssd" (Persistent Disk Solid State Drive), "pd-standard" (Persistent Disk Hard
        # Disk Drive) or "hyperdisk-balanced".
        # Corresponds to the JSON property `bootDiskType`
        # @return [String]
        attr_accessor :boot_disk_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @boot_disk_size_gb = args[:boot_disk_size_gb] if args.key?(:boot_disk_size_gb)
          @boot_disk_type = args[:boot_disk_type] if args.key?(:boot_disk_type)
        end
      end
      
      # DNS peering configuration. These configurations are used to create DNS peering
      # zones in the Vertex tenant project VPC, enabling resolution of records within
      # the specified domain hosted in the target network's Cloud DNS.
      class GoogleCloudAiplatformV1DnsPeeringConfig
        include Google::Apis::Core::Hashable
      
        # Required. The DNS name suffix of the zone being peered to, e.g., "my-internal-
        # domain.corp.". Must end with a dot.
        # Corresponds to the JSON property `domain`
        # @return [String]
        attr_accessor :domain
      
        # Required. The VPC network name in the target_project where the DNS zone
        # specified by 'domain' is visible.
        # Corresponds to the JSON property `targetNetwork`
        # @return [String]
        attr_accessor :target_network
      
        # Required. The project ID hosting the Cloud DNS managed zone that contains the '
        # domain'. The Vertex AI Service Agent requires the dns.peer role on this
        # project.
        # Corresponds to the JSON property `targetProject`
        # @return [String]
        attr_accessor :target_project
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @domain = args[:domain] if args.key?(:domain)
          @target_network = args[:target_network] if args.key?(:target_network)
          @target_project = args[:target_project] if args.key?(:target_project)
        end
      end
      
      # A list of double values.
      class GoogleCloudAiplatformV1DoubleArray
        include Google::Apis::Core::Hashable
      
        # A list of double values.
        # Corresponds to the JSON property `values`
        # @return [Array<Float>]
        attr_accessor :values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @values = args[:values] if args.key?(:values)
        end
      end
      
      # Describes the options to customize dynamic retrieval.
      class GoogleCloudAiplatformV1DynamicRetrievalConfig
        include Google::Apis::Core::Hashable
      
        # Optional. The threshold to be used in dynamic retrieval. If not set, a system
        # default value is used.
        # Corresponds to the JSON property `dynamicThreshold`
        # @return [Float]
        attr_accessor :dynamic_threshold
      
        # The mode of the predictor to be used in dynamic retrieval.
        # Corresponds to the JSON property `mode`
        # @return [String]
        attr_accessor :mode
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @dynamic_threshold = args[:dynamic_threshold] if args.key?(:dynamic_threshold)
          @mode = args[:mode] if args.key?(:mode)
        end
      end
      
      # Represents a customer-managed encryption key spec that can be applied to a top-
      # level resource.
      class GoogleCloudAiplatformV1EncryptionSpec
        include Google::Apis::Core::Hashable
      
        # Required. The Cloud KMS resource identifier of the customer managed encryption
        # key used to protect a resource. Has the form: `projects/my-project/locations/
        # my-region/keyRings/my-kr/cryptoKeys/my-key`. The key needs to be in the same
        # region as where the compute resource is created.
        # Corresponds to the JSON property `kmsKeyName`
        # @return [String]
        attr_accessor :kms_key_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @kms_key_name = args[:kms_key_name] if args.key?(:kms_key_name)
        end
      end
      
      # Models are deployed into it, and afterwards Endpoint is called to obtain
      # predictions and explanations.
      class GoogleCloudAiplatformV1Endpoint
        include Google::Apis::Core::Hashable
      
        # Configurations (e.g. inference timeout) that are applied on your endpoints.
        # Corresponds to the JSON property `clientConnectionConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ClientConnectionConfig]
        attr_accessor :client_connection_config
      
        # Output only. Timestamp when this Endpoint was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Output only. DNS of the dedicated endpoint. Will only be populated if
        # dedicated_endpoint_enabled is true. Depending on the features enabled, uid
        # might be a random number or a string. For example, if fast_tryout is enabled,
        # uid will be fasttryout. Format: `https://`endpoint_id`.`region`-`uid`.
        # prediction.vertexai.goog`.
        # Corresponds to the JSON property `dedicatedEndpointDns`
        # @return [String]
        attr_accessor :dedicated_endpoint_dns
      
        # If true, the endpoint will be exposed through a dedicated DNS [Endpoint.
        # dedicated_endpoint_dns]. Your request to the dedicated DNS will be isolated
        # from other users' traffic and will have better performance and reliability.
        # Note: Once you enabled dedicated endpoint, you won't be able to send request
        # to the shared DNS `region`-aiplatform.googleapis.com. The limitation will be
        # removed soon.
        # Corresponds to the JSON property `dedicatedEndpointEnabled`
        # @return [Boolean]
        attr_accessor :dedicated_endpoint_enabled
        alias_method :dedicated_endpoint_enabled?, :dedicated_endpoint_enabled
      
        # Output only. The models deployed in this Endpoint. To add or remove
        # DeployedModels use EndpointService.DeployModel and EndpointService.
        # UndeployModel respectively.
        # Corresponds to the JSON property `deployedModels`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DeployedModel>]
        attr_accessor :deployed_models
      
        # The description of the Endpoint.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Required. The display name of the Endpoint. The name can be up to 128
        # characters long and can consist of any UTF-8 characters.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Deprecated: If true, expose the Endpoint via private service connect. Only one
        # of the fields, network or enable_private_service_connect, can be set.
        # Corresponds to the JSON property `enablePrivateServiceConnect`
        # @return [Boolean]
        attr_accessor :enable_private_service_connect
        alias_method :enable_private_service_connect?, :enable_private_service_connect
      
        # Represents a customer-managed encryption key spec that can be applied to a top-
        # level resource.
        # Corresponds to the JSON property `encryptionSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EncryptionSpec]
        attr_accessor :encryption_spec
      
        # Used to perform consistent read-modify-write updates. If not set, a blind "
        # overwrite" update happens.
        # Corresponds to the JSON property `etag`
        # @return [String]
        attr_accessor :etag
      
        # Google Distributed Cloud (GDC) config.
        # Corresponds to the JSON property `gdcConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GdcConfig]
        attr_accessor :gdc_config
      
        # Configuration for GenAiAdvancedFeatures.
        # Corresponds to the JSON property `genAiAdvancedFeaturesConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenAiAdvancedFeaturesConfig]
        attr_accessor :gen_ai_advanced_features_config
      
        # The labels with user-defined metadata to organize your Endpoints. Label keys
        # and values can be no longer than 64 characters (Unicode codepoints), can only
        # contain lowercase letters, numeric characters, underscores and dashes.
        # International characters are allowed. See https://goo.gl/xmQnxf for more
        # information and examples of labels.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Output only. Resource name of the Model Monitoring job associated with this
        # Endpoint if monitoring is enabled by JobService.
        # CreateModelDeploymentMonitoringJob. Format: `projects/`project`/locations/`
        # location`/modelDeploymentMonitoringJobs/`model_deployment_monitoring_job``
        # Corresponds to the JSON property `modelDeploymentMonitoringJob`
        # @return [String]
        attr_accessor :model_deployment_monitoring_job
      
        # Output only. The resource name of the Endpoint.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Optional. The full name of the Google Compute Engine [network](https://cloud.
        # google.com//compute/docs/networks-and-firewalls#networks) to which the
        # Endpoint should be peered. Private services access must already be configured
        # for the network. If left unspecified, the Endpoint is not peered with any
        # network. Only one of the fields, network or enable_private_service_connect,
        # can be set. [Format](https://cloud.google.com/compute/docs/reference/rest/v1/
        # networks/insert): `projects/`project`/global/networks/`network``. Where ``
        # project`` is a project number, as in `12345`, and ``network`` is network name.
        # Corresponds to the JSON property `network`
        # @return [String]
        attr_accessor :network
      
        # Configuration for logging request-response to a BigQuery table.
        # Corresponds to the JSON property `predictRequestResponseLoggingConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PredictRequestResponseLoggingConfig]
        attr_accessor :predict_request_response_logging_config
      
        # Represents configuration for private service connect.
        # Corresponds to the JSON property `privateServiceConnectConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PrivateServiceConnectConfig]
        attr_accessor :private_service_connect_config
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzi`
        # @return [Boolean]
        attr_accessor :satisfies_pzi
        alias_method :satisfies_pzi?, :satisfies_pzi
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzs`
        # @return [Boolean]
        attr_accessor :satisfies_pzs
        alias_method :satisfies_pzs?, :satisfies_pzs
      
        # A map from a DeployedModel's ID to the percentage of this Endpoint's traffic
        # that should be forwarded to that DeployedModel. If a DeployedModel's ID is not
        # listed in this map, then it receives no traffic. The traffic percentage values
        # must add up to 100, or map must be empty if the Endpoint is to not accept any
        # traffic at a moment.
        # Corresponds to the JSON property `trafficSplit`
        # @return [Hash<String,Fixnum>]
        attr_accessor :traffic_split
      
        # Output only. Timestamp when this Endpoint was last updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @client_connection_config = args[:client_connection_config] if args.key?(:client_connection_config)
          @create_time = args[:create_time] if args.key?(:create_time)
          @dedicated_endpoint_dns = args[:dedicated_endpoint_dns] if args.key?(:dedicated_endpoint_dns)
          @dedicated_endpoint_enabled = args[:dedicated_endpoint_enabled] if args.key?(:dedicated_endpoint_enabled)
          @deployed_models = args[:deployed_models] if args.key?(:deployed_models)
          @description = args[:description] if args.key?(:description)
          @display_name = args[:display_name] if args.key?(:display_name)
          @enable_private_service_connect = args[:enable_private_service_connect] if args.key?(:enable_private_service_connect)
          @encryption_spec = args[:encryption_spec] if args.key?(:encryption_spec)
          @etag = args[:etag] if args.key?(:etag)
          @gdc_config = args[:gdc_config] if args.key?(:gdc_config)
          @gen_ai_advanced_features_config = args[:gen_ai_advanced_features_config] if args.key?(:gen_ai_advanced_features_config)
          @labels = args[:labels] if args.key?(:labels)
          @model_deployment_monitoring_job = args[:model_deployment_monitoring_job] if args.key?(:model_deployment_monitoring_job)
          @name = args[:name] if args.key?(:name)
          @network = args[:network] if args.key?(:network)
          @predict_request_response_logging_config = args[:predict_request_response_logging_config] if args.key?(:predict_request_response_logging_config)
          @private_service_connect_config = args[:private_service_connect_config] if args.key?(:private_service_connect_config)
          @satisfies_pzi = args[:satisfies_pzi] if args.key?(:satisfies_pzi)
          @satisfies_pzs = args[:satisfies_pzs] if args.key?(:satisfies_pzs)
          @traffic_split = args[:traffic_split] if args.key?(:traffic_split)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # Tool to search public web data, powered by Vertex AI Search and Sec4
      # compliance.
      class GoogleCloudAiplatformV1EnterpriseWebSearch
        include Google::Apis::Core::Hashable
      
        # Optional. List of domains to be excluded from the search results. The default
        # limit is 2000 domains.
        # Corresponds to the JSON property `excludeDomains`
        # @return [Array<String>]
        attr_accessor :exclude_domains
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @exclude_domains = args[:exclude_domains] if args.key?(:exclude_domains)
        end
      end
      
      # Selector for entityId. Getting ids from the given source.
      class GoogleCloudAiplatformV1EntityIdSelector
        include Google::Apis::Core::Hashable
      
        # The storage details for CSV input content.
        # Corresponds to the JSON property `csvSource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CsvSource]
        attr_accessor :csv_source
      
        # Source column that holds entity IDs. If not provided, entity IDs are extracted
        # from the column named entity_id.
        # Corresponds to the JSON property `entityIdField`
        # @return [String]
        attr_accessor :entity_id_field
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @csv_source = args[:csv_source] if args.key?(:csv_source)
          @entity_id_field = args[:entity_id_field] if args.key?(:entity_id_field)
        end
      end
      
      # An entity type is a type of object in a system that needs to be modeled and
      # have stored information about. For example, driver is an entity type, and
      # driver0 is an instance of an entity type driver.
      class GoogleCloudAiplatformV1EntityType
        include Google::Apis::Core::Hashable
      
        # Output only. Timestamp when this EntityType was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Optional. Description of the EntityType.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Optional. Used to perform a consistent read-modify-write updates. If not set,
        # a blind "overwrite" update happens.
        # Corresponds to the JSON property `etag`
        # @return [String]
        attr_accessor :etag
      
        # Optional. The labels with user-defined metadata to organize your EntityTypes.
        # Label keys and values can be no longer than 64 characters (Unicode codepoints),
        # can only contain lowercase letters, numeric characters, underscores and
        # dashes. International characters are allowed. See https://goo.gl/xmQnxf for
        # more information on and examples of labels. No more than 64 user labels can be
        # associated with one EntityType (System labels are excluded)." System reserved
        # label keys are prefixed with "aiplatform.googleapis.com/" and are immutable.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Configuration of how features in Featurestore are monitored.
        # Corresponds to the JSON property `monitoringConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeaturestoreMonitoringConfig]
        attr_accessor :monitoring_config
      
        # Immutable. Name of the EntityType. Format: `projects/`project`/locations/`
        # location`/featurestores/`featurestore`/entityTypes/`entity_type`` The last
        # part entity_type is assigned by the client. The entity_type can be up to 64
        # characters long and can consist only of ASCII Latin letters A-Z and a-z and
        # underscore(_), and ASCII digits 0-9 starting with a letter. The value will be
        # unique given a featurestore.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Optional. Config for data retention policy in offline storage. TTL in days for
        # feature values that will be stored in offline storage. The Feature Store
        # offline storage periodically removes obsolete feature values older than `
        # offline_storage_ttl_days` since the feature generation time. If unset (or
        # explicitly set to 0), default to 4000 days TTL.
        # Corresponds to the JSON property `offlineStorageTtlDays`
        # @return [Fixnum]
        attr_accessor :offline_storage_ttl_days
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzi`
        # @return [Boolean]
        attr_accessor :satisfies_pzi
        alias_method :satisfies_pzi?, :satisfies_pzi
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzs`
        # @return [Boolean]
        attr_accessor :satisfies_pzs
        alias_method :satisfies_pzs?, :satisfies_pzs
      
        # Output only. Timestamp when this EntityType was most recently updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @description = args[:description] if args.key?(:description)
          @etag = args[:etag] if args.key?(:etag)
          @labels = args[:labels] if args.key?(:labels)
          @monitoring_config = args[:monitoring_config] if args.key?(:monitoring_config)
          @name = args[:name] if args.key?(:name)
          @offline_storage_ttl_days = args[:offline_storage_ttl_days] if args.key?(:offline_storage_ttl_days)
          @satisfies_pzi = args[:satisfies_pzi] if args.key?(:satisfies_pzi)
          @satisfies_pzs = args[:satisfies_pzs] if args.key?(:satisfies_pzs)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # Represents an environment variable present in a Container or Python Module.
      class GoogleCloudAiplatformV1EnvVar
        include Google::Apis::Core::Hashable
      
        # Required. Name of the environment variable. Must be a valid C identifier.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Required. Variables that reference a $(VAR_NAME) are expanded using the
        # previous defined environment variables in the container and any service
        # environment variables. If a variable cannot be resolved, the reference in the
        # input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a
        # double $$, ie: $$(VAR_NAME). Escaped references will never be expanded,
        # regardless of whether the variable exists or not.
        # Corresponds to the JSON property `value`
        # @return [String]
        attr_accessor :value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @name = args[:name] if args.key?(:name)
          @value = args[:value] if args.key?(:value)
        end
      end
      
      # Model error analysis for each annotation.
      class GoogleCloudAiplatformV1ErrorAnalysisAnnotation
        include Google::Apis::Core::Hashable
      
        # Attributed items for a given annotation, typically representing neighbors from
        # the training sets constrained by the query type.
        # Corresponds to the JSON property `attributedItems`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ErrorAnalysisAnnotationAttributedItem>]
        attr_accessor :attributed_items
      
        # The outlier score of this annotated item. Usually defined as the min of all
        # distances from attributed items.
        # Corresponds to the JSON property `outlierScore`
        # @return [Float]
        attr_accessor :outlier_score
      
        # The threshold used to determine if this annotation is an outlier or not.
        # Corresponds to the JSON property `outlierThreshold`
        # @return [Float]
        attr_accessor :outlier_threshold
      
        # The query type used for finding the attributed items.
        # Corresponds to the JSON property `queryType`
        # @return [String]
        attr_accessor :query_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @attributed_items = args[:attributed_items] if args.key?(:attributed_items)
          @outlier_score = args[:outlier_score] if args.key?(:outlier_score)
          @outlier_threshold = args[:outlier_threshold] if args.key?(:outlier_threshold)
          @query_type = args[:query_type] if args.key?(:query_type)
        end
      end
      
      # Attributed items for a given annotation, typically representing neighbors from
      # the training sets constrained by the query type.
      class GoogleCloudAiplatformV1ErrorAnalysisAnnotationAttributedItem
        include Google::Apis::Core::Hashable
      
        # The unique ID for each annotation. Used by FE to allocate the annotation in DB.
        # Corresponds to the JSON property `annotationResourceName`
        # @return [String]
        attr_accessor :annotation_resource_name
      
        # The distance of this item to the annotation.
        # Corresponds to the JSON property `distance`
        # @return [Float]
        attr_accessor :distance
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @annotation_resource_name = args[:annotation_resource_name] if args.key?(:annotation_resource_name)
          @distance = args[:distance] if args.key?(:distance)
        end
      end
      
      # Request message for EvaluationService.EvaluateDataset.
      class GoogleCloudAiplatformV1EvaluateDatasetRequest
        include Google::Apis::Core::Hashable
      
        # The configs for autorater. This is applicable to both EvaluateInstances and
        # EvaluateDataset.
        # Corresponds to the JSON property `autoraterConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1AutoraterConfig]
        attr_accessor :autorater_config
      
        # The dataset used for evaluation.
        # Corresponds to the JSON property `dataset`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationDataset]
        attr_accessor :dataset
      
        # Required. The metrics used for evaluation.
        # Corresponds to the JSON property `metrics`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Metric>]
        attr_accessor :metrics
      
        # Config for evaluation output.
        # Corresponds to the JSON property `outputConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1OutputConfig]
        attr_accessor :output_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @autorater_config = args[:autorater_config] if args.key?(:autorater_config)
          @dataset = args[:dataset] if args.key?(:dataset)
          @metrics = args[:metrics] if args.key?(:metrics)
          @output_config = args[:output_config] if args.key?(:output_config)
        end
      end
      
      # Request message for EvaluationService.EvaluateInstances.
      class GoogleCloudAiplatformV1EvaluateInstancesRequest
        include Google::Apis::Core::Hashable
      
        # The configs for autorater. This is applicable to both EvaluateInstances and
        # EvaluateDataset.
        # Corresponds to the JSON property `autoraterConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1AutoraterConfig]
        attr_accessor :autorater_config
      
        # Input for bleu metric.
        # Corresponds to the JSON property `bleuInput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BleuInput]
        attr_accessor :bleu_input
      
        # Input for coherence metric.
        # Corresponds to the JSON property `coherenceInput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CoherenceInput]
        attr_accessor :coherence_input
      
        # Input for Comet metric.
        # Corresponds to the JSON property `cometInput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CometInput]
        attr_accessor :comet_input
      
        # Input for exact match metric.
        # Corresponds to the JSON property `exactMatchInput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExactMatchInput]
        attr_accessor :exact_match_input
      
        # Input for fluency metric.
        # Corresponds to the JSON property `fluencyInput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FluencyInput]
        attr_accessor :fluency_input
      
        # Input for fulfillment metric.
        # Corresponds to the JSON property `fulfillmentInput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FulfillmentInput]
        attr_accessor :fulfillment_input
      
        # Input for groundedness metric.
        # Corresponds to the JSON property `groundednessInput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GroundednessInput]
        attr_accessor :groundedness_input
      
        # A single instance to be evaluated. Instances are used to specify the input
        # data for evaluation, from simple string comparisons to complex, multi-turn
        # model evaluations
        # Corresponds to the JSON property `instance`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationInstance]
        attr_accessor :instance
      
        # The metrics used for evaluation. Currently, we only support evaluating a
        # single metric. If multiple metrics are provided, only the first one will be
        # evaluated.
        # Corresponds to the JSON property `metrics`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Metric>]
        attr_accessor :metrics
      
        # Input for MetricX metric.
        # Corresponds to the JSON property `metricxInput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1MetricxInput]
        attr_accessor :metricx_input
      
        # Input for pairwise metric.
        # Corresponds to the JSON property `pairwiseMetricInput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PairwiseMetricInput]
        attr_accessor :pairwise_metric_input
      
        # Input for pairwise question answering quality metric.
        # Corresponds to the JSON property `pairwiseQuestionAnsweringQualityInput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PairwiseQuestionAnsweringQualityInput]
        attr_accessor :pairwise_question_answering_quality_input
      
        # Input for pairwise summarization quality metric.
        # Corresponds to the JSON property `pairwiseSummarizationQualityInput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PairwiseSummarizationQualityInput]
        attr_accessor :pairwise_summarization_quality_input
      
        # Input for pointwise metric.
        # Corresponds to the JSON property `pointwiseMetricInput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PointwiseMetricInput]
        attr_accessor :pointwise_metric_input
      
        # Input for question answering correctness metric.
        # Corresponds to the JSON property `questionAnsweringCorrectnessInput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1QuestionAnsweringCorrectnessInput]
        attr_accessor :question_answering_correctness_input
      
        # Input for question answering helpfulness metric.
        # Corresponds to the JSON property `questionAnsweringHelpfulnessInput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1QuestionAnsweringHelpfulnessInput]
        attr_accessor :question_answering_helpfulness_input
      
        # Input for question answering quality metric.
        # Corresponds to the JSON property `questionAnsweringQualityInput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1QuestionAnsweringQualityInput]
        attr_accessor :question_answering_quality_input
      
        # Input for question answering relevance metric.
        # Corresponds to the JSON property `questionAnsweringRelevanceInput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1QuestionAnsweringRelevanceInput]
        attr_accessor :question_answering_relevance_input
      
        # Input for rouge metric.
        # Corresponds to the JSON property `rougeInput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RougeInput]
        attr_accessor :rouge_input
      
        # Instance and metric spec for RubricBasedInstructionFollowing metric.
        # Corresponds to the JSON property `rubricBasedInstructionFollowingInput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RubricBasedInstructionFollowingInput]
        attr_accessor :rubric_based_instruction_following_input
      
        # Input for safety metric.
        # Corresponds to the JSON property `safetyInput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SafetyInput]
        attr_accessor :safety_input
      
        # Input for summarization helpfulness metric.
        # Corresponds to the JSON property `summarizationHelpfulnessInput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SummarizationHelpfulnessInput]
        attr_accessor :summarization_helpfulness_input
      
        # Input for summarization quality metric.
        # Corresponds to the JSON property `summarizationQualityInput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SummarizationQualityInput]
        attr_accessor :summarization_quality_input
      
        # Input for summarization verbosity metric.
        # Corresponds to the JSON property `summarizationVerbosityInput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SummarizationVerbosityInput]
        attr_accessor :summarization_verbosity_input
      
        # Input for tool call valid metric.
        # Corresponds to the JSON property `toolCallValidInput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ToolCallValidInput]
        attr_accessor :tool_call_valid_input
      
        # Input for tool name match metric.
        # Corresponds to the JSON property `toolNameMatchInput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ToolNameMatchInput]
        attr_accessor :tool_name_match_input
      
        # Input for tool parameter key match metric.
        # Corresponds to the JSON property `toolParameterKeyMatchInput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ToolParameterKeyMatchInput]
        attr_accessor :tool_parameter_key_match_input
      
        # Input for tool parameter key value match metric.
        # Corresponds to the JSON property `toolParameterKvMatchInput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ToolParameterKvMatchInput]
        attr_accessor :tool_parameter_kv_match_input
      
        # Instances and metric spec for TrajectoryAnyOrderMatch metric.
        # Corresponds to the JSON property `trajectoryAnyOrderMatchInput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrajectoryAnyOrderMatchInput]
        attr_accessor :trajectory_any_order_match_input
      
        # Instances and metric spec for TrajectoryExactMatch metric.
        # Corresponds to the JSON property `trajectoryExactMatchInput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrajectoryExactMatchInput]
        attr_accessor :trajectory_exact_match_input
      
        # Instances and metric spec for TrajectoryInOrderMatch metric.
        # Corresponds to the JSON property `trajectoryInOrderMatchInput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrajectoryInOrderMatchInput]
        attr_accessor :trajectory_in_order_match_input
      
        # Instances and metric spec for TrajectoryPrecision metric.
        # Corresponds to the JSON property `trajectoryPrecisionInput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrajectoryPrecisionInput]
        attr_accessor :trajectory_precision_input
      
        # Instances and metric spec for TrajectoryRecall metric.
        # Corresponds to the JSON property `trajectoryRecallInput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrajectoryRecallInput]
        attr_accessor :trajectory_recall_input
      
        # Instances and metric spec for TrajectorySingleToolUse metric.
        # Corresponds to the JSON property `trajectorySingleToolUseInput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrajectorySingleToolUseInput]
        attr_accessor :trajectory_single_tool_use_input
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @autorater_config = args[:autorater_config] if args.key?(:autorater_config)
          @bleu_input = args[:bleu_input] if args.key?(:bleu_input)
          @coherence_input = args[:coherence_input] if args.key?(:coherence_input)
          @comet_input = args[:comet_input] if args.key?(:comet_input)
          @exact_match_input = args[:exact_match_input] if args.key?(:exact_match_input)
          @fluency_input = args[:fluency_input] if args.key?(:fluency_input)
          @fulfillment_input = args[:fulfillment_input] if args.key?(:fulfillment_input)
          @groundedness_input = args[:groundedness_input] if args.key?(:groundedness_input)
          @instance = args[:instance] if args.key?(:instance)
          @metrics = args[:metrics] if args.key?(:metrics)
          @metricx_input = args[:metricx_input] if args.key?(:metricx_input)
          @pairwise_metric_input = args[:pairwise_metric_input] if args.key?(:pairwise_metric_input)
          @pairwise_question_answering_quality_input = args[:pairwise_question_answering_quality_input] if args.key?(:pairwise_question_answering_quality_input)
          @pairwise_summarization_quality_input = args[:pairwise_summarization_quality_input] if args.key?(:pairwise_summarization_quality_input)
          @pointwise_metric_input = args[:pointwise_metric_input] if args.key?(:pointwise_metric_input)
          @question_answering_correctness_input = args[:question_answering_correctness_input] if args.key?(:question_answering_correctness_input)
          @question_answering_helpfulness_input = args[:question_answering_helpfulness_input] if args.key?(:question_answering_helpfulness_input)
          @question_answering_quality_input = args[:question_answering_quality_input] if args.key?(:question_answering_quality_input)
          @question_answering_relevance_input = args[:question_answering_relevance_input] if args.key?(:question_answering_relevance_input)
          @rouge_input = args[:rouge_input] if args.key?(:rouge_input)
          @rubric_based_instruction_following_input = args[:rubric_based_instruction_following_input] if args.key?(:rubric_based_instruction_following_input)
          @safety_input = args[:safety_input] if args.key?(:safety_input)
          @summarization_helpfulness_input = args[:summarization_helpfulness_input] if args.key?(:summarization_helpfulness_input)
          @summarization_quality_input = args[:summarization_quality_input] if args.key?(:summarization_quality_input)
          @summarization_verbosity_input = args[:summarization_verbosity_input] if args.key?(:summarization_verbosity_input)
          @tool_call_valid_input = args[:tool_call_valid_input] if args.key?(:tool_call_valid_input)
          @tool_name_match_input = args[:tool_name_match_input] if args.key?(:tool_name_match_input)
          @tool_parameter_key_match_input = args[:tool_parameter_key_match_input] if args.key?(:tool_parameter_key_match_input)
          @tool_parameter_kv_match_input = args[:tool_parameter_kv_match_input] if args.key?(:tool_parameter_kv_match_input)
          @trajectory_any_order_match_input = args[:trajectory_any_order_match_input] if args.key?(:trajectory_any_order_match_input)
          @trajectory_exact_match_input = args[:trajectory_exact_match_input] if args.key?(:trajectory_exact_match_input)
          @trajectory_in_order_match_input = args[:trajectory_in_order_match_input] if args.key?(:trajectory_in_order_match_input)
          @trajectory_precision_input = args[:trajectory_precision_input] if args.key?(:trajectory_precision_input)
          @trajectory_recall_input = args[:trajectory_recall_input] if args.key?(:trajectory_recall_input)
          @trajectory_single_tool_use_input = args[:trajectory_single_tool_use_input] if args.key?(:trajectory_single_tool_use_input)
        end
      end
      
      # Response message for EvaluationService.EvaluateInstances.
      class GoogleCloudAiplatformV1EvaluateInstancesResponse
        include Google::Apis::Core::Hashable
      
        # Results for bleu metric.
        # Corresponds to the JSON property `bleuResults`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BleuResults]
        attr_accessor :bleu_results
      
        # Spec for coherence result.
        # Corresponds to the JSON property `coherenceResult`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CoherenceResult]
        attr_accessor :coherence_result
      
        # Spec for Comet result - calculates the comet score for the given instance
        # using the version specified in the spec.
        # Corresponds to the JSON property `cometResult`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CometResult]
        attr_accessor :comet_result
      
        # Results for exact match metric.
        # Corresponds to the JSON property `exactMatchResults`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExactMatchResults]
        attr_accessor :exact_match_results
      
        # Spec for fluency result.
        # Corresponds to the JSON property `fluencyResult`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FluencyResult]
        attr_accessor :fluency_result
      
        # Spec for fulfillment result.
        # Corresponds to the JSON property `fulfillmentResult`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FulfillmentResult]
        attr_accessor :fulfillment_result
      
        # Spec for groundedness result.
        # Corresponds to the JSON property `groundednessResult`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GroundednessResult]
        attr_accessor :groundedness_result
      
        # Metric results for each instance. The order of the metric results is
        # guaranteed to be the same as the order of the instances in the request.
        # Corresponds to the JSON property `metricResults`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1MetricResult>]
        attr_accessor :metric_results
      
        # Spec for MetricX result - calculates the MetricX score for the given instance
        # using the version specified in the spec.
        # Corresponds to the JSON property `metricxResult`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1MetricxResult]
        attr_accessor :metricx_result
      
        # Spec for pairwise metric result.
        # Corresponds to the JSON property `pairwiseMetricResult`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PairwiseMetricResult]
        attr_accessor :pairwise_metric_result
      
        # Spec for pairwise question answering quality result.
        # Corresponds to the JSON property `pairwiseQuestionAnsweringQualityResult`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PairwiseQuestionAnsweringQualityResult]
        attr_accessor :pairwise_question_answering_quality_result
      
        # Spec for pairwise summarization quality result.
        # Corresponds to the JSON property `pairwiseSummarizationQualityResult`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PairwiseSummarizationQualityResult]
        attr_accessor :pairwise_summarization_quality_result
      
        # Spec for pointwise metric result.
        # Corresponds to the JSON property `pointwiseMetricResult`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PointwiseMetricResult]
        attr_accessor :pointwise_metric_result
      
        # Spec for question answering correctness result.
        # Corresponds to the JSON property `questionAnsweringCorrectnessResult`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1QuestionAnsweringCorrectnessResult]
        attr_accessor :question_answering_correctness_result
      
        # Spec for question answering helpfulness result.
        # Corresponds to the JSON property `questionAnsweringHelpfulnessResult`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1QuestionAnsweringHelpfulnessResult]
        attr_accessor :question_answering_helpfulness_result
      
        # Spec for question answering quality result.
        # Corresponds to the JSON property `questionAnsweringQualityResult`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1QuestionAnsweringQualityResult]
        attr_accessor :question_answering_quality_result
      
        # Spec for question answering relevance result.
        # Corresponds to the JSON property `questionAnsweringRelevanceResult`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1QuestionAnsweringRelevanceResult]
        attr_accessor :question_answering_relevance_result
      
        # Results for rouge metric.
        # Corresponds to the JSON property `rougeResults`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RougeResults]
        attr_accessor :rouge_results
      
        # Result for RubricBasedInstructionFollowing metric.
        # Corresponds to the JSON property `rubricBasedInstructionFollowingResult`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RubricBasedInstructionFollowingResult]
        attr_accessor :rubric_based_instruction_following_result
      
        # Spec for safety result.
        # Corresponds to the JSON property `safetyResult`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SafetyResult]
        attr_accessor :safety_result
      
        # Spec for summarization helpfulness result.
        # Corresponds to the JSON property `summarizationHelpfulnessResult`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SummarizationHelpfulnessResult]
        attr_accessor :summarization_helpfulness_result
      
        # Spec for summarization quality result.
        # Corresponds to the JSON property `summarizationQualityResult`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SummarizationQualityResult]
        attr_accessor :summarization_quality_result
      
        # Spec for summarization verbosity result.
        # Corresponds to the JSON property `summarizationVerbosityResult`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SummarizationVerbosityResult]
        attr_accessor :summarization_verbosity_result
      
        # Results for tool call valid metric.
        # Corresponds to the JSON property `toolCallValidResults`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ToolCallValidResults]
        attr_accessor :tool_call_valid_results
      
        # Results for tool name match metric.
        # Corresponds to the JSON property `toolNameMatchResults`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ToolNameMatchResults]
        attr_accessor :tool_name_match_results
      
        # Results for tool parameter key match metric.
        # Corresponds to the JSON property `toolParameterKeyMatchResults`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ToolParameterKeyMatchResults]
        attr_accessor :tool_parameter_key_match_results
      
        # Results for tool parameter key value match metric.
        # Corresponds to the JSON property `toolParameterKvMatchResults`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ToolParameterKvMatchResults]
        attr_accessor :tool_parameter_kv_match_results
      
        # Results for TrajectoryAnyOrderMatch metric.
        # Corresponds to the JSON property `trajectoryAnyOrderMatchResults`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrajectoryAnyOrderMatchResults]
        attr_accessor :trajectory_any_order_match_results
      
        # Results for TrajectoryExactMatch metric.
        # Corresponds to the JSON property `trajectoryExactMatchResults`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrajectoryExactMatchResults]
        attr_accessor :trajectory_exact_match_results
      
        # Results for TrajectoryInOrderMatch metric.
        # Corresponds to the JSON property `trajectoryInOrderMatchResults`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrajectoryInOrderMatchResults]
        attr_accessor :trajectory_in_order_match_results
      
        # Results for TrajectoryPrecision metric.
        # Corresponds to the JSON property `trajectoryPrecisionResults`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrajectoryPrecisionResults]
        attr_accessor :trajectory_precision_results
      
        # Results for TrajectoryRecall metric.
        # Corresponds to the JSON property `trajectoryRecallResults`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrajectoryRecallResults]
        attr_accessor :trajectory_recall_results
      
        # Results for TrajectorySingleToolUse metric.
        # Corresponds to the JSON property `trajectorySingleToolUseResults`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrajectorySingleToolUseResults]
        attr_accessor :trajectory_single_tool_use_results
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @bleu_results = args[:bleu_results] if args.key?(:bleu_results)
          @coherence_result = args[:coherence_result] if args.key?(:coherence_result)
          @comet_result = args[:comet_result] if args.key?(:comet_result)
          @exact_match_results = args[:exact_match_results] if args.key?(:exact_match_results)
          @fluency_result = args[:fluency_result] if args.key?(:fluency_result)
          @fulfillment_result = args[:fulfillment_result] if args.key?(:fulfillment_result)
          @groundedness_result = args[:groundedness_result] if args.key?(:groundedness_result)
          @metric_results = args[:metric_results] if args.key?(:metric_results)
          @metricx_result = args[:metricx_result] if args.key?(:metricx_result)
          @pairwise_metric_result = args[:pairwise_metric_result] if args.key?(:pairwise_metric_result)
          @pairwise_question_answering_quality_result = args[:pairwise_question_answering_quality_result] if args.key?(:pairwise_question_answering_quality_result)
          @pairwise_summarization_quality_result = args[:pairwise_summarization_quality_result] if args.key?(:pairwise_summarization_quality_result)
          @pointwise_metric_result = args[:pointwise_metric_result] if args.key?(:pointwise_metric_result)
          @question_answering_correctness_result = args[:question_answering_correctness_result] if args.key?(:question_answering_correctness_result)
          @question_answering_helpfulness_result = args[:question_answering_helpfulness_result] if args.key?(:question_answering_helpfulness_result)
          @question_answering_quality_result = args[:question_answering_quality_result] if args.key?(:question_answering_quality_result)
          @question_answering_relevance_result = args[:question_answering_relevance_result] if args.key?(:question_answering_relevance_result)
          @rouge_results = args[:rouge_results] if args.key?(:rouge_results)
          @rubric_based_instruction_following_result = args[:rubric_based_instruction_following_result] if args.key?(:rubric_based_instruction_following_result)
          @safety_result = args[:safety_result] if args.key?(:safety_result)
          @summarization_helpfulness_result = args[:summarization_helpfulness_result] if args.key?(:summarization_helpfulness_result)
          @summarization_quality_result = args[:summarization_quality_result] if args.key?(:summarization_quality_result)
          @summarization_verbosity_result = args[:summarization_verbosity_result] if args.key?(:summarization_verbosity_result)
          @tool_call_valid_results = args[:tool_call_valid_results] if args.key?(:tool_call_valid_results)
          @tool_name_match_results = args[:tool_name_match_results] if args.key?(:tool_name_match_results)
          @tool_parameter_key_match_results = args[:tool_parameter_key_match_results] if args.key?(:tool_parameter_key_match_results)
          @tool_parameter_kv_match_results = args[:tool_parameter_kv_match_results] if args.key?(:tool_parameter_kv_match_results)
          @trajectory_any_order_match_results = args[:trajectory_any_order_match_results] if args.key?(:trajectory_any_order_match_results)
          @trajectory_exact_match_results = args[:trajectory_exact_match_results] if args.key?(:trajectory_exact_match_results)
          @trajectory_in_order_match_results = args[:trajectory_in_order_match_results] if args.key?(:trajectory_in_order_match_results)
          @trajectory_precision_results = args[:trajectory_precision_results] if args.key?(:trajectory_precision_results)
          @trajectory_recall_results = args[:trajectory_recall_results] if args.key?(:trajectory_recall_results)
          @trajectory_single_tool_use_results = args[:trajectory_single_tool_use_results] if args.key?(:trajectory_single_tool_use_results)
        end
      end
      
      # True positive, false positive, or false negative. EvaluatedAnnotation is only
      # available under ModelEvaluationSlice with slice of `annotationSpec` dimension.
      class GoogleCloudAiplatformV1EvaluatedAnnotation
        include Google::Apis::Core::Hashable
      
        # Output only. The data item payload that the Model predicted this
        # EvaluatedAnnotation on.
        # Corresponds to the JSON property `dataItemPayload`
        # @return [Object]
        attr_accessor :data_item_payload
      
        # Annotations of model error analysis results.
        # Corresponds to the JSON property `errorAnalysisAnnotations`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ErrorAnalysisAnnotation>]
        attr_accessor :error_analysis_annotations
      
        # Output only. ID of the EvaluatedDataItemView under the same ancestor
        # ModelEvaluation. The EvaluatedDataItemView consists of all ground truths and
        # predictions on data_item_payload.
        # Corresponds to the JSON property `evaluatedDataItemViewId`
        # @return [String]
        attr_accessor :evaluated_data_item_view_id
      
        # Explanations of predictions. Each element of the explanations indicates the
        # explanation for one explanation Method. The attributions list in the
        # EvaluatedAnnotationExplanation.explanation object corresponds to the
        # predictions list. For example, the second element in the attributions list
        # explains the second element in the predictions list.
        # Corresponds to the JSON property `explanations`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluatedAnnotationExplanation>]
        attr_accessor :explanations
      
        # Output only. The ground truth Annotations, i.e. the Annotations that exist in
        # the test data the Model is evaluated on. For true positive, there is one and
        # only one ground truth annotation, which matches the only prediction in
        # predictions. For false positive, there are zero or more ground truth
        # annotations that are similar to the only prediction in predictions, but not
        # enough for a match. For false negative, there is one and only one ground truth
        # annotation, which doesn't match any predictions created by the model. The
        # schema of the ground truth is stored in ModelEvaluation.annotation_schema_uri
        # Corresponds to the JSON property `groundTruths`
        # @return [Array<Object>]
        attr_accessor :ground_truths
      
        # Output only. The model predicted annotations. For true positive, there is one
        # and only one prediction, which matches the only one ground truth annotation in
        # ground_truths. For false positive, there is one and only one prediction, which
        # doesn't match any ground truth annotation of the corresponding
        # data_item_view_id. For false negative, there are zero or more predictions
        # which are similar to the only ground truth annotation in ground_truths but not
        # enough for a match. The schema of the prediction is stored in ModelEvaluation.
        # annotation_schema_uri
        # Corresponds to the JSON property `predictions`
        # @return [Array<Object>]
        attr_accessor :predictions
      
        # Output only. Type of the EvaluatedAnnotation.
        # Corresponds to the JSON property `type`
        # @return [String]
        attr_accessor :type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @data_item_payload = args[:data_item_payload] if args.key?(:data_item_payload)
          @error_analysis_annotations = args[:error_analysis_annotations] if args.key?(:error_analysis_annotations)
          @evaluated_data_item_view_id = args[:evaluated_data_item_view_id] if args.key?(:evaluated_data_item_view_id)
          @explanations = args[:explanations] if args.key?(:explanations)
          @ground_truths = args[:ground_truths] if args.key?(:ground_truths)
          @predictions = args[:predictions] if args.key?(:predictions)
          @type = args[:type] if args.key?(:type)
        end
      end
      
      # Explanation result of the prediction produced by the Model.
      class GoogleCloudAiplatformV1EvaluatedAnnotationExplanation
        include Google::Apis::Core::Hashable
      
        # Explanation of a prediction (provided in PredictResponse.predictions) produced
        # by the Model on a given instance.
        # Corresponds to the JSON property `explanation`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Explanation]
        attr_accessor :explanation
      
        # Explanation type. For AutoML Image Classification models, possible values are:
        # * `image-integrated-gradients` * `image-xrai`
        # Corresponds to the JSON property `explanationType`
        # @return [String]
        attr_accessor :explanation_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @explanation = args[:explanation] if args.key?(:explanation)
          @explanation_type = args[:explanation_type] if args.key?(:explanation_type)
        end
      end
      
      # The dataset used for evaluation.
      class GoogleCloudAiplatformV1EvaluationDataset
        include Google::Apis::Core::Hashable
      
        # The BigQuery location for the input content.
        # Corresponds to the JSON property `bigquerySource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BigQuerySource]
        attr_accessor :bigquery_source
      
        # The Google Cloud Storage location for the input content.
        # Corresponds to the JSON property `gcsSource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GcsSource]
        attr_accessor :gcs_source
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @bigquery_source = args[:bigquery_source] if args.key?(:bigquery_source)
          @gcs_source = args[:gcs_source] if args.key?(:gcs_source)
        end
      end
      
      # A single instance to be evaluated. Instances are used to specify the input
      # data for evaluation, from simple string comparisons to complex, multi-turn
      # model evaluations
      class GoogleCloudAiplatformV1EvaluationInstance
        include Google::Apis::Core::Hashable
      
        # Instance data specified as a map.
        # Corresponds to the JSON property `otherData`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationInstanceMapInstance]
        attr_accessor :other_data
      
        # Instance data used to populate placeholders in a metric prompt template.
        # Corresponds to the JSON property `prompt`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationInstanceInstanceData]
        attr_accessor :prompt
      
        # Instance data used to populate placeholders in a metric prompt template.
        # Corresponds to the JSON property `reference`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationInstanceInstanceData]
        attr_accessor :reference
      
        # Instance data used to populate placeholders in a metric prompt template.
        # Corresponds to the JSON property `response`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationInstanceInstanceData]
        attr_accessor :response
      
        # Optional. Named groups of rubrics associated with the prompt. This is used for
        # rubric-based evaluations where rubrics can be referenced by a key. The key
        # could represent versions, associated metrics, etc.
        # Corresponds to the JSON property `rubricGroups`
        # @return [Hash<String,Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RubricGroup>]
        attr_accessor :rubric_groups
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @other_data = args[:other_data] if args.key?(:other_data)
          @prompt = args[:prompt] if args.key?(:prompt)
          @reference = args[:reference] if args.key?(:reference)
          @response = args[:response] if args.key?(:response)
          @rubric_groups = args[:rubric_groups] if args.key?(:rubric_groups)
        end
      end
      
      # Instance data used to populate placeholders in a metric prompt template.
      class GoogleCloudAiplatformV1EvaluationInstanceInstanceData
        include Google::Apis::Core::Hashable
      
        # List of standard Content messages from Gemini API.
        # Corresponds to the JSON property `contents`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationInstanceInstanceDataContents]
        attr_accessor :contents
      
        # Text data.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @contents = args[:contents] if args.key?(:contents)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # List of standard Content messages from Gemini API.
      class GoogleCloudAiplatformV1EvaluationInstanceInstanceDataContents
        include Google::Apis::Core::Hashable
      
        # Optional. Repeated contents.
        # Corresponds to the JSON property `contents`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Content>]
        attr_accessor :contents
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @contents = args[:contents] if args.key?(:contents)
        end
      end
      
      # Instance data specified as a map.
      class GoogleCloudAiplatformV1EvaluationInstanceMapInstance
        include Google::Apis::Core::Hashable
      
        # Optional. Map of instance data.
        # Corresponds to the JSON property `mapInstance`
        # @return [Hash<String,Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationInstanceInstanceData>]
        attr_accessor :map_instance
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @map_instance = args[:map_instance] if args.key?(:map_instance)
        end
      end
      
      # EvaluationItem is a single evaluation request or result. The content of an
      # EvaluationItem is immutable - it cannot be updated once created.
      # EvaluationItems can be deleted when no longer needed.
      class GoogleCloudAiplatformV1EvaluationItem
        include Google::Apis::Core::Hashable
      
        # Output only. Timestamp when this item was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Required. The display name of the EvaluationItem.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `error`
        # @return [Google::Apis::AiplatformV1::GoogleRpcStatus]
        attr_accessor :error
      
        # Required. The type of the EvaluationItem.
        # Corresponds to the JSON property `evaluationItemType`
        # @return [String]
        attr_accessor :evaluation_item_type
      
        # Single evaluation request.
        # Corresponds to the JSON property `evaluationRequest`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationRequest]
        attr_accessor :evaluation_request
      
        # Evaluation result.
        # Corresponds to the JSON property `evaluationResponse`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationResult]
        attr_accessor :evaluation_response
      
        # The Cloud Storage object where the request or response is stored.
        # Corresponds to the JSON property `gcsUri`
        # @return [String]
        attr_accessor :gcs_uri
      
        # Optional. Labels for the EvaluationItem.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Optional. Metadata for the EvaluationItem.
        # Corresponds to the JSON property `metadata`
        # @return [Object]
        attr_accessor :metadata
      
        # Identifier. The resource name of the EvaluationItem. Format: `projects/`
        # project`/locations/`location`/evaluationItems/`evaluation_item``
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @display_name = args[:display_name] if args.key?(:display_name)
          @error = args[:error] if args.key?(:error)
          @evaluation_item_type = args[:evaluation_item_type] if args.key?(:evaluation_item_type)
          @evaluation_request = args[:evaluation_request] if args.key?(:evaluation_request)
          @evaluation_response = args[:evaluation_response] if args.key?(:evaluation_response)
          @gcs_uri = args[:gcs_uri] if args.key?(:gcs_uri)
          @labels = args[:labels] if args.key?(:labels)
          @metadata = args[:metadata] if args.key?(:metadata)
          @name = args[:name] if args.key?(:name)
        end
      end
      
      # Prompt to be evaluated.
      class GoogleCloudAiplatformV1EvaluationPrompt
        include Google::Apis::Core::Hashable
      
        # Message to hold a prompt template and the values to populate the template.
        # Corresponds to the JSON property `promptTemplateData`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationPromptPromptTemplateData]
        attr_accessor :prompt_template_data
      
        # Text prompt.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        # Fields and values that can be used to populate the prompt template.
        # Corresponds to the JSON property `value`
        # @return [Object]
        attr_accessor :value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @prompt_template_data = args[:prompt_template_data] if args.key?(:prompt_template_data)
          @text = args[:text] if args.key?(:text)
          @value = args[:value] if args.key?(:value)
        end
      end
      
      # Message to hold a prompt template and the values to populate the template.
      class GoogleCloudAiplatformV1EvaluationPromptPromptTemplateData
        include Google::Apis::Core::Hashable
      
        # The values for fields in the prompt template.
        # Corresponds to the JSON property `values`
        # @return [Hash<String,Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Content>]
        attr_accessor :values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @values = args[:values] if args.key?(:values)
        end
      end
      
      # Single evaluation request.
      class GoogleCloudAiplatformV1EvaluationRequest
        include Google::Apis::Core::Hashable
      
        # Optional. Responses from model under test and other baseline models for
        # comparison.
        # Corresponds to the JSON property `candidateResponses`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CandidateResponse>]
        attr_accessor :candidate_responses
      
        # Responses from model or agent.
        # Corresponds to the JSON property `goldenResponse`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CandidateResponse]
        attr_accessor :golden_response
      
        # Prompt to be evaluated.
        # Corresponds to the JSON property `prompt`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationPrompt]
        attr_accessor :prompt
      
        # Optional. Named groups of rubrics associated with this prompt. The key is a
        # user-defined name for the rubric group.
        # Corresponds to the JSON property `rubrics`
        # @return [Hash<String,Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RubricGroup>]
        attr_accessor :rubrics
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @candidate_responses = args[:candidate_responses] if args.key?(:candidate_responses)
          @golden_response = args[:golden_response] if args.key?(:golden_response)
          @prompt = args[:prompt] if args.key?(:prompt)
          @rubrics = args[:rubrics] if args.key?(:rubrics)
        end
      end
      
      # Evaluation result.
      class GoogleCloudAiplatformV1EvaluationResult
        include Google::Apis::Core::Hashable
      
        # Optional. The results for the metric.
        # Corresponds to the JSON property `candidateResults`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CandidateResult>]
        attr_accessor :candidate_results
      
        # Required. The request item that was evaluated. Format: projects/`project`/
        # locations/`location`/evaluationItems/`evaluation_item`
        # Corresponds to the JSON property `evaluationRequest`
        # @return [String]
        attr_accessor :evaluation_request
      
        # Required. The evaluation run that was used to generate the result. Format:
        # projects/`project`/locations/`location`/evaluationRuns/`evaluation_run`
        # Corresponds to the JSON property `evaluationRun`
        # @return [String]
        attr_accessor :evaluation_run
      
        # Optional. Metadata about the evaluation result.
        # Corresponds to the JSON property `metadata`
        # @return [Object]
        attr_accessor :metadata
      
        # Required. The metric that was evaluated.
        # Corresponds to the JSON property `metric`
        # @return [String]
        attr_accessor :metric
      
        # Single evaluation request.
        # Corresponds to the JSON property `request`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationRequest]
        attr_accessor :request
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @candidate_results = args[:candidate_results] if args.key?(:candidate_results)
          @evaluation_request = args[:evaluation_request] if args.key?(:evaluation_request)
          @evaluation_run = args[:evaluation_run] if args.key?(:evaluation_run)
          @metadata = args[:metadata] if args.key?(:metadata)
          @metric = args[:metric] if args.key?(:metric)
          @request = args[:request] if args.key?(:request)
        end
      end
      
      # The results of the evaluation run.
      class GoogleCloudAiplatformV1EvaluationResults
        include Google::Apis::Core::Hashable
      
        # The evaluation set where item level results are stored.
        # Corresponds to the JSON property `evaluationSet`
        # @return [String]
        attr_accessor :evaluation_set
      
        # The summary metrics for the evaluation run.
        # Corresponds to the JSON property `summaryMetrics`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SummaryMetrics]
        attr_accessor :summary_metrics
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @evaluation_set = args[:evaluation_set] if args.key?(:evaluation_set)
          @summary_metrics = args[:summary_metrics] if args.key?(:summary_metrics)
        end
      end
      
      # Configuration for a rubric group to be generated/saved for evaluation.
      class GoogleCloudAiplatformV1EvaluationRubricConfig
        include Google::Apis::Core::Hashable
      
        # Specification for a pre-defined metric.
        # Corresponds to the JSON property `predefinedRubricGenerationSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationRunMetricPredefinedMetricSpec]
        attr_accessor :predefined_rubric_generation_spec
      
        # Specification for how rubrics should be generated.
        # Corresponds to the JSON property `rubricGenerationSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationRunMetricRubricGenerationSpec]
        attr_accessor :rubric_generation_spec
      
        # Required. The key used to save the generated rubrics. If a generation spec is
        # provided, this key will be used for the name of the generated rubric group.
        # Otherwise, this key will be used to look up the existing rubric group on the
        # evaluation item. Note that if a rubric group key is specified on both a rubric
        # config and an evaluation metric, the key from the metric will be used to
        # select the rubrics for evaluation.
        # Corresponds to the JSON property `rubricGroupKey`
        # @return [String]
        attr_accessor :rubric_group_key
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @predefined_rubric_generation_spec = args[:predefined_rubric_generation_spec] if args.key?(:predefined_rubric_generation_spec)
          @rubric_generation_spec = args[:rubric_generation_spec] if args.key?(:rubric_generation_spec)
          @rubric_group_key = args[:rubric_group_key] if args.key?(:rubric_group_key)
        end
      end
      
      # EvaluationRun is a resource that represents a single evaluation run, which
      # includes a set of prompts, model responses, evaluation configuration and the
      # resulting metrics.
      class GoogleCloudAiplatformV1EvaluationRun
        include Google::Apis::Core::Hashable
      
        # Output only. Time when the evaluation run was completed.
        # Corresponds to the JSON property `completionTime`
        # @return [String]
        attr_accessor :completion_time
      
        # Output only. Time when the evaluation run was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # The data source for the evaluation run.
        # Corresponds to the JSON property `dataSource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationRunDataSource]
        attr_accessor :data_source
      
        # Required. The display name of the Evaluation Run.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `error`
        # @return [Google::Apis::AiplatformV1::GoogleRpcStatus]
        attr_accessor :error
      
        # The Evalution configuration used for the evaluation run.
        # Corresponds to the JSON property `evaluationConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationRunEvaluationConfig]
        attr_accessor :evaluation_config
      
        # The results of the evaluation run.
        # Corresponds to the JSON property `evaluationResults`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationResults]
        attr_accessor :evaluation_results
      
        # Output only. The specific evaluation set of the evaluation run. For runs with
        # an evaluation set input, this will be that same set. For runs with BigQuery
        # input, it's the sampled BigQuery dataset.
        # Corresponds to the JSON property `evaluationSetSnapshot`
        # @return [String]
        attr_accessor :evaluation_set_snapshot
      
        # Optional. The candidate to inference config map for the evaluation run. The
        # candidate can be up to 128 characters long and can consist of any UTF-8
        # characters.
        # Corresponds to the JSON property `inferenceConfigs`
        # @return [Hash<String,Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationRunInferenceConfig>]
        attr_accessor :inference_configs
      
        # Optional. Labels for the evaluation run.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Optional. Metadata about the evaluation run, can be used by the caller to
        # store additional tracking information about the evaluation run.
        # Corresponds to the JSON property `metadata`
        # @return [Object]
        attr_accessor :metadata
      
        # Identifier. The resource name of the EvaluationRun. This is a unique
        # identifier. Format: `projects/`project`/locations/`location`/evaluationRuns/`
        # evaluation_run``
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Output only. The state of the evaluation run.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @completion_time = args[:completion_time] if args.key?(:completion_time)
          @create_time = args[:create_time] if args.key?(:create_time)
          @data_source = args[:data_source] if args.key?(:data_source)
          @display_name = args[:display_name] if args.key?(:display_name)
          @error = args[:error] if args.key?(:error)
          @evaluation_config = args[:evaluation_config] if args.key?(:evaluation_config)
          @evaluation_results = args[:evaluation_results] if args.key?(:evaluation_results)
          @evaluation_set_snapshot = args[:evaluation_set_snapshot] if args.key?(:evaluation_set_snapshot)
          @inference_configs = args[:inference_configs] if args.key?(:inference_configs)
          @labels = args[:labels] if args.key?(:labels)
          @metadata = args[:metadata] if args.key?(:metadata)
          @name = args[:name] if args.key?(:name)
          @state = args[:state] if args.key?(:state)
        end
      end
      
      # The data source for the evaluation run.
      class GoogleCloudAiplatformV1EvaluationRunDataSource
        include Google::Apis::Core::Hashable
      
        # The request set for the evaluation run.
        # Corresponds to the JSON property `bigqueryRequestSet`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BigQueryRequestSet]
        attr_accessor :bigquery_request_set
      
        # The EvaluationSet resource name. Format: `projects/`project`/locations/`
        # location`/evaluationSets/`evaluation_set``
        # Corresponds to the JSON property `evaluationSet`
        # @return [String]
        attr_accessor :evaluation_set
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @bigquery_request_set = args[:bigquery_request_set] if args.key?(:bigquery_request_set)
          @evaluation_set = args[:evaluation_set] if args.key?(:evaluation_set)
        end
      end
      
      # The Evalution configuration used for the evaluation run.
      class GoogleCloudAiplatformV1EvaluationRunEvaluationConfig
        include Google::Apis::Core::Hashable
      
        # The autorater config used for the evaluation run.
        # Corresponds to the JSON property `autoraterConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationRunEvaluationConfigAutoraterConfig]
        attr_accessor :autorater_config
      
        # Required. The metrics to be calculated in the evaluation run.
        # Corresponds to the JSON property `metrics`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationRunMetric>]
        attr_accessor :metrics
      
        # The output config for the evaluation run.
        # Corresponds to the JSON property `outputConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationRunEvaluationConfigOutputConfig]
        attr_accessor :output_config
      
        # Prompt template used for inference.
        # Corresponds to the JSON property `promptTemplate`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationRunEvaluationConfigPromptTemplate]
        attr_accessor :prompt_template
      
        # Optional. The rubric configs for the evaluation run. They are used to generate
        # rubrics which can be used by rubric-based metrics. Multiple rubric configs can
        # be specified for rubric generation but only one rubric config can be used for
        # a rubric-based metric. If more than one rubric config is provided, the
        # evaluation metric must specify a rubric group key. Note that if a generation
        # spec is specified on both a rubric config and an evaluation metric, the
        # rubrics generated for the metric will be used for evaluation.
        # Corresponds to the JSON property `rubricConfigs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationRubricConfig>]
        attr_accessor :rubric_configs
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @autorater_config = args[:autorater_config] if args.key?(:autorater_config)
          @metrics = args[:metrics] if args.key?(:metrics)
          @output_config = args[:output_config] if args.key?(:output_config)
          @prompt_template = args[:prompt_template] if args.key?(:prompt_template)
          @rubric_configs = args[:rubric_configs] if args.key?(:rubric_configs)
        end
      end
      
      # The autorater config used for the evaluation run.
      class GoogleCloudAiplatformV1EvaluationRunEvaluationConfigAutoraterConfig
        include Google::Apis::Core::Hashable
      
        # Optional. The fully qualified name of the publisher model or tuned autorater
        # endpoint to use. Publisher model format: `projects/`project`/locations/`
        # location`/publishers/*/models/*` Tuned model endpoint format: `projects/`
        # project`/locations/`location`/endpoints/`endpoint``
        # Corresponds to the JSON property `autoraterModel`
        # @return [String]
        attr_accessor :autorater_model
      
        # Generation config.
        # Corresponds to the JSON property `generationConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenerationConfig]
        attr_accessor :generation_config
      
        # Optional. Number of samples for each instance in the dataset. If not specified,
        # the default is 4. Minimum value is 1, maximum value is 32.
        # Corresponds to the JSON property `sampleCount`
        # @return [Fixnum]
        attr_accessor :sample_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @autorater_model = args[:autorater_model] if args.key?(:autorater_model)
          @generation_config = args[:generation_config] if args.key?(:generation_config)
          @sample_count = args[:sample_count] if args.key?(:sample_count)
        end
      end
      
      # The output config for the evaluation run.
      class GoogleCloudAiplatformV1EvaluationRunEvaluationConfigOutputConfig
        include Google::Apis::Core::Hashable
      
        # The BigQuery location for the output content.
        # Corresponds to the JSON property `bigqueryDestination`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BigQueryDestination]
        attr_accessor :bigquery_destination
      
        # The Google Cloud Storage location where the output is to be written to.
        # Corresponds to the JSON property `gcsDestination`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GcsDestination]
        attr_accessor :gcs_destination
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @bigquery_destination = args[:bigquery_destination] if args.key?(:bigquery_destination)
          @gcs_destination = args[:gcs_destination] if args.key?(:gcs_destination)
        end
      end
      
      # Prompt template used for inference.
      class GoogleCloudAiplatformV1EvaluationRunEvaluationConfigPromptTemplate
        include Google::Apis::Core::Hashable
      
        # Prompt template stored in Cloud Storage. Format: "gs://my-bucket/file-name.txt"
        # .
        # Corresponds to the JSON property `gcsUri`
        # @return [String]
        attr_accessor :gcs_uri
      
        # Inline prompt template. Template variables should be in the format "`var_name`"
        # . Example: "Translate the following from `source_lang` to `target_lang`: `text`
        # "
        # Corresponds to the JSON property `promptTemplate`
        # @return [String]
        attr_accessor :prompt_template
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @gcs_uri = args[:gcs_uri] if args.key?(:gcs_uri)
          @prompt_template = args[:prompt_template] if args.key?(:prompt_template)
        end
      end
      
      # An inference config used for model inference during the evaluation run.
      class GoogleCloudAiplatformV1EvaluationRunInferenceConfig
        include Google::Apis::Core::Hashable
      
        # Generation config.
        # Corresponds to the JSON property `generationConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenerationConfig]
        attr_accessor :generation_config
      
        # Required. The fully qualified name of the publisher model or endpoint to use.
        # Publisher model format: `projects/`project`/locations/`location`/publishers/*/
        # models/*` Endpoint format: `projects/`project`/locations/`location`/endpoints/`
        # endpoint``
        # Corresponds to the JSON property `model`
        # @return [String]
        attr_accessor :model
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generation_config = args[:generation_config] if args.key?(:generation_config)
          @model = args[:model] if args.key?(:model)
        end
      end
      
      # The metric used for evaluation runs.
      class GoogleCloudAiplatformV1EvaluationRunMetric
        include Google::Apis::Core::Hashable
      
        # Specification for an LLM based metric.
        # Corresponds to the JSON property `llmBasedMetricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationRunMetricLlmBasedMetricSpec]
        attr_accessor :llm_based_metric_spec
      
        # Required. The name of the metric.
        # Corresponds to the JSON property `metric`
        # @return [String]
        attr_accessor :metric
      
        # Specification for a pre-defined metric.
        # Corresponds to the JSON property `predefinedMetricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationRunMetricPredefinedMetricSpec]
        attr_accessor :predefined_metric_spec
      
        # Specification for a metric that is based on rubrics.
        # Corresponds to the JSON property `rubricBasedMetricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationRunMetricRubricBasedMetricSpec]
        attr_accessor :rubric_based_metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @llm_based_metric_spec = args[:llm_based_metric_spec] if args.key?(:llm_based_metric_spec)
          @metric = args[:metric] if args.key?(:metric)
          @predefined_metric_spec = args[:predefined_metric_spec] if args.key?(:predefined_metric_spec)
          @rubric_based_metric_spec = args[:rubric_based_metric_spec] if args.key?(:rubric_based_metric_spec)
        end
      end
      
      # Specification for an LLM based metric.
      class GoogleCloudAiplatformV1EvaluationRunMetricLlmBasedMetricSpec
        include Google::Apis::Core::Hashable
      
        # Optional. Optional additional configuration for the metric.
        # Corresponds to the JSON property `additionalConfig`
        # @return [Hash<String,Object>]
        attr_accessor :additional_config
      
        # The autorater config used for the evaluation run.
        # Corresponds to the JSON property `judgeAutoraterConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationRunEvaluationConfigAutoraterConfig]
        attr_accessor :judge_autorater_config
      
        # Required. Template for the prompt sent to the judge model.
        # Corresponds to the JSON property `metricPromptTemplate`
        # @return [String]
        attr_accessor :metric_prompt_template
      
        # Specification for a pre-defined metric.
        # Corresponds to the JSON property `predefinedRubricGenerationSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationRunMetricPredefinedMetricSpec]
        attr_accessor :predefined_rubric_generation_spec
      
        # Specification for how rubrics should be generated.
        # Corresponds to the JSON property `rubricGenerationSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationRunMetricRubricGenerationSpec]
        attr_accessor :rubric_generation_spec
      
        # Use a pre-defined group of rubrics associated with the input. Refers to a key
        # in the rubric_groups map of EvaluationInstance.
        # Corresponds to the JSON property `rubricGroupKey`
        # @return [String]
        attr_accessor :rubric_group_key
      
        # Optional. System instructions for the judge model.
        # Corresponds to the JSON property `systemInstruction`
        # @return [String]
        attr_accessor :system_instruction
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @additional_config = args[:additional_config] if args.key?(:additional_config)
          @judge_autorater_config = args[:judge_autorater_config] if args.key?(:judge_autorater_config)
          @metric_prompt_template = args[:metric_prompt_template] if args.key?(:metric_prompt_template)
          @predefined_rubric_generation_spec = args[:predefined_rubric_generation_spec] if args.key?(:predefined_rubric_generation_spec)
          @rubric_generation_spec = args[:rubric_generation_spec] if args.key?(:rubric_generation_spec)
          @rubric_group_key = args[:rubric_group_key] if args.key?(:rubric_group_key)
          @system_instruction = args[:system_instruction] if args.key?(:system_instruction)
        end
      end
      
      # Specification for a pre-defined metric.
      class GoogleCloudAiplatformV1EvaluationRunMetricPredefinedMetricSpec
        include Google::Apis::Core::Hashable
      
        # Required. The name of a pre-defined metric, such as "instruction_following_v1"
        # or "text_quality_v1".
        # Corresponds to the JSON property `metricSpecName`
        # @return [String]
        attr_accessor :metric_spec_name
      
        # Optional. The parameters needed to run the pre-defined metric.
        # Corresponds to the JSON property `parameters`
        # @return [Hash<String,Object>]
        attr_accessor :parameters
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @metric_spec_name = args[:metric_spec_name] if args.key?(:metric_spec_name)
          @parameters = args[:parameters] if args.key?(:parameters)
        end
      end
      
      # Specification for a metric that is based on rubrics.
      class GoogleCloudAiplatformV1EvaluationRunMetricRubricBasedMetricSpec
        include Google::Apis::Core::Hashable
      
        # Defines a list of rubrics, used when providing rubrics inline.
        # Corresponds to the JSON property `inlineRubrics`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationRunMetricRubricBasedMetricSpecRepeatedRubrics]
        attr_accessor :inline_rubrics
      
        # The autorater config used for the evaluation run.
        # Corresponds to the JSON property `judgeAutoraterConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationRunEvaluationConfigAutoraterConfig]
        attr_accessor :judge_autorater_config
      
        # Optional. Template for the prompt used by the judge model to evaluate against
        # rubrics.
        # Corresponds to the JSON property `metricPromptTemplate`
        # @return [String]
        attr_accessor :metric_prompt_template
      
        # Specification for how rubrics should be generated.
        # Corresponds to the JSON property `rubricGenerationSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationRunMetricRubricGenerationSpec]
        attr_accessor :rubric_generation_spec
      
        # Use a pre-defined group of rubrics associated with the input content. This
        # refers to a key in the `rubric_groups` map of `RubricEnhancedContents`.
        # Corresponds to the JSON property `rubricGroupKey`
        # @return [String]
        attr_accessor :rubric_group_key
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @inline_rubrics = args[:inline_rubrics] if args.key?(:inline_rubrics)
          @judge_autorater_config = args[:judge_autorater_config] if args.key?(:judge_autorater_config)
          @metric_prompt_template = args[:metric_prompt_template] if args.key?(:metric_prompt_template)
          @rubric_generation_spec = args[:rubric_generation_spec] if args.key?(:rubric_generation_spec)
          @rubric_group_key = args[:rubric_group_key] if args.key?(:rubric_group_key)
        end
      end
      
      # Defines a list of rubrics, used when providing rubrics inline.
      class GoogleCloudAiplatformV1EvaluationRunMetricRubricBasedMetricSpecRepeatedRubrics
        include Google::Apis::Core::Hashable
      
        # The list of rubrics.
        # Corresponds to the JSON property `rubrics`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Rubric>]
        attr_accessor :rubrics
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @rubrics = args[:rubrics] if args.key?(:rubrics)
        end
      end
      
      # Specification for how rubrics should be generated.
      class GoogleCloudAiplatformV1EvaluationRunMetricRubricGenerationSpec
        include Google::Apis::Core::Hashable
      
        # The autorater config used for the evaluation run.
        # Corresponds to the JSON property `modelConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationRunEvaluationConfigAutoraterConfig]
        attr_accessor :model_config
      
        # Optional. Template for the prompt used to generate rubrics. The details should
        # be updated based on the most-recent recipe requirements.
        # Corresponds to the JSON property `promptTemplate`
        # @return [String]
        attr_accessor :prompt_template
      
        # Optional. The type of rubric content to be generated.
        # Corresponds to the JSON property `rubricContentType`
        # @return [String]
        attr_accessor :rubric_content_type
      
        # Optional. An optional, pre-defined list of allowed types for generated rubrics.
        # If this field is provided, it implies `include_rubric_type` should be true,
        # and the generated rubric types should be chosen from this ontology.
        # Corresponds to the JSON property `rubricTypeOntology`
        # @return [Array<String>]
        attr_accessor :rubric_type_ontology
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @model_config = args[:model_config] if args.key?(:model_config)
          @prompt_template = args[:prompt_template] if args.key?(:prompt_template)
          @rubric_content_type = args[:rubric_content_type] if args.key?(:rubric_content_type)
          @rubric_type_ontology = args[:rubric_type_ontology] if args.key?(:rubric_type_ontology)
        end
      end
      
      # EvaluationSet is a collection of related EvaluationItems that are evaluated
      # together.
      class GoogleCloudAiplatformV1EvaluationSet
        include Google::Apis::Core::Hashable
      
        # Output only. Timestamp when this item was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Required. The display name of the EvaluationSet.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Required. The EvaluationItems that are part of this dataset.
        # Corresponds to the JSON property `evaluationItems`
        # @return [Array<String>]
        attr_accessor :evaluation_items
      
        # Optional. Metadata for the EvaluationSet.
        # Corresponds to the JSON property `metadata`
        # @return [Object]
        attr_accessor :metadata
      
        # Identifier. The resource name of the EvaluationSet. Format: `projects/`project`
        # /locations/`location`/evaluationSets/`evaluation_set``
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Output only. Timestamp when this item was last updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @display_name = args[:display_name] if args.key?(:display_name)
          @evaluation_items = args[:evaluation_items] if args.key?(:evaluation_items)
          @metadata = args[:metadata] if args.key?(:metadata)
          @name = args[:name] if args.key?(:name)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # An edge describing the relationship between an Artifact and an Execution in a
      # lineage graph.
      class GoogleCloudAiplatformV1Event
        include Google::Apis::Core::Hashable
      
        # Required. The relative resource name of the Artifact in the Event.
        # Corresponds to the JSON property `artifact`
        # @return [String]
        attr_accessor :artifact
      
        # Output only. Time the Event occurred.
        # Corresponds to the JSON property `eventTime`
        # @return [String]
        attr_accessor :event_time
      
        # Output only. The relative resource name of the Execution in the Event.
        # Corresponds to the JSON property `execution`
        # @return [String]
        attr_accessor :execution
      
        # The labels with user-defined metadata to annotate Events. Label keys and
        # values can be no longer than 64 characters (Unicode codepoints), can only
        # contain lowercase letters, numeric characters, underscores and dashes.
        # International characters are allowed. No more than 64 user labels can be
        # associated with one Event (System labels are excluded). See https://goo.gl/
        # xmQnxf for more information and examples of labels. System reserved label keys
        # are prefixed with "aiplatform.googleapis.com/" and are immutable.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Required. The type of the Event.
        # Corresponds to the JSON property `type`
        # @return [String]
        attr_accessor :type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @artifact = args[:artifact] if args.key?(:artifact)
          @event_time = args[:event_time] if args.key?(:event_time)
          @execution = args[:execution] if args.key?(:execution)
          @labels = args[:labels] if args.key?(:labels)
          @type = args[:type] if args.key?(:type)
        end
      end
      
      # Input for exact match metric.
      class GoogleCloudAiplatformV1ExactMatchInput
        include Google::Apis::Core::Hashable
      
        # Required. Repeated exact match instances.
        # Corresponds to the JSON property `instances`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExactMatchInstance>]
        attr_accessor :instances
      
        # Spec for exact match metric - returns 1 if prediction and reference exactly
        # matches, otherwise 0.
        # Corresponds to the JSON property `metricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExactMatchSpec]
        attr_accessor :metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instances = args[:instances] if args.key?(:instances)
          @metric_spec = args[:metric_spec] if args.key?(:metric_spec)
        end
      end
      
      # Spec for exact match instance.
      class GoogleCloudAiplatformV1ExactMatchInstance
        include Google::Apis::Core::Hashable
      
        # Required. Output of the evaluated model.
        # Corresponds to the JSON property `prediction`
        # @return [String]
        attr_accessor :prediction
      
        # Required. Ground truth used to compare against the prediction.
        # Corresponds to the JSON property `reference`
        # @return [String]
        attr_accessor :reference
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @prediction = args[:prediction] if args.key?(:prediction)
          @reference = args[:reference] if args.key?(:reference)
        end
      end
      
      # Exact match metric value for an instance.
      class GoogleCloudAiplatformV1ExactMatchMetricValue
        include Google::Apis::Core::Hashable
      
        # Output only. Exact match score.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # Results for exact match metric.
      class GoogleCloudAiplatformV1ExactMatchResults
        include Google::Apis::Core::Hashable
      
        # Output only. Exact match metric values.
        # Corresponds to the JSON property `exactMatchMetricValues`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExactMatchMetricValue>]
        attr_accessor :exact_match_metric_values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @exact_match_metric_values = args[:exact_match_metric_values] if args.key?(:exact_match_metric_values)
        end
      end
      
      # Spec for exact match metric - returns 1 if prediction and reference exactly
      # matches, otherwise 0.
      class GoogleCloudAiplatformV1ExactMatchSpec
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Example-based explainability that returns the nearest neighbors from the
      # provided dataset.
      class GoogleCloudAiplatformV1Examples
        include Google::Apis::Core::Hashable
      
        # The Cloud Storage input instances.
        # Corresponds to the JSON property `exampleGcsSource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExamplesExampleGcsSource]
        attr_accessor :example_gcs_source
      
        # The full configuration for the generated index, the semantics are the same as
        # metadata and should match [NearestNeighborSearchConfig](https://cloud.google.
        # com/vertex-ai/docs/explainable-ai/configuring-explanations-example-based#
        # nearest-neighbor-search-config).
        # Corresponds to the JSON property `nearestNeighborSearchConfig`
        # @return [Object]
        attr_accessor :nearest_neighbor_search_config
      
        # The number of neighbors to return when querying for examples.
        # Corresponds to the JSON property `neighborCount`
        # @return [Fixnum]
        attr_accessor :neighbor_count
      
        # Preset configuration for example-based explanations
        # Corresponds to the JSON property `presets`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Presets]
        attr_accessor :presets
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @example_gcs_source = args[:example_gcs_source] if args.key?(:example_gcs_source)
          @nearest_neighbor_search_config = args[:nearest_neighbor_search_config] if args.key?(:nearest_neighbor_search_config)
          @neighbor_count = args[:neighbor_count] if args.key?(:neighbor_count)
          @presets = args[:presets] if args.key?(:presets)
        end
      end
      
      # The Cloud Storage input instances.
      class GoogleCloudAiplatformV1ExamplesExampleGcsSource
        include Google::Apis::Core::Hashable
      
        # The format in which instances are given, if not specified, assume it's JSONL
        # format. Currently only JSONL format is supported.
        # Corresponds to the JSON property `dataFormat`
        # @return [String]
        attr_accessor :data_format
      
        # The Google Cloud Storage location for the input content.
        # Corresponds to the JSON property `gcsSource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GcsSource]
        attr_accessor :gcs_source
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @data_format = args[:data_format] if args.key?(:data_format)
          @gcs_source = args[:gcs_source] if args.key?(:gcs_source)
        end
      end
      
      # Overrides for example-based explanations.
      class GoogleCloudAiplatformV1ExamplesOverride
        include Google::Apis::Core::Hashable
      
        # The number of neighbors to return that have the same crowding tag.
        # Corresponds to the JSON property `crowdingCount`
        # @return [Fixnum]
        attr_accessor :crowding_count
      
        # The format of the data being provided with each call.
        # Corresponds to the JSON property `dataFormat`
        # @return [String]
        attr_accessor :data_format
      
        # The number of neighbors to return.
        # Corresponds to the JSON property `neighborCount`
        # @return [Fixnum]
        attr_accessor :neighbor_count
      
        # Restrict the resulting nearest neighbors to respect these constraints.
        # Corresponds to the JSON property `restrictions`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExamplesRestrictionsNamespace>]
        attr_accessor :restrictions
      
        # If true, return the embeddings instead of neighbors.
        # Corresponds to the JSON property `returnEmbeddings`
        # @return [Boolean]
        attr_accessor :return_embeddings
        alias_method :return_embeddings?, :return_embeddings
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @crowding_count = args[:crowding_count] if args.key?(:crowding_count)
          @data_format = args[:data_format] if args.key?(:data_format)
          @neighbor_count = args[:neighbor_count] if args.key?(:neighbor_count)
          @restrictions = args[:restrictions] if args.key?(:restrictions)
          @return_embeddings = args[:return_embeddings] if args.key?(:return_embeddings)
        end
      end
      
      # Restrictions namespace for example-based explanations overrides.
      class GoogleCloudAiplatformV1ExamplesRestrictionsNamespace
        include Google::Apis::Core::Hashable
      
        # The list of allowed tags.
        # Corresponds to the JSON property `allow`
        # @return [Array<String>]
        attr_accessor :allow
      
        # The list of deny tags.
        # Corresponds to the JSON property `deny`
        # @return [Array<String>]
        attr_accessor :deny
      
        # The namespace name.
        # Corresponds to the JSON property `namespaceName`
        # @return [String]
        attr_accessor :namespace_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @allow = args[:allow] if args.key?(:allow)
          @deny = args[:deny] if args.key?(:deny)
          @namespace_name = args[:namespace_name] if args.key?(:namespace_name)
        end
      end
      
      # Code generated by the model that is meant to be executed, and the result
      # returned to the model. Generated when using the [CodeExecution] tool, in which
      # the code will be automatically executed, and a corresponding [
      # CodeExecutionResult] will also be generated.
      class GoogleCloudAiplatformV1ExecutableCode
        include Google::Apis::Core::Hashable
      
        # Required. The code to be executed.
        # Corresponds to the JSON property `code`
        # @return [String]
        attr_accessor :code
      
        # Required. Programming language of the `code`.
        # Corresponds to the JSON property `language`
        # @return [String]
        attr_accessor :language
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @code = args[:code] if args.key?(:code)
          @language = args[:language] if args.key?(:language)
        end
      end
      
      # Instance of a general execution.
      class GoogleCloudAiplatformV1Execution
        include Google::Apis::Core::Hashable
      
        # Output only. Timestamp when this Execution was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Description of the Execution
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # User provided display name of the Execution. May be up to 128 Unicode
        # characters.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # An eTag used to perform consistent read-modify-write updates. If not set, a
        # blind "overwrite" update happens.
        # Corresponds to the JSON property `etag`
        # @return [String]
        attr_accessor :etag
      
        # The labels with user-defined metadata to organize your Executions. Label keys
        # and values can be no longer than 64 characters (Unicode codepoints), can only
        # contain lowercase letters, numeric characters, underscores and dashes.
        # International characters are allowed. No more than 64 user labels can be
        # associated with one Execution (System labels are excluded).
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Properties of the Execution. Top level metadata keys' heading and trailing
        # spaces will be trimmed. The size of this field should not exceed 200KB.
        # Corresponds to the JSON property `metadata`
        # @return [Hash<String,Object>]
        attr_accessor :metadata
      
        # Output only. The resource name of the Execution.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # The title of the schema describing the metadata. Schema title and version is
        # expected to be registered in earlier Create Schema calls. And both are used
        # together as unique identifiers to identify schemas within the local metadata
        # store.
        # Corresponds to the JSON property `schemaTitle`
        # @return [String]
        attr_accessor :schema_title
      
        # The version of the schema in `schema_title` to use. Schema title and version
        # is expected to be registered in earlier Create Schema calls. And both are used
        # together as unique identifiers to identify schemas within the local metadata
        # store.
        # Corresponds to the JSON property `schemaVersion`
        # @return [String]
        attr_accessor :schema_version
      
        # The state of this Execution. This is a property of the Execution, and does not
        # imply or capture any ongoing process. This property is managed by clients (
        # such as Vertex AI Pipelines) and the system does not prescribe or check the
        # validity of state transitions.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        # Output only. Timestamp when this Execution was last updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @description = args[:description] if args.key?(:description)
          @display_name = args[:display_name] if args.key?(:display_name)
          @etag = args[:etag] if args.key?(:etag)
          @labels = args[:labels] if args.key?(:labels)
          @metadata = args[:metadata] if args.key?(:metadata)
          @name = args[:name] if args.key?(:name)
          @schema_title = args[:schema_title] if args.key?(:schema_title)
          @schema_version = args[:schema_version] if args.key?(:schema_version)
          @state = args[:state] if args.key?(:state)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # Request message for PredictionService.Explain.
      class GoogleCloudAiplatformV1ExplainRequest
        include Google::Apis::Core::Hashable
      
        # If specified, this ExplainRequest will be served by the chosen DeployedModel,
        # overriding Endpoint.traffic_split.
        # Corresponds to the JSON property `deployedModelId`
        # @return [String]
        attr_accessor :deployed_model_id
      
        # The ExplanationSpec entries that can be overridden at online explanation time.
        # Corresponds to the JSON property `explanationSpecOverride`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExplanationSpecOverride]
        attr_accessor :explanation_spec_override
      
        # Required. The instances that are the input to the explanation call. A
        # DeployedModel may have an upper limit on the number of instances it supports
        # per request, and when it is exceeded the explanation call errors in case of
        # AutoML Models, or, in case of customer created Models, the behaviour is as
        # documented by that Model. The schema of any single instance may be specified
        # via Endpoint's DeployedModels' Model's PredictSchemata's instance_schema_uri.
        # Corresponds to the JSON property `instances`
        # @return [Array<Object>]
        attr_accessor :instances
      
        # The parameters that govern the prediction. The schema of the parameters may be
        # specified via Endpoint's DeployedModels' Model's PredictSchemata's
        # parameters_schema_uri.
        # Corresponds to the JSON property `parameters`
        # @return [Object]
        attr_accessor :parameters
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @deployed_model_id = args[:deployed_model_id] if args.key?(:deployed_model_id)
          @explanation_spec_override = args[:explanation_spec_override] if args.key?(:explanation_spec_override)
          @instances = args[:instances] if args.key?(:instances)
          @parameters = args[:parameters] if args.key?(:parameters)
        end
      end
      
      # Response message for PredictionService.Explain.
      class GoogleCloudAiplatformV1ExplainResponse
        include Google::Apis::Core::Hashable
      
        # ID of the Endpoint's DeployedModel that served this explanation.
        # Corresponds to the JSON property `deployedModelId`
        # @return [String]
        attr_accessor :deployed_model_id
      
        # The explanations of the Model's PredictResponse.predictions. It has the same
        # number of elements as instances to be explained.
        # Corresponds to the JSON property `explanations`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Explanation>]
        attr_accessor :explanations
      
        # The predictions that are the output of the predictions call. Same as
        # PredictResponse.predictions.
        # Corresponds to the JSON property `predictions`
        # @return [Array<Object>]
        attr_accessor :predictions
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @deployed_model_id = args[:deployed_model_id] if args.key?(:deployed_model_id)
          @explanations = args[:explanations] if args.key?(:explanations)
          @predictions = args[:predictions] if args.key?(:predictions)
        end
      end
      
      # Explanation of a prediction (provided in PredictResponse.predictions) produced
      # by the Model on a given instance.
      class GoogleCloudAiplatformV1Explanation
        include Google::Apis::Core::Hashable
      
        # Output only. Feature attributions grouped by predicted outputs. For Models
        # that predict only one output, such as regression Models that predict only one
        # score, there is only one attibution that explains the predicted output. For
        # Models that predict multiple outputs, such as multiclass Models that predict
        # multiple classes, each element explains one specific item. Attribution.
        # output_index can be used to identify which output this attribution is
        # explaining. By default, we provide Shapley values for the predicted class.
        # However, you can configure the explanation request to generate Shapley values
        # for any other classes too. For example, if a model predicts a probability of `
        # 0.4` for approving a loan application, the model's decision is to reject the
        # application since `p(reject) = 0.6 > p(approve) = 0.4`, and the default
        # Shapley values would be computed for rejection decision and not approval, even
        # though the latter might be the positive class. If users set
        # ExplanationParameters.top_k, the attributions are sorted by
        # instance_output_value in descending order. If ExplanationParameters.
        # output_indices is specified, the attributions are stored by Attribution.
        # output_index in the same order as they appear in the output_indices.
        # Corresponds to the JSON property `attributions`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Attribution>]
        attr_accessor :attributions
      
        # Output only. List of the nearest neighbors for example-based explanations. For
        # models deployed with the examples explanations feature enabled, the
        # attributions field is empty and instead the neighbors field is populated.
        # Corresponds to the JSON property `neighbors`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Neighbor>]
        attr_accessor :neighbors
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @attributions = args[:attributions] if args.key?(:attributions)
          @neighbors = args[:neighbors] if args.key?(:neighbors)
        end
      end
      
      # Metadata describing the Model's input and output for explanation.
      class GoogleCloudAiplatformV1ExplanationMetadata
        include Google::Apis::Core::Hashable
      
        # Points to a YAML file stored on Google Cloud Storage describing the format of
        # the feature attributions. The schema is defined as an OpenAPI 3.0.2 [Schema
        # Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.
        # md#schemaObject). AutoML tabular Models always have this field populated by
        # Vertex AI. Note: The URI given on output may be different, including the URI
        # scheme, than the one given on input. The output URI will point to a location
        # where the user only has a read access.
        # Corresponds to the JSON property `featureAttributionsSchemaUri`
        # @return [String]
        attr_accessor :feature_attributions_schema_uri
      
        # Required. Map from feature names to feature input metadata. Keys are the name
        # of the features. Values are the specification of the feature. An empty
        # InputMetadata is valid. It describes a text feature which has the name
        # specified as the key in ExplanationMetadata.inputs. The baseline of the empty
        # feature is chosen by Vertex AI. For Vertex AI-provided Tensorflow images, the
        # key can be any friendly name of the feature. Once specified,
        # featureAttributions are keyed by this key (if not grouped with another feature)
        # . For custom images, the key must match with the key in instance.
        # Corresponds to the JSON property `inputs`
        # @return [Hash<String,Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExplanationMetadataInputMetadata>]
        attr_accessor :inputs
      
        # Name of the source to generate embeddings for example based explanations.
        # Corresponds to the JSON property `latentSpaceSource`
        # @return [String]
        attr_accessor :latent_space_source
      
        # Required. Map from output names to output metadata. For Vertex AI-provided
        # Tensorflow images, keys can be any user defined string that consists of any
        # UTF-8 characters. For custom images, keys are the name of the output field in
        # the prediction to be explained. Currently only one key is allowed.
        # Corresponds to the JSON property `outputs`
        # @return [Hash<String,Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExplanationMetadataOutputMetadata>]
        attr_accessor :outputs
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @feature_attributions_schema_uri = args[:feature_attributions_schema_uri] if args.key?(:feature_attributions_schema_uri)
          @inputs = args[:inputs] if args.key?(:inputs)
          @latent_space_source = args[:latent_space_source] if args.key?(:latent_space_source)
          @outputs = args[:outputs] if args.key?(:outputs)
        end
      end
      
      # Metadata of the input of a feature. Fields other than InputMetadata.
      # input_baselines are applicable only for Models that are using Vertex AI-
      # provided images for Tensorflow.
      class GoogleCloudAiplatformV1ExplanationMetadataInputMetadata
        include Google::Apis::Core::Hashable
      
        # Specifies the shape of the values of the input if the input is a sparse
        # representation. Refer to Tensorflow documentation for more details: https://
        # www.tensorflow.org/api_docs/python/tf/sparse/SparseTensor.
        # Corresponds to the JSON property `denseShapeTensorName`
        # @return [String]
        attr_accessor :dense_shape_tensor_name
      
        # A list of baselines for the encoded tensor. The shape of each baseline should
        # match the shape of the encoded tensor. If a scalar is provided, Vertex AI
        # broadcasts to the same shape as the encoded tensor.
        # Corresponds to the JSON property `encodedBaselines`
        # @return [Array<Object>]
        attr_accessor :encoded_baselines
      
        # Encoded tensor is a transformation of the input tensor. Must be provided if
        # choosing Integrated Gradients attribution or XRAI attribution and the input
        # tensor is not differentiable. An encoded tensor is generated if the input
        # tensor is encoded by a lookup table.
        # Corresponds to the JSON property `encodedTensorName`
        # @return [String]
        attr_accessor :encoded_tensor_name
      
        # Defines how the feature is encoded into the input tensor. Defaults to IDENTITY.
        # Corresponds to the JSON property `encoding`
        # @return [String]
        attr_accessor :encoding
      
        # Domain details of the input feature value. Provides numeric information about
        # the feature, such as its range (min, max). If the feature has been pre-
        # processed, for example with z-scoring, then it provides information about how
        # to recover the original feature. For example, if the input feature is an image
        # and it has been pre-processed to obtain 0-mean and stddev = 1 values, then
        # original_mean, and original_stddev refer to the mean and stddev of the
        # original feature (e.g. image tensor) from which input feature (with mean = 0
        # and stddev = 1) was obtained.
        # Corresponds to the JSON property `featureValueDomain`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExplanationMetadataInputMetadataFeatureValueDomain]
        attr_accessor :feature_value_domain
      
        # Name of the group that the input belongs to. Features with the same group name
        # will be treated as one feature when computing attributions. Features grouped
        # together can have different shapes in value. If provided, there will be one
        # single attribution generated in Attribution.feature_attributions, keyed by the
        # group name.
        # Corresponds to the JSON property `groupName`
        # @return [String]
        attr_accessor :group_name
      
        # A list of feature names for each index in the input tensor. Required when the
        # input InputMetadata.encoding is BAG_OF_FEATURES, BAG_OF_FEATURES_SPARSE,
        # INDICATOR.
        # Corresponds to the JSON property `indexFeatureMapping`
        # @return [Array<String>]
        attr_accessor :index_feature_mapping
      
        # Specifies the index of the values of the input tensor. Required when the input
        # tensor is a sparse representation. Refer to Tensorflow documentation for more
        # details: https://www.tensorflow.org/api_docs/python/tf/sparse/SparseTensor.
        # Corresponds to the JSON property `indicesTensorName`
        # @return [String]
        attr_accessor :indices_tensor_name
      
        # Baseline inputs for this feature. If no baseline is specified, Vertex AI
        # chooses the baseline for this feature. If multiple baselines are specified,
        # Vertex AI returns the average attributions across them in Attribution.
        # feature_attributions. For Vertex AI-provided Tensorflow images (both 1.x and 2.
        # x), the shape of each baseline must match the shape of the input tensor. If a
        # scalar is provided, we broadcast to the same shape as the input tensor. For
        # custom images, the element of the baselines must be in the same format as the
        # feature's input in the instance[]. The schema of any single instance may be
        # specified via Endpoint's DeployedModels' Model's PredictSchemata's
        # instance_schema_uri.
        # Corresponds to the JSON property `inputBaselines`
        # @return [Array<Object>]
        attr_accessor :input_baselines
      
        # Name of the input tensor for this feature. Required and is only applicable to
        # Vertex AI-provided images for Tensorflow.
        # Corresponds to the JSON property `inputTensorName`
        # @return [String]
        attr_accessor :input_tensor_name
      
        # Modality of the feature. Valid values are: numeric, image. Defaults to numeric.
        # Corresponds to the JSON property `modality`
        # @return [String]
        attr_accessor :modality
      
        # Visualization configurations for image explanation.
        # Corresponds to the JSON property `visualization`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExplanationMetadataInputMetadataVisualization]
        attr_accessor :visualization
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @dense_shape_tensor_name = args[:dense_shape_tensor_name] if args.key?(:dense_shape_tensor_name)
          @encoded_baselines = args[:encoded_baselines] if args.key?(:encoded_baselines)
          @encoded_tensor_name = args[:encoded_tensor_name] if args.key?(:encoded_tensor_name)
          @encoding = args[:encoding] if args.key?(:encoding)
          @feature_value_domain = args[:feature_value_domain] if args.key?(:feature_value_domain)
          @group_name = args[:group_name] if args.key?(:group_name)
          @index_feature_mapping = args[:index_feature_mapping] if args.key?(:index_feature_mapping)
          @indices_tensor_name = args[:indices_tensor_name] if args.key?(:indices_tensor_name)
          @input_baselines = args[:input_baselines] if args.key?(:input_baselines)
          @input_tensor_name = args[:input_tensor_name] if args.key?(:input_tensor_name)
          @modality = args[:modality] if args.key?(:modality)
          @visualization = args[:visualization] if args.key?(:visualization)
        end
      end
      
      # Domain details of the input feature value. Provides numeric information about
      # the feature, such as its range (min, max). If the feature has been pre-
      # processed, for example with z-scoring, then it provides information about how
      # to recover the original feature. For example, if the input feature is an image
      # and it has been pre-processed to obtain 0-mean and stddev = 1 values, then
      # original_mean, and original_stddev refer to the mean and stddev of the
      # original feature (e.g. image tensor) from which input feature (with mean = 0
      # and stddev = 1) was obtained.
      class GoogleCloudAiplatformV1ExplanationMetadataInputMetadataFeatureValueDomain
        include Google::Apis::Core::Hashable
      
        # The maximum permissible value for this feature.
        # Corresponds to the JSON property `maxValue`
        # @return [Float]
        attr_accessor :max_value
      
        # The minimum permissible value for this feature.
        # Corresponds to the JSON property `minValue`
        # @return [Float]
        attr_accessor :min_value
      
        # If this input feature has been normalized to a mean value of 0, the
        # original_mean specifies the mean value of the domain prior to normalization.
        # Corresponds to the JSON property `originalMean`
        # @return [Float]
        attr_accessor :original_mean
      
        # If this input feature has been normalized to a standard deviation of 1.0, the
        # original_stddev specifies the standard deviation of the domain prior to
        # normalization.
        # Corresponds to the JSON property `originalStddev`
        # @return [Float]
        attr_accessor :original_stddev
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @max_value = args[:max_value] if args.key?(:max_value)
          @min_value = args[:min_value] if args.key?(:min_value)
          @original_mean = args[:original_mean] if args.key?(:original_mean)
          @original_stddev = args[:original_stddev] if args.key?(:original_stddev)
        end
      end
      
      # Visualization configurations for image explanation.
      class GoogleCloudAiplatformV1ExplanationMetadataInputMetadataVisualization
        include Google::Apis::Core::Hashable
      
        # Excludes attributions below the specified percentile, from the highlighted
        # areas. Defaults to 62.
        # Corresponds to the JSON property `clipPercentLowerbound`
        # @return [Float]
        attr_accessor :clip_percent_lowerbound
      
        # Excludes attributions above the specified percentile from the highlighted
        # areas. Using the clip_percent_upperbound and clip_percent_lowerbound together
        # can be useful for filtering out noise and making it easier to see areas of
        # strong attribution. Defaults to 99.9.
        # Corresponds to the JSON property `clipPercentUpperbound`
        # @return [Float]
        attr_accessor :clip_percent_upperbound
      
        # The color scheme used for the highlighted areas. Defaults to PINK_GREEN for
        # Integrated Gradients attribution, which shows positive attributions in green
        # and negative in pink. Defaults to VIRIDIS for XRAI attribution, which
        # highlights the most influential regions in yellow and the least influential in
        # blue.
        # Corresponds to the JSON property `colorMap`
        # @return [String]
        attr_accessor :color_map
      
        # How the original image is displayed in the visualization. Adjusting the
        # overlay can help increase visual clarity if the original image makes it
        # difficult to view the visualization. Defaults to NONE.
        # Corresponds to the JSON property `overlayType`
        # @return [String]
        attr_accessor :overlay_type
      
        # Whether to only highlight pixels with positive contributions, negative or both.
        # Defaults to POSITIVE.
        # Corresponds to the JSON property `polarity`
        # @return [String]
        attr_accessor :polarity
      
        # Type of the image visualization. Only applicable to Integrated Gradients
        # attribution. OUTLINES shows regions of attribution, while PIXELS shows per-
        # pixel attribution. Defaults to OUTLINES.
        # Corresponds to the JSON property `type`
        # @return [String]
        attr_accessor :type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @clip_percent_lowerbound = args[:clip_percent_lowerbound] if args.key?(:clip_percent_lowerbound)
          @clip_percent_upperbound = args[:clip_percent_upperbound] if args.key?(:clip_percent_upperbound)
          @color_map = args[:color_map] if args.key?(:color_map)
          @overlay_type = args[:overlay_type] if args.key?(:overlay_type)
          @polarity = args[:polarity] if args.key?(:polarity)
          @type = args[:type] if args.key?(:type)
        end
      end
      
      # Metadata of the prediction output to be explained.
      class GoogleCloudAiplatformV1ExplanationMetadataOutputMetadata
        include Google::Apis::Core::Hashable
      
        # Specify a field name in the prediction to look for the display name. Use this
        # if the prediction contains the display names for the outputs. The display
        # names in the prediction must have the same shape of the outputs, so that it
        # can be located by Attribution.output_index for a specific output.
        # Corresponds to the JSON property `displayNameMappingKey`
        # @return [String]
        attr_accessor :display_name_mapping_key
      
        # Static mapping between the index and display name. Use this if the outputs are
        # a deterministic n-dimensional array, e.g. a list of scores of all the classes
        # in a pre-defined order for a multi-classification Model. It's not feasible if
        # the outputs are non-deterministic, e.g. the Model produces top-k classes or
        # sort the outputs by their values. The shape of the value must be an n-
        # dimensional array of strings. The number of dimensions must match that of the
        # outputs to be explained. The Attribution.output_display_name is populated by
        # locating in the mapping with Attribution.output_index.
        # Corresponds to the JSON property `indexDisplayNameMapping`
        # @return [Object]
        attr_accessor :index_display_name_mapping
      
        # Name of the output tensor. Required and is only applicable to Vertex AI
        # provided images for Tensorflow.
        # Corresponds to the JSON property `outputTensorName`
        # @return [String]
        attr_accessor :output_tensor_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @display_name_mapping_key = args[:display_name_mapping_key] if args.key?(:display_name_mapping_key)
          @index_display_name_mapping = args[:index_display_name_mapping] if args.key?(:index_display_name_mapping)
          @output_tensor_name = args[:output_tensor_name] if args.key?(:output_tensor_name)
        end
      end
      
      # The ExplanationMetadata entries that can be overridden at online explanation
      # time.
      class GoogleCloudAiplatformV1ExplanationMetadataOverride
        include Google::Apis::Core::Hashable
      
        # Required. Overrides the input metadata of the features. The key is the name of
        # the feature to be overridden. The keys specified here must exist in the input
        # metadata to be overridden. If a feature is not specified here, the
        # corresponding feature's input metadata is not overridden.
        # Corresponds to the JSON property `inputs`
        # @return [Hash<String,Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExplanationMetadataOverrideInputMetadataOverride>]
        attr_accessor :inputs
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @inputs = args[:inputs] if args.key?(:inputs)
        end
      end
      
      # The input metadata entries to be overridden.
      class GoogleCloudAiplatformV1ExplanationMetadataOverrideInputMetadataOverride
        include Google::Apis::Core::Hashable
      
        # Baseline inputs for this feature. This overrides the `input_baseline` field of
        # the ExplanationMetadata.InputMetadata object of the corresponding feature's
        # input metadata. If it's not specified, the original baselines are not
        # overridden.
        # Corresponds to the JSON property `inputBaselines`
        # @return [Array<Object>]
        attr_accessor :input_baselines
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @input_baselines = args[:input_baselines] if args.key?(:input_baselines)
        end
      end
      
      # Parameters to configure explaining for Model's predictions.
      class GoogleCloudAiplatformV1ExplanationParameters
        include Google::Apis::Core::Hashable
      
        # Example-based explainability that returns the nearest neighbors from the
        # provided dataset.
        # Corresponds to the JSON property `examples`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Examples]
        attr_accessor :examples
      
        # An attribution method that computes the Aumann-Shapley value taking advantage
        # of the model's fully differentiable structure. Refer to this paper for more
        # details: https://arxiv.org/abs/1703.01365
        # Corresponds to the JSON property `integratedGradientsAttribution`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1IntegratedGradientsAttribution]
        attr_accessor :integrated_gradients_attribution
      
        # If populated, only returns attributions that have output_index contained in
        # output_indices. It must be an ndarray of integers, with the same shape of the
        # output it's explaining. If not populated, returns attributions for top_k
        # indices of outputs. If neither top_k nor output_indices is populated, returns
        # the argmax index of the outputs. Only applicable to Models that predict
        # multiple outputs (e,g, multi-class Models that predict multiple classes).
        # Corresponds to the JSON property `outputIndices`
        # @return [Array<Object>]
        attr_accessor :output_indices
      
        # An attribution method that approximates Shapley values for features that
        # contribute to the label being predicted. A sampling strategy is used to
        # approximate the value rather than considering all subsets of features.
        # Corresponds to the JSON property `sampledShapleyAttribution`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SampledShapleyAttribution]
        attr_accessor :sampled_shapley_attribution
      
        # If populated, returns attributions for top K indices of outputs (defaults to 1)
        # . Only applies to Models that predicts more than one outputs (e,g, multi-class
        # Models). When set to -1, returns explanations for all outputs.
        # Corresponds to the JSON property `topK`
        # @return [Fixnum]
        attr_accessor :top_k
      
        # An explanation method that redistributes Integrated Gradients attributions to
        # segmented regions, taking advantage of the model's fully differentiable
        # structure. Refer to this paper for more details: https://arxiv.org/abs/1906.
        # 02825 Supported only by image Models.
        # Corresponds to the JSON property `xraiAttribution`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1XraiAttribution]
        attr_accessor :xrai_attribution
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @examples = args[:examples] if args.key?(:examples)
          @integrated_gradients_attribution = args[:integrated_gradients_attribution] if args.key?(:integrated_gradients_attribution)
          @output_indices = args[:output_indices] if args.key?(:output_indices)
          @sampled_shapley_attribution = args[:sampled_shapley_attribution] if args.key?(:sampled_shapley_attribution)
          @top_k = args[:top_k] if args.key?(:top_k)
          @xrai_attribution = args[:xrai_attribution] if args.key?(:xrai_attribution)
        end
      end
      
      # Specification of Model explanation.
      class GoogleCloudAiplatformV1ExplanationSpec
        include Google::Apis::Core::Hashable
      
        # Metadata describing the Model's input and output for explanation.
        # Corresponds to the JSON property `metadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExplanationMetadata]
        attr_accessor :metadata
      
        # Parameters to configure explaining for Model's predictions.
        # Corresponds to the JSON property `parameters`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExplanationParameters]
        attr_accessor :parameters
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @metadata = args[:metadata] if args.key?(:metadata)
          @parameters = args[:parameters] if args.key?(:parameters)
        end
      end
      
      # The ExplanationSpec entries that can be overridden at online explanation time.
      class GoogleCloudAiplatformV1ExplanationSpecOverride
        include Google::Apis::Core::Hashable
      
        # Overrides for example-based explanations.
        # Corresponds to the JSON property `examplesOverride`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExamplesOverride]
        attr_accessor :examples_override
      
        # The ExplanationMetadata entries that can be overridden at online explanation
        # time.
        # Corresponds to the JSON property `metadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExplanationMetadataOverride]
        attr_accessor :metadata
      
        # Parameters to configure explaining for Model's predictions.
        # Corresponds to the JSON property `parameters`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExplanationParameters]
        attr_accessor :parameters
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @examples_override = args[:examples_override] if args.key?(:examples_override)
          @metadata = args[:metadata] if args.key?(:metadata)
          @parameters = args[:parameters] if args.key?(:parameters)
        end
      end
      
      # Describes what part of the Dataset is to be exported, the destination of the
      # export and how to export.
      class GoogleCloudAiplatformV1ExportDataConfig
        include Google::Apis::Core::Hashable
      
        # The Cloud Storage URI that points to a YAML file describing the annotation
        # schema. The schema is defined as an OpenAPI 3.0.2 [Schema Object](https://
        # github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject).
        # The schema files that can be used here are found in gs://google-cloud-
        # aiplatform/schema/dataset/annotation/, note that the chosen schema must be
        # consistent with metadata of the Dataset specified by ExportDataRequest.name.
        # Only used for custom training data export use cases. Only applicable to
        # Datasets that have DataItems and Annotations. Only Annotations that both match
        # this schema and belong to DataItems not ignored by the split method are used
        # in respectively training, validation or test role, depending on the role of
        # the DataItem they are on. When used in conjunction with annotations_filter,
        # the Annotations used for training are filtered by both annotations_filter and
        # annotation_schema_uri.
        # Corresponds to the JSON property `annotationSchemaUri`
        # @return [String]
        attr_accessor :annotation_schema_uri
      
        # An expression for filtering what part of the Dataset is to be exported. Only
        # Annotations that match this filter will be exported. The filter syntax is the
        # same as in ListAnnotations.
        # Corresponds to the JSON property `annotationsFilter`
        # @return [String]
        attr_accessor :annotations_filter
      
        # Indicates the usage of the exported files.
        # Corresponds to the JSON property `exportUse`
        # @return [String]
        attr_accessor :export_use
      
        # Assigns input data to training, validation, and test sets based on the given
        # filters, data pieces not matched by any filter are ignored. Currently only
        # supported for Datasets containing DataItems. If any of the filters in this
        # message are to match nothing, then they can be set as '-' (the minus sign).
        # Supported only for unstructured Datasets.
        # Corresponds to the JSON property `filterSplit`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExportFilterSplit]
        attr_accessor :filter_split
      
        # Assigns the input data to training, validation, and test sets as per the given
        # fractions. Any of `training_fraction`, `validation_fraction` and `
        # test_fraction` may optionally be provided, they must sum to up to 1. If the
        # provided ones sum to less than 1, the remainder is assigned to sets as decided
        # by Vertex AI. If none of the fractions are set, by default roughly 80% of data
        # is used for training, 10% for validation, and 10% for test.
        # Corresponds to the JSON property `fractionSplit`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExportFractionSplit]
        attr_accessor :fraction_split
      
        # The Google Cloud Storage location where the output is to be written to.
        # Corresponds to the JSON property `gcsDestination`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GcsDestination]
        attr_accessor :gcs_destination
      
        # The ID of a SavedQuery (annotation set) under the Dataset specified by
        # ExportDataRequest.name used for filtering Annotations for training. Only used
        # for custom training data export use cases. Only applicable to Datasets that
        # have SavedQueries. Only Annotations that are associated with this SavedQuery
        # are used in respectively training. When used in conjunction with
        # annotations_filter, the Annotations used for training are filtered by both
        # saved_query_id and annotations_filter. Only one of saved_query_id and
        # annotation_schema_uri should be specified as both of them represent the same
        # thing: problem type.
        # Corresponds to the JSON property `savedQueryId`
        # @return [String]
        attr_accessor :saved_query_id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @annotation_schema_uri = args[:annotation_schema_uri] if args.key?(:annotation_schema_uri)
          @annotations_filter = args[:annotations_filter] if args.key?(:annotations_filter)
          @export_use = args[:export_use] if args.key?(:export_use)
          @filter_split = args[:filter_split] if args.key?(:filter_split)
          @fraction_split = args[:fraction_split] if args.key?(:fraction_split)
          @gcs_destination = args[:gcs_destination] if args.key?(:gcs_destination)
          @saved_query_id = args[:saved_query_id] if args.key?(:saved_query_id)
        end
      end
      
      # Runtime operation information for DatasetService.ExportData.
      class GoogleCloudAiplatformV1ExportDataOperationMetadata
        include Google::Apis::Core::Hashable
      
        # A Google Cloud Storage directory which path ends with '/'. The exported data
        # is stored in the directory.
        # Corresponds to the JSON property `gcsOutputDirectory`
        # @return [String]
        attr_accessor :gcs_output_directory
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @gcs_output_directory = args[:gcs_output_directory] if args.key?(:gcs_output_directory)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Request message for DatasetService.ExportData.
      class GoogleCloudAiplatformV1ExportDataRequest
        include Google::Apis::Core::Hashable
      
        # Describes what part of the Dataset is to be exported, the destination of the
        # export and how to export.
        # Corresponds to the JSON property `exportConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExportDataConfig]
        attr_accessor :export_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @export_config = args[:export_config] if args.key?(:export_config)
        end
      end
      
      # Response message for DatasetService.ExportData.
      class GoogleCloudAiplatformV1ExportDataResponse
        include Google::Apis::Core::Hashable
      
        # Stats of data used for train or evaluate the Model.
        # Corresponds to the JSON property `dataStats`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelDataStats]
        attr_accessor :data_stats
      
        # All of the files that are exported in this export operation. For custom code
        # training export, only three (training, validation and test) Cloud Storage
        # paths in wildcard format are populated (for example, gs://.../training-*).
        # Corresponds to the JSON property `exportedFiles`
        # @return [Array<String>]
        attr_accessor :exported_files
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @data_stats = args[:data_stats] if args.key?(:data_stats)
          @exported_files = args[:exported_files] if args.key?(:exported_files)
        end
      end
      
      # Details of operations that exports Features values.
      class GoogleCloudAiplatformV1ExportFeatureValuesOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Request message for FeaturestoreService.ExportFeatureValues.
      class GoogleCloudAiplatformV1ExportFeatureValuesRequest
        include Google::Apis::Core::Hashable
      
        # A destination location for Feature values and format.
        # Corresponds to the JSON property `destination`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureValueDestination]
        attr_accessor :destination
      
        # Selector for Features of an EntityType.
        # Corresponds to the JSON property `featureSelector`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureSelector]
        attr_accessor :feature_selector
      
        # Describes exporting all historical Feature values of all entities of the
        # EntityType between [start_time, end_time].
        # Corresponds to the JSON property `fullExport`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExportFeatureValuesRequestFullExport]
        attr_accessor :full_export
      
        # Per-Feature export settings.
        # Corresponds to the JSON property `settings`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DestinationFeatureSetting>]
        attr_accessor :settings
      
        # Describes exporting the latest Feature values of all entities of the
        # EntityType between [start_time, snapshot_time].
        # Corresponds to the JSON property `snapshotExport`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExportFeatureValuesRequestSnapshotExport]
        attr_accessor :snapshot_export
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @destination = args[:destination] if args.key?(:destination)
          @feature_selector = args[:feature_selector] if args.key?(:feature_selector)
          @full_export = args[:full_export] if args.key?(:full_export)
          @settings = args[:settings] if args.key?(:settings)
          @snapshot_export = args[:snapshot_export] if args.key?(:snapshot_export)
        end
      end
      
      # Describes exporting all historical Feature values of all entities of the
      # EntityType between [start_time, end_time].
      class GoogleCloudAiplatformV1ExportFeatureValuesRequestFullExport
        include Google::Apis::Core::Hashable
      
        # Exports Feature values as of this timestamp. If not set, retrieve values as of
        # now. Timestamp, if present, must not have higher than millisecond precision.
        # Corresponds to the JSON property `endTime`
        # @return [String]
        attr_accessor :end_time
      
        # Excludes Feature values with feature generation timestamp before this
        # timestamp. If not set, retrieve oldest values kept in Feature Store. Timestamp,
        # if present, must not have higher than millisecond precision.
        # Corresponds to the JSON property `startTime`
        # @return [String]
        attr_accessor :start_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @end_time = args[:end_time] if args.key?(:end_time)
          @start_time = args[:start_time] if args.key?(:start_time)
        end
      end
      
      # Describes exporting the latest Feature values of all entities of the
      # EntityType between [start_time, snapshot_time].
      class GoogleCloudAiplatformV1ExportFeatureValuesRequestSnapshotExport
        include Google::Apis::Core::Hashable
      
        # Exports Feature values as of this timestamp. If not set, retrieve values as of
        # now. Timestamp, if present, must not have higher than millisecond precision.
        # Corresponds to the JSON property `snapshotTime`
        # @return [String]
        attr_accessor :snapshot_time
      
        # Excludes Feature values with feature generation timestamp before this
        # timestamp. If not set, retrieve oldest values kept in Feature Store. Timestamp,
        # if present, must not have higher than millisecond precision.
        # Corresponds to the JSON property `startTime`
        # @return [String]
        attr_accessor :start_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @snapshot_time = args[:snapshot_time] if args.key?(:snapshot_time)
          @start_time = args[:start_time] if args.key?(:start_time)
        end
      end
      
      # Response message for FeaturestoreService.ExportFeatureValues.
      class GoogleCloudAiplatformV1ExportFeatureValuesResponse
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Assigns input data to training, validation, and test sets based on the given
      # filters, data pieces not matched by any filter are ignored. Currently only
      # supported for Datasets containing DataItems. If any of the filters in this
      # message are to match nothing, then they can be set as '-' (the minus sign).
      # Supported only for unstructured Datasets.
      class GoogleCloudAiplatformV1ExportFilterSplit
        include Google::Apis::Core::Hashable
      
        # Required. A filter on DataItems of the Dataset. DataItems that match this
        # filter are used to test the Model. A filter with same syntax as the one used
        # in DatasetService.ListDataItems may be used. If a single DataItem is matched
        # by more than one of the FilterSplit filters, then it is assigned to the first
        # set that applies to it in the training, validation, test order.
        # Corresponds to the JSON property `testFilter`
        # @return [String]
        attr_accessor :test_filter
      
        # Required. A filter on DataItems of the Dataset. DataItems that match this
        # filter are used to train the Model. A filter with same syntax as the one used
        # in DatasetService.ListDataItems may be used. If a single DataItem is matched
        # by more than one of the FilterSplit filters, then it is assigned to the first
        # set that applies to it in the training, validation, test order.
        # Corresponds to the JSON property `trainingFilter`
        # @return [String]
        attr_accessor :training_filter
      
        # Required. A filter on DataItems of the Dataset. DataItems that match this
        # filter are used to validate the Model. A filter with same syntax as the one
        # used in DatasetService.ListDataItems may be used. If a single DataItem is
        # matched by more than one of the FilterSplit filters, then it is assigned to
        # the first set that applies to it in the training, validation, test order.
        # Corresponds to the JSON property `validationFilter`
        # @return [String]
        attr_accessor :validation_filter
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @test_filter = args[:test_filter] if args.key?(:test_filter)
          @training_filter = args[:training_filter] if args.key?(:training_filter)
          @validation_filter = args[:validation_filter] if args.key?(:validation_filter)
        end
      end
      
      # Assigns the input data to training, validation, and test sets as per the given
      # fractions. Any of `training_fraction`, `validation_fraction` and `
      # test_fraction` may optionally be provided, they must sum to up to 1. If the
      # provided ones sum to less than 1, the remainder is assigned to sets as decided
      # by Vertex AI. If none of the fractions are set, by default roughly 80% of data
      # is used for training, 10% for validation, and 10% for test.
      class GoogleCloudAiplatformV1ExportFractionSplit
        include Google::Apis::Core::Hashable
      
        # The fraction of the input data that is to be used to evaluate the Model.
        # Corresponds to the JSON property `testFraction`
        # @return [Float]
        attr_accessor :test_fraction
      
        # The fraction of the input data that is to be used to train the Model.
        # Corresponds to the JSON property `trainingFraction`
        # @return [Float]
        attr_accessor :training_fraction
      
        # The fraction of the input data that is to be used to validate the Model.
        # Corresponds to the JSON property `validationFraction`
        # @return [Float]
        attr_accessor :validation_fraction
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @test_fraction = args[:test_fraction] if args.key?(:test_fraction)
          @training_fraction = args[:training_fraction] if args.key?(:training_fraction)
          @validation_fraction = args[:validation_fraction] if args.key?(:validation_fraction)
        end
      end
      
      # Details of ModelService.ExportModel operation.
      class GoogleCloudAiplatformV1ExportModelOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        # Further describes the output of the ExportModel. Supplements
        # ExportModelRequest.OutputConfig.
        # Corresponds to the JSON property `outputInfo`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExportModelOperationMetadataOutputInfo]
        attr_accessor :output_info
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
          @output_info = args[:output_info] if args.key?(:output_info)
        end
      end
      
      # Further describes the output of the ExportModel. Supplements
      # ExportModelRequest.OutputConfig.
      class GoogleCloudAiplatformV1ExportModelOperationMetadataOutputInfo
        include Google::Apis::Core::Hashable
      
        # Output only. If the Model artifact is being exported to Google Cloud Storage
        # this is the full path of the directory created, into which the Model files are
        # being written to.
        # Corresponds to the JSON property `artifactOutputUri`
        # @return [String]
        attr_accessor :artifact_output_uri
      
        # Output only. If the Model image is being exported to Google Container Registry
        # or Artifact Registry this is the full path of the image created.
        # Corresponds to the JSON property `imageOutputUri`
        # @return [String]
        attr_accessor :image_output_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @artifact_output_uri = args[:artifact_output_uri] if args.key?(:artifact_output_uri)
          @image_output_uri = args[:image_output_uri] if args.key?(:image_output_uri)
        end
      end
      
      # Request message for ModelService.ExportModel.
      class GoogleCloudAiplatformV1ExportModelRequest
        include Google::Apis::Core::Hashable
      
        # Output configuration for the Model export.
        # Corresponds to the JSON property `outputConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExportModelRequestOutputConfig]
        attr_accessor :output_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @output_config = args[:output_config] if args.key?(:output_config)
        end
      end
      
      # Output configuration for the Model export.
      class GoogleCloudAiplatformV1ExportModelRequestOutputConfig
        include Google::Apis::Core::Hashable
      
        # The Google Cloud Storage location where the output is to be written to.
        # Corresponds to the JSON property `artifactDestination`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GcsDestination]
        attr_accessor :artifact_destination
      
        # The ID of the format in which the Model must be exported. Each Model lists the
        # export formats it supports. If no value is provided here, then the first from
        # the list of the Model's supported formats is used by default.
        # Corresponds to the JSON property `exportFormatId`
        # @return [String]
        attr_accessor :export_format_id
      
        # The Container Registry location for the container image.
        # Corresponds to the JSON property `imageDestination`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ContainerRegistryDestination]
        attr_accessor :image_destination
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @artifact_destination = args[:artifact_destination] if args.key?(:artifact_destination)
          @export_format_id = args[:export_format_id] if args.key?(:export_format_id)
          @image_destination = args[:image_destination] if args.key?(:image_destination)
        end
      end
      
      # Response message of ModelService.ExportModel operation.
      class GoogleCloudAiplatformV1ExportModelResponse
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Request message for TensorboardService.ExportTensorboardTimeSeriesData.
      class GoogleCloudAiplatformV1ExportTensorboardTimeSeriesDataRequest
        include Google::Apis::Core::Hashable
      
        # Exports the TensorboardTimeSeries' data that match the filter expression.
        # Corresponds to the JSON property `filter`
        # @return [String]
        attr_accessor :filter
      
        # Field to use to sort the TensorboardTimeSeries' data. By default,
        # TensorboardTimeSeries' data is returned in a pseudo random order.
        # Corresponds to the JSON property `orderBy`
        # @return [String]
        attr_accessor :order_by
      
        # The maximum number of data points to return per page. The default page_size is
        # 1000. Values must be between 1 and 10000. Values above 10000 are coerced to
        # 10000.
        # Corresponds to the JSON property `pageSize`
        # @return [Fixnum]
        attr_accessor :page_size
      
        # A page token, received from a previous ExportTensorboardTimeSeriesData call.
        # Provide this to retrieve the subsequent page. When paginating, all other
        # parameters provided to ExportTensorboardTimeSeriesData must match the call
        # that provided the page token.
        # Corresponds to the JSON property `pageToken`
        # @return [String]
        attr_accessor :page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @filter = args[:filter] if args.key?(:filter)
          @order_by = args[:order_by] if args.key?(:order_by)
          @page_size = args[:page_size] if args.key?(:page_size)
          @page_token = args[:page_token] if args.key?(:page_token)
        end
      end
      
      # Response message for TensorboardService.ExportTensorboardTimeSeriesData.
      class GoogleCloudAiplatformV1ExportTensorboardTimeSeriesDataResponse
        include Google::Apis::Core::Hashable
      
        # A token, which can be sent as page_token to retrieve the next page. If this
        # field is omitted, there are no subsequent pages.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # The returned time series data points.
        # Corresponds to the JSON property `timeSeriesDataPoints`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TimeSeriesDataPoint>]
        attr_accessor :time_series_data_points
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @time_series_data_points = args[:time_series_data_points] if args.key?(:time_series_data_points)
        end
      end
      
      # Retrieve from data source powered by external API for grounding. The external
      # API is not owned by Google, but need to follow the pre-defined API spec.
      class GoogleCloudAiplatformV1ExternalApi
        include Google::Apis::Core::Hashable
      
        # The generic reusable api auth config. Deprecated. Please use AuthConfig (
        # google/cloud/aiplatform/master/auth.proto) instead.
        # Corresponds to the JSON property `apiAuth`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ApiAuth]
        attr_accessor :api_auth
      
        # The API spec that the external API implements.
        # Corresponds to the JSON property `apiSpec`
        # @return [String]
        attr_accessor :api_spec
      
        # Auth configuration to run the extension.
        # Corresponds to the JSON property `authConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1AuthConfig]
        attr_accessor :auth_config
      
        # The search parameters to use for the ELASTIC_SEARCH spec.
        # Corresponds to the JSON property `elasticSearchParams`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExternalApiElasticSearchParams]
        attr_accessor :elastic_search_params
      
        # The endpoint of the external API. The system will call the API at this
        # endpoint to retrieve the data for grounding. Example: https://acme.com:443/
        # search
        # Corresponds to the JSON property `endpoint`
        # @return [String]
        attr_accessor :endpoint
      
        # The search parameters to use for SIMPLE_SEARCH spec.
        # Corresponds to the JSON property `simpleSearchParams`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExternalApiSimpleSearchParams]
        attr_accessor :simple_search_params
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @api_auth = args[:api_auth] if args.key?(:api_auth)
          @api_spec = args[:api_spec] if args.key?(:api_spec)
          @auth_config = args[:auth_config] if args.key?(:auth_config)
          @elastic_search_params = args[:elastic_search_params] if args.key?(:elastic_search_params)
          @endpoint = args[:endpoint] if args.key?(:endpoint)
          @simple_search_params = args[:simple_search_params] if args.key?(:simple_search_params)
        end
      end
      
      # The search parameters to use for the ELASTIC_SEARCH spec.
      class GoogleCloudAiplatformV1ExternalApiElasticSearchParams
        include Google::Apis::Core::Hashable
      
        # The ElasticSearch index to use.
        # Corresponds to the JSON property `index`
        # @return [String]
        attr_accessor :index
      
        # Optional. Number of hits (chunks) to request. When specified, it is passed to
        # Elasticsearch as the `num_hits` param.
        # Corresponds to the JSON property `numHits`
        # @return [Fixnum]
        attr_accessor :num_hits
      
        # The ElasticSearch search template to use.
        # Corresponds to the JSON property `searchTemplate`
        # @return [String]
        attr_accessor :search_template
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @index = args[:index] if args.key?(:index)
          @num_hits = args[:num_hits] if args.key?(:num_hits)
          @search_template = args[:search_template] if args.key?(:search_template)
        end
      end
      
      # The search parameters to use for SIMPLE_SEARCH spec.
      class GoogleCloudAiplatformV1ExternalApiSimpleSearchParams
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # The fact used in grounding.
      class GoogleCloudAiplatformV1Fact
        include Google::Apis::Core::Hashable
      
        # A RagChunk includes the content of a chunk of a RagFile, and associated
        # metadata.
        # Corresponds to the JSON property `chunk`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagChunk]
        attr_accessor :chunk
      
        # Query that is used to retrieve this fact.
        # Corresponds to the JSON property `query`
        # @return [String]
        attr_accessor :query
      
        # If present, according to the underlying Vector DB and the selected metric type,
        # the score can be either the distance or the similarity between the query and
        # the fact and its range depends on the metric type. For example, if the metric
        # type is COSINE_DISTANCE, it represents the distance between the query and the
        # fact. The larger the distance, the less relevant the fact is to the query. The
        # range is [0, 2], while 0 means the most relevant and 2 means the least
        # relevant.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        # If present, the summary/snippet of the fact.
        # Corresponds to the JSON property `summary`
        # @return [String]
        attr_accessor :summary
      
        # If present, it refers to the title of this fact.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        # If present, this uri links to the source of the fact.
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        # If present, the distance between the query vector and this fact vector.
        # Corresponds to the JSON property `vectorDistance`
        # @return [Float]
        attr_accessor :vector_distance
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @chunk = args[:chunk] if args.key?(:chunk)
          @query = args[:query] if args.key?(:query)
          @score = args[:score] if args.key?(:score)
          @summary = args[:summary] if args.key?(:summary)
          @title = args[:title] if args.key?(:title)
          @uri = args[:uri] if args.key?(:uri)
          @vector_distance = args[:vector_distance] if args.key?(:vector_distance)
        end
      end
      
      # Configuration for faster model deployment.
      class GoogleCloudAiplatformV1FasterDeploymentConfig
        include Google::Apis::Core::Hashable
      
        # If true, enable fast tryout feature for this deployed model.
        # Corresponds to the JSON property `fastTryoutEnabled`
        # @return [Boolean]
        attr_accessor :fast_tryout_enabled
        alias_method :fast_tryout_enabled?, :fast_tryout_enabled
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @fast_tryout_enabled = args[:fast_tryout_enabled] if args.key?(:fast_tryout_enabled)
        end
      end
      
      # Feature Metadata information. For example, color is a feature that describes
      # an apple.
      class GoogleCloudAiplatformV1Feature
        include Google::Apis::Core::Hashable
      
        # Output only. Only applicable for Vertex AI Feature Store (Legacy). Timestamp
        # when this EntityType was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Description of the Feature.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Optional. Only applicable for Vertex AI Feature Store (Legacy). If not set,
        # use the monitoring_config defined for the EntityType this Feature belongs to.
        # Only Features with type (Feature.ValueType) BOOL, STRING, DOUBLE or INT64 can
        # enable monitoring. If set to true, all types of data monitoring are disabled
        # despite the config on EntityType.
        # Corresponds to the JSON property `disableMonitoring`
        # @return [Boolean]
        attr_accessor :disable_monitoring
        alias_method :disable_monitoring?, :disable_monitoring
      
        # Used to perform a consistent read-modify-write updates. If not set, a blind "
        # overwrite" update happens.
        # Corresponds to the JSON property `etag`
        # @return [String]
        attr_accessor :etag
      
        # Optional. The labels with user-defined metadata to organize your Features.
        # Label keys and values can be no longer than 64 characters (Unicode codepoints),
        # can only contain lowercase letters, numeric characters, underscores and
        # dashes. International characters are allowed. See https://goo.gl/xmQnxf for
        # more information on and examples of labels. No more than 64 user labels can be
        # associated with one Feature (System labels are excluded)." System reserved
        # label keys are prefixed with "aiplatform.googleapis.com/" and are immutable.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Output only. Only applicable for Vertex AI Feature Store (Legacy). The list of
        # historical stats and anomalies with specified objectives.
        # Corresponds to the JSON property `monitoringStatsAnomalies`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureMonitoringStatsAnomaly>]
        attr_accessor :monitoring_stats_anomalies
      
        # Immutable. Name of the Feature. Format: `projects/`project`/locations/`
        # location`/featurestores/`featurestore`/entityTypes/`entity_type`/features/`
        # feature`` `projects/`project`/locations/`location`/featureGroups/`
        # feature_group`/features/`feature`` The last part feature is assigned by the
        # client. The feature can be up to 64 characters long and can consist only of
        # ASCII Latin letters A-Z and a-z, underscore(_), and ASCII digits 0-9 starting
        # with a letter. The value will be unique given an entity type.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Entity responsible for maintaining this feature. Can be comma separated list
        # of email addresses or URIs.
        # Corresponds to the JSON property `pointOfContact`
        # @return [String]
        attr_accessor :point_of_contact
      
        # Output only. Only applicable for Vertex AI Feature Store (Legacy). Timestamp
        # when this EntityType was most recently updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        # Immutable. Only applicable for Vertex AI Feature Store (Legacy). Type of
        # Feature value.
        # Corresponds to the JSON property `valueType`
        # @return [String]
        attr_accessor :value_type
      
        # Only applicable for Vertex AI Feature Store. The name of the BigQuery Table/
        # View column hosting data for this version. If no value is provided, will use
        # feature_id.
        # Corresponds to the JSON property `versionColumnName`
        # @return [String]
        attr_accessor :version_column_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @description = args[:description] if args.key?(:description)
          @disable_monitoring = args[:disable_monitoring] if args.key?(:disable_monitoring)
          @etag = args[:etag] if args.key?(:etag)
          @labels = args[:labels] if args.key?(:labels)
          @monitoring_stats_anomalies = args[:monitoring_stats_anomalies] if args.key?(:monitoring_stats_anomalies)
          @name = args[:name] if args.key?(:name)
          @point_of_contact = args[:point_of_contact] if args.key?(:point_of_contact)
          @update_time = args[:update_time] if args.key?(:update_time)
          @value_type = args[:value_type] if args.key?(:value_type)
          @version_column_name = args[:version_column_name] if args.key?(:version_column_name)
        end
      end
      
      # Vertex AI Feature Group.
      class GoogleCloudAiplatformV1FeatureGroup
        include Google::Apis::Core::Hashable
      
        # Input source type for BigQuery Tables and Views.
        # Corresponds to the JSON property `bigQuery`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureGroupBigQuery]
        attr_accessor :big_query
      
        # Output only. Timestamp when this FeatureGroup was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Optional. Description of the FeatureGroup.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Optional. Used to perform consistent read-modify-write updates. If not set, a
        # blind "overwrite" update happens.
        # Corresponds to the JSON property `etag`
        # @return [String]
        attr_accessor :etag
      
        # Optional. The labels with user-defined metadata to organize your FeatureGroup.
        # Label keys and values can be no longer than 64 characters (Unicode codepoints),
        # can only contain lowercase letters, numeric characters, underscores and
        # dashes. International characters are allowed. See https://goo.gl/xmQnxf for
        # more information on and examples of labels. No more than 64 user labels can be
        # associated with one FeatureGroup(System labels are excluded)." System reserved
        # label keys are prefixed with "aiplatform.googleapis.com/" and are immutable.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Identifier. Name of the FeatureGroup. Format: `projects/`project`/locations/`
        # location`/featureGroups/`featureGroup``
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Output only. A Service Account unique to this FeatureGroup. The role bigquery.
        # dataViewer should be granted to this service account to allow Vertex AI
        # Feature Store to access source data while running jobs under this FeatureGroup.
        # Corresponds to the JSON property `serviceAccountEmail`
        # @return [String]
        attr_accessor :service_account_email
      
        # Optional. Service agent type used during jobs under a FeatureGroup. By default,
        # the Vertex AI Service Agent is used. When using an IAM Policy to isolate this
        # FeatureGroup within a project, a separate service account should be
        # provisioned by setting this field to `SERVICE_AGENT_TYPE_FEATURE_GROUP`. This
        # will generate a separate service account to access the BigQuery source table.
        # Corresponds to the JSON property `serviceAgentType`
        # @return [String]
        attr_accessor :service_agent_type
      
        # Output only. Timestamp when this FeatureGroup was last updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @big_query = args[:big_query] if args.key?(:big_query)
          @create_time = args[:create_time] if args.key?(:create_time)
          @description = args[:description] if args.key?(:description)
          @etag = args[:etag] if args.key?(:etag)
          @labels = args[:labels] if args.key?(:labels)
          @name = args[:name] if args.key?(:name)
          @service_account_email = args[:service_account_email] if args.key?(:service_account_email)
          @service_agent_type = args[:service_agent_type] if args.key?(:service_agent_type)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # Input source type for BigQuery Tables and Views.
      class GoogleCloudAiplatformV1FeatureGroupBigQuery
        include Google::Apis::Core::Hashable
      
        # The BigQuery location for the input content.
        # Corresponds to the JSON property `bigQuerySource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BigQuerySource]
        attr_accessor :big_query_source
      
        # Optional. If set, all feature values will be fetched from a single row per
        # unique entityId including nulls. If not set, will collapse all rows for each
        # unique entityId into a singe row with any non-null values if present, if no
        # non-null values are present will sync null. ex: If source has schema `(
        # entity_id, feature_timestamp, f0, f1)` and the following rows: `(e1, 2020-01-
        # 01T10:00:00.123Z, 10, 15)` `(e1, 2020-02-01T10:00:00.123Z, 20, null)` If dense
        # is set, `(e1, 20, null)` is synced to online stores. If dense is not set, `(e1,
        # 20, 15)` is synced to online stores.
        # Corresponds to the JSON property `dense`
        # @return [Boolean]
        attr_accessor :dense
        alias_method :dense?, :dense
      
        # Optional. Columns to construct entity_id / row keys. If not provided defaults
        # to `entity_id`.
        # Corresponds to the JSON property `entityIdColumns`
        # @return [Array<String>]
        attr_accessor :entity_id_columns
      
        # Optional. Set if the data source is not a time-series.
        # Corresponds to the JSON property `staticDataSource`
        # @return [Boolean]
        attr_accessor :static_data_source
        alias_method :static_data_source?, :static_data_source
      
        # Optional. If the source is a time-series source, this can be set to control
        # how downstream sources (ex: FeatureView ) will treat time-series sources. If
        # not set, will treat the source as a time-series source with `feature_timestamp`
        # as timestamp column and no scan boundary.
        # Corresponds to the JSON property `timeSeries`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureGroupBigQueryTimeSeries]
        attr_accessor :time_series
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @big_query_source = args[:big_query_source] if args.key?(:big_query_source)
          @dense = args[:dense] if args.key?(:dense)
          @entity_id_columns = args[:entity_id_columns] if args.key?(:entity_id_columns)
          @static_data_source = args[:static_data_source] if args.key?(:static_data_source)
          @time_series = args[:time_series] if args.key?(:time_series)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1FeatureGroupBigQueryTimeSeries
        include Google::Apis::Core::Hashable
      
        # Optional. Column hosting timestamp values for a time-series source. Will be
        # used to determine the latest `feature_values` for each entity. Optional. If
        # not provided, column named `feature_timestamp` of type `TIMESTAMP` will be
        # used.
        # Corresponds to the JSON property `timestampColumn`
        # @return [String]
        attr_accessor :timestamp_column
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @timestamp_column = args[:timestamp_column] if args.key?(:timestamp_column)
        end
      end
      
      # A list of historical SnapshotAnalysis or ImportFeaturesAnalysis stats
      # requested by user, sorted by FeatureStatsAnomaly.start_time descending.
      class GoogleCloudAiplatformV1FeatureMonitoringStatsAnomaly
        include Google::Apis::Core::Hashable
      
        # Stats and Anomaly generated at specific timestamp for specific Feature. The
        # start_time and end_time are used to define the time range of the dataset that
        # current stats belongs to, e.g. prediction traffic is bucketed into prediction
        # datasets by time window. If the Dataset is not defined by time window,
        # start_time = end_time. Timestamp of the stats and anomalies always refers to
        # end_time. Raw stats and anomalies are stored in stats_uri or anomaly_uri in
        # the tensorflow defined protos. Field data_stats contains almost identical
        # information with the raw stats in Vertex AI defined proto, for UI to display.
        # Corresponds to the JSON property `featureStatsAnomaly`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureStatsAnomaly]
        attr_accessor :feature_stats_anomaly
      
        # Output only. The objective for each stats.
        # Corresponds to the JSON property `objective`
        # @return [String]
        attr_accessor :objective
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @feature_stats_anomaly = args[:feature_stats_anomaly] if args.key?(:feature_stats_anomaly)
          @objective = args[:objective] if args.key?(:objective)
        end
      end
      
      # Noise sigma by features. Noise sigma represents the standard deviation of the
      # gaussian kernel that will be used to add noise to interpolated inputs prior to
      # computing gradients.
      class GoogleCloudAiplatformV1FeatureNoiseSigma
        include Google::Apis::Core::Hashable
      
        # Noise sigma per feature. No noise is added to features that are not set.
        # Corresponds to the JSON property `noiseSigma`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureNoiseSigmaNoiseSigmaForFeature>]
        attr_accessor :noise_sigma
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @noise_sigma = args[:noise_sigma] if args.key?(:noise_sigma)
        end
      end
      
      # Noise sigma for a single feature.
      class GoogleCloudAiplatformV1FeatureNoiseSigmaNoiseSigmaForFeature
        include Google::Apis::Core::Hashable
      
        # The name of the input feature for which noise sigma is provided. The features
        # are defined in explanation metadata inputs.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # This represents the standard deviation of the Gaussian kernel that will be
        # used to add noise to the feature prior to computing gradients. Similar to
        # noise_sigma but represents the noise added to the current feature. Defaults to
        # 0.1.
        # Corresponds to the JSON property `sigma`
        # @return [Float]
        attr_accessor :sigma
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @name = args[:name] if args.key?(:name)
          @sigma = args[:sigma] if args.key?(:sigma)
        end
      end
      
      # Vertex AI Feature Online Store provides a centralized repository for serving
      # ML features and embedding indexes at low latency. The Feature Online Store is
      # a top-level container.
      class GoogleCloudAiplatformV1FeatureOnlineStore
        include Google::Apis::Core::Hashable
      
        # Contains settings for the Cloud Bigtable instance that will be created to
        # serve featureValues for all FeatureViews under this FeatureOnlineStore.
        # Corresponds to the JSON property `bigtable`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureOnlineStoreBigtable]
        attr_accessor :bigtable
      
        # Output only. Timestamp when this FeatureOnlineStore was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # The dedicated serving endpoint for this FeatureOnlineStore. Only need to set
        # when you choose Optimized storage type. Public endpoint is provisioned by
        # default.
        # Corresponds to the JSON property `dedicatedServingEndpoint`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureOnlineStoreDedicatedServingEndpoint]
        attr_accessor :dedicated_serving_endpoint
      
        # Represents a customer-managed encryption key spec that can be applied to a top-
        # level resource.
        # Corresponds to the JSON property `encryptionSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EncryptionSpec]
        attr_accessor :encryption_spec
      
        # Optional. Used to perform consistent read-modify-write updates. If not set, a
        # blind "overwrite" update happens.
        # Corresponds to the JSON property `etag`
        # @return [String]
        attr_accessor :etag
      
        # Optional. The labels with user-defined metadata to organize your
        # FeatureOnlineStore. Label keys and values can be no longer than 64 characters (
        # Unicode codepoints), can only contain lowercase letters, numeric characters,
        # underscores and dashes. International characters are allowed. See https://goo.
        # gl/xmQnxf for more information on and examples of labels. No more than 64 user
        # labels can be associated with one FeatureOnlineStore(System labels are
        # excluded)." System reserved label keys are prefixed with "aiplatform.
        # googleapis.com/" and are immutable.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Identifier. Name of the FeatureOnlineStore. Format: `projects/`project`/
        # locations/`location`/featureOnlineStores/`featureOnlineStore``
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Optimized storage type
        # Corresponds to the JSON property `optimized`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureOnlineStoreOptimized]
        attr_accessor :optimized
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzi`
        # @return [Boolean]
        attr_accessor :satisfies_pzi
        alias_method :satisfies_pzi?, :satisfies_pzi
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzs`
        # @return [Boolean]
        attr_accessor :satisfies_pzs
        alias_method :satisfies_pzs?, :satisfies_pzs
      
        # Output only. State of the featureOnlineStore.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        # Output only. Timestamp when this FeatureOnlineStore was last updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @bigtable = args[:bigtable] if args.key?(:bigtable)
          @create_time = args[:create_time] if args.key?(:create_time)
          @dedicated_serving_endpoint = args[:dedicated_serving_endpoint] if args.key?(:dedicated_serving_endpoint)
          @encryption_spec = args[:encryption_spec] if args.key?(:encryption_spec)
          @etag = args[:etag] if args.key?(:etag)
          @labels = args[:labels] if args.key?(:labels)
          @name = args[:name] if args.key?(:name)
          @optimized = args[:optimized] if args.key?(:optimized)
          @satisfies_pzi = args[:satisfies_pzi] if args.key?(:satisfies_pzi)
          @satisfies_pzs = args[:satisfies_pzs] if args.key?(:satisfies_pzs)
          @state = args[:state] if args.key?(:state)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1FeatureOnlineStoreBigtable
        include Google::Apis::Core::Hashable
      
        # Required. Autoscaling config applied to Bigtable Instance.
        # Corresponds to the JSON property `autoScaling`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureOnlineStoreBigtableAutoScaling]
        attr_accessor :auto_scaling
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @auto_scaling = args[:auto_scaling] if args.key?(:auto_scaling)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1FeatureOnlineStoreBigtableAutoScaling
        include Google::Apis::Core::Hashable
      
        # Optional. A percentage of the cluster's CPU capacity. Can be from 10% to 80%.
        # When a cluster's CPU utilization exceeds the target that you have set,
        # Bigtable immediately adds nodes to the cluster. When CPU utilization is
        # substantially lower than the target, Bigtable removes nodes. If not set will
        # default to 50%.
        # Corresponds to the JSON property `cpuUtilizationTarget`
        # @return [Fixnum]
        attr_accessor :cpu_utilization_target
      
        # Required. The maximum number of nodes to scale up to. Must be greater than or
        # equal to min_node_count, and less than or equal to 10 times of 'min_node_count'
        # .
        # Corresponds to the JSON property `maxNodeCount`
        # @return [Fixnum]
        attr_accessor :max_node_count
      
        # Required. The minimum number of nodes to scale down to. Must be greater than
        # or equal to 1.
        # Corresponds to the JSON property `minNodeCount`
        # @return [Fixnum]
        attr_accessor :min_node_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @cpu_utilization_target = args[:cpu_utilization_target] if args.key?(:cpu_utilization_target)
          @max_node_count = args[:max_node_count] if args.key?(:max_node_count)
          @min_node_count = args[:min_node_count] if args.key?(:min_node_count)
        end
      end
      
      # The dedicated serving endpoint for this FeatureOnlineStore. Only need to set
      # when you choose Optimized storage type. Public endpoint is provisioned by
      # default.
      class GoogleCloudAiplatformV1FeatureOnlineStoreDedicatedServingEndpoint
        include Google::Apis::Core::Hashable
      
        # Represents configuration for private service connect.
        # Corresponds to the JSON property `privateServiceConnectConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PrivateServiceConnectConfig]
        attr_accessor :private_service_connect_config
      
        # Output only. This field will be populated with the domain name to use for this
        # FeatureOnlineStore
        # Corresponds to the JSON property `publicEndpointDomainName`
        # @return [String]
        attr_accessor :public_endpoint_domain_name
      
        # Output only. The name of the service attachment resource. Populated if private
        # service connect is enabled and after FeatureViewSync is created.
        # Corresponds to the JSON property `serviceAttachment`
        # @return [String]
        attr_accessor :service_attachment
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @private_service_connect_config = args[:private_service_connect_config] if args.key?(:private_service_connect_config)
          @public_endpoint_domain_name = args[:public_endpoint_domain_name] if args.key?(:public_endpoint_domain_name)
          @service_attachment = args[:service_attachment] if args.key?(:service_attachment)
        end
      end
      
      # Optimized storage type
      class GoogleCloudAiplatformV1FeatureOnlineStoreOptimized
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Selector for Features of an EntityType.
      class GoogleCloudAiplatformV1FeatureSelector
        include Google::Apis::Core::Hashable
      
        # Matcher for Features of an EntityType by Feature ID.
        # Corresponds to the JSON property `idMatcher`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1IdMatcher]
        attr_accessor :id_matcher
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @id_matcher = args[:id_matcher] if args.key?(:id_matcher)
        end
      end
      
      # Stats and Anomaly generated at specific timestamp for specific Feature. The
      # start_time and end_time are used to define the time range of the dataset that
      # current stats belongs to, e.g. prediction traffic is bucketed into prediction
      # datasets by time window. If the Dataset is not defined by time window,
      # start_time = end_time. Timestamp of the stats and anomalies always refers to
      # end_time. Raw stats and anomalies are stored in stats_uri or anomaly_uri in
      # the tensorflow defined protos. Field data_stats contains almost identical
      # information with the raw stats in Vertex AI defined proto, for UI to display.
      class GoogleCloudAiplatformV1FeatureStatsAnomaly
        include Google::Apis::Core::Hashable
      
        # This is the threshold used when detecting anomalies. The threshold can be
        # changed by user, so this one might be different from ThresholdConfig.value.
        # Corresponds to the JSON property `anomalyDetectionThreshold`
        # @return [Float]
        attr_accessor :anomaly_detection_threshold
      
        # Path of the anomaly file for current feature values in Cloud Storage bucket.
        # Format: gs:////anomalies. Example: gs://monitoring_bucket/feature_name/
        # anomalies. Stats are stored as binary format with Protobuf message Anoamlies
        # are stored as binary format with Protobuf message [tensorflow.metadata.v0.
        # AnomalyInfo] (https://github.com/tensorflow/metadata/blob/master/
        # tensorflow_metadata/proto/v0/anomalies.proto).
        # Corresponds to the JSON property `anomalyUri`
        # @return [String]
        attr_accessor :anomaly_uri
      
        # Deviation from the current stats to baseline stats. 1. For categorical feature,
        # the distribution distance is calculated by L-inifinity norm. 2. For numerical
        # feature, the distribution distance is calculated by Jensen–Shannon divergence.
        # Corresponds to the JSON property `distributionDeviation`
        # @return [Float]
        attr_accessor :distribution_deviation
      
        # The end timestamp of window where stats were generated. For objectives where
        # time window doesn't make sense (e.g. Featurestore Snapshot Monitoring),
        # end_time indicates the timestamp of the data used to generate stats (e.g.
        # timestamp we take snapshots for feature values).
        # Corresponds to the JSON property `endTime`
        # @return [String]
        attr_accessor :end_time
      
        # Feature importance score, only populated when cross-feature monitoring is
        # enabled. For now only used to represent feature attribution score within range
        # [0, 1] for ModelDeploymentMonitoringObjectiveType.FEATURE_ATTRIBUTION_SKEW and
        # ModelDeploymentMonitoringObjectiveType.FEATURE_ATTRIBUTION_DRIFT.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        # The start timestamp of window where stats were generated. For objectives where
        # time window doesn't make sense (e.g. Featurestore Snapshot Monitoring),
        # start_time is only used to indicate the monitoring intervals, so it always
        # equals to (end_time - monitoring_interval).
        # Corresponds to the JSON property `startTime`
        # @return [String]
        attr_accessor :start_time
      
        # Path of the stats file for current feature values in Cloud Storage bucket.
        # Format: gs:////stats. Example: gs://monitoring_bucket/feature_name/stats.
        # Stats are stored as binary format with Protobuf message [tensorflow.metadata.
        # v0.FeatureNameStatistics](https://github.com/tensorflow/metadata/blob/master/
        # tensorflow_metadata/proto/v0/statistics.proto).
        # Corresponds to the JSON property `statsUri`
        # @return [String]
        attr_accessor :stats_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @anomaly_detection_threshold = args[:anomaly_detection_threshold] if args.key?(:anomaly_detection_threshold)
          @anomaly_uri = args[:anomaly_uri] if args.key?(:anomaly_uri)
          @distribution_deviation = args[:distribution_deviation] if args.key?(:distribution_deviation)
          @end_time = args[:end_time] if args.key?(:end_time)
          @score = args[:score] if args.key?(:score)
          @start_time = args[:start_time] if args.key?(:start_time)
          @stats_uri = args[:stats_uri] if args.key?(:stats_uri)
        end
      end
      
      # Value for a feature.
      class GoogleCloudAiplatformV1FeatureValue
        include Google::Apis::Core::Hashable
      
        # A list of boolean values.
        # Corresponds to the JSON property `boolArrayValue`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BoolArray]
        attr_accessor :bool_array_value
      
        # Bool type feature value.
        # Corresponds to the JSON property `boolValue`
        # @return [Boolean]
        attr_accessor :bool_value
        alias_method :bool_value?, :bool_value
      
        # Bytes feature value.
        # Corresponds to the JSON property `bytesValue`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :bytes_value
      
        # A list of double values.
        # Corresponds to the JSON property `doubleArrayValue`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DoubleArray]
        attr_accessor :double_array_value
      
        # Double type feature value.
        # Corresponds to the JSON property `doubleValue`
        # @return [Float]
        attr_accessor :double_value
      
        # A list of int64 values.
        # Corresponds to the JSON property `int64ArrayValue`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Int64Array]
        attr_accessor :int64_array_value
      
        # Int64 feature value.
        # Corresponds to the JSON property `int64Value`
        # @return [Fixnum]
        attr_accessor :int64_value
      
        # Metadata of feature value.
        # Corresponds to the JSON property `metadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureValueMetadata]
        attr_accessor :metadata
      
        # A list of string values.
        # Corresponds to the JSON property `stringArrayValue`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1StringArray]
        attr_accessor :string_array_value
      
        # String feature value.
        # Corresponds to the JSON property `stringValue`
        # @return [String]
        attr_accessor :string_value
      
        # Struct (or object) type feature value.
        # Corresponds to the JSON property `structValue`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1StructValue]
        attr_accessor :struct_value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @bool_array_value = args[:bool_array_value] if args.key?(:bool_array_value)
          @bool_value = args[:bool_value] if args.key?(:bool_value)
          @bytes_value = args[:bytes_value] if args.key?(:bytes_value)
          @double_array_value = args[:double_array_value] if args.key?(:double_array_value)
          @double_value = args[:double_value] if args.key?(:double_value)
          @int64_array_value = args[:int64_array_value] if args.key?(:int64_array_value)
          @int64_value = args[:int64_value] if args.key?(:int64_value)
          @metadata = args[:metadata] if args.key?(:metadata)
          @string_array_value = args[:string_array_value] if args.key?(:string_array_value)
          @string_value = args[:string_value] if args.key?(:string_value)
          @struct_value = args[:struct_value] if args.key?(:struct_value)
        end
      end
      
      # A destination location for Feature values and format.
      class GoogleCloudAiplatformV1FeatureValueDestination
        include Google::Apis::Core::Hashable
      
        # The BigQuery location for the output content.
        # Corresponds to the JSON property `bigqueryDestination`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BigQueryDestination]
        attr_accessor :bigquery_destination
      
        # The storage details for CSV output content.
        # Corresponds to the JSON property `csvDestination`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CsvDestination]
        attr_accessor :csv_destination
      
        # The storage details for TFRecord output content.
        # Corresponds to the JSON property `tfrecordDestination`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TfRecordDestination]
        attr_accessor :tfrecord_destination
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @bigquery_destination = args[:bigquery_destination] if args.key?(:bigquery_destination)
          @csv_destination = args[:csv_destination] if args.key?(:csv_destination)
          @tfrecord_destination = args[:tfrecord_destination] if args.key?(:tfrecord_destination)
        end
      end
      
      # Container for list of values.
      class GoogleCloudAiplatformV1FeatureValueList
        include Google::Apis::Core::Hashable
      
        # A list of feature values. All of them should be the same data type.
        # Corresponds to the JSON property `values`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureValue>]
        attr_accessor :values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @values = args[:values] if args.key?(:values)
        end
      end
      
      # Metadata of feature value.
      class GoogleCloudAiplatformV1FeatureValueMetadata
        include Google::Apis::Core::Hashable
      
        # Feature generation timestamp. Typically, it is provided by user at feature
        # ingestion time. If not, feature store will use the system timestamp when the
        # data is ingested into feature store. Legacy Feature Store: For streaming
        # ingestion, the time, aligned by days, must be no older than five years (1825
        # days) and no later than one year (366 days) in the future.
        # Corresponds to the JSON property `generateTime`
        # @return [String]
        attr_accessor :generate_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generate_time = args[:generate_time] if args.key?(:generate_time)
        end
      end
      
      # FeatureView is representation of values that the FeatureOnlineStore will serve
      # based on its syncConfig.
      class GoogleCloudAiplatformV1FeatureView
        include Google::Apis::Core::Hashable
      
        # Optional. Configures how data is supposed to be extracted from a BigQuery
        # source to be loaded onto the FeatureOnlineStore.
        # Corresponds to the JSON property `bigQuerySource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureViewBigQuerySource]
        attr_accessor :big_query_source
      
        # Output only. Timestamp when this FeatureView was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Optional. Used to perform consistent read-modify-write updates. If not set, a
        # blind "overwrite" update happens.
        # Corresponds to the JSON property `etag`
        # @return [String]
        attr_accessor :etag
      
        # A Feature Registry source for features that need to be synced to Online Store.
        # Corresponds to the JSON property `featureRegistrySource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureViewFeatureRegistrySource]
        attr_accessor :feature_registry_source
      
        # Configuration for vector indexing.
        # Corresponds to the JSON property `indexConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureViewIndexConfig]
        attr_accessor :index_config
      
        # Optional. The labels with user-defined metadata to organize your FeatureViews.
        # Label keys and values can be no longer than 64 characters (Unicode codepoints),
        # can only contain lowercase letters, numeric characters, underscores and
        # dashes. International characters are allowed. See https://goo.gl/xmQnxf for
        # more information on and examples of labels. No more than 64 user labels can be
        # associated with one FeatureOnlineStore(System labels are excluded)." System
        # reserved label keys are prefixed with "aiplatform.googleapis.com/" and are
        # immutable.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Identifier. Name of the FeatureView. Format: `projects/`project`/locations/`
        # location`/featureOnlineStores/`feature_online_store`/featureViews/`
        # feature_view``
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Configuration for FeatureViews created in Optimized FeatureOnlineStore.
        # Corresponds to the JSON property `optimizedConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureViewOptimizedConfig]
        attr_accessor :optimized_config
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzi`
        # @return [Boolean]
        attr_accessor :satisfies_pzi
        alias_method :satisfies_pzi?, :satisfies_pzi
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzs`
        # @return [Boolean]
        attr_accessor :satisfies_pzs
        alias_method :satisfies_pzs?, :satisfies_pzs
      
        # Output only. A Service Account unique to this FeatureView. The role bigquery.
        # dataViewer should be granted to this service account to allow Vertex AI
        # Feature Store to sync data to the online store.
        # Corresponds to the JSON property `serviceAccountEmail`
        # @return [String]
        attr_accessor :service_account_email
      
        # Optional. Service agent type used during data sync. By default, the Vertex AI
        # Service Agent is used. When using an IAM Policy to isolate this FeatureView
        # within a project, a separate service account should be provisioned by setting
        # this field to `SERVICE_AGENT_TYPE_FEATURE_VIEW`. This will generate a separate
        # service account to access the BigQuery source table.
        # Corresponds to the JSON property `serviceAgentType`
        # @return [String]
        attr_accessor :service_agent_type
      
        # Configuration for Sync. Only one option is set.
        # Corresponds to the JSON property `syncConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureViewSyncConfig]
        attr_accessor :sync_config
      
        # Output only. Timestamp when this FeatureView was last updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        # A Vertex Rag source for features that need to be synced to Online Store.
        # Corresponds to the JSON property `vertexRagSource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureViewVertexRagSource]
        attr_accessor :vertex_rag_source
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @big_query_source = args[:big_query_source] if args.key?(:big_query_source)
          @create_time = args[:create_time] if args.key?(:create_time)
          @etag = args[:etag] if args.key?(:etag)
          @feature_registry_source = args[:feature_registry_source] if args.key?(:feature_registry_source)
          @index_config = args[:index_config] if args.key?(:index_config)
          @labels = args[:labels] if args.key?(:labels)
          @name = args[:name] if args.key?(:name)
          @optimized_config = args[:optimized_config] if args.key?(:optimized_config)
          @satisfies_pzi = args[:satisfies_pzi] if args.key?(:satisfies_pzi)
          @satisfies_pzs = args[:satisfies_pzs] if args.key?(:satisfies_pzs)
          @service_account_email = args[:service_account_email] if args.key?(:service_account_email)
          @service_agent_type = args[:service_agent_type] if args.key?(:service_agent_type)
          @sync_config = args[:sync_config] if args.key?(:sync_config)
          @update_time = args[:update_time] if args.key?(:update_time)
          @vertex_rag_source = args[:vertex_rag_source] if args.key?(:vertex_rag_source)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1FeatureViewBigQuerySource
        include Google::Apis::Core::Hashable
      
        # Required. Columns to construct entity_id / row keys.
        # Corresponds to the JSON property `entityIdColumns`
        # @return [Array<String>]
        attr_accessor :entity_id_columns
      
        # Required. The BigQuery view URI that will be materialized on each sync trigger
        # based on FeatureView.SyncConfig.
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entity_id_columns = args[:entity_id_columns] if args.key?(:entity_id_columns)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # Lookup key for a feature view.
      class GoogleCloudAiplatformV1FeatureViewDataKey
        include Google::Apis::Core::Hashable
      
        # ID that is comprised from several parts (columns).
        # Corresponds to the JSON property `compositeKey`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureViewDataKeyCompositeKey]
        attr_accessor :composite_key
      
        # String key to use for lookup.
        # Corresponds to the JSON property `key`
        # @return [String]
        attr_accessor :key
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @composite_key = args[:composite_key] if args.key?(:composite_key)
          @key = args[:key] if args.key?(:key)
        end
      end
      
      # ID that is comprised from several parts (columns).
      class GoogleCloudAiplatformV1FeatureViewDataKeyCompositeKey
        include Google::Apis::Core::Hashable
      
        # Parts to construct Entity ID. Should match with the same ID columns as defined
        # in FeatureView in the same order.
        # Corresponds to the JSON property `parts`
        # @return [Array<String>]
        attr_accessor :parts
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @parts = args[:parts] if args.key?(:parts)
        end
      end
      
      # Request message for FeatureOnlineStoreService.FeatureViewDirectWrite.
      class GoogleCloudAiplatformV1FeatureViewDirectWriteRequest
        include Google::Apis::Core::Hashable
      
        # Required. The data keys and associated feature values.
        # Corresponds to the JSON property `dataKeyAndFeatureValues`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureViewDirectWriteRequestDataKeyAndFeatureValues>]
        attr_accessor :data_key_and_feature_values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @data_key_and_feature_values = args[:data_key_and_feature_values] if args.key?(:data_key_and_feature_values)
        end
      end
      
      # A data key and associated feature values to write to the feature view.
      class GoogleCloudAiplatformV1FeatureViewDirectWriteRequestDataKeyAndFeatureValues
        include Google::Apis::Core::Hashable
      
        # Lookup key for a feature view.
        # Corresponds to the JSON property `dataKey`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureViewDataKey]
        attr_accessor :data_key
      
        # List of features to write.
        # Corresponds to the JSON property `features`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureViewDirectWriteRequestDataKeyAndFeatureValuesFeature>]
        attr_accessor :features
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @data_key = args[:data_key] if args.key?(:data_key)
          @features = args[:features] if args.key?(:features)
        end
      end
      
      # Feature name & value pair.
      class GoogleCloudAiplatformV1FeatureViewDirectWriteRequestDataKeyAndFeatureValuesFeature
        include Google::Apis::Core::Hashable
      
        # Feature short name.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Value for a feature.
        # Corresponds to the JSON property `value`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureValue]
        attr_accessor :value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @name = args[:name] if args.key?(:name)
          @value = args[:value] if args.key?(:value)
        end
      end
      
      # Response message for FeatureOnlineStoreService.FeatureViewDirectWrite.
      class GoogleCloudAiplatformV1FeatureViewDirectWriteResponse
        include Google::Apis::Core::Hashable
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `status`
        # @return [Google::Apis::AiplatformV1::GoogleRpcStatus]
        attr_accessor :status
      
        # Details about write for each key. If status is not OK, WriteResponse.data_key
        # will have the key with error, but WriteResponse.online_store_write_time will
        # not be present.
        # Corresponds to the JSON property `writeResponses`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureViewDirectWriteResponseWriteResponse>]
        attr_accessor :write_responses
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @status = args[:status] if args.key?(:status)
          @write_responses = args[:write_responses] if args.key?(:write_responses)
        end
      end
      
      # Details about the write for each key.
      class GoogleCloudAiplatformV1FeatureViewDirectWriteResponseWriteResponse
        include Google::Apis::Core::Hashable
      
        # Lookup key for a feature view.
        # Corresponds to the JSON property `dataKey`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureViewDataKey]
        attr_accessor :data_key
      
        # When the feature values were written to the online store. If
        # FeatureViewDirectWriteResponse.status is not OK, this field is not populated.
        # Corresponds to the JSON property `onlineStoreWriteTime`
        # @return [String]
        attr_accessor :online_store_write_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @data_key = args[:data_key] if args.key?(:data_key)
          @online_store_write_time = args[:online_store_write_time] if args.key?(:online_store_write_time)
        end
      end
      
      # A Feature Registry source for features that need to be synced to Online Store.
      class GoogleCloudAiplatformV1FeatureViewFeatureRegistrySource
        include Google::Apis::Core::Hashable
      
        # Required. List of features that need to be synced to Online Store.
        # Corresponds to the JSON property `featureGroups`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureViewFeatureRegistrySourceFeatureGroup>]
        attr_accessor :feature_groups
      
        # Optional. The project number of the parent project of the Feature Groups.
        # Corresponds to the JSON property `projectNumber`
        # @return [Fixnum]
        attr_accessor :project_number
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @feature_groups = args[:feature_groups] if args.key?(:feature_groups)
          @project_number = args[:project_number] if args.key?(:project_number)
        end
      end
      
      # Features belonging to a single feature group that will be synced to Online
      # Store.
      class GoogleCloudAiplatformV1FeatureViewFeatureRegistrySourceFeatureGroup
        include Google::Apis::Core::Hashable
      
        # Required. Identifier of the feature group.
        # Corresponds to the JSON property `featureGroupId`
        # @return [String]
        attr_accessor :feature_group_id
      
        # Required. Identifiers of features under the feature group.
        # Corresponds to the JSON property `featureIds`
        # @return [Array<String>]
        attr_accessor :feature_ids
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @feature_group_id = args[:feature_group_id] if args.key?(:feature_group_id)
          @feature_ids = args[:feature_ids] if args.key?(:feature_ids)
        end
      end
      
      # Configuration for vector indexing.
      class GoogleCloudAiplatformV1FeatureViewIndexConfig
        include Google::Apis::Core::Hashable
      
        # Configuration options for using brute force search.
        # Corresponds to the JSON property `bruteForceConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureViewIndexConfigBruteForceConfig]
        attr_accessor :brute_force_config
      
        # Optional. Column of crowding. This column contains crowding attribute which is
        # a constraint on a neighbor list produced by FeatureOnlineStoreService.
        # SearchNearestEntities to diversify search results. If NearestNeighborQuery.
        # per_crowding_attribute_neighbor_count is set to K in
        # SearchNearestEntitiesRequest, it's guaranteed that no more than K entities of
        # the same crowding attribute are returned in the response.
        # Corresponds to the JSON property `crowdingColumn`
        # @return [String]
        attr_accessor :crowding_column
      
        # Optional. The distance measure used in nearest neighbor search.
        # Corresponds to the JSON property `distanceMeasureType`
        # @return [String]
        attr_accessor :distance_measure_type
      
        # Optional. Column of embedding. This column contains the source data to create
        # index for vector search. embedding_column must be set when using vector search.
        # Corresponds to the JSON property `embeddingColumn`
        # @return [String]
        attr_accessor :embedding_column
      
        # Optional. The number of dimensions of the input embedding.
        # Corresponds to the JSON property `embeddingDimension`
        # @return [Fixnum]
        attr_accessor :embedding_dimension
      
        # Optional. Columns of features that're used to filter vector search results.
        # Corresponds to the JSON property `filterColumns`
        # @return [Array<String>]
        attr_accessor :filter_columns
      
        # Configuration options for the tree-AH algorithm.
        # Corresponds to the JSON property `treeAhConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureViewIndexConfigTreeAhConfig]
        attr_accessor :tree_ah_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @brute_force_config = args[:brute_force_config] if args.key?(:brute_force_config)
          @crowding_column = args[:crowding_column] if args.key?(:crowding_column)
          @distance_measure_type = args[:distance_measure_type] if args.key?(:distance_measure_type)
          @embedding_column = args[:embedding_column] if args.key?(:embedding_column)
          @embedding_dimension = args[:embedding_dimension] if args.key?(:embedding_dimension)
          @filter_columns = args[:filter_columns] if args.key?(:filter_columns)
          @tree_ah_config = args[:tree_ah_config] if args.key?(:tree_ah_config)
        end
      end
      
      # Configuration options for using brute force search.
      class GoogleCloudAiplatformV1FeatureViewIndexConfigBruteForceConfig
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Configuration options for the tree-AH algorithm.
      class GoogleCloudAiplatformV1FeatureViewIndexConfigTreeAhConfig
        include Google::Apis::Core::Hashable
      
        # Optional. Number of embeddings on each leaf node. The default value is 1000 if
        # not set.
        # Corresponds to the JSON property `leafNodeEmbeddingCount`
        # @return [Fixnum]
        attr_accessor :leaf_node_embedding_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @leaf_node_embedding_count = args[:leaf_node_embedding_count] if args.key?(:leaf_node_embedding_count)
        end
      end
      
      # Configuration for FeatureViews created in Optimized FeatureOnlineStore.
      class GoogleCloudAiplatformV1FeatureViewOptimizedConfig
        include Google::Apis::Core::Hashable
      
        # A description of resources that to large degree are decided by Vertex AI, and
        # require only a modest additional configuration. Each Model supporting these
        # resources documents its specific guidelines.
        # Corresponds to the JSON property `automaticResources`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1AutomaticResources]
        attr_accessor :automatic_resources
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @automatic_resources = args[:automatic_resources] if args.key?(:automatic_resources)
        end
      end
      
      # FeatureViewSync is a representation of sync operation which copies data from
      # data source to Feature View in Online Store.
      class GoogleCloudAiplatformV1FeatureViewSync
        include Google::Apis::Core::Hashable
      
        # Output only. Time when this FeatureViewSync is created. Creation of a
        # FeatureViewSync means that the job is pending / waiting for sufficient
        # resources but may not have started the actual data transfer yet.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `finalStatus`
        # @return [Google::Apis::AiplatformV1::GoogleRpcStatus]
        attr_accessor :final_status
      
        # Identifier. Name of the FeatureViewSync. Format: `projects/`project`/locations/
        # `location`/featureOnlineStores/`feature_online_store`/featureViews/`
        # feature_view`/featureViewSyncs/`feature_view_sync``
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Represents a time interval, encoded as a Timestamp start (inclusive) and a
        # Timestamp end (exclusive). The start must be less than or equal to the end.
        # When the start equals the end, the interval is empty (matches no time). When
        # both start and end are unspecified, the interval matches any time.
        # Corresponds to the JSON property `runTime`
        # @return [Google::Apis::AiplatformV1::GoogleTypeInterval]
        attr_accessor :run_time
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzi`
        # @return [Boolean]
        attr_accessor :satisfies_pzi
        alias_method :satisfies_pzi?, :satisfies_pzi
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzs`
        # @return [Boolean]
        attr_accessor :satisfies_pzs
        alias_method :satisfies_pzs?, :satisfies_pzs
      
        # Summary from the Sync job. For continuous syncs, the summary is updated
        # periodically. For batch syncs, it gets updated on completion of the sync.
        # Corresponds to the JSON property `syncSummary`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureViewSyncSyncSummary]
        attr_accessor :sync_summary
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @final_status = args[:final_status] if args.key?(:final_status)
          @name = args[:name] if args.key?(:name)
          @run_time = args[:run_time] if args.key?(:run_time)
          @satisfies_pzi = args[:satisfies_pzi] if args.key?(:satisfies_pzi)
          @satisfies_pzs = args[:satisfies_pzs] if args.key?(:satisfies_pzs)
          @sync_summary = args[:sync_summary] if args.key?(:sync_summary)
        end
      end
      
      # Configuration for Sync. Only one option is set.
      class GoogleCloudAiplatformV1FeatureViewSyncConfig
        include Google::Apis::Core::Hashable
      
        # Optional. If true, syncs the FeatureView in a continuous manner to Online
        # Store.
        # Corresponds to the JSON property `continuous`
        # @return [Boolean]
        attr_accessor :continuous
        alias_method :continuous?, :continuous
      
        # Cron schedule (https://en.wikipedia.org/wiki/Cron) to launch scheduled runs.
        # To explicitly set a timezone to the cron tab, apply a prefix in the cron tab: "
        # CRON_TZ=$`IANA_TIME_ZONE`" or "TZ=$`IANA_TIME_ZONE`". The $`IANA_TIME_ZONE`
        # may only be a valid string from IANA time zone database. For example, "CRON_TZ=
        # America/New_York 1 * * * *", or "TZ=America/New_York 1 * * * *".
        # Corresponds to the JSON property `cron`
        # @return [String]
        attr_accessor :cron
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @continuous = args[:continuous] if args.key?(:continuous)
          @cron = args[:cron] if args.key?(:cron)
        end
      end
      
      # Summary from the Sync job. For continuous syncs, the summary is updated
      # periodically. For batch syncs, it gets updated on completion of the sync.
      class GoogleCloudAiplatformV1FeatureViewSyncSyncSummary
        include Google::Apis::Core::Hashable
      
        # Output only. Total number of rows synced.
        # Corresponds to the JSON property `rowSynced`
        # @return [Fixnum]
        attr_accessor :row_synced
      
        # Lower bound of the system time watermark for the sync job. This is only set
        # for continuously syncing feature views.
        # Corresponds to the JSON property `systemWatermarkTime`
        # @return [String]
        attr_accessor :system_watermark_time
      
        # Output only. BigQuery slot milliseconds consumed for the sync job.
        # Corresponds to the JSON property `totalSlot`
        # @return [Fixnum]
        attr_accessor :total_slot
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @row_synced = args[:row_synced] if args.key?(:row_synced)
          @system_watermark_time = args[:system_watermark_time] if args.key?(:system_watermark_time)
          @total_slot = args[:total_slot] if args.key?(:total_slot)
        end
      end
      
      # A Vertex Rag source for features that need to be synced to Online Store.
      class GoogleCloudAiplatformV1FeatureViewVertexRagSource
        include Google::Apis::Core::Hashable
      
        # Optional. The RAG corpus id corresponding to this FeatureView.
        # Corresponds to the JSON property `ragCorpusId`
        # @return [Fixnum]
        attr_accessor :rag_corpus_id
      
        # Required. The BigQuery view/table URI that will be materialized on each manual
        # sync trigger. The table/view is expected to have the following columns and
        # types at least: - `corpus_id` (STRING, NULLABLE/REQUIRED) - `file_id` (STRING,
        # NULLABLE/REQUIRED) - `chunk_id` (STRING, NULLABLE/REQUIRED) - `chunk_data_type`
        # (STRING, NULLABLE/REQUIRED) - `chunk_data` (STRING, NULLABLE/REQUIRED) - `
        # embeddings` (FLOAT, REPEATED) - `file_original_uri` (STRING, NULLABLE/REQUIRED)
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @rag_corpus_id = args[:rag_corpus_id] if args.key?(:rag_corpus_id)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # Vertex AI Feature Store provides a centralized repository for organizing,
      # storing, and serving ML features. The Featurestore is a top-level container
      # for your features and their values.
      class GoogleCloudAiplatformV1Featurestore
        include Google::Apis::Core::Hashable
      
        # Output only. Timestamp when this Featurestore was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Represents a customer-managed encryption key spec that can be applied to a top-
        # level resource.
        # Corresponds to the JSON property `encryptionSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EncryptionSpec]
        attr_accessor :encryption_spec
      
        # Optional. Used to perform consistent read-modify-write updates. If not set, a
        # blind "overwrite" update happens.
        # Corresponds to the JSON property `etag`
        # @return [String]
        attr_accessor :etag
      
        # Optional. The labels with user-defined metadata to organize your Featurestore.
        # Label keys and values can be no longer than 64 characters (Unicode codepoints),
        # can only contain lowercase letters, numeric characters, underscores and
        # dashes. International characters are allowed. See https://goo.gl/xmQnxf for
        # more information on and examples of labels. No more than 64 user labels can be
        # associated with one Featurestore(System labels are excluded)." System reserved
        # label keys are prefixed with "aiplatform.googleapis.com/" and are immutable.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Output only. Name of the Featurestore. Format: `projects/`project`/locations/`
        # location`/featurestores/`featurestore``
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # OnlineServingConfig specifies the details for provisioning online serving
        # resources.
        # Corresponds to the JSON property `onlineServingConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeaturestoreOnlineServingConfig]
        attr_accessor :online_serving_config
      
        # Optional. TTL in days for feature values that will be stored in online serving
        # storage. The Feature Store online storage periodically removes obsolete
        # feature values older than `online_storage_ttl_days` since the feature
        # generation time. Note that `online_storage_ttl_days` should be less than or
        # equal to `offline_storage_ttl_days` for each EntityType under a featurestore.
        # If not set, default to 4000 days
        # Corresponds to the JSON property `onlineStorageTtlDays`
        # @return [Fixnum]
        attr_accessor :online_storage_ttl_days
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzi`
        # @return [Boolean]
        attr_accessor :satisfies_pzi
        alias_method :satisfies_pzi?, :satisfies_pzi
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzs`
        # @return [Boolean]
        attr_accessor :satisfies_pzs
        alias_method :satisfies_pzs?, :satisfies_pzs
      
        # Output only. State of the featurestore.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        # Output only. Timestamp when this Featurestore was last updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @encryption_spec = args[:encryption_spec] if args.key?(:encryption_spec)
          @etag = args[:etag] if args.key?(:etag)
          @labels = args[:labels] if args.key?(:labels)
          @name = args[:name] if args.key?(:name)
          @online_serving_config = args[:online_serving_config] if args.key?(:online_serving_config)
          @online_storage_ttl_days = args[:online_storage_ttl_days] if args.key?(:online_storage_ttl_days)
          @satisfies_pzi = args[:satisfies_pzi] if args.key?(:satisfies_pzi)
          @satisfies_pzs = args[:satisfies_pzs] if args.key?(:satisfies_pzs)
          @state = args[:state] if args.key?(:state)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # Configuration of how features in Featurestore are monitored.
      class GoogleCloudAiplatformV1FeaturestoreMonitoringConfig
        include Google::Apis::Core::Hashable
      
        # The config for Featurestore Monitoring threshold.
        # Corresponds to the JSON property `categoricalThresholdConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeaturestoreMonitoringConfigThresholdConfig]
        attr_accessor :categorical_threshold_config
      
        # Configuration of the Featurestore's ImportFeature Analysis Based Monitoring.
        # This type of analysis generates statistics for values of each Feature imported
        # by every ImportFeatureValues operation.
        # Corresponds to the JSON property `importFeaturesAnalysis`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeaturestoreMonitoringConfigImportFeaturesAnalysis]
        attr_accessor :import_features_analysis
      
        # The config for Featurestore Monitoring threshold.
        # Corresponds to the JSON property `numericalThresholdConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeaturestoreMonitoringConfigThresholdConfig]
        attr_accessor :numerical_threshold_config
      
        # Configuration of the Featurestore's Snapshot Analysis Based Monitoring. This
        # type of analysis generates statistics for each Feature based on a snapshot of
        # the latest feature value of each entities every monitoring_interval.
        # Corresponds to the JSON property `snapshotAnalysis`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeaturestoreMonitoringConfigSnapshotAnalysis]
        attr_accessor :snapshot_analysis
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @categorical_threshold_config = args[:categorical_threshold_config] if args.key?(:categorical_threshold_config)
          @import_features_analysis = args[:import_features_analysis] if args.key?(:import_features_analysis)
          @numerical_threshold_config = args[:numerical_threshold_config] if args.key?(:numerical_threshold_config)
          @snapshot_analysis = args[:snapshot_analysis] if args.key?(:snapshot_analysis)
        end
      end
      
      # Configuration of the Featurestore's ImportFeature Analysis Based Monitoring.
      # This type of analysis generates statistics for values of each Feature imported
      # by every ImportFeatureValues operation.
      class GoogleCloudAiplatformV1FeaturestoreMonitoringConfigImportFeaturesAnalysis
        include Google::Apis::Core::Hashable
      
        # The baseline used to do anomaly detection for the statistics generated by
        # import features analysis.
        # Corresponds to the JSON property `anomalyDetectionBaseline`
        # @return [String]
        attr_accessor :anomaly_detection_baseline
      
        # Whether to enable / disable / inherite default hebavior for import features
        # analysis.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @anomaly_detection_baseline = args[:anomaly_detection_baseline] if args.key?(:anomaly_detection_baseline)
          @state = args[:state] if args.key?(:state)
        end
      end
      
      # Configuration of the Featurestore's Snapshot Analysis Based Monitoring. This
      # type of analysis generates statistics for each Feature based on a snapshot of
      # the latest feature value of each entities every monitoring_interval.
      class GoogleCloudAiplatformV1FeaturestoreMonitoringConfigSnapshotAnalysis
        include Google::Apis::Core::Hashable
      
        # The monitoring schedule for snapshot analysis. For EntityType-level config:
        # unset / disabled = true indicates disabled by default for Features under it;
        # otherwise by default enable snapshot analysis monitoring with
        # monitoring_interval for Features under it. Feature-level config: disabled =
        # true indicates disabled regardless of the EntityType-level config; unset
        # monitoring_interval indicates going with EntityType-level config; otherwise
        # run snapshot analysis monitoring with monitoring_interval regardless of the
        # EntityType-level config. Explicitly Disable the snapshot analysis based
        # monitoring.
        # Corresponds to the JSON property `disabled`
        # @return [Boolean]
        attr_accessor :disabled
        alias_method :disabled?, :disabled
      
        # Configuration of the snapshot analysis based monitoring pipeline running
        # interval. The value indicates number of days.
        # Corresponds to the JSON property `monitoringIntervalDays`
        # @return [Fixnum]
        attr_accessor :monitoring_interval_days
      
        # Customized export features time window for snapshot analysis. Unit is one day.
        # Default value is 3 weeks. Minimum value is 1 day. Maximum value is 4000 days.
        # Corresponds to the JSON property `stalenessDays`
        # @return [Fixnum]
        attr_accessor :staleness_days
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @disabled = args[:disabled] if args.key?(:disabled)
          @monitoring_interval_days = args[:monitoring_interval_days] if args.key?(:monitoring_interval_days)
          @staleness_days = args[:staleness_days] if args.key?(:staleness_days)
        end
      end
      
      # The config for Featurestore Monitoring threshold.
      class GoogleCloudAiplatformV1FeaturestoreMonitoringConfigThresholdConfig
        include Google::Apis::Core::Hashable
      
        # Specify a threshold value that can trigger the alert. 1. For categorical
        # feature, the distribution distance is calculated by L-inifinity norm. 2. For
        # numerical feature, the distribution distance is calculated by Jensen–Shannon
        # divergence. Each feature must have a non-zero threshold if they need to be
        # monitored. Otherwise no alert will be triggered for that feature.
        # Corresponds to the JSON property `value`
        # @return [Float]
        attr_accessor :value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @value = args[:value] if args.key?(:value)
        end
      end
      
      # OnlineServingConfig specifies the details for provisioning online serving
      # resources.
      class GoogleCloudAiplatformV1FeaturestoreOnlineServingConfig
        include Google::Apis::Core::Hashable
      
        # The number of nodes for the online store. The number of nodes doesn't scale
        # automatically, but you can manually update the number of nodes. If set to 0,
        # the featurestore will not have an online store and cannot be used for online
        # serving.
        # Corresponds to the JSON property `fixedNodeCount`
        # @return [Fixnum]
        attr_accessor :fixed_node_count
      
        # Online serving scaling configuration. If min_node_count and max_node_count are
        # set to the same value, the cluster will be configured with the fixed number of
        # node (no auto-scaling).
        # Corresponds to the JSON property `scaling`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeaturestoreOnlineServingConfigScaling]
        attr_accessor :scaling
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @fixed_node_count = args[:fixed_node_count] if args.key?(:fixed_node_count)
          @scaling = args[:scaling] if args.key?(:scaling)
        end
      end
      
      # Online serving scaling configuration. If min_node_count and max_node_count are
      # set to the same value, the cluster will be configured with the fixed number of
      # node (no auto-scaling).
      class GoogleCloudAiplatformV1FeaturestoreOnlineServingConfigScaling
        include Google::Apis::Core::Hashable
      
        # Optional. The cpu utilization that the Autoscaler should be trying to achieve.
        # This number is on a scale from 0 (no utilization) to 100 (total utilization),
        # and is limited between 10 and 80. When a cluster's CPU utilization exceeds the
        # target that you have set, Bigtable immediately adds nodes to the cluster. When
        # CPU utilization is substantially lower than the target, Bigtable removes nodes.
        # If not set or set to 0, default to 50.
        # Corresponds to the JSON property `cpuUtilizationTarget`
        # @return [Fixnum]
        attr_accessor :cpu_utilization_target
      
        # The maximum number of nodes to scale up to. Must be greater than
        # min_node_count, and less than or equal to 10 times of 'min_node_count'.
        # Corresponds to the JSON property `maxNodeCount`
        # @return [Fixnum]
        attr_accessor :max_node_count
      
        # Required. The minimum number of nodes to scale down to. Must be greater than
        # or equal to 1.
        # Corresponds to the JSON property `minNodeCount`
        # @return [Fixnum]
        attr_accessor :min_node_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @cpu_utilization_target = args[:cpu_utilization_target] if args.key?(:cpu_utilization_target)
          @max_node_count = args[:max_node_count] if args.key?(:max_node_count)
          @min_node_count = args[:min_node_count] if args.key?(:min_node_count)
        end
      end
      
      # Request message for FeatureOnlineStoreService.FetchFeatureValues. All the
      # features under the requested feature view will be returned.
      class GoogleCloudAiplatformV1FetchFeatureValuesRequest
        include Google::Apis::Core::Hashable
      
        # Optional. Response data format. If not set, FeatureViewDataFormat.KEY_VALUE
        # will be used.
        # Corresponds to the JSON property `dataFormat`
        # @return [String]
        attr_accessor :data_format
      
        # Lookup key for a feature view.
        # Corresponds to the JSON property `dataKey`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureViewDataKey]
        attr_accessor :data_key
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @data_format = args[:data_format] if args.key?(:data_format)
          @data_key = args[:data_key] if args.key?(:data_key)
        end
      end
      
      # Response message for FeatureOnlineStoreService.FetchFeatureValues
      class GoogleCloudAiplatformV1FetchFeatureValuesResponse
        include Google::Apis::Core::Hashable
      
        # Lookup key for a feature view.
        # Corresponds to the JSON property `dataKey`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureViewDataKey]
        attr_accessor :data_key
      
        # Response structure in the format of key (feature name) and (feature) value
        # pair.
        # Corresponds to the JSON property `keyValues`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FetchFeatureValuesResponseFeatureNameValuePairList]
        attr_accessor :key_values
      
        # Feature values in proto Struct format.
        # Corresponds to the JSON property `protoStruct`
        # @return [Hash<String,Object>]
        attr_accessor :proto_struct
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @data_key = args[:data_key] if args.key?(:data_key)
          @key_values = args[:key_values] if args.key?(:key_values)
          @proto_struct = args[:proto_struct] if args.key?(:proto_struct)
        end
      end
      
      # Response structure in the format of key (feature name) and (feature) value
      # pair.
      class GoogleCloudAiplatformV1FetchFeatureValuesResponseFeatureNameValuePairList
        include Google::Apis::Core::Hashable
      
        # List of feature names and values.
        # Corresponds to the JSON property `features`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FetchFeatureValuesResponseFeatureNameValuePairListFeatureNameValuePair>]
        attr_accessor :features
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @features = args[:features] if args.key?(:features)
        end
      end
      
      # Feature name & value pair.
      class GoogleCloudAiplatformV1FetchFeatureValuesResponseFeatureNameValuePairListFeatureNameValuePair
        include Google::Apis::Core::Hashable
      
        # Feature short name.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Value for a feature.
        # Corresponds to the JSON property `value`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureValue]
        attr_accessor :value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @name = args[:name] if args.key?(:name)
          @value = args[:value] if args.key?(:value)
        end
      end
      
      # Request message for PredictionService.FetchPredictOperation.
      class GoogleCloudAiplatformV1FetchPredictOperationRequest
        include Google::Apis::Core::Hashable
      
        # Required. The server-assigned name for the operation.
        # Corresponds to the JSON property `operationName`
        # @return [String]
        attr_accessor :operation_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @operation_name = args[:operation_name] if args.key?(:operation_name)
        end
      end
      
      # URI based data.
      class GoogleCloudAiplatformV1FileData
        include Google::Apis::Core::Hashable
      
        # Optional. Display name of the file data. Used to provide a label or filename
        # to distinguish file datas. This field is only returned in PromptMessage for
        # prompt management. It is currently used in the Gemini GenerateContent calls
        # only when server side tools (code_execution, google_search, and url_context)
        # are enabled.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Required. URI.
        # Corresponds to the JSON property `fileUri`
        # @return [String]
        attr_accessor :file_uri
      
        # Required. The IANA standard MIME type of the source data.
        # Corresponds to the JSON property `mimeType`
        # @return [String]
        attr_accessor :mime_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @display_name = args[:display_name] if args.key?(:display_name)
          @file_uri = args[:file_uri] if args.key?(:file_uri)
          @mime_type = args[:mime_type] if args.key?(:mime_type)
        end
      end
      
      # RagFile status.
      class GoogleCloudAiplatformV1FileStatus
        include Google::Apis::Core::Hashable
      
        # Output only. Only when the `state` field is ERROR.
        # Corresponds to the JSON property `errorStatus`
        # @return [String]
        attr_accessor :error_status
      
        # Output only. RagFile state.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @error_status = args[:error_status] if args.key?(:error_status)
          @state = args[:state] if args.key?(:state)
        end
      end
      
      # Assigns input data to training, validation, and test sets based on the given
      # filters, data pieces not matched by any filter are ignored. Currently only
      # supported for Datasets containing DataItems. If any of the filters in this
      # message are to match nothing, then they can be set as '-' (the minus sign).
      # Supported only for unstructured Datasets.
      class GoogleCloudAiplatformV1FilterSplit
        include Google::Apis::Core::Hashable
      
        # Required. A filter on DataItems of the Dataset. DataItems that match this
        # filter are used to test the Model. A filter with same syntax as the one used
        # in DatasetService.ListDataItems may be used. If a single DataItem is matched
        # by more than one of the FilterSplit filters, then it is assigned to the first
        # set that applies to it in the training, validation, test order.
        # Corresponds to the JSON property `testFilter`
        # @return [String]
        attr_accessor :test_filter
      
        # Required. A filter on DataItems of the Dataset. DataItems that match this
        # filter are used to train the Model. A filter with same syntax as the one used
        # in DatasetService.ListDataItems may be used. If a single DataItem is matched
        # by more than one of the FilterSplit filters, then it is assigned to the first
        # set that applies to it in the training, validation, test order.
        # Corresponds to the JSON property `trainingFilter`
        # @return [String]
        attr_accessor :training_filter
      
        # Required. A filter on DataItems of the Dataset. DataItems that match this
        # filter are used to validate the Model. A filter with same syntax as the one
        # used in DatasetService.ListDataItems may be used. If a single DataItem is
        # matched by more than one of the FilterSplit filters, then it is assigned to
        # the first set that applies to it in the training, validation, test order.
        # Corresponds to the JSON property `validationFilter`
        # @return [String]
        attr_accessor :validation_filter
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @test_filter = args[:test_filter] if args.key?(:test_filter)
          @training_filter = args[:training_filter] if args.key?(:training_filter)
          @validation_filter = args[:validation_filter] if args.key?(:validation_filter)
        end
      end
      
      # The request message for MatchService.FindNeighbors.
      class GoogleCloudAiplatformV1FindNeighborsRequest
        include Google::Apis::Core::Hashable
      
        # The ID of the DeployedIndex that will serve the request. This request is sent
        # to a specific IndexEndpoint, as per the IndexEndpoint.network. That
        # IndexEndpoint also has IndexEndpoint.deployed_indexes, and each such index has
        # a DeployedIndex.id field. The value of the field below must equal one of the
        # DeployedIndex.id fields of the IndexEndpoint that is being called for this
        # request.
        # Corresponds to the JSON property `deployedIndexId`
        # @return [String]
        attr_accessor :deployed_index_id
      
        # The list of queries.
        # Corresponds to the JSON property `queries`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FindNeighborsRequestQuery>]
        attr_accessor :queries
      
        # If set to true, the full datapoints (including all vector values and restricts)
        # of the nearest neighbors are returned. Note that returning full datapoint
        # will significantly increase the latency and cost of the query.
        # Corresponds to the JSON property `returnFullDatapoint`
        # @return [Boolean]
        attr_accessor :return_full_datapoint
        alias_method :return_full_datapoint?, :return_full_datapoint
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @deployed_index_id = args[:deployed_index_id] if args.key?(:deployed_index_id)
          @queries = args[:queries] if args.key?(:queries)
          @return_full_datapoint = args[:return_full_datapoint] if args.key?(:return_full_datapoint)
        end
      end
      
      # A query to find a number of the nearest neighbors (most similar vectors) of a
      # vector.
      class GoogleCloudAiplatformV1FindNeighborsRequestQuery
        include Google::Apis::Core::Hashable
      
        # The number of neighbors to find via approximate search before exact reordering
        # is performed. If not set, the default value from scam config is used; if set,
        # this value must be > 0.
        # Corresponds to the JSON property `approximateNeighborCount`
        # @return [Fixnum]
        attr_accessor :approximate_neighbor_count
      
        # A datapoint of Index.
        # Corresponds to the JSON property `datapoint`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1IndexDatapoint]
        attr_accessor :datapoint
      
        # The fraction of the number of leaves to search, set at query time allows user
        # to tune search performance. This value increase result in both search accuracy
        # and latency increase. The value should be between 0.0 and 1.0. If not set or
        # set to 0.0, query uses the default value specified in
        # NearestNeighborSearchConfig.TreeAHConfig.fraction_leaf_nodes_to_search.
        # Corresponds to the JSON property `fractionLeafNodesToSearchOverride`
        # @return [Float]
        attr_accessor :fraction_leaf_nodes_to_search_override
      
        # The number of nearest neighbors to be retrieved from database for each query.
        # If not set, will use the default from the service configuration (https://cloud.
        # google.com/vertex-ai/docs/matching-engine/configuring-indexes#nearest-neighbor-
        # search-config).
        # Corresponds to the JSON property `neighborCount`
        # @return [Fixnum]
        attr_accessor :neighbor_count
      
        # Crowding is a constraint on a neighbor list produced by nearest neighbor
        # search requiring that no more than some value k' of the k neighbors returned
        # have the same value of crowding_attribute. It's used for improving result
        # diversity. This field is the maximum number of matches with the same crowding
        # tag.
        # Corresponds to the JSON property `perCrowdingAttributeNeighborCount`
        # @return [Fixnum]
        attr_accessor :per_crowding_attribute_neighbor_count
      
        # Parameters for RRF algorithm that combines search results.
        # Corresponds to the JSON property `rrf`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FindNeighborsRequestQueryRrf]
        attr_accessor :rrf
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @approximate_neighbor_count = args[:approximate_neighbor_count] if args.key?(:approximate_neighbor_count)
          @datapoint = args[:datapoint] if args.key?(:datapoint)
          @fraction_leaf_nodes_to_search_override = args[:fraction_leaf_nodes_to_search_override] if args.key?(:fraction_leaf_nodes_to_search_override)
          @neighbor_count = args[:neighbor_count] if args.key?(:neighbor_count)
          @per_crowding_attribute_neighbor_count = args[:per_crowding_attribute_neighbor_count] if args.key?(:per_crowding_attribute_neighbor_count)
          @rrf = args[:rrf] if args.key?(:rrf)
        end
      end
      
      # Parameters for RRF algorithm that combines search results.
      class GoogleCloudAiplatformV1FindNeighborsRequestQueryRrf
        include Google::Apis::Core::Hashable
      
        # Required. Users can provide an alpha value to give more weight to dense vs
        # sparse results. For example, if the alpha is 0, we only return sparse and if
        # the alpha is 1, we only return dense.
        # Corresponds to the JSON property `alpha`
        # @return [Float]
        attr_accessor :alpha
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @alpha = args[:alpha] if args.key?(:alpha)
        end
      end
      
      # The response message for MatchService.FindNeighbors.
      class GoogleCloudAiplatformV1FindNeighborsResponse
        include Google::Apis::Core::Hashable
      
        # The nearest neighbors of the query datapoints.
        # Corresponds to the JSON property `nearestNeighbors`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FindNeighborsResponseNearestNeighbors>]
        attr_accessor :nearest_neighbors
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @nearest_neighbors = args[:nearest_neighbors] if args.key?(:nearest_neighbors)
        end
      end
      
      # Nearest neighbors for one query.
      class GoogleCloudAiplatformV1FindNeighborsResponseNearestNeighbors
        include Google::Apis::Core::Hashable
      
        # The ID of the query datapoint.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        # All its neighbors.
        # Corresponds to the JSON property `neighbors`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FindNeighborsResponseNeighbor>]
        attr_accessor :neighbors
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @id = args[:id] if args.key?(:id)
          @neighbors = args[:neighbors] if args.key?(:neighbors)
        end
      end
      
      # A neighbor of the query vector.
      class GoogleCloudAiplatformV1FindNeighborsResponseNeighbor
        include Google::Apis::Core::Hashable
      
        # A datapoint of Index.
        # Corresponds to the JSON property `datapoint`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1IndexDatapoint]
        attr_accessor :datapoint
      
        # The distance between the neighbor and the dense embedding query.
        # Corresponds to the JSON property `distance`
        # @return [Float]
        attr_accessor :distance
      
        # The distance between the neighbor and the query sparse_embedding.
        # Corresponds to the JSON property `sparseDistance`
        # @return [Float]
        attr_accessor :sparse_distance
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @datapoint = args[:datapoint] if args.key?(:datapoint)
          @distance = args[:distance] if args.key?(:distance)
          @sparse_distance = args[:sparse_distance] if args.key?(:sparse_distance)
        end
      end
      
      # Input for fluency metric.
      class GoogleCloudAiplatformV1FluencyInput
        include Google::Apis::Core::Hashable
      
        # Spec for fluency instance.
        # Corresponds to the JSON property `instance`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FluencyInstance]
        attr_accessor :instance
      
        # Spec for fluency score metric.
        # Corresponds to the JSON property `metricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FluencySpec]
        attr_accessor :metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instance = args[:instance] if args.key?(:instance)
          @metric_spec = args[:metric_spec] if args.key?(:metric_spec)
        end
      end
      
      # Spec for fluency instance.
      class GoogleCloudAiplatformV1FluencyInstance
        include Google::Apis::Core::Hashable
      
        # Required. Output of the evaluated model.
        # Corresponds to the JSON property `prediction`
        # @return [String]
        attr_accessor :prediction
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @prediction = args[:prediction] if args.key?(:prediction)
        end
      end
      
      # Spec for fluency result.
      class GoogleCloudAiplatformV1FluencyResult
        include Google::Apis::Core::Hashable
      
        # Output only. Confidence for fluency score.
        # Corresponds to the JSON property `confidence`
        # @return [Float]
        attr_accessor :confidence
      
        # Output only. Explanation for fluency score.
        # Corresponds to the JSON property `explanation`
        # @return [String]
        attr_accessor :explanation
      
        # Output only. Fluency score.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence = args[:confidence] if args.key?(:confidence)
          @explanation = args[:explanation] if args.key?(:explanation)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # Spec for fluency score metric.
      class GoogleCloudAiplatformV1FluencySpec
        include Google::Apis::Core::Hashable
      
        # Optional. Which version to use for evaluation.
        # Corresponds to the JSON property `version`
        # @return [Fixnum]
        attr_accessor :version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @version = args[:version] if args.key?(:version)
        end
      end
      
      # Assigns the input data to training, validation, and test sets as per the given
      # fractions. Any of `training_fraction`, `validation_fraction` and `
      # test_fraction` may optionally be provided, they must sum to up to 1. If the
      # provided ones sum to less than 1, the remainder is assigned to sets as decided
      # by Vertex AI. If none of the fractions are set, by default roughly 80% of data
      # is used for training, 10% for validation, and 10% for test.
      class GoogleCloudAiplatformV1FractionSplit
        include Google::Apis::Core::Hashable
      
        # The fraction of the input data that is to be used to evaluate the Model.
        # Corresponds to the JSON property `testFraction`
        # @return [Float]
        attr_accessor :test_fraction
      
        # The fraction of the input data that is to be used to train the Model.
        # Corresponds to the JSON property `trainingFraction`
        # @return [Float]
        attr_accessor :training_fraction
      
        # The fraction of the input data that is to be used to validate the Model.
        # Corresponds to the JSON property `validationFraction`
        # @return [Float]
        attr_accessor :validation_fraction
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @test_fraction = args[:test_fraction] if args.key?(:test_fraction)
          @training_fraction = args[:training_fraction] if args.key?(:training_fraction)
          @validation_fraction = args[:validation_fraction] if args.key?(:validation_fraction)
        end
      end
      
      # Input for fulfillment metric.
      class GoogleCloudAiplatformV1FulfillmentInput
        include Google::Apis::Core::Hashable
      
        # Spec for fulfillment instance.
        # Corresponds to the JSON property `instance`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FulfillmentInstance]
        attr_accessor :instance
      
        # Spec for fulfillment metric.
        # Corresponds to the JSON property `metricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FulfillmentSpec]
        attr_accessor :metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instance = args[:instance] if args.key?(:instance)
          @metric_spec = args[:metric_spec] if args.key?(:metric_spec)
        end
      end
      
      # Spec for fulfillment instance.
      class GoogleCloudAiplatformV1FulfillmentInstance
        include Google::Apis::Core::Hashable
      
        # Required. Inference instruction prompt to compare prediction with.
        # Corresponds to the JSON property `instruction`
        # @return [String]
        attr_accessor :instruction
      
        # Required. Output of the evaluated model.
        # Corresponds to the JSON property `prediction`
        # @return [String]
        attr_accessor :prediction
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instruction = args[:instruction] if args.key?(:instruction)
          @prediction = args[:prediction] if args.key?(:prediction)
        end
      end
      
      # Spec for fulfillment result.
      class GoogleCloudAiplatformV1FulfillmentResult
        include Google::Apis::Core::Hashable
      
        # Output only. Confidence for fulfillment score.
        # Corresponds to the JSON property `confidence`
        # @return [Float]
        attr_accessor :confidence
      
        # Output only. Explanation for fulfillment score.
        # Corresponds to the JSON property `explanation`
        # @return [String]
        attr_accessor :explanation
      
        # Output only. Fulfillment score.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence = args[:confidence] if args.key?(:confidence)
          @explanation = args[:explanation] if args.key?(:explanation)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # Spec for fulfillment metric.
      class GoogleCloudAiplatformV1FulfillmentSpec
        include Google::Apis::Core::Hashable
      
        # Optional. Which version to use for evaluation.
        # Corresponds to the JSON property `version`
        # @return [Fixnum]
        attr_accessor :version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @version = args[:version] if args.key?(:version)
        end
      end
      
      # A predicted [FunctionCall] returned from the model that contains a string
      # representing the [FunctionDeclaration.name] and a structured JSON object
      # containing the parameters and their values.
      class GoogleCloudAiplatformV1FunctionCall
        include Google::Apis::Core::Hashable
      
        # Optional. The function parameters and values in JSON object format. See [
        # FunctionDeclaration.parameters] for parameter details.
        # Corresponds to the JSON property `args`
        # @return [Hash<String,Object>]
        attr_accessor :args
      
        # Optional. The name of the function to call. Matches [FunctionDeclaration.name].
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @args = args[:args] if args.key?(:args)
          @name = args[:name] if args.key?(:name)
        end
      end
      
      # Function calling config.
      class GoogleCloudAiplatformV1FunctionCallingConfig
        include Google::Apis::Core::Hashable
      
        # Optional. Function names to call. Only set when the Mode is ANY. Function
        # names should match [FunctionDeclaration.name]. With mode set to ANY, model
        # will predict a function call from the set of function names provided.
        # Corresponds to the JSON property `allowedFunctionNames`
        # @return [Array<String>]
        attr_accessor :allowed_function_names
      
        # Optional. Function calling mode.
        # Corresponds to the JSON property `mode`
        # @return [String]
        attr_accessor :mode
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @allowed_function_names = args[:allowed_function_names] if args.key?(:allowed_function_names)
          @mode = args[:mode] if args.key?(:mode)
        end
      end
      
      # Structured representation of a function declaration as defined by the [OpenAPI
      # 3.0 specification](https://spec.openapis.org/oas/v3.0.3). Included in this
      # declaration are the function name, description, parameters and response type.
      # This FunctionDeclaration is a representation of a block of code that can be
      # used as a `Tool` by the model and executed by the client.
      class GoogleCloudAiplatformV1FunctionDeclaration
        include Google::Apis::Core::Hashable
      
        # Optional. Description and purpose of the function. Model uses it to decide how
        # and whether to call the function.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Required. The name of the function to call. Must start with a letter or an
        # underscore. Must be a-z, A-Z, 0-9, or contain underscores, dots and dashes,
        # with a maximum length of 64.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Schema is used to define the format of input/output data. Represents a select
        # subset of an [OpenAPI 3.0 schema object](https://spec.openapis.org/oas/v3.0.3#
        # schema-object). More fields may be added in the future as needed.
        # Corresponds to the JSON property `parameters`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Schema]
        attr_accessor :parameters
      
        # Optional. Describes the parameters to the function in JSON Schema format. The
        # schema must describe an object where the properties are the parameters to the
        # function. For example: ``` ` "type": "object", "properties": ` "name": ` "type"
        # : "string" `, "age": ` "type": "integer" ` `, "additionalProperties": false, "
        # required": ["name", "age"], "propertyOrdering": ["name", "age"] ` ``` This
        # field is mutually exclusive with `parameters`.
        # Corresponds to the JSON property `parametersJsonSchema`
        # @return [Object]
        attr_accessor :parameters_json_schema
      
        # Schema is used to define the format of input/output data. Represents a select
        # subset of an [OpenAPI 3.0 schema object](https://spec.openapis.org/oas/v3.0.3#
        # schema-object). More fields may be added in the future as needed.
        # Corresponds to the JSON property `response`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Schema]
        attr_accessor :response
      
        # Optional. Describes the output from this function in JSON Schema format. The
        # value specified by the schema is the response value of the function. This
        # field is mutually exclusive with `response`.
        # Corresponds to the JSON property `responseJsonSchema`
        # @return [Object]
        attr_accessor :response_json_schema
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @description = args[:description] if args.key?(:description)
          @name = args[:name] if args.key?(:name)
          @parameters = args[:parameters] if args.key?(:parameters)
          @parameters_json_schema = args[:parameters_json_schema] if args.key?(:parameters_json_schema)
          @response = args[:response] if args.key?(:response)
          @response_json_schema = args[:response_json_schema] if args.key?(:response_json_schema)
        end
      end
      
      # The result output from a [FunctionCall] that contains a string representing
      # the [FunctionDeclaration.name] and a structured JSON object containing any
      # output from the function is used as context to the model. This should contain
      # the result of a [FunctionCall] made based on model prediction.
      class GoogleCloudAiplatformV1FunctionResponse
        include Google::Apis::Core::Hashable
      
        # Required. The name of the function to call. Matches [FunctionDeclaration.name]
        # and [FunctionCall.name].
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Required. The function response in JSON object format. Use "output" key to
        # specify function output and "error" key to specify error details (if any). If "
        # output" and "error" keys are not specified, then whole "response" is treated
        # as function output.
        # Corresponds to the JSON property `response`
        # @return [Hash<String,Object>]
        attr_accessor :response
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @name = args[:name] if args.key?(:name)
          @response = args[:response] if args.key?(:response)
        end
      end
      
      # The Google Cloud Storage location where the output is to be written to.
      class GoogleCloudAiplatformV1GcsDestination
        include Google::Apis::Core::Hashable
      
        # Required. Google Cloud Storage URI to output directory. If the uri doesn't end
        # with '/', a '/' will be automatically appended. The directory is created if it
        # doesn't exist.
        # Corresponds to the JSON property `outputUriPrefix`
        # @return [String]
        attr_accessor :output_uri_prefix
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @output_uri_prefix = args[:output_uri_prefix] if args.key?(:output_uri_prefix)
        end
      end
      
      # The Google Cloud Storage location for the input content.
      class GoogleCloudAiplatformV1GcsSource
        include Google::Apis::Core::Hashable
      
        # Required. Google Cloud Storage URI(-s) to the input file(s). May contain
        # wildcards. For more information on wildcards, see https://cloud.google.com/
        # storage/docs/wildcards.
        # Corresponds to the JSON property `uris`
        # @return [Array<String>]
        attr_accessor :uris
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @uris = args[:uris] if args.key?(:uris)
        end
      end
      
      # Google Distributed Cloud (GDC) config.
      class GoogleCloudAiplatformV1GdcConfig
        include Google::Apis::Core::Hashable
      
        # GDC zone. A cluster will be designated for the Vertex AI workload in this zone.
        # Corresponds to the JSON property `zone`
        # @return [String]
        attr_accessor :zone
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @zone = args[:zone] if args.key?(:zone)
        end
      end
      
      # Configuration for GenAiAdvancedFeatures.
      class GoogleCloudAiplatformV1GenAiAdvancedFeaturesConfig
        include Google::Apis::Core::Hashable
      
        # Configuration for Retrieval Augmented Generation feature.
        # Corresponds to the JSON property `ragConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenAiAdvancedFeaturesConfigRagConfig]
        attr_accessor :rag_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @rag_config = args[:rag_config] if args.key?(:rag_config)
        end
      end
      
      # Configuration for Retrieval Augmented Generation feature.
      class GoogleCloudAiplatformV1GenAiAdvancedFeaturesConfigRagConfig
        include Google::Apis::Core::Hashable
      
        # If true, enable Retrieval Augmented Generation in ChatCompletion request. Once
        # enabled, the endpoint will be identified as GenAI endpoint and Arthedain
        # router will be used.
        # Corresponds to the JSON property `enableRag`
        # @return [Boolean]
        attr_accessor :enable_rag
        alias_method :enable_rag?, :enable_rag
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @enable_rag = args[:enable_rag] if args.key?(:enable_rag)
        end
      end
      
      # Request message for [PredictionService.GenerateContent].
      class GoogleCloudAiplatformV1GenerateContentRequest
        include Google::Apis::Core::Hashable
      
        # Optional. The name of the cached content used as context to serve the
        # prediction. Note: only used in explicit caching, where users can have control
        # over caching (e.g. what content to cache) and enjoy guaranteed cost savings.
        # Format: `projects/`project`/locations/`location`/cachedContents/`cachedContent`
        # `
        # Corresponds to the JSON property `cachedContent`
        # @return [String]
        attr_accessor :cached_content
      
        # Required. The content of the current conversation with the model. For single-
        # turn queries, this is a single instance. For multi-turn queries, this is a
        # repeated field that contains conversation history + latest request.
        # Corresponds to the JSON property `contents`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Content>]
        attr_accessor :contents
      
        # Generation config.
        # Corresponds to the JSON property `generationConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenerationConfig]
        attr_accessor :generation_config
      
        # Optional. The labels with user-defined metadata for the request. It is used
        # for billing and reporting only. Label keys and values can be no longer than 63
        # characters (Unicode codepoints) and can only contain lowercase letters,
        # numeric characters, underscores, and dashes. International characters are
        # allowed. Label values are optional. Label keys must start with a letter.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Configuration for Model Armor integrations of prompt and responses.
        # Corresponds to the JSON property `modelArmorConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelArmorConfig]
        attr_accessor :model_armor_config
      
        # Optional. Per request settings for blocking unsafe content. Enforced on
        # GenerateContentResponse.candidates.
        # Corresponds to the JSON property `safetySettings`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SafetySetting>]
        attr_accessor :safety_settings
      
        # The base structured datatype containing multi-part content of a message. A `
        # Content` includes a `role` field designating the producer of the `Content` and
        # a `parts` field containing multi-part data that contains the content of the
        # message turn.
        # Corresponds to the JSON property `systemInstruction`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Content]
        attr_accessor :system_instruction
      
        # Tool config. This config is shared for all tools provided in the request.
        # Corresponds to the JSON property `toolConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ToolConfig]
        attr_accessor :tool_config
      
        # Optional. A list of `Tools` the model may use to generate the next response. A
        # `Tool` is a piece of code that enables the system to interact with external
        # systems to perform an action, or set of actions, outside of knowledge and
        # scope of the model.
        # Corresponds to the JSON property `tools`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Tool>]
        attr_accessor :tools
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @cached_content = args[:cached_content] if args.key?(:cached_content)
          @contents = args[:contents] if args.key?(:contents)
          @generation_config = args[:generation_config] if args.key?(:generation_config)
          @labels = args[:labels] if args.key?(:labels)
          @model_armor_config = args[:model_armor_config] if args.key?(:model_armor_config)
          @safety_settings = args[:safety_settings] if args.key?(:safety_settings)
          @system_instruction = args[:system_instruction] if args.key?(:system_instruction)
          @tool_config = args[:tool_config] if args.key?(:tool_config)
          @tools = args[:tools] if args.key?(:tools)
        end
      end
      
      # Response message for [PredictionService.GenerateContent].
      class GoogleCloudAiplatformV1GenerateContentResponse
        include Google::Apis::Core::Hashable
      
        # Output only. Generated candidates.
        # Corresponds to the JSON property `candidates`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Candidate>]
        attr_accessor :candidates
      
        # Output only. Timestamp when the request is made to the server.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Output only. The model version used to generate the response.
        # Corresponds to the JSON property `modelVersion`
        # @return [String]
        attr_accessor :model_version
      
        # Content filter results for a prompt sent in the request. Note: This is sent
        # only in the first stream chunk and only if no candidates were generated due to
        # content violations.
        # Corresponds to the JSON property `promptFeedback`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenerateContentResponsePromptFeedback]
        attr_accessor :prompt_feedback
      
        # Output only. response_id is used to identify each response. It is the encoding
        # of the event_id.
        # Corresponds to the JSON property `responseId`
        # @return [String]
        attr_accessor :response_id
      
        # Usage metadata about the content generation request and response. This message
        # provides a detailed breakdown of token usage and other relevant metrics.
        # Corresponds to the JSON property `usageMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenerateContentResponseUsageMetadata]
        attr_accessor :usage_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @candidates = args[:candidates] if args.key?(:candidates)
          @create_time = args[:create_time] if args.key?(:create_time)
          @model_version = args[:model_version] if args.key?(:model_version)
          @prompt_feedback = args[:prompt_feedback] if args.key?(:prompt_feedback)
          @response_id = args[:response_id] if args.key?(:response_id)
          @usage_metadata = args[:usage_metadata] if args.key?(:usage_metadata)
        end
      end
      
      # Content filter results for a prompt sent in the request. Note: This is sent
      # only in the first stream chunk and only if no candidates were generated due to
      # content violations.
      class GoogleCloudAiplatformV1GenerateContentResponsePromptFeedback
        include Google::Apis::Core::Hashable
      
        # Output only. The reason why the prompt was blocked.
        # Corresponds to the JSON property `blockReason`
        # @return [String]
        attr_accessor :block_reason
      
        # Output only. A readable message that explains the reason why the prompt was
        # blocked.
        # Corresponds to the JSON property `blockReasonMessage`
        # @return [String]
        attr_accessor :block_reason_message
      
        # Output only. A list of safety ratings for the prompt. There is one rating per
        # category.
        # Corresponds to the JSON property `safetyRatings`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SafetyRating>]
        attr_accessor :safety_ratings
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @block_reason = args[:block_reason] if args.key?(:block_reason)
          @block_reason_message = args[:block_reason_message] if args.key?(:block_reason_message)
          @safety_ratings = args[:safety_ratings] if args.key?(:safety_ratings)
        end
      end
      
      # Usage metadata about the content generation request and response. This message
      # provides a detailed breakdown of token usage and other relevant metrics.
      class GoogleCloudAiplatformV1GenerateContentResponseUsageMetadata
        include Google::Apis::Core::Hashable
      
        # Output only. A detailed breakdown of the token count for each modality in the
        # cached content.
        # Corresponds to the JSON property `cacheTokensDetails`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModalityTokenCount>]
        attr_accessor :cache_tokens_details
      
        # Output only. The number of tokens in the cached content that was used for this
        # request.
        # Corresponds to the JSON property `cachedContentTokenCount`
        # @return [Fixnum]
        attr_accessor :cached_content_token_count
      
        # The total number of tokens in the generated candidates.
        # Corresponds to the JSON property `candidatesTokenCount`
        # @return [Fixnum]
        attr_accessor :candidates_token_count
      
        # Output only. A detailed breakdown of the token count for each modality in the
        # generated candidates.
        # Corresponds to the JSON property `candidatesTokensDetails`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModalityTokenCount>]
        attr_accessor :candidates_tokens_details
      
        # The total number of tokens in the prompt. This includes any text, images, or
        # other media provided in the request. When `cached_content` is set, this also
        # includes the number of tokens in the cached content.
        # Corresponds to the JSON property `promptTokenCount`
        # @return [Fixnum]
        attr_accessor :prompt_token_count
      
        # Output only. A detailed breakdown of the token count for each modality in the
        # prompt.
        # Corresponds to the JSON property `promptTokensDetails`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModalityTokenCount>]
        attr_accessor :prompt_tokens_details
      
        # Output only. The number of tokens that were part of the model's generated "
        # thoughts" output, if applicable.
        # Corresponds to the JSON property `thoughtsTokenCount`
        # @return [Fixnum]
        attr_accessor :thoughts_token_count
      
        # Output only. The number of tokens in the results from tool executions, which
        # are provided back to the model as input, if applicable.
        # Corresponds to the JSON property `toolUsePromptTokenCount`
        # @return [Fixnum]
        attr_accessor :tool_use_prompt_token_count
      
        # Output only. A detailed breakdown by modality of the token counts from the
        # results of tool executions, which are provided back to the model as input.
        # Corresponds to the JSON property `toolUsePromptTokensDetails`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModalityTokenCount>]
        attr_accessor :tool_use_prompt_tokens_details
      
        # The total number of tokens for the entire request. This is the sum of `
        # prompt_token_count`, `candidates_token_count`, `tool_use_prompt_token_count`,
        # and `thoughts_token_count`.
        # Corresponds to the JSON property `totalTokenCount`
        # @return [Fixnum]
        attr_accessor :total_token_count
      
        # Output only. The traffic type for this request.
        # Corresponds to the JSON property `trafficType`
        # @return [String]
        attr_accessor :traffic_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @cache_tokens_details = args[:cache_tokens_details] if args.key?(:cache_tokens_details)
          @cached_content_token_count = args[:cached_content_token_count] if args.key?(:cached_content_token_count)
          @candidates_token_count = args[:candidates_token_count] if args.key?(:candidates_token_count)
          @candidates_tokens_details = args[:candidates_tokens_details] if args.key?(:candidates_tokens_details)
          @prompt_token_count = args[:prompt_token_count] if args.key?(:prompt_token_count)
          @prompt_tokens_details = args[:prompt_tokens_details] if args.key?(:prompt_tokens_details)
          @thoughts_token_count = args[:thoughts_token_count] if args.key?(:thoughts_token_count)
          @tool_use_prompt_token_count = args[:tool_use_prompt_token_count] if args.key?(:tool_use_prompt_token_count)
          @tool_use_prompt_tokens_details = args[:tool_use_prompt_tokens_details] if args.key?(:tool_use_prompt_tokens_details)
          @total_token_count = args[:total_token_count] if args.key?(:total_token_count)
          @traffic_type = args[:traffic_type] if args.key?(:traffic_type)
        end
      end
      
      # Request message for EvaluationService.GenerateInstanceRubrics.
      class GoogleCloudAiplatformV1GenerateInstanceRubricsRequest
        include Google::Apis::Core::Hashable
      
        # Required. The prompt to generate rubrics from. For single-turn queries, this
        # is a single instance. For multi-turn queries, this is a repeated field that
        # contains conversation history + latest request.
        # Corresponds to the JSON property `contents`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Content>]
        attr_accessor :contents
      
        # The spec for a pre-defined metric.
        # Corresponds to the JSON property `predefinedRubricGenerationSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PredefinedMetricSpec]
        attr_accessor :predefined_rubric_generation_spec
      
        # Specification for how rubrics should be generated.
        # Corresponds to the JSON property `rubricGenerationSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RubricGenerationSpec]
        attr_accessor :rubric_generation_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @contents = args[:contents] if args.key?(:contents)
          @predefined_rubric_generation_spec = args[:predefined_rubric_generation_spec] if args.key?(:predefined_rubric_generation_spec)
          @rubric_generation_spec = args[:rubric_generation_spec] if args.key?(:rubric_generation_spec)
        end
      end
      
      # Response message for EvaluationService.GenerateInstanceRubrics.
      class GoogleCloudAiplatformV1GenerateInstanceRubricsResponse
        include Google::Apis::Core::Hashable
      
        # Output only. A list of generated rubrics.
        # Corresponds to the JSON property `generatedRubrics`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Rubric>]
        attr_accessor :generated_rubrics
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generated_rubrics = args[:generated_rubrics] if args.key?(:generated_rubrics)
        end
      end
      
      # Request message for DataFoundryService.GenerateSyntheticData.
      class GoogleCloudAiplatformV1GenerateSyntheticDataRequest
        include Google::Apis::Core::Hashable
      
        # Required. The number of synthetic examples to generate. For this stateless API,
        # the count is limited to a small number.
        # Corresponds to the JSON property `count`
        # @return [Fixnum]
        attr_accessor :count
      
        # Optional. A list of few-shot examples to guide the model's output style and
        # format.
        # Corresponds to the JSON property `examples`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SyntheticExample>]
        attr_accessor :examples
      
        # Required. The schema of the desired output, defined by a list of fields.
        # Corresponds to the JSON property `outputFieldSpecs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1OutputFieldSpec>]
        attr_accessor :output_field_specs
      
        # Defines a generation strategy based on a high-level task description.
        # Corresponds to the JSON property `taskDescription`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TaskDescriptionStrategy]
        attr_accessor :task_description
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @count = args[:count] if args.key?(:count)
          @examples = args[:examples] if args.key?(:examples)
          @output_field_specs = args[:output_field_specs] if args.key?(:output_field_specs)
          @task_description = args[:task_description] if args.key?(:task_description)
        end
      end
      
      # The response containing the generated data.
      class GoogleCloudAiplatformV1GenerateSyntheticDataResponse
        include Google::Apis::Core::Hashable
      
        # A list of generated synthetic examples.
        # Corresponds to the JSON property `syntheticExamples`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SyntheticExample>]
        attr_accessor :synthetic_examples
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @synthetic_examples = args[:synthetic_examples] if args.key?(:synthetic_examples)
        end
      end
      
      # Generate video response.
      class GoogleCloudAiplatformV1GenerateVideoResponse
        include Google::Apis::Core::Hashable
      
        # The cloud storage uris of the generated videos.
        # Corresponds to the JSON property `generatedSamples`
        # @return [Array<String>]
        attr_accessor :generated_samples
      
        # Returns if any videos were filtered due to RAI policies.
        # Corresponds to the JSON property `raiMediaFilteredCount`
        # @return [Fixnum]
        attr_accessor :rai_media_filtered_count
      
        # Returns rai failure reasons if any.
        # Corresponds to the JSON property `raiMediaFilteredReasons`
        # @return [Array<String>]
        attr_accessor :rai_media_filtered_reasons
      
        # List of video bytes or Cloud Storage URIs of the generated videos.
        # Corresponds to the JSON property `videos`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenerateVideoResponseVideo>]
        attr_accessor :videos
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generated_samples = args[:generated_samples] if args.key?(:generated_samples)
          @rai_media_filtered_count = args[:rai_media_filtered_count] if args.key?(:rai_media_filtered_count)
          @rai_media_filtered_reasons = args[:rai_media_filtered_reasons] if args.key?(:rai_media_filtered_reasons)
          @videos = args[:videos] if args.key?(:videos)
        end
      end
      
      # A generated video.
      class GoogleCloudAiplatformV1GenerateVideoResponseVideo
        include Google::Apis::Core::Hashable
      
        # Base64 encoded bytes string representing the video.
        # Corresponds to the JSON property `bytesBase64Encoded`
        # @return [String]
        attr_accessor :bytes_base64_encoded
      
        # Cloud Storage URI where the generated video is written.
        # Corresponds to the JSON property `gcsUri`
        # @return [String]
        attr_accessor :gcs_uri
      
        # The MIME type of the content of the video. - video/mp4
        # Corresponds to the JSON property `mimeType`
        # @return [String]
        attr_accessor :mime_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @bytes_base64_encoded = args[:bytes_base64_encoded] if args.key?(:bytes_base64_encoded)
          @gcs_uri = args[:gcs_uri] if args.key?(:gcs_uri)
          @mime_type = args[:mime_type] if args.key?(:mime_type)
        end
      end
      
      # Generation config.
      class GoogleCloudAiplatformV1GenerationConfig
        include Google::Apis::Core::Hashable
      
        # Optional. If enabled, audio timestamp will be included in the request to the
        # model.
        # Corresponds to the JSON property `audioTimestamp`
        # @return [Boolean]
        attr_accessor :audio_timestamp
        alias_method :audio_timestamp?, :audio_timestamp
      
        # Optional. Number of candidates to generate.
        # Corresponds to the JSON property `candidateCount`
        # @return [Fixnum]
        attr_accessor :candidate_count
      
        # Optional. If enabled, the model will detect emotions and adapt its responses
        # accordingly.
        # Corresponds to the JSON property `enableAffectiveDialog`
        # @return [Boolean]
        attr_accessor :enable_affective_dialog
        alias_method :enable_affective_dialog?, :enable_affective_dialog
      
        # Optional. Frequency penalties.
        # Corresponds to the JSON property `frequencyPenalty`
        # @return [Float]
        attr_accessor :frequency_penalty
      
        # Optional. Logit probabilities.
        # Corresponds to the JSON property `logprobs`
        # @return [Fixnum]
        attr_accessor :logprobs
      
        # Optional. The maximum number of output tokens to generate per message.
        # Corresponds to the JSON property `maxOutputTokens`
        # @return [Fixnum]
        attr_accessor :max_output_tokens
      
        # Optional. If specified, the media resolution specified will be used.
        # Corresponds to the JSON property `mediaResolution`
        # @return [String]
        attr_accessor :media_resolution
      
        # Optional. Positive penalties.
        # Corresponds to the JSON property `presencePenalty`
        # @return [Float]
        attr_accessor :presence_penalty
      
        # Optional. Output schema of the generated response. This is an alternative to `
        # response_schema` that accepts [JSON Schema](https://json-schema.org/). If set,
        # `response_schema` must be omitted, but `response_mime_type` is required. While
        # the full JSON Schema may be sent, not all features are supported. Specifically,
        # only the following properties are supported: - `$id` - `$defs` - `$ref` - `$
        # anchor` - `type` - `format` - `title` - `description` - `enum` (for strings
        # and numbers) - `items` - `prefixItems` - `minItems` - `maxItems` - `minimum` -
        # `maximum` - `anyOf` - `oneOf` (interpreted the same as `anyOf`) - `properties`
        # - `additionalProperties` - `required` The non-standard `propertyOrdering`
        # property may also be set. Cyclic references are unrolled to a limited degree
        # and, as such, may only be used within non-required properties. (Nullable
        # properties are not sufficient.) If `$ref` is set on a sub-schema, no other
        # properties, except for than those starting as a `$`, may be set.
        # Corresponds to the JSON property `responseJsonSchema`
        # @return [Object]
        attr_accessor :response_json_schema
      
        # Optional. If true, export the logprobs results in response.
        # Corresponds to the JSON property `responseLogprobs`
        # @return [Boolean]
        attr_accessor :response_logprobs
        alias_method :response_logprobs?, :response_logprobs
      
        # Optional. Output response mimetype of the generated candidate text. Supported
        # mimetype: - `text/plain`: (default) Text output. - `application/json`: JSON
        # response in the candidates. The model needs to be prompted to output the
        # appropriate response type, otherwise the behavior is undefined. This is a
        # preview feature.
        # Corresponds to the JSON property `responseMimeType`
        # @return [String]
        attr_accessor :response_mime_type
      
        # Optional. The modalities of the response.
        # Corresponds to the JSON property `responseModalities`
        # @return [Array<String>]
        attr_accessor :response_modalities
      
        # Schema is used to define the format of input/output data. Represents a select
        # subset of an [OpenAPI 3.0 schema object](https://spec.openapis.org/oas/v3.0.3#
        # schema-object). More fields may be added in the future as needed.
        # Corresponds to the JSON property `responseSchema`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Schema]
        attr_accessor :response_schema
      
        # The configuration for routing the request to a specific model.
        # Corresponds to the JSON property `routingConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenerationConfigRoutingConfig]
        attr_accessor :routing_config
      
        # Optional. Seed.
        # Corresponds to the JSON property `seed`
        # @return [Fixnum]
        attr_accessor :seed
      
        # The speech generation config.
        # Corresponds to the JSON property `speechConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SpeechConfig]
        attr_accessor :speech_config
      
        # Optional. Stop sequences.
        # Corresponds to the JSON property `stopSequences`
        # @return [Array<String>]
        attr_accessor :stop_sequences
      
        # Optional. Controls the randomness of predictions.
        # Corresponds to the JSON property `temperature`
        # @return [Float]
        attr_accessor :temperature
      
        # Config for thinking features.
        # Corresponds to the JSON property `thinkingConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenerationConfigThinkingConfig]
        attr_accessor :thinking_config
      
        # Optional. If specified, top-k sampling will be used.
        # Corresponds to the JSON property `topK`
        # @return [Float]
        attr_accessor :top_k
      
        # Optional. If specified, nucleus sampling will be used.
        # Corresponds to the JSON property `topP`
        # @return [Float]
        attr_accessor :top_p
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @audio_timestamp = args[:audio_timestamp] if args.key?(:audio_timestamp)
          @candidate_count = args[:candidate_count] if args.key?(:candidate_count)
          @enable_affective_dialog = args[:enable_affective_dialog] if args.key?(:enable_affective_dialog)
          @frequency_penalty = args[:frequency_penalty] if args.key?(:frequency_penalty)
          @logprobs = args[:logprobs] if args.key?(:logprobs)
          @max_output_tokens = args[:max_output_tokens] if args.key?(:max_output_tokens)
          @media_resolution = args[:media_resolution] if args.key?(:media_resolution)
          @presence_penalty = args[:presence_penalty] if args.key?(:presence_penalty)
          @response_json_schema = args[:response_json_schema] if args.key?(:response_json_schema)
          @response_logprobs = args[:response_logprobs] if args.key?(:response_logprobs)
          @response_mime_type = args[:response_mime_type] if args.key?(:response_mime_type)
          @response_modalities = args[:response_modalities] if args.key?(:response_modalities)
          @response_schema = args[:response_schema] if args.key?(:response_schema)
          @routing_config = args[:routing_config] if args.key?(:routing_config)
          @seed = args[:seed] if args.key?(:seed)
          @speech_config = args[:speech_config] if args.key?(:speech_config)
          @stop_sequences = args[:stop_sequences] if args.key?(:stop_sequences)
          @temperature = args[:temperature] if args.key?(:temperature)
          @thinking_config = args[:thinking_config] if args.key?(:thinking_config)
          @top_k = args[:top_k] if args.key?(:top_k)
          @top_p = args[:top_p] if args.key?(:top_p)
        end
      end
      
      # The configuration for routing the request to a specific model.
      class GoogleCloudAiplatformV1GenerationConfigRoutingConfig
        include Google::Apis::Core::Hashable
      
        # When automated routing is specified, the routing will be determined by the
        # pretrained routing model and customer provided model routing preference.
        # Corresponds to the JSON property `autoMode`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenerationConfigRoutingConfigAutoRoutingMode]
        attr_accessor :auto_mode
      
        # When manual routing is set, the specified model will be used directly.
        # Corresponds to the JSON property `manualMode`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenerationConfigRoutingConfigManualRoutingMode]
        attr_accessor :manual_mode
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @auto_mode = args[:auto_mode] if args.key?(:auto_mode)
          @manual_mode = args[:manual_mode] if args.key?(:manual_mode)
        end
      end
      
      # When automated routing is specified, the routing will be determined by the
      # pretrained routing model and customer provided model routing preference.
      class GoogleCloudAiplatformV1GenerationConfigRoutingConfigAutoRoutingMode
        include Google::Apis::Core::Hashable
      
        # The model routing preference.
        # Corresponds to the JSON property `modelRoutingPreference`
        # @return [String]
        attr_accessor :model_routing_preference
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @model_routing_preference = args[:model_routing_preference] if args.key?(:model_routing_preference)
        end
      end
      
      # When manual routing is set, the specified model will be used directly.
      class GoogleCloudAiplatformV1GenerationConfigRoutingConfigManualRoutingMode
        include Google::Apis::Core::Hashable
      
        # The model name to use. Only the public LLM models are accepted. See [Supported
        # models](https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/
        # inference#supported-models).
        # Corresponds to the JSON property `modelName`
        # @return [String]
        attr_accessor :model_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @model_name = args[:model_name] if args.key?(:model_name)
        end
      end
      
      # Config for thinking features.
      class GoogleCloudAiplatformV1GenerationConfigThinkingConfig
        include Google::Apis::Core::Hashable
      
        # Optional. Indicates whether to include thoughts in the response. If true,
        # thoughts are returned only when available.
        # Corresponds to the JSON property `includeThoughts`
        # @return [Boolean]
        attr_accessor :include_thoughts
        alias_method :include_thoughts?, :include_thoughts
      
        # Optional. Indicates the thinking budget in tokens.
        # Corresponds to the JSON property `thinkingBudget`
        # @return [Fixnum]
        attr_accessor :thinking_budget
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @include_thoughts = args[:include_thoughts] if args.key?(:include_thoughts)
          @thinking_budget = args[:thinking_budget] if args.key?(:thinking_budget)
        end
      end
      
      # Generic Metadata shared by all operations.
      class GoogleCloudAiplatformV1GenericOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Output only. Time when the operation was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Output only. Partial failures encountered. E.g. single files that couldn't be
        # read. This field should never exceed 20 entries. Status details field will
        # contain standard Google Cloud error details.
        # Corresponds to the JSON property `partialFailures`
        # @return [Array<Google::Apis::AiplatformV1::GoogleRpcStatus>]
        attr_accessor :partial_failures
      
        # Output only. Time when the operation was updated for the last time. If the
        # operation has finished (successfully or not), this is the finish time.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @partial_failures = args[:partial_failures] if args.key?(:partial_failures)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # Contains information about the source of the models generated from Generative
      # AI Studio.
      class GoogleCloudAiplatformV1GenieSource
        include Google::Apis::Core::Hashable
      
        # Required. The public base model URI.
        # Corresponds to the JSON property `baseModelUri`
        # @return [String]
        attr_accessor :base_model_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @base_model_uri = args[:base_model_uri] if args.key?(:base_model_uri)
        end
      end
      
      # The Google Drive location for the input content.
      class GoogleCloudAiplatformV1GoogleDriveSource
        include Google::Apis::Core::Hashable
      
        # Required. Google Drive resource IDs.
        # Corresponds to the JSON property `resourceIds`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GoogleDriveSourceResourceId>]
        attr_accessor :resource_ids
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @resource_ids = args[:resource_ids] if args.key?(:resource_ids)
        end
      end
      
      # The type and ID of the Google Drive resource.
      class GoogleCloudAiplatformV1GoogleDriveSourceResourceId
        include Google::Apis::Core::Hashable
      
        # Required. The ID of the Google Drive resource.
        # Corresponds to the JSON property `resourceId`
        # @return [String]
        attr_accessor :resource_id
      
        # Required. The type of the Google Drive resource.
        # Corresponds to the JSON property `resourceType`
        # @return [String]
        attr_accessor :resource_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @resource_id = args[:resource_id] if args.key?(:resource_id)
          @resource_type = args[:resource_type] if args.key?(:resource_type)
        end
      end
      
      # Tool to retrieve public maps data for grounding, powered by Google.
      class GoogleCloudAiplatformV1GoogleMaps
        include Google::Apis::Core::Hashable
      
        # Optional. If true, include the widget context token in the response.
        # Corresponds to the JSON property `enableWidget`
        # @return [Boolean]
        attr_accessor :enable_widget
        alias_method :enable_widget?, :enable_widget
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @enable_widget = args[:enable_widget] if args.key?(:enable_widget)
        end
      end
      
      # Tool to retrieve public web data for grounding, powered by Google.
      class GoogleCloudAiplatformV1GoogleSearchRetrieval
        include Google::Apis::Core::Hashable
      
        # Describes the options to customize dynamic retrieval.
        # Corresponds to the JSON property `dynamicRetrievalConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DynamicRetrievalConfig]
        attr_accessor :dynamic_retrieval_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @dynamic_retrieval_config = args[:dynamic_retrieval_config] if args.key?(:dynamic_retrieval_config)
        end
      end
      
      # Input for groundedness metric.
      class GoogleCloudAiplatformV1GroundednessInput
        include Google::Apis::Core::Hashable
      
        # Spec for groundedness instance.
        # Corresponds to the JSON property `instance`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GroundednessInstance]
        attr_accessor :instance
      
        # Spec for groundedness metric.
        # Corresponds to the JSON property `metricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GroundednessSpec]
        attr_accessor :metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instance = args[:instance] if args.key?(:instance)
          @metric_spec = args[:metric_spec] if args.key?(:metric_spec)
        end
      end
      
      # Spec for groundedness instance.
      class GoogleCloudAiplatformV1GroundednessInstance
        include Google::Apis::Core::Hashable
      
        # Required. Background information provided in context used to compare against
        # the prediction.
        # Corresponds to the JSON property `context`
        # @return [String]
        attr_accessor :context
      
        # Required. Output of the evaluated model.
        # Corresponds to the JSON property `prediction`
        # @return [String]
        attr_accessor :prediction
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @context = args[:context] if args.key?(:context)
          @prediction = args[:prediction] if args.key?(:prediction)
        end
      end
      
      # Spec for groundedness result.
      class GoogleCloudAiplatformV1GroundednessResult
        include Google::Apis::Core::Hashable
      
        # Output only. Confidence for groundedness score.
        # Corresponds to the JSON property `confidence`
        # @return [Float]
        attr_accessor :confidence
      
        # Output only. Explanation for groundedness score.
        # Corresponds to the JSON property `explanation`
        # @return [String]
        attr_accessor :explanation
      
        # Output only. Groundedness score.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence = args[:confidence] if args.key?(:confidence)
          @explanation = args[:explanation] if args.key?(:explanation)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # Spec for groundedness metric.
      class GoogleCloudAiplatformV1GroundednessSpec
        include Google::Apis::Core::Hashable
      
        # Optional. Which version to use for evaluation.
        # Corresponds to the JSON property `version`
        # @return [Fixnum]
        attr_accessor :version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @version = args[:version] if args.key?(:version)
        end
      end
      
      # Grounding chunk.
      class GoogleCloudAiplatformV1GroundingChunk
        include Google::Apis::Core::Hashable
      
        # Chunk from Google Maps.
        # Corresponds to the JSON property `maps`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GroundingChunkMaps]
        attr_accessor :maps
      
        # Chunk from context retrieved by the retrieval tools.
        # Corresponds to the JSON property `retrievedContext`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GroundingChunkRetrievedContext]
        attr_accessor :retrieved_context
      
        # Chunk from the web.
        # Corresponds to the JSON property `web`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GroundingChunkWeb]
        attr_accessor :web
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @maps = args[:maps] if args.key?(:maps)
          @retrieved_context = args[:retrieved_context] if args.key?(:retrieved_context)
          @web = args[:web] if args.key?(:web)
        end
      end
      
      # Chunk from Google Maps.
      class GoogleCloudAiplatformV1GroundingChunkMaps
        include Google::Apis::Core::Hashable
      
        # Sources used to generate the place answer.
        # Corresponds to the JSON property `placeAnswerSources`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GroundingChunkMapsPlaceAnswerSources]
        attr_accessor :place_answer_sources
      
        # This Place's resource name, in `places/`place_id`` format. Can be used to look
        # up the Place.
        # Corresponds to the JSON property `placeId`
        # @return [String]
        attr_accessor :place_id
      
        # Text of the place answer.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        # Title of the place.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        # URI reference of the place.
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @place_answer_sources = args[:place_answer_sources] if args.key?(:place_answer_sources)
          @place_id = args[:place_id] if args.key?(:place_id)
          @text = args[:text] if args.key?(:text)
          @title = args[:title] if args.key?(:title)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # Sources used to generate the place answer.
      class GoogleCloudAiplatformV1GroundingChunkMapsPlaceAnswerSources
        include Google::Apis::Core::Hashable
      
        # Snippets of reviews that are used to generate the answer.
        # Corresponds to the JSON property `reviewSnippets`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GroundingChunkMapsPlaceAnswerSourcesReviewSnippet>]
        attr_accessor :review_snippets
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @review_snippets = args[:review_snippets] if args.key?(:review_snippets)
        end
      end
      
      # Encapsulates a review snippet.
      class GoogleCloudAiplatformV1GroundingChunkMapsPlaceAnswerSourcesReviewSnippet
        include Google::Apis::Core::Hashable
      
        # A link to show the review on Google Maps.
        # Corresponds to the JSON property `googleMapsUri`
        # @return [String]
        attr_accessor :google_maps_uri
      
        # Id of the review referencing the place.
        # Corresponds to the JSON property `reviewId`
        # @return [String]
        attr_accessor :review_id
      
        # Title of the review.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @google_maps_uri = args[:google_maps_uri] if args.key?(:google_maps_uri)
          @review_id = args[:review_id] if args.key?(:review_id)
          @title = args[:title] if args.key?(:title)
        end
      end
      
      # Chunk from context retrieved by the retrieval tools.
      class GoogleCloudAiplatformV1GroundingChunkRetrievedContext
        include Google::Apis::Core::Hashable
      
        # Output only. The full document name for the referenced Vertex AI Search
        # document.
        # Corresponds to the JSON property `documentName`
        # @return [String]
        attr_accessor :document_name
      
        # A RagChunk includes the content of a chunk of a RagFile, and associated
        # metadata.
        # Corresponds to the JSON property `ragChunk`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagChunk]
        attr_accessor :rag_chunk
      
        # Text of the attribution.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        # Title of the attribution.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        # URI reference of the attribution.
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @document_name = args[:document_name] if args.key?(:document_name)
          @rag_chunk = args[:rag_chunk] if args.key?(:rag_chunk)
          @text = args[:text] if args.key?(:text)
          @title = args[:title] if args.key?(:title)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # Chunk from the web.
      class GoogleCloudAiplatformV1GroundingChunkWeb
        include Google::Apis::Core::Hashable
      
        # Domain of the (original) URI.
        # Corresponds to the JSON property `domain`
        # @return [String]
        attr_accessor :domain
      
        # Title of the chunk.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        # URI reference of the chunk.
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @domain = args[:domain] if args.key?(:domain)
          @title = args[:title] if args.key?(:title)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # Metadata returned to client when grounding is enabled.
      class GoogleCloudAiplatformV1GroundingMetadata
        include Google::Apis::Core::Hashable
      
        # Optional. Output only. Resource name of the Google Maps widget context token
        # to be used with the PlacesContextElement widget to render contextual data.
        # This is populated only for Google Maps grounding.
        # Corresponds to the JSON property `googleMapsWidgetContextToken`
        # @return [String]
        attr_accessor :google_maps_widget_context_token
      
        # List of supporting references retrieved from specified grounding source.
        # Corresponds to the JSON property `groundingChunks`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GroundingChunk>]
        attr_accessor :grounding_chunks
      
        # Optional. List of grounding support.
        # Corresponds to the JSON property `groundingSupports`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GroundingSupport>]
        attr_accessor :grounding_supports
      
        # Metadata related to retrieval in the grounding flow.
        # Corresponds to the JSON property `retrievalMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RetrievalMetadata]
        attr_accessor :retrieval_metadata
      
        # Google search entry point.
        # Corresponds to the JSON property `searchEntryPoint`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SearchEntryPoint]
        attr_accessor :search_entry_point
      
        # Optional. Output only. List of source flagging uris. This is currently
        # populated only for Google Maps grounding.
        # Corresponds to the JSON property `sourceFlaggingUris`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GroundingMetadataSourceFlaggingUri>]
        attr_accessor :source_flagging_uris
      
        # Optional. Web search queries for the following-up web search.
        # Corresponds to the JSON property `webSearchQueries`
        # @return [Array<String>]
        attr_accessor :web_search_queries
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @google_maps_widget_context_token = args[:google_maps_widget_context_token] if args.key?(:google_maps_widget_context_token)
          @grounding_chunks = args[:grounding_chunks] if args.key?(:grounding_chunks)
          @grounding_supports = args[:grounding_supports] if args.key?(:grounding_supports)
          @retrieval_metadata = args[:retrieval_metadata] if args.key?(:retrieval_metadata)
          @search_entry_point = args[:search_entry_point] if args.key?(:search_entry_point)
          @source_flagging_uris = args[:source_flagging_uris] if args.key?(:source_flagging_uris)
          @web_search_queries = args[:web_search_queries] if args.key?(:web_search_queries)
        end
      end
      
      # Source content flagging uri for a place or review. This is currently populated
      # only for Google Maps grounding.
      class GoogleCloudAiplatformV1GroundingMetadataSourceFlaggingUri
        include Google::Apis::Core::Hashable
      
        # A link where users can flag a problem with the source (place or review).
        # Corresponds to the JSON property `flagContentUri`
        # @return [String]
        attr_accessor :flag_content_uri
      
        # Id of the place or review.
        # Corresponds to the JSON property `sourceId`
        # @return [String]
        attr_accessor :source_id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @flag_content_uri = args[:flag_content_uri] if args.key?(:flag_content_uri)
          @source_id = args[:source_id] if args.key?(:source_id)
        end
      end
      
      # Grounding support.
      class GoogleCloudAiplatformV1GroundingSupport
        include Google::Apis::Core::Hashable
      
        # Confidence score of the support references. Ranges from 0 to 1. 1 is the most
        # confident. For Gemini 2.0 and before, this list must have the same size as the
        # grounding_chunk_indices. For Gemini 2.5 and after, this list will be empty and
        # should be ignored.
        # Corresponds to the JSON property `confidenceScores`
        # @return [Array<Float>]
        attr_accessor :confidence_scores
      
        # A list of indices (into 'grounding_chunk') specifying the citations associated
        # with the claim. For instance [1,3,4] means that grounding_chunk[1],
        # grounding_chunk[3], grounding_chunk[4] are the retrieved content attributed to
        # the claim.
        # Corresponds to the JSON property `groundingChunkIndices`
        # @return [Array<Fixnum>]
        attr_accessor :grounding_chunk_indices
      
        # Segment of the content.
        # Corresponds to the JSON property `segment`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Segment]
        attr_accessor :segment
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence_scores = args[:confidence_scores] if args.key?(:confidence_scores)
          @grounding_chunk_indices = args[:grounding_chunk_indices] if args.key?(:grounding_chunk_indices)
          @segment = args[:segment] if args.key?(:segment)
        end
      end
      
      # Represents a HyperparameterTuningJob. A HyperparameterTuningJob has a Study
      # specification and multiple CustomJobs with identical CustomJob specification.
      class GoogleCloudAiplatformV1HyperparameterTuningJob
        include Google::Apis::Core::Hashable
      
        # Output only. Time when the HyperparameterTuningJob was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Required. The display name of the HyperparameterTuningJob. The name can be up
        # to 128 characters long and can consist of any UTF-8 characters.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Represents a customer-managed encryption key spec that can be applied to a top-
        # level resource.
        # Corresponds to the JSON property `encryptionSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EncryptionSpec]
        attr_accessor :encryption_spec
      
        # Output only. Time when the HyperparameterTuningJob entered any of the
        # following states: `JOB_STATE_SUCCEEDED`, `JOB_STATE_FAILED`, `
        # JOB_STATE_CANCELLED`.
        # Corresponds to the JSON property `endTime`
        # @return [String]
        attr_accessor :end_time
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `error`
        # @return [Google::Apis::AiplatformV1::GoogleRpcStatus]
        attr_accessor :error
      
        # The labels with user-defined metadata to organize HyperparameterTuningJobs.
        # Label keys and values can be no longer than 64 characters (Unicode codepoints),
        # can only contain lowercase letters, numeric characters, underscores and
        # dashes. International characters are allowed. See https://goo.gl/xmQnxf for
        # more information and examples of labels.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # The number of failed Trials that need to be seen before failing the
        # HyperparameterTuningJob. If set to 0, Vertex AI decides how many Trials must
        # fail before the whole job fails.
        # Corresponds to the JSON property `maxFailedTrialCount`
        # @return [Fixnum]
        attr_accessor :max_failed_trial_count
      
        # Required. The desired total number of Trials.
        # Corresponds to the JSON property `maxTrialCount`
        # @return [Fixnum]
        attr_accessor :max_trial_count
      
        # Output only. Resource name of the HyperparameterTuningJob.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Required. The desired number of Trials to run in parallel.
        # Corresponds to the JSON property `parallelTrialCount`
        # @return [Fixnum]
        attr_accessor :parallel_trial_count
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzi`
        # @return [Boolean]
        attr_accessor :satisfies_pzi
        alias_method :satisfies_pzi?, :satisfies_pzi
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzs`
        # @return [Boolean]
        attr_accessor :satisfies_pzs
        alias_method :satisfies_pzs?, :satisfies_pzs
      
        # Output only. Time when the HyperparameterTuningJob for the first time entered
        # the `JOB_STATE_RUNNING` state.
        # Corresponds to the JSON property `startTime`
        # @return [String]
        attr_accessor :start_time
      
        # Output only. The detailed state of the job.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        # Represents specification of a Study.
        # Corresponds to the JSON property `studySpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1StudySpec]
        attr_accessor :study_spec
      
        # Represents the spec of a CustomJob.
        # Corresponds to the JSON property `trialJobSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CustomJobSpec]
        attr_accessor :trial_job_spec
      
        # Output only. Trials of the HyperparameterTuningJob.
        # Corresponds to the JSON property `trials`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Trial>]
        attr_accessor :trials
      
        # Output only. Time when the HyperparameterTuningJob was most recently updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @display_name = args[:display_name] if args.key?(:display_name)
          @encryption_spec = args[:encryption_spec] if args.key?(:encryption_spec)
          @end_time = args[:end_time] if args.key?(:end_time)
          @error = args[:error] if args.key?(:error)
          @labels = args[:labels] if args.key?(:labels)
          @max_failed_trial_count = args[:max_failed_trial_count] if args.key?(:max_failed_trial_count)
          @max_trial_count = args[:max_trial_count] if args.key?(:max_trial_count)
          @name = args[:name] if args.key?(:name)
          @parallel_trial_count = args[:parallel_trial_count] if args.key?(:parallel_trial_count)
          @satisfies_pzi = args[:satisfies_pzi] if args.key?(:satisfies_pzi)
          @satisfies_pzs = args[:satisfies_pzs] if args.key?(:satisfies_pzs)
          @start_time = args[:start_time] if args.key?(:start_time)
          @state = args[:state] if args.key?(:state)
          @study_spec = args[:study_spec] if args.key?(:study_spec)
          @trial_job_spec = args[:trial_job_spec] if args.key?(:trial_job_spec)
          @trials = args[:trials] if args.key?(:trials)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # Matcher for Features of an EntityType by Feature ID.
      class GoogleCloudAiplatformV1IdMatcher
        include Google::Apis::Core::Hashable
      
        # Required. The following are accepted as `ids`: * A single-element list
        # containing only `*`, which selects all Features in the target EntityType, or *
        # A list containing only Feature IDs, which selects only Features with those IDs
        # in the target EntityType.
        # Corresponds to the JSON property `ids`
        # @return [Array<String>]
        attr_accessor :ids
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @ids = args[:ids] if args.key?(:ids)
        end
      end
      
      # Describes the location from where we import data into a Dataset, together with
      # the labels that will be applied to the DataItems and the Annotations.
      class GoogleCloudAiplatformV1ImportDataConfig
        include Google::Apis::Core::Hashable
      
        # Labels that will be applied to newly imported Annotations. If two Annotations
        # are identical, one of them will be deduped. Two Annotations are considered
        # identical if their payload, payload_schema_uri and all of their labels are the
        # same. These labels will be overridden by Annotation labels specified inside
        # index file referenced by import_schema_uri, e.g. jsonl file.
        # Corresponds to the JSON property `annotationLabels`
        # @return [Hash<String,String>]
        attr_accessor :annotation_labels
      
        # Labels that will be applied to newly imported DataItems. If an identical
        # DataItem as one being imported already exists in the Dataset, then these
        # labels will be appended to these of the already existing one, and if labels
        # with identical key is imported before, the old label value will be overwritten.
        # If two DataItems are identical in the same import data operation, the labels
        # will be combined and if key collision happens in this case, one of the values
        # will be picked randomly. Two DataItems are considered identical if their
        # content bytes are identical (e.g. image bytes or pdf bytes). These labels will
        # be overridden by Annotation labels specified inside index file referenced by
        # import_schema_uri, e.g. jsonl file.
        # Corresponds to the JSON property `dataItemLabels`
        # @return [Hash<String,String>]
        attr_accessor :data_item_labels
      
        # The Google Cloud Storage location for the input content.
        # Corresponds to the JSON property `gcsSource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GcsSource]
        attr_accessor :gcs_source
      
        # Required. Points to a YAML file stored on Google Cloud Storage describing the
        # import format. Validation will be done against the schema. The schema is
        # defined as an [OpenAPI 3.0.2 Schema Object](https://github.com/OAI/OpenAPI-
        # Specification/blob/main/versions/3.0.2.md#schemaObject).
        # Corresponds to the JSON property `importSchemaUri`
        # @return [String]
        attr_accessor :import_schema_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @annotation_labels = args[:annotation_labels] if args.key?(:annotation_labels)
          @data_item_labels = args[:data_item_labels] if args.key?(:data_item_labels)
          @gcs_source = args[:gcs_source] if args.key?(:gcs_source)
          @import_schema_uri = args[:import_schema_uri] if args.key?(:import_schema_uri)
        end
      end
      
      # Runtime operation information for DatasetService.ImportData.
      class GoogleCloudAiplatformV1ImportDataOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Request message for DatasetService.ImportData.
      class GoogleCloudAiplatformV1ImportDataRequest
        include Google::Apis::Core::Hashable
      
        # Required. The desired input locations. The contents of all input locations
        # will be imported in one batch.
        # Corresponds to the JSON property `importConfigs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ImportDataConfig>]
        attr_accessor :import_configs
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @import_configs = args[:import_configs] if args.key?(:import_configs)
        end
      end
      
      # Response message for DatasetService.ImportData.
      class GoogleCloudAiplatformV1ImportDataResponse
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Details of operations that perform import Feature values.
      class GoogleCloudAiplatformV1ImportFeatureValuesOperationMetadata
        include Google::Apis::Core::Hashable
      
        # List of ImportFeatureValues operations running under a single EntityType that
        # are blocking this operation.
        # Corresponds to the JSON property `blockingOperationIds`
        # @return [Array<Fixnum>]
        attr_accessor :blocking_operation_ids
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        # Number of entities that have been imported by the operation.
        # Corresponds to the JSON property `importedEntityCount`
        # @return [Fixnum]
        attr_accessor :imported_entity_count
      
        # Number of Feature values that have been imported by the operation.
        # Corresponds to the JSON property `importedFeatureValueCount`
        # @return [Fixnum]
        attr_accessor :imported_feature_value_count
      
        # The number of rows in input source that weren't imported due to either * Not
        # having any featureValues. * Having a null entityId. * Having a null timestamp.
        # * Not being parsable (applicable for CSV sources).
        # Corresponds to the JSON property `invalidRowCount`
        # @return [Fixnum]
        attr_accessor :invalid_row_count
      
        # The source URI from where Feature values are imported.
        # Corresponds to the JSON property `sourceUris`
        # @return [Array<String>]
        attr_accessor :source_uris
      
        # The number rows that weren't ingested due to having timestamps outside the
        # retention boundary.
        # Corresponds to the JSON property `timestampOutsideRetentionRowsCount`
        # @return [Fixnum]
        attr_accessor :timestamp_outside_retention_rows_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @blocking_operation_ids = args[:blocking_operation_ids] if args.key?(:blocking_operation_ids)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
          @imported_entity_count = args[:imported_entity_count] if args.key?(:imported_entity_count)
          @imported_feature_value_count = args[:imported_feature_value_count] if args.key?(:imported_feature_value_count)
          @invalid_row_count = args[:invalid_row_count] if args.key?(:invalid_row_count)
          @source_uris = args[:source_uris] if args.key?(:source_uris)
          @timestamp_outside_retention_rows_count = args[:timestamp_outside_retention_rows_count] if args.key?(:timestamp_outside_retention_rows_count)
        end
      end
      
      # Request message for FeaturestoreService.ImportFeatureValues.
      class GoogleCloudAiplatformV1ImportFeatureValuesRequest
        include Google::Apis::Core::Hashable
      
        # The storage details for Avro input content.
        # Corresponds to the JSON property `avroSource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1AvroSource]
        attr_accessor :avro_source
      
        # The BigQuery location for the input content.
        # Corresponds to the JSON property `bigquerySource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BigQuerySource]
        attr_accessor :bigquery_source
      
        # The storage details for CSV input content.
        # Corresponds to the JSON property `csvSource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CsvSource]
        attr_accessor :csv_source
      
        # If true, API doesn't start ingestion analysis pipeline.
        # Corresponds to the JSON property `disableIngestionAnalysis`
        # @return [Boolean]
        attr_accessor :disable_ingestion_analysis
        alias_method :disable_ingestion_analysis?, :disable_ingestion_analysis
      
        # If set, data will not be imported for online serving. This is typically used
        # for backfilling, where Feature generation timestamps are not in the timestamp
        # range needed for online serving.
        # Corresponds to the JSON property `disableOnlineServing`
        # @return [Boolean]
        attr_accessor :disable_online_serving
        alias_method :disable_online_serving?, :disable_online_serving
      
        # Source column that holds entity IDs. If not provided, entity IDs are extracted
        # from the column named entity_id.
        # Corresponds to the JSON property `entityIdField`
        # @return [String]
        attr_accessor :entity_id_field
      
        # Required. Specifications defining which Feature values to import from the
        # entity. The request fails if no feature_specs are provided, and having
        # multiple feature_specs for one Feature is not allowed.
        # Corresponds to the JSON property `featureSpecs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ImportFeatureValuesRequestFeatureSpec>]
        attr_accessor :feature_specs
      
        # Single Feature timestamp for all entities being imported. The timestamp must
        # not have higher than millisecond precision.
        # Corresponds to the JSON property `featureTime`
        # @return [String]
        attr_accessor :feature_time
      
        # Source column that holds the Feature timestamp for all Feature values in each
        # entity.
        # Corresponds to the JSON property `featureTimeField`
        # @return [String]
        attr_accessor :feature_time_field
      
        # Specifies the number of workers that are used to write data to the
        # Featurestore. Consider the online serving capacity that you require to achieve
        # the desired import throughput without interfering with online serving. The
        # value must be positive, and less than or equal to 100. If not set, defaults to
        # using 1 worker. The low count ensures minimal impact on online serving
        # performance.
        # Corresponds to the JSON property `workerCount`
        # @return [Fixnum]
        attr_accessor :worker_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @avro_source = args[:avro_source] if args.key?(:avro_source)
          @bigquery_source = args[:bigquery_source] if args.key?(:bigquery_source)
          @csv_source = args[:csv_source] if args.key?(:csv_source)
          @disable_ingestion_analysis = args[:disable_ingestion_analysis] if args.key?(:disable_ingestion_analysis)
          @disable_online_serving = args[:disable_online_serving] if args.key?(:disable_online_serving)
          @entity_id_field = args[:entity_id_field] if args.key?(:entity_id_field)
          @feature_specs = args[:feature_specs] if args.key?(:feature_specs)
          @feature_time = args[:feature_time] if args.key?(:feature_time)
          @feature_time_field = args[:feature_time_field] if args.key?(:feature_time_field)
          @worker_count = args[:worker_count] if args.key?(:worker_count)
        end
      end
      
      # Defines the Feature value(s) to import.
      class GoogleCloudAiplatformV1ImportFeatureValuesRequestFeatureSpec
        include Google::Apis::Core::Hashable
      
        # Required. ID of the Feature to import values of. This Feature must exist in
        # the target EntityType, or the request will fail.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        # Source column to get the Feature values from. If not set, uses the column with
        # the same name as the Feature ID.
        # Corresponds to the JSON property `sourceField`
        # @return [String]
        attr_accessor :source_field
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @id = args[:id] if args.key?(:id)
          @source_field = args[:source_field] if args.key?(:source_field)
        end
      end
      
      # Response message for FeaturestoreService.ImportFeatureValues.
      class GoogleCloudAiplatformV1ImportFeatureValuesResponse
        include Google::Apis::Core::Hashable
      
        # Number of entities that have been imported by the operation.
        # Corresponds to the JSON property `importedEntityCount`
        # @return [Fixnum]
        attr_accessor :imported_entity_count
      
        # Number of Feature values that have been imported by the operation.
        # Corresponds to the JSON property `importedFeatureValueCount`
        # @return [Fixnum]
        attr_accessor :imported_feature_value_count
      
        # The number of rows in input source that weren't imported due to either * Not
        # having any featureValues. * Having a null entityId. * Having a null timestamp.
        # * Not being parsable (applicable for CSV sources).
        # Corresponds to the JSON property `invalidRowCount`
        # @return [Fixnum]
        attr_accessor :invalid_row_count
      
        # The number rows that weren't ingested due to having feature timestamps outside
        # the retention boundary.
        # Corresponds to the JSON property `timestampOutsideRetentionRowsCount`
        # @return [Fixnum]
        attr_accessor :timestamp_outside_retention_rows_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @imported_entity_count = args[:imported_entity_count] if args.key?(:imported_entity_count)
          @imported_feature_value_count = args[:imported_feature_value_count] if args.key?(:imported_feature_value_count)
          @invalid_row_count = args[:invalid_row_count] if args.key?(:invalid_row_count)
          @timestamp_outside_retention_rows_count = args[:timestamp_outside_retention_rows_count] if args.key?(:timestamp_outside_retention_rows_count)
        end
      end
      
      # Request message for ModelService.ImportModelEvaluation
      class GoogleCloudAiplatformV1ImportModelEvaluationRequest
        include Google::Apis::Core::Hashable
      
        # A collection of metrics calculated by comparing Model's predictions on all of
        # the test data against annotations from the test data.
        # Corresponds to the JSON property `modelEvaluation`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelEvaluation]
        attr_accessor :model_evaluation
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @model_evaluation = args[:model_evaluation] if args.key?(:model_evaluation)
        end
      end
      
      # Config for importing RagFiles.
      class GoogleCloudAiplatformV1ImportRagFilesConfig
        include Google::Apis::Core::Hashable
      
        # The Google Cloud Storage location for the input content.
        # Corresponds to the JSON property `gcsSource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GcsSource]
        attr_accessor :gcs_source
      
        # The Google Drive location for the input content.
        # Corresponds to the JSON property `googleDriveSource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GoogleDriveSource]
        attr_accessor :google_drive_source
      
        # The BigQuery location for the output content.
        # Corresponds to the JSON property `importResultBigquerySink`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BigQueryDestination]
        attr_accessor :import_result_bigquery_sink
      
        # The Google Cloud Storage location where the output is to be written to.
        # Corresponds to the JSON property `importResultGcsSink`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GcsDestination]
        attr_accessor :import_result_gcs_sink
      
        # The Jira source for the ImportRagFilesRequest.
        # Corresponds to the JSON property `jiraSource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1JiraSource]
        attr_accessor :jira_source
      
        # Optional. The max number of queries per minute that this job is allowed to
        # make to the embedding model specified on the corpus. This value is specific to
        # this job and not shared across other import jobs. Consult the Quotas page on
        # the project to set an appropriate value here. If unspecified, a default value
        # of 1,000 QPM would be used.
        # Corresponds to the JSON property `maxEmbeddingRequestsPerMin`
        # @return [Fixnum]
        attr_accessor :max_embedding_requests_per_min
      
        # The BigQuery location for the output content.
        # Corresponds to the JSON property `partialFailureBigquerySink`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BigQueryDestination]
        attr_accessor :partial_failure_bigquery_sink
      
        # The Google Cloud Storage location where the output is to be written to.
        # Corresponds to the JSON property `partialFailureGcsSink`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GcsDestination]
        attr_accessor :partial_failure_gcs_sink
      
        # Specifies the parsing config for RagFiles.
        # Corresponds to the JSON property `ragFileParsingConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagFileParsingConfig]
        attr_accessor :rag_file_parsing_config
      
        # Specifies the transformation config for RagFiles.
        # Corresponds to the JSON property `ragFileTransformationConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagFileTransformationConfig]
        attr_accessor :rag_file_transformation_config
      
        # Rebuilds the ANN index to optimize for recall on the imported data. Only
        # applicable for RagCorpora running on RagManagedDb with `retrieval_strategy`
        # set to `ANN`. The rebuild will be performed using the existing ANN config set
        # on the RagCorpus. To change the ANN config, please use the UpdateRagCorpus API.
        # Default is false, i.e., index is not rebuilt.
        # Corresponds to the JSON property `rebuildAnnIndex`
        # @return [Boolean]
        attr_accessor :rebuild_ann_index
        alias_method :rebuild_ann_index?, :rebuild_ann_index
      
        # The SharePointSources to pass to ImportRagFiles.
        # Corresponds to the JSON property `sharePointSources`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SharePointSources]
        attr_accessor :share_point_sources
      
        # The Slack source for the ImportRagFilesRequest.
        # Corresponds to the JSON property `slackSource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SlackSource]
        attr_accessor :slack_source
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @gcs_source = args[:gcs_source] if args.key?(:gcs_source)
          @google_drive_source = args[:google_drive_source] if args.key?(:google_drive_source)
          @import_result_bigquery_sink = args[:import_result_bigquery_sink] if args.key?(:import_result_bigquery_sink)
          @import_result_gcs_sink = args[:import_result_gcs_sink] if args.key?(:import_result_gcs_sink)
          @jira_source = args[:jira_source] if args.key?(:jira_source)
          @max_embedding_requests_per_min = args[:max_embedding_requests_per_min] if args.key?(:max_embedding_requests_per_min)
          @partial_failure_bigquery_sink = args[:partial_failure_bigquery_sink] if args.key?(:partial_failure_bigquery_sink)
          @partial_failure_gcs_sink = args[:partial_failure_gcs_sink] if args.key?(:partial_failure_gcs_sink)
          @rag_file_parsing_config = args[:rag_file_parsing_config] if args.key?(:rag_file_parsing_config)
          @rag_file_transformation_config = args[:rag_file_transformation_config] if args.key?(:rag_file_transformation_config)
          @rebuild_ann_index = args[:rebuild_ann_index] if args.key?(:rebuild_ann_index)
          @share_point_sources = args[:share_point_sources] if args.key?(:share_point_sources)
          @slack_source = args[:slack_source] if args.key?(:slack_source)
        end
      end
      
      # Request message for VertexRagDataService.ImportRagFiles.
      class GoogleCloudAiplatformV1ImportRagFilesRequest
        include Google::Apis::Core::Hashable
      
        # Config for importing RagFiles.
        # Corresponds to the JSON property `importRagFilesConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ImportRagFilesConfig]
        attr_accessor :import_rag_files_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @import_rag_files_config = args[:import_rag_files_config] if args.key?(:import_rag_files_config)
        end
      end
      
      # A representation of a collection of database items organized in a way that
      # allows for approximate nearest neighbor (a.k.a ANN) algorithms search.
      class GoogleCloudAiplatformV1Index
        include Google::Apis::Core::Hashable
      
        # Output only. Timestamp when this Index was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Output only. The pointers to DeployedIndexes created from this Index. An Index
        # can be only deleted if all its DeployedIndexes had been undeployed first.
        # Corresponds to the JSON property `deployedIndexes`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DeployedIndexRef>]
        attr_accessor :deployed_indexes
      
        # The description of the Index.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Required. The display name of the Index. The name can be up to 128 characters
        # long and can consist of any UTF-8 characters.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Represents a customer-managed encryption key spec that can be applied to a top-
        # level resource.
        # Corresponds to the JSON property `encryptionSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EncryptionSpec]
        attr_accessor :encryption_spec
      
        # Used to perform consistent read-modify-write updates. If not set, a blind "
        # overwrite" update happens.
        # Corresponds to the JSON property `etag`
        # @return [String]
        attr_accessor :etag
      
        # Stats of the Index.
        # Corresponds to the JSON property `indexStats`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1IndexStats]
        attr_accessor :index_stats
      
        # Immutable. The update method to use with this Index. If not set, BATCH_UPDATE
        # will be used by default.
        # Corresponds to the JSON property `indexUpdateMethod`
        # @return [String]
        attr_accessor :index_update_method
      
        # The labels with user-defined metadata to organize your Indexes. Label keys and
        # values can be no longer than 64 characters (Unicode codepoints), can only
        # contain lowercase letters, numeric characters, underscores and dashes.
        # International characters are allowed. See https://goo.gl/xmQnxf for more
        # information and examples of labels.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # An additional information about the Index; the schema of the metadata can be
        # found in metadata_schema.
        # Corresponds to the JSON property `metadata`
        # @return [Object]
        attr_accessor :metadata
      
        # Immutable. Points to a YAML file stored on Google Cloud Storage describing
        # additional information about the Index, that is specific to it. Unset if the
        # Index does not have any additional information. The schema is defined as an
        # OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/
        # blob/main/versions/3.0.2.md#schemaObject). Note: The URI given on output will
        # be immutable and probably different, including the URI scheme, than the one
        # given on input. The output URI will point to a location where the user only
        # has a read access.
        # Corresponds to the JSON property `metadataSchemaUri`
        # @return [String]
        attr_accessor :metadata_schema_uri
      
        # Output only. The resource name of the Index.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzi`
        # @return [Boolean]
        attr_accessor :satisfies_pzi
        alias_method :satisfies_pzi?, :satisfies_pzi
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzs`
        # @return [Boolean]
        attr_accessor :satisfies_pzs
        alias_method :satisfies_pzs?, :satisfies_pzs
      
        # Output only. Timestamp when this Index was most recently updated. This also
        # includes any update to the contents of the Index. Note that Operations working
        # on this Index may have their Operations.metadata.generic_metadata.update_time
        # a little after the value of this timestamp, yet that does not mean their
        # results are not already reflected in the Index. Result of any successfully
        # completed Operation on the Index is reflected in it.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @deployed_indexes = args[:deployed_indexes] if args.key?(:deployed_indexes)
          @description = args[:description] if args.key?(:description)
          @display_name = args[:display_name] if args.key?(:display_name)
          @encryption_spec = args[:encryption_spec] if args.key?(:encryption_spec)
          @etag = args[:etag] if args.key?(:etag)
          @index_stats = args[:index_stats] if args.key?(:index_stats)
          @index_update_method = args[:index_update_method] if args.key?(:index_update_method)
          @labels = args[:labels] if args.key?(:labels)
          @metadata = args[:metadata] if args.key?(:metadata)
          @metadata_schema_uri = args[:metadata_schema_uri] if args.key?(:metadata_schema_uri)
          @name = args[:name] if args.key?(:name)
          @satisfies_pzi = args[:satisfies_pzi] if args.key?(:satisfies_pzi)
          @satisfies_pzs = args[:satisfies_pzs] if args.key?(:satisfies_pzs)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # A datapoint of Index.
      class GoogleCloudAiplatformV1IndexDatapoint
        include Google::Apis::Core::Hashable
      
        # Crowding tag is a constraint on a neighbor list produced by nearest neighbor
        # search requiring that no more than some value k' of the k neighbors returned
        # have the same value of crowding_attribute.
        # Corresponds to the JSON property `crowdingTag`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1IndexDatapointCrowdingTag]
        attr_accessor :crowding_tag
      
        # Required. Unique identifier of the datapoint.
        # Corresponds to the JSON property `datapointId`
        # @return [String]
        attr_accessor :datapoint_id
      
        # Optional. The key-value map of additional metadata for the datapoint.
        # Corresponds to the JSON property `embeddingMetadata`
        # @return [Hash<String,Object>]
        attr_accessor :embedding_metadata
      
        # Required. Feature embedding vector for dense index. An array of numbers with
        # the length of [NearestNeighborSearchConfig.dimensions].
        # Corresponds to the JSON property `featureVector`
        # @return [Array<Float>]
        attr_accessor :feature_vector
      
        # Optional. List of Restrict of the datapoint, used to perform "restricted
        # searches" where boolean rule are used to filter the subset of the database
        # eligible for matching. This uses numeric comparisons.
        # Corresponds to the JSON property `numericRestricts`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1IndexDatapointNumericRestriction>]
        attr_accessor :numeric_restricts
      
        # Optional. List of Restrict of the datapoint, used to perform "restricted
        # searches" where boolean rule are used to filter the subset of the database
        # eligible for matching. This uses categorical tokens. See: https://cloud.google.
        # com/vertex-ai/docs/matching-engine/filtering
        # Corresponds to the JSON property `restricts`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1IndexDatapointRestriction>]
        attr_accessor :restricts
      
        # Feature embedding vector for sparse index. An array of numbers whose values
        # are located in the specified dimensions.
        # Corresponds to the JSON property `sparseEmbedding`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1IndexDatapointSparseEmbedding]
        attr_accessor :sparse_embedding
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @crowding_tag = args[:crowding_tag] if args.key?(:crowding_tag)
          @datapoint_id = args[:datapoint_id] if args.key?(:datapoint_id)
          @embedding_metadata = args[:embedding_metadata] if args.key?(:embedding_metadata)
          @feature_vector = args[:feature_vector] if args.key?(:feature_vector)
          @numeric_restricts = args[:numeric_restricts] if args.key?(:numeric_restricts)
          @restricts = args[:restricts] if args.key?(:restricts)
          @sparse_embedding = args[:sparse_embedding] if args.key?(:sparse_embedding)
        end
      end
      
      # Crowding tag is a constraint on a neighbor list produced by nearest neighbor
      # search requiring that no more than some value k' of the k neighbors returned
      # have the same value of crowding_attribute.
      class GoogleCloudAiplatformV1IndexDatapointCrowdingTag
        include Google::Apis::Core::Hashable
      
        # The attribute value used for crowding. The maximum number of neighbors to
        # return per crowding attribute value (per_crowding_attribute_num_neighbors) is
        # configured per-query. This field is ignored if
        # per_crowding_attribute_num_neighbors is larger than the total number of
        # neighbors to return for a given query.
        # Corresponds to the JSON property `crowdingAttribute`
        # @return [String]
        attr_accessor :crowding_attribute
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @crowding_attribute = args[:crowding_attribute] if args.key?(:crowding_attribute)
        end
      end
      
      # This field allows restricts to be based on numeric comparisons rather than
      # categorical tokens.
      class GoogleCloudAiplatformV1IndexDatapointNumericRestriction
        include Google::Apis::Core::Hashable
      
        # The namespace of this restriction. e.g.: cost.
        # Corresponds to the JSON property `namespace`
        # @return [String]
        attr_accessor :namespace
      
        # This MUST be specified for queries and must NOT be specified for datapoints.
        # Corresponds to the JSON property `op`
        # @return [String]
        attr_accessor :op
      
        # Represents 64 bit float.
        # Corresponds to the JSON property `valueDouble`
        # @return [Float]
        attr_accessor :value_double
      
        # Represents 32 bit float.
        # Corresponds to the JSON property `valueFloat`
        # @return [Float]
        attr_accessor :value_float
      
        # Represents 64 bit integer.
        # Corresponds to the JSON property `valueInt`
        # @return [Fixnum]
        attr_accessor :value_int
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @namespace = args[:namespace] if args.key?(:namespace)
          @op = args[:op] if args.key?(:op)
          @value_double = args[:value_double] if args.key?(:value_double)
          @value_float = args[:value_float] if args.key?(:value_float)
          @value_int = args[:value_int] if args.key?(:value_int)
        end
      end
      
      # Restriction of a datapoint which describe its attributes(tokens) from each of
      # several attribute categories(namespaces).
      class GoogleCloudAiplatformV1IndexDatapointRestriction
        include Google::Apis::Core::Hashable
      
        # The attributes to allow in this namespace. e.g.: 'red'
        # Corresponds to the JSON property `allowList`
        # @return [Array<String>]
        attr_accessor :allow_list
      
        # The attributes to deny in this namespace. e.g.: 'blue'
        # Corresponds to the JSON property `denyList`
        # @return [Array<String>]
        attr_accessor :deny_list
      
        # The namespace of this restriction. e.g.: color.
        # Corresponds to the JSON property `namespace`
        # @return [String]
        attr_accessor :namespace
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @allow_list = args[:allow_list] if args.key?(:allow_list)
          @deny_list = args[:deny_list] if args.key?(:deny_list)
          @namespace = args[:namespace] if args.key?(:namespace)
        end
      end
      
      # Feature embedding vector for sparse index. An array of numbers whose values
      # are located in the specified dimensions.
      class GoogleCloudAiplatformV1IndexDatapointSparseEmbedding
        include Google::Apis::Core::Hashable
      
        # Required. The list of indexes for the embedding values of the sparse vector.
        # Corresponds to the JSON property `dimensions`
        # @return [Array<Fixnum>]
        attr_accessor :dimensions
      
        # Required. The list of embedding values of the sparse vector.
        # Corresponds to the JSON property `values`
        # @return [Array<Float>]
        attr_accessor :values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @dimensions = args[:dimensions] if args.key?(:dimensions)
          @values = args[:values] if args.key?(:values)
        end
      end
      
      # Indexes are deployed into it. An IndexEndpoint can have multiple
      # DeployedIndexes.
      class GoogleCloudAiplatformV1IndexEndpoint
        include Google::Apis::Core::Hashable
      
        # Output only. Timestamp when this IndexEndpoint was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Output only. The indexes deployed in this endpoint.
        # Corresponds to the JSON property `deployedIndexes`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DeployedIndex>]
        attr_accessor :deployed_indexes
      
        # The description of the IndexEndpoint.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Required. The display name of the IndexEndpoint. The name can be up to 128
        # characters long and can consist of any UTF-8 characters.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Optional. Deprecated: If true, expose the IndexEndpoint via private service
        # connect. Only one of the fields, network or enable_private_service_connect,
        # can be set.
        # Corresponds to the JSON property `enablePrivateServiceConnect`
        # @return [Boolean]
        attr_accessor :enable_private_service_connect
        alias_method :enable_private_service_connect?, :enable_private_service_connect
      
        # Represents a customer-managed encryption key spec that can be applied to a top-
        # level resource.
        # Corresponds to the JSON property `encryptionSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EncryptionSpec]
        attr_accessor :encryption_spec
      
        # Used to perform consistent read-modify-write updates. If not set, a blind "
        # overwrite" update happens.
        # Corresponds to the JSON property `etag`
        # @return [String]
        attr_accessor :etag
      
        # The labels with user-defined metadata to organize your IndexEndpoints. Label
        # keys and values can be no longer than 64 characters (Unicode codepoints), can
        # only contain lowercase letters, numeric characters, underscores and dashes.
        # International characters are allowed. See https://goo.gl/xmQnxf for more
        # information and examples of labels.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Output only. The resource name of the IndexEndpoint.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Optional. The full name of the Google Compute Engine [network](https://cloud.
        # google.com/compute/docs/networks-and-firewalls#networks) to which the
        # IndexEndpoint should be peered. Private services access must already be
        # configured for the network. If left unspecified, the Endpoint is not peered
        # with any network. network and private_service_connect_config are mutually
        # exclusive. [Format](https://cloud.google.com/compute/docs/reference/rest/v1/
        # networks/insert): `projects/`project`/global/networks/`network``. Where `
        # project` is a project number, as in '12345', and `network` is network name.
        # Corresponds to the JSON property `network`
        # @return [String]
        attr_accessor :network
      
        # Represents configuration for private service connect.
        # Corresponds to the JSON property `privateServiceConnectConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PrivateServiceConnectConfig]
        attr_accessor :private_service_connect_config
      
        # Output only. If public_endpoint_enabled is true, this field will be populated
        # with the domain name to use for this index endpoint.
        # Corresponds to the JSON property `publicEndpointDomainName`
        # @return [String]
        attr_accessor :public_endpoint_domain_name
      
        # Optional. If true, the deployed index will be accessible through public
        # endpoint.
        # Corresponds to the JSON property `publicEndpointEnabled`
        # @return [Boolean]
        attr_accessor :public_endpoint_enabled
        alias_method :public_endpoint_enabled?, :public_endpoint_enabled
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzi`
        # @return [Boolean]
        attr_accessor :satisfies_pzi
        alias_method :satisfies_pzi?, :satisfies_pzi
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzs`
        # @return [Boolean]
        attr_accessor :satisfies_pzs
        alias_method :satisfies_pzs?, :satisfies_pzs
      
        # Output only. Timestamp when this IndexEndpoint was last updated. This
        # timestamp is not updated when the endpoint's DeployedIndexes are updated, e.g.
        # due to updates of the original Indexes they are the deployments of.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @deployed_indexes = args[:deployed_indexes] if args.key?(:deployed_indexes)
          @description = args[:description] if args.key?(:description)
          @display_name = args[:display_name] if args.key?(:display_name)
          @enable_private_service_connect = args[:enable_private_service_connect] if args.key?(:enable_private_service_connect)
          @encryption_spec = args[:encryption_spec] if args.key?(:encryption_spec)
          @etag = args[:etag] if args.key?(:etag)
          @labels = args[:labels] if args.key?(:labels)
          @name = args[:name] if args.key?(:name)
          @network = args[:network] if args.key?(:network)
          @private_service_connect_config = args[:private_service_connect_config] if args.key?(:private_service_connect_config)
          @public_endpoint_domain_name = args[:public_endpoint_domain_name] if args.key?(:public_endpoint_domain_name)
          @public_endpoint_enabled = args[:public_endpoint_enabled] if args.key?(:public_endpoint_enabled)
          @satisfies_pzi = args[:satisfies_pzi] if args.key?(:satisfies_pzi)
          @satisfies_pzs = args[:satisfies_pzs] if args.key?(:satisfies_pzs)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # IndexPrivateEndpoints proto is used to provide paths for users to send
      # requests via private endpoints (e.g. private service access, private service
      # connect). To send request via private service access, use match_grpc_address.
      # To send request via private service connect, use service_attachment.
      class GoogleCloudAiplatformV1IndexPrivateEndpoints
        include Google::Apis::Core::Hashable
      
        # Output only. The ip address used to send match gRPC requests.
        # Corresponds to the JSON property `matchGrpcAddress`
        # @return [String]
        attr_accessor :match_grpc_address
      
        # Output only. PscAutomatedEndpoints is populated if private service connect is
        # enabled if PscAutomatedConfig is set.
        # Corresponds to the JSON property `pscAutomatedEndpoints`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PscAutomatedEndpoints>]
        attr_accessor :psc_automated_endpoints
      
        # Output only. The name of the service attachment resource. Populated if private
        # service connect is enabled.
        # Corresponds to the JSON property `serviceAttachment`
        # @return [String]
        attr_accessor :service_attachment
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @match_grpc_address = args[:match_grpc_address] if args.key?(:match_grpc_address)
          @psc_automated_endpoints = args[:psc_automated_endpoints] if args.key?(:psc_automated_endpoints)
          @service_attachment = args[:service_attachment] if args.key?(:service_attachment)
        end
      end
      
      # Stats of the Index.
      class GoogleCloudAiplatformV1IndexStats
        include Google::Apis::Core::Hashable
      
        # Output only. The number of shards in the Index.
        # Corresponds to the JSON property `shardsCount`
        # @return [Fixnum]
        attr_accessor :shards_count
      
        # Output only. The number of sparse vectors in the Index.
        # Corresponds to the JSON property `sparseVectorsCount`
        # @return [Fixnum]
        attr_accessor :sparse_vectors_count
      
        # Output only. The number of dense vectors in the Index.
        # Corresponds to the JSON property `vectorsCount`
        # @return [Fixnum]
        attr_accessor :vectors_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @shards_count = args[:shards_count] if args.key?(:shards_count)
          @sparse_vectors_count = args[:sparse_vectors_count] if args.key?(:sparse_vectors_count)
          @vectors_count = args[:vectors_count] if args.key?(:vectors_count)
        end
      end
      
      # Specifies Vertex AI owned input data to be used for training, and possibly
      # evaluating, the Model.
      class GoogleCloudAiplatformV1InputDataConfig
        include Google::Apis::Core::Hashable
      
        # Applicable only to custom training with Datasets that have DataItems and
        # Annotations. Cloud Storage URI that points to a YAML file describing the
        # annotation schema. The schema is defined as an OpenAPI 3.0.2 [Schema Object](
        # https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#
        # schemaObject). The schema files that can be used here are found in gs://google-
        # cloud-aiplatform/schema/dataset/annotation/ , note that the chosen schema must
        # be consistent with metadata of the Dataset specified by dataset_id. Only
        # Annotations that both match this schema and belong to DataItems not ignored by
        # the split method are used in respectively training, validation or test role,
        # depending on the role of the DataItem they are on. When used in conjunction
        # with annotations_filter, the Annotations used for training are filtered by
        # both annotations_filter and annotation_schema_uri.
        # Corresponds to the JSON property `annotationSchemaUri`
        # @return [String]
        attr_accessor :annotation_schema_uri
      
        # Applicable only to Datasets that have DataItems and Annotations. A filter on
        # Annotations of the Dataset. Only Annotations that both match this filter and
        # belong to DataItems not ignored by the split method are used in respectively
        # training, validation or test role, depending on the role of the DataItem they
        # are on (for the auto-assigned that role is decided by Vertex AI). A filter
        # with same syntax as the one used in ListAnnotations may be used, but note here
        # it filters across all Annotations of the Dataset, and not just within a single
        # DataItem.
        # Corresponds to the JSON property `annotationsFilter`
        # @return [String]
        attr_accessor :annotations_filter
      
        # The BigQuery location for the output content.
        # Corresponds to the JSON property `bigqueryDestination`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BigQueryDestination]
        attr_accessor :bigquery_destination
      
        # Required. The ID of the Dataset in the same Project and Location which data
        # will be used to train the Model. The Dataset must use schema compatible with
        # Model being trained, and what is compatible should be described in the used
        # TrainingPipeline's training_task_definition. For tabular Datasets, all their
        # data is exported to training, to pick and choose from.
        # Corresponds to the JSON property `datasetId`
        # @return [String]
        attr_accessor :dataset_id
      
        # Assigns input data to training, validation, and test sets based on the given
        # filters, data pieces not matched by any filter are ignored. Currently only
        # supported for Datasets containing DataItems. If any of the filters in this
        # message are to match nothing, then they can be set as '-' (the minus sign).
        # Supported only for unstructured Datasets.
        # Corresponds to the JSON property `filterSplit`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FilterSplit]
        attr_accessor :filter_split
      
        # Assigns the input data to training, validation, and test sets as per the given
        # fractions. Any of `training_fraction`, `validation_fraction` and `
        # test_fraction` may optionally be provided, they must sum to up to 1. If the
        # provided ones sum to less than 1, the remainder is assigned to sets as decided
        # by Vertex AI. If none of the fractions are set, by default roughly 80% of data
        # is used for training, 10% for validation, and 10% for test.
        # Corresponds to the JSON property `fractionSplit`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FractionSplit]
        attr_accessor :fraction_split
      
        # The Google Cloud Storage location where the output is to be written to.
        # Corresponds to the JSON property `gcsDestination`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GcsDestination]
        attr_accessor :gcs_destination
      
        # Whether to persist the ML use assignment to data item system labels.
        # Corresponds to the JSON property `persistMlUseAssignment`
        # @return [Boolean]
        attr_accessor :persist_ml_use_assignment
        alias_method :persist_ml_use_assignment?, :persist_ml_use_assignment
      
        # Assigns input data to training, validation, and test sets based on the value
        # of a provided key. Supported only for tabular Datasets.
        # Corresponds to the JSON property `predefinedSplit`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PredefinedSplit]
        attr_accessor :predefined_split
      
        # Only applicable to Datasets that have SavedQueries. The ID of a SavedQuery (
        # annotation set) under the Dataset specified by dataset_id used for filtering
        # Annotations for training. Only Annotations that are associated with this
        # SavedQuery are used in respectively training. When used in conjunction with
        # annotations_filter, the Annotations used for training are filtered by both
        # saved_query_id and annotations_filter. Only one of saved_query_id and
        # annotation_schema_uri should be specified as both of them represent the same
        # thing: problem type.
        # Corresponds to the JSON property `savedQueryId`
        # @return [String]
        attr_accessor :saved_query_id
      
        # Assigns input data to the training, validation, and test sets so that the
        # distribution of values found in the categorical column (as specified by the `
        # key` field) is mirrored within each split. The fraction values determine the
        # relative sizes of the splits. For example, if the specified column has three
        # values, with 50% of the rows having value "A", 25% value "B", and 25% value "C"
        # , and the split fractions are specified as 80/10/10, then the training set
        # will constitute 80% of the training data, with about 50% of the training set
        # rows having the value "A" for the specified column, about 25% having the value
        # "B", and about 25% having the value "C". Only the top 500 occurring values are
        # used; any values not in the top 500 values are randomly assigned to a split.
        # If less than three rows contain a specific value, those rows are randomly
        # assigned. Supported only for tabular Datasets.
        # Corresponds to the JSON property `stratifiedSplit`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1StratifiedSplit]
        attr_accessor :stratified_split
      
        # Assigns input data to training, validation, and test sets based on a provided
        # timestamps. The youngest data pieces are assigned to training set, next to
        # validation set, and the oldest to the test set. Supported only for tabular
        # Datasets.
        # Corresponds to the JSON property `timestampSplit`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TimestampSplit]
        attr_accessor :timestamp_split
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @annotation_schema_uri = args[:annotation_schema_uri] if args.key?(:annotation_schema_uri)
          @annotations_filter = args[:annotations_filter] if args.key?(:annotations_filter)
          @bigquery_destination = args[:bigquery_destination] if args.key?(:bigquery_destination)
          @dataset_id = args[:dataset_id] if args.key?(:dataset_id)
          @filter_split = args[:filter_split] if args.key?(:filter_split)
          @fraction_split = args[:fraction_split] if args.key?(:fraction_split)
          @gcs_destination = args[:gcs_destination] if args.key?(:gcs_destination)
          @persist_ml_use_assignment = args[:persist_ml_use_assignment] if args.key?(:persist_ml_use_assignment)
          @predefined_split = args[:predefined_split] if args.key?(:predefined_split)
          @saved_query_id = args[:saved_query_id] if args.key?(:saved_query_id)
          @stratified_split = args[:stratified_split] if args.key?(:stratified_split)
          @timestamp_split = args[:timestamp_split] if args.key?(:timestamp_split)
        end
      end
      
      # A list of int64 values.
      class GoogleCloudAiplatformV1Int64Array
        include Google::Apis::Core::Hashable
      
        # A list of int64 values.
        # Corresponds to the JSON property `values`
        # @return [Array<Fixnum>]
        attr_accessor :values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @values = args[:values] if args.key?(:values)
        end
      end
      
      # An attribution method that computes the Aumann-Shapley value taking advantage
      # of the model's fully differentiable structure. Refer to this paper for more
      # details: https://arxiv.org/abs/1703.01365
      class GoogleCloudAiplatformV1IntegratedGradientsAttribution
        include Google::Apis::Core::Hashable
      
        # Config for blur baseline. When enabled, a linear path from the maximally
        # blurred image to the input image is created. Using a blurred baseline instead
        # of zero (black image) is motivated by the BlurIG approach explained here:
        # https://arxiv.org/abs/2004.03383
        # Corresponds to the JSON property `blurBaselineConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BlurBaselineConfig]
        attr_accessor :blur_baseline_config
      
        # Config for SmoothGrad approximation of gradients. When enabled, the gradients
        # are approximated by averaging the gradients from noisy samples in the vicinity
        # of the inputs. Adding noise can help improve the computed gradients. Refer to
        # this paper for more details: https://arxiv.org/pdf/1706.03825.pdf
        # Corresponds to the JSON property `smoothGradConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SmoothGradConfig]
        attr_accessor :smooth_grad_config
      
        # Required. The number of steps for approximating the path integral. A good
        # value to start is 50 and gradually increase until the sum to diff property is
        # within the desired error range. Valid range of its value is [1, 100],
        # inclusively.
        # Corresponds to the JSON property `stepCount`
        # @return [Fixnum]
        attr_accessor :step_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @blur_baseline_config = args[:blur_baseline_config] if args.key?(:blur_baseline_config)
          @smooth_grad_config = args[:smooth_grad_config] if args.key?(:smooth_grad_config)
          @step_count = args[:step_count] if args.key?(:step_count)
        end
      end
      
      # Request message for PredictionService.Invoke.
      class GoogleCloudAiplatformV1InvokeRequest
        include Google::Apis::Core::Hashable
      
        # ID of the DeployedModel that serves the invoke request.
        # Corresponds to the JSON property `deployedModelId`
        # @return [String]
        attr_accessor :deployed_model_id
      
        # Message that represents an arbitrary HTTP body. It should only be used for
        # payload formats that can't be represented as JSON, such as raw binary or an
        # HTML page. This message can be used both in streaming and non-streaming API
        # methods in the request as well as the response. It can be used as a top-level
        # request field, which is convenient if one wants to extract parameters from
        # either the URL or HTTP template into the request fields and also want access
        # to the raw HTTP body. Example: message GetResourceRequest ` // A unique
        # request id. string request_id = 1; // The raw HTTP body is bound to this field.
        # google.api.HttpBody http_body = 2; ` service ResourceService ` rpc
        # GetResource(GetResourceRequest) returns (google.api.HttpBody); rpc
        # UpdateResource(google.api.HttpBody) returns (google.protobuf.Empty); ` Example
        # with streaming methods: service CaldavService ` rpc GetCalendar(stream google.
        # api.HttpBody) returns (stream google.api.HttpBody); rpc UpdateCalendar(stream
        # google.api.HttpBody) returns (stream google.api.HttpBody); ` Use of this type
        # only changes how the request and response bodies are handled, all other
        # features will continue to work unchanged.
        # Corresponds to the JSON property `httpBody`
        # @return [Google::Apis::AiplatformV1::GoogleApiHttpBody]
        attr_accessor :http_body
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @deployed_model_id = args[:deployed_model_id] if args.key?(:deployed_model_id)
          @http_body = args[:http_body] if args.key?(:http_body)
        end
      end
      
      # The Jira source for the ImportRagFilesRequest.
      class GoogleCloudAiplatformV1JiraSource
        include Google::Apis::Core::Hashable
      
        # Required. The Jira queries.
        # Corresponds to the JSON property `jiraQueries`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1JiraSourceJiraQueries>]
        attr_accessor :jira_queries
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @jira_queries = args[:jira_queries] if args.key?(:jira_queries)
        end
      end
      
      # JiraQueries contains the Jira queries and corresponding authentication.
      class GoogleCloudAiplatformV1JiraSourceJiraQueries
        include Google::Apis::Core::Hashable
      
        # The API secret.
        # Corresponds to the JSON property `apiKeyConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ApiAuthApiKeyConfig]
        attr_accessor :api_key_config
      
        # A list of custom Jira queries to import. For information about JQL (Jira Query
        # Language), see https://support.atlassian.com/jira-service-management-cloud/
        # docs/use-advanced-search-with-jira-query-language-jql/
        # Corresponds to the JSON property `customQueries`
        # @return [Array<String>]
        attr_accessor :custom_queries
      
        # Required. The Jira email address.
        # Corresponds to the JSON property `email`
        # @return [String]
        attr_accessor :email
      
        # A list of Jira projects to import in their entirety.
        # Corresponds to the JSON property `projects`
        # @return [Array<String>]
        attr_accessor :projects
      
        # Required. The Jira server URI.
        # Corresponds to the JSON property `serverUri`
        # @return [String]
        attr_accessor :server_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @api_key_config = args[:api_key_config] if args.key?(:api_key_config)
          @custom_queries = args[:custom_queries] if args.key?(:custom_queries)
          @email = args[:email] if args.key?(:email)
          @projects = args[:projects] if args.key?(:projects)
          @server_uri = args[:server_uri] if args.key?(:server_uri)
        end
      end
      
      # Specification for an LLM based metric.
      class GoogleCloudAiplatformV1LlmBasedMetricSpec
        include Google::Apis::Core::Hashable
      
        # Optional. Optional additional configuration for the metric.
        # Corresponds to the JSON property `additionalConfig`
        # @return [Hash<String,Object>]
        attr_accessor :additional_config
      
        # The configs for autorater. This is applicable to both EvaluateInstances and
        # EvaluateDataset.
        # Corresponds to the JSON property `judgeAutoraterConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1AutoraterConfig]
        attr_accessor :judge_autorater_config
      
        # Required. Template for the prompt sent to the judge model.
        # Corresponds to the JSON property `metricPromptTemplate`
        # @return [String]
        attr_accessor :metric_prompt_template
      
        # The spec for a pre-defined metric.
        # Corresponds to the JSON property `predefinedRubricGenerationSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PredefinedMetricSpec]
        attr_accessor :predefined_rubric_generation_spec
      
        # Specification for how rubrics should be generated.
        # Corresponds to the JSON property `rubricGenerationSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RubricGenerationSpec]
        attr_accessor :rubric_generation_spec
      
        # Use a pre-defined group of rubrics associated with the input. Refers to a key
        # in the rubric_groups map of EvaluationInstance.
        # Corresponds to the JSON property `rubricGroupKey`
        # @return [String]
        attr_accessor :rubric_group_key
      
        # Optional. System instructions for the judge model.
        # Corresponds to the JSON property `systemInstruction`
        # @return [String]
        attr_accessor :system_instruction
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @additional_config = args[:additional_config] if args.key?(:additional_config)
          @judge_autorater_config = args[:judge_autorater_config] if args.key?(:judge_autorater_config)
          @metric_prompt_template = args[:metric_prompt_template] if args.key?(:metric_prompt_template)
          @predefined_rubric_generation_spec = args[:predefined_rubric_generation_spec] if args.key?(:predefined_rubric_generation_spec)
          @rubric_generation_spec = args[:rubric_generation_spec] if args.key?(:rubric_generation_spec)
          @rubric_group_key = args[:rubric_group_key] if args.key?(:rubric_group_key)
          @system_instruction = args[:system_instruction] if args.key?(:system_instruction)
        end
      end
      
      # Contains information about the Large Model.
      class GoogleCloudAiplatformV1LargeModelReference
        include Google::Apis::Core::Hashable
      
        # Required. The unique name of the large Foundation or pre-built model. Like "
        # chat-bison", "text-bison". Or model name with version ID, like "chat-bison@001"
        # , "text-bison@005", etc.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @name = args[:name] if args.key?(:name)
        end
      end
      
      # A subgraph of the overall lineage graph. Event edges connect Artifact and
      # Execution nodes.
      class GoogleCloudAiplatformV1LineageSubgraph
        include Google::Apis::Core::Hashable
      
        # The Artifact nodes in the subgraph.
        # Corresponds to the JSON property `artifacts`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Artifact>]
        attr_accessor :artifacts
      
        # The Event edges between Artifacts and Executions in the subgraph.
        # Corresponds to the JSON property `events`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Event>]
        attr_accessor :events
      
        # The Execution nodes in the subgraph.
        # Corresponds to the JSON property `executions`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Execution>]
        attr_accessor :executions
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @artifacts = args[:artifacts] if args.key?(:artifacts)
          @events = args[:events] if args.key?(:events)
          @executions = args[:executions] if args.key?(:executions)
        end
      end
      
      # Response message for DatasetService.ListAnnotations.
      class GoogleCloudAiplatformV1ListAnnotationsResponse
        include Google::Apis::Core::Hashable
      
        # A list of Annotations that matches the specified filter in the request.
        # Corresponds to the JSON property `annotations`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Annotation>]
        attr_accessor :annotations
      
        # The standard List next-page token.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @annotations = args[:annotations] if args.key?(:annotations)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for MetadataService.ListArtifacts.
      class GoogleCloudAiplatformV1ListArtifactsResponse
        include Google::Apis::Core::Hashable
      
        # The Artifacts retrieved from the MetadataStore.
        # Corresponds to the JSON property `artifacts`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Artifact>]
        attr_accessor :artifacts
      
        # A token, which can be sent as ListArtifactsRequest.page_token to retrieve the
        # next page. If this field is not populated, there are no subsequent pages.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @artifacts = args[:artifacts] if args.key?(:artifacts)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for JobService.ListBatchPredictionJobs
      class GoogleCloudAiplatformV1ListBatchPredictionJobsResponse
        include Google::Apis::Core::Hashable
      
        # List of BatchPredictionJobs in the requested page.
        # Corresponds to the JSON property `batchPredictionJobs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BatchPredictionJob>]
        attr_accessor :batch_prediction_jobs
      
        # A token to retrieve the next page of results. Pass to
        # ListBatchPredictionJobsRequest.page_token to obtain that page.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @batch_prediction_jobs = args[:batch_prediction_jobs] if args.key?(:batch_prediction_jobs)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response with a list of CachedContents.
      class GoogleCloudAiplatformV1ListCachedContentsResponse
        include Google::Apis::Core::Hashable
      
        # List of cached contents.
        # Corresponds to the JSON property `cachedContents`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CachedContent>]
        attr_accessor :cached_contents
      
        # A token, which can be sent as `page_token` to retrieve the next page. If this
        # field is omitted, there are no subsequent pages.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @cached_contents = args[:cached_contents] if args.key?(:cached_contents)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for MetadataService.ListContexts.
      class GoogleCloudAiplatformV1ListContextsResponse
        include Google::Apis::Core::Hashable
      
        # The Contexts retrieved from the MetadataStore.
        # Corresponds to the JSON property `contexts`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Context>]
        attr_accessor :contexts
      
        # A token, which can be sent as ListContextsRequest.page_token to retrieve the
        # next page. If this field is not populated, there are no subsequent pages.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @contexts = args[:contexts] if args.key?(:contexts)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for JobService.ListCustomJobs
      class GoogleCloudAiplatformV1ListCustomJobsResponse
        include Google::Apis::Core::Hashable
      
        # List of CustomJobs in the requested page.
        # Corresponds to the JSON property `customJobs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CustomJob>]
        attr_accessor :custom_jobs
      
        # A token to retrieve the next page of results. Pass to ListCustomJobsRequest.
        # page_token to obtain that page.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @custom_jobs = args[:custom_jobs] if args.key?(:custom_jobs)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for DatasetService.ListDataItems.
      class GoogleCloudAiplatformV1ListDataItemsResponse
        include Google::Apis::Core::Hashable
      
        # A list of DataItems that matches the specified filter in the request.
        # Corresponds to the JSON property `dataItems`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DataItem>]
        attr_accessor :data_items
      
        # The standard List next-page token.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @data_items = args[:data_items] if args.key?(:data_items)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for JobService.ListDataLabelingJobs.
      class GoogleCloudAiplatformV1ListDataLabelingJobsResponse
        include Google::Apis::Core::Hashable
      
        # A list of DataLabelingJobs that matches the specified filter in the request.
        # Corresponds to the JSON property `dataLabelingJobs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DataLabelingJob>]
        attr_accessor :data_labeling_jobs
      
        # The standard List next-page token.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @data_labeling_jobs = args[:data_labeling_jobs] if args.key?(:data_labeling_jobs)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for DatasetService.ListDatasetVersions.
      class GoogleCloudAiplatformV1ListDatasetVersionsResponse
        include Google::Apis::Core::Hashable
      
        # A list of DatasetVersions that matches the specified filter in the request.
        # Corresponds to the JSON property `datasetVersions`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DatasetVersion>]
        attr_accessor :dataset_versions
      
        # The standard List next-page token.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @dataset_versions = args[:dataset_versions] if args.key?(:dataset_versions)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for DatasetService.ListDatasets.
      class GoogleCloudAiplatformV1ListDatasetsResponse
        include Google::Apis::Core::Hashable
      
        # A list of Datasets that matches the specified filter in the request.
        # Corresponds to the JSON property `datasets`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Dataset>]
        attr_accessor :datasets
      
        # The standard List next-page token.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @datasets = args[:datasets] if args.key?(:datasets)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for ListDeploymentResourcePools method.
      class GoogleCloudAiplatformV1ListDeploymentResourcePoolsResponse
        include Google::Apis::Core::Hashable
      
        # The DeploymentResourcePools from the specified location.
        # Corresponds to the JSON property `deploymentResourcePools`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DeploymentResourcePool>]
        attr_accessor :deployment_resource_pools
      
        # A token, which can be sent as `page_token` to retrieve the next page. If this
        # field is omitted, there are no subsequent pages.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @deployment_resource_pools = args[:deployment_resource_pools] if args.key?(:deployment_resource_pools)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for EndpointService.ListEndpoints.
      class GoogleCloudAiplatformV1ListEndpointsResponse
        include Google::Apis::Core::Hashable
      
        # List of Endpoints in the requested page.
        # Corresponds to the JSON property `endpoints`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Endpoint>]
        attr_accessor :endpoints
      
        # A token to retrieve the next page of results. Pass to ListEndpointsRequest.
        # page_token to obtain that page.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @endpoints = args[:endpoints] if args.key?(:endpoints)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for FeaturestoreService.ListEntityTypes.
      class GoogleCloudAiplatformV1ListEntityTypesResponse
        include Google::Apis::Core::Hashable
      
        # The EntityTypes matching the request.
        # Corresponds to the JSON property `entityTypes`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EntityType>]
        attr_accessor :entity_types
      
        # A token, which can be sent as ListEntityTypesRequest.page_token to retrieve
        # the next page. If this field is omitted, there are no subsequent pages.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entity_types = args[:entity_types] if args.key?(:entity_types)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for EvaluationManagementService.ListEvaluationItems.
      class GoogleCloudAiplatformV1ListEvaluationItemsResponse
        include Google::Apis::Core::Hashable
      
        # List of EvaluationItems in the requested page.
        # Corresponds to the JSON property `evaluationItems`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationItem>]
        attr_accessor :evaluation_items
      
        # A token to retrieve the next page of results.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @evaluation_items = args[:evaluation_items] if args.key?(:evaluation_items)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for EvaluationManagementService.ListEvaluationRuns.
      class GoogleCloudAiplatformV1ListEvaluationRunsResponse
        include Google::Apis::Core::Hashable
      
        # List of EvaluationRuns in the requested page.
        # Corresponds to the JSON property `evaluationRuns`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationRun>]
        attr_accessor :evaluation_runs
      
        # A token to retrieve the next page of results.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @evaluation_runs = args[:evaluation_runs] if args.key?(:evaluation_runs)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for EvaluationManagementService.ListEvaluationSets.
      class GoogleCloudAiplatformV1ListEvaluationSetsResponse
        include Google::Apis::Core::Hashable
      
        # List of EvaluationSets in the requested page.
        # Corresponds to the JSON property `evaluationSets`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EvaluationSet>]
        attr_accessor :evaluation_sets
      
        # A token to retrieve the next page of results.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @evaluation_sets = args[:evaluation_sets] if args.key?(:evaluation_sets)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for MetadataService.ListExecutions.
      class GoogleCloudAiplatformV1ListExecutionsResponse
        include Google::Apis::Core::Hashable
      
        # The Executions retrieved from the MetadataStore.
        # Corresponds to the JSON property `executions`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Execution>]
        attr_accessor :executions
      
        # A token, which can be sent as ListExecutionsRequest.page_token to retrieve the
        # next page. If this field is not populated, there are no subsequent pages.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @executions = args[:executions] if args.key?(:executions)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for FeatureRegistryService.ListFeatureGroups.
      class GoogleCloudAiplatformV1ListFeatureGroupsResponse
        include Google::Apis::Core::Hashable
      
        # The FeatureGroups matching the request.
        # Corresponds to the JSON property `featureGroups`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureGroup>]
        attr_accessor :feature_groups
      
        # A token, which can be sent as ListFeatureGroupsRequest.page_token to retrieve
        # the next page. If this field is omitted, there are no subsequent pages.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @feature_groups = args[:feature_groups] if args.key?(:feature_groups)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for FeatureOnlineStoreAdminService.ListFeatureOnlineStores.
      class GoogleCloudAiplatformV1ListFeatureOnlineStoresResponse
        include Google::Apis::Core::Hashable
      
        # The FeatureOnlineStores matching the request.
        # Corresponds to the JSON property `featureOnlineStores`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureOnlineStore>]
        attr_accessor :feature_online_stores
      
        # A token, which can be sent as ListFeatureOnlineStoresRequest.page_token to
        # retrieve the next page. If this field is omitted, there are no subsequent
        # pages.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @feature_online_stores = args[:feature_online_stores] if args.key?(:feature_online_stores)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for FeatureOnlineStoreAdminService.ListFeatureViewSyncs.
      class GoogleCloudAiplatformV1ListFeatureViewSyncsResponse
        include Google::Apis::Core::Hashable
      
        # The FeatureViewSyncs matching the request.
        # Corresponds to the JSON property `featureViewSyncs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureViewSync>]
        attr_accessor :feature_view_syncs
      
        # A token, which can be sent as ListFeatureViewSyncsRequest.page_token to
        # retrieve the next page. If this field is omitted, there are no subsequent
        # pages.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @feature_view_syncs = args[:feature_view_syncs] if args.key?(:feature_view_syncs)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for FeatureOnlineStoreAdminService.ListFeatureViews.
      class GoogleCloudAiplatformV1ListFeatureViewsResponse
        include Google::Apis::Core::Hashable
      
        # The FeatureViews matching the request.
        # Corresponds to the JSON property `featureViews`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureView>]
        attr_accessor :feature_views
      
        # A token, which can be sent as ListFeatureViewsRequest.page_token to retrieve
        # the next page. If this field is omitted, there are no subsequent pages.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @feature_views = args[:feature_views] if args.key?(:feature_views)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for FeaturestoreService.ListFeatures. Response message for
      # FeatureRegistryService.ListFeatures.
      class GoogleCloudAiplatformV1ListFeaturesResponse
        include Google::Apis::Core::Hashable
      
        # The Features matching the request.
        # Corresponds to the JSON property `features`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Feature>]
        attr_accessor :features
      
        # A token, which can be sent as ListFeaturesRequest.page_token to retrieve the
        # next page. If this field is omitted, there are no subsequent pages.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @features = args[:features] if args.key?(:features)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for FeaturestoreService.ListFeaturestores.
      class GoogleCloudAiplatformV1ListFeaturestoresResponse
        include Google::Apis::Core::Hashable
      
        # The Featurestores matching the request.
        # Corresponds to the JSON property `featurestores`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Featurestore>]
        attr_accessor :featurestores
      
        # A token, which can be sent as ListFeaturestoresRequest.page_token to retrieve
        # the next page. If this field is omitted, there are no subsequent pages.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @featurestores = args[:featurestores] if args.key?(:featurestores)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for JobService.ListHyperparameterTuningJobs
      class GoogleCloudAiplatformV1ListHyperparameterTuningJobsResponse
        include Google::Apis::Core::Hashable
      
        # List of HyperparameterTuningJobs in the requested page.
        # HyperparameterTuningJob.trials of the jobs will be not be returned.
        # Corresponds to the JSON property `hyperparameterTuningJobs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1HyperparameterTuningJob>]
        attr_accessor :hyperparameter_tuning_jobs
      
        # A token to retrieve the next page of results. Pass to
        # ListHyperparameterTuningJobsRequest.page_token to obtain that page.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @hyperparameter_tuning_jobs = args[:hyperparameter_tuning_jobs] if args.key?(:hyperparameter_tuning_jobs)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for IndexEndpointService.ListIndexEndpoints.
      class GoogleCloudAiplatformV1ListIndexEndpointsResponse
        include Google::Apis::Core::Hashable
      
        # List of IndexEndpoints in the requested page.
        # Corresponds to the JSON property `indexEndpoints`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1IndexEndpoint>]
        attr_accessor :index_endpoints
      
        # A token to retrieve next page of results. Pass to ListIndexEndpointsRequest.
        # page_token to obtain that page.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @index_endpoints = args[:index_endpoints] if args.key?(:index_endpoints)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for IndexService.ListIndexes.
      class GoogleCloudAiplatformV1ListIndexesResponse
        include Google::Apis::Core::Hashable
      
        # List of indexes in the requested page.
        # Corresponds to the JSON property `indexes`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Index>]
        attr_accessor :indexes
      
        # A token to retrieve next page of results. Pass to ListIndexesRequest.
        # page_token to obtain that page.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @indexes = args[:indexes] if args.key?(:indexes)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for MetadataService.ListMetadataSchemas.
      class GoogleCloudAiplatformV1ListMetadataSchemasResponse
        include Google::Apis::Core::Hashable
      
        # The MetadataSchemas found for the MetadataStore.
        # Corresponds to the JSON property `metadataSchemas`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1MetadataSchema>]
        attr_accessor :metadata_schemas
      
        # A token, which can be sent as ListMetadataSchemasRequest.page_token to
        # retrieve the next page. If this field is not populated, there are no
        # subsequent pages.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @metadata_schemas = args[:metadata_schemas] if args.key?(:metadata_schemas)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for MetadataService.ListMetadataStores.
      class GoogleCloudAiplatformV1ListMetadataStoresResponse
        include Google::Apis::Core::Hashable
      
        # The MetadataStores found for the Location.
        # Corresponds to the JSON property `metadataStores`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1MetadataStore>]
        attr_accessor :metadata_stores
      
        # A token, which can be sent as ListMetadataStoresRequest.page_token to retrieve
        # the next page. If this field is not populated, there are no subsequent pages.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @metadata_stores = args[:metadata_stores] if args.key?(:metadata_stores)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for JobService.ListModelDeploymentMonitoringJobs.
      class GoogleCloudAiplatformV1ListModelDeploymentMonitoringJobsResponse
        include Google::Apis::Core::Hashable
      
        # A list of ModelDeploymentMonitoringJobs that matches the specified filter in
        # the request.
        # Corresponds to the JSON property `modelDeploymentMonitoringJobs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelDeploymentMonitoringJob>]
        attr_accessor :model_deployment_monitoring_jobs
      
        # The standard List next-page token.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @model_deployment_monitoring_jobs = args[:model_deployment_monitoring_jobs] if args.key?(:model_deployment_monitoring_jobs)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for ModelService.ListModelEvaluationSlices.
      class GoogleCloudAiplatformV1ListModelEvaluationSlicesResponse
        include Google::Apis::Core::Hashable
      
        # List of ModelEvaluations in the requested page.
        # Corresponds to the JSON property `modelEvaluationSlices`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelEvaluationSlice>]
        attr_accessor :model_evaluation_slices
      
        # A token to retrieve next page of results. Pass to
        # ListModelEvaluationSlicesRequest.page_token to obtain that page.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @model_evaluation_slices = args[:model_evaluation_slices] if args.key?(:model_evaluation_slices)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for ModelService.ListModelEvaluations.
      class GoogleCloudAiplatformV1ListModelEvaluationsResponse
        include Google::Apis::Core::Hashable
      
        # List of ModelEvaluations in the requested page.
        # Corresponds to the JSON property `modelEvaluations`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelEvaluation>]
        attr_accessor :model_evaluations
      
        # A token to retrieve next page of results. Pass to ListModelEvaluationsRequest.
        # page_token to obtain that page.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @model_evaluations = args[:model_evaluations] if args.key?(:model_evaluations)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for ModelService.ListModelVersionCheckpoints
      class GoogleCloudAiplatformV1ListModelVersionCheckpointsResponse
        include Google::Apis::Core::Hashable
      
        # List of Model Version checkpoints.
        # Corresponds to the JSON property `checkpoints`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelVersionCheckpoint>]
        attr_accessor :checkpoints
      
        # A token to retrieve the next page of results. Pass to
        # ListModelVersionCheckpointsRequest.page_token to obtain that page.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @checkpoints = args[:checkpoints] if args.key?(:checkpoints)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for ModelService.ListModelVersions
      class GoogleCloudAiplatformV1ListModelVersionsResponse
        include Google::Apis::Core::Hashable
      
        # List of Model versions in the requested page. In the returned Model name field,
        # version ID instead of regvision tag will be included.
        # Corresponds to the JSON property `models`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Model>]
        attr_accessor :models
      
        # A token to retrieve the next page of results. Pass to ListModelVersionsRequest.
        # page_token to obtain that page.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @models = args[:models] if args.key?(:models)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for ModelService.ListModels
      class GoogleCloudAiplatformV1ListModelsResponse
        include Google::Apis::Core::Hashable
      
        # List of Models in the requested page.
        # Corresponds to the JSON property `models`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Model>]
        attr_accessor :models
      
        # A token to retrieve next page of results. Pass to ListModelsRequest.page_token
        # to obtain that page.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @models = args[:models] if args.key?(:models)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for JobService.ListNasJobs
      class GoogleCloudAiplatformV1ListNasJobsResponse
        include Google::Apis::Core::Hashable
      
        # List of NasJobs in the requested page. NasJob.nas_job_output of the jobs will
        # not be returned.
        # Corresponds to the JSON property `nasJobs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NasJob>]
        attr_accessor :nas_jobs
      
        # A token to retrieve the next page of results. Pass to ListNasJobsRequest.
        # page_token to obtain that page.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @nas_jobs = args[:nas_jobs] if args.key?(:nas_jobs)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for JobService.ListNasTrialDetails
      class GoogleCloudAiplatformV1ListNasTrialDetailsResponse
        include Google::Apis::Core::Hashable
      
        # List of top NasTrials in the requested page.
        # Corresponds to the JSON property `nasTrialDetails`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NasTrialDetail>]
        attr_accessor :nas_trial_details
      
        # A token to retrieve the next page of results. Pass to
        # ListNasTrialDetailsRequest.page_token to obtain that page.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @nas_trial_details = args[:nas_trial_details] if args.key?(:nas_trial_details)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Response message for [NotebookService.CreateNotebookExecutionJob]
      class GoogleCloudAiplatformV1ListNotebookExecutionJobsResponse
        include Google::Apis::Core::Hashable
      
        # A token to retrieve next page of results. Pass to
        # ListNotebookExecutionJobsRequest.page_token to obtain that page.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # List of NotebookExecutionJobs in the requested page.
        # Corresponds to the JSON property `notebookExecutionJobs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NotebookExecutionJob>]
        attr_accessor :notebook_execution_jobs
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @notebook_execution_jobs = args[:notebook_execution_jobs] if args.key?(:notebook_execution_jobs)
        end
      end
      
      # Response message for NotebookService.ListNotebookRuntimeTemplates.
      class GoogleCloudAiplatformV1ListNotebookRuntimeTemplatesResponse
        include Google::Apis::Core::Hashable
      
        # A token to retrieve next page of results. Pass to
        # ListNotebookRuntimeTemplatesRequest.page_token to obtain that page.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # List of NotebookRuntimeTemplates in the requested page.
        # Corresponds to the JSON property `notebookRuntimeTemplates`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NotebookRuntimeTemplate>]
        attr_accessor :notebook_runtime_templates
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @notebook_runtime_templates = args[:notebook_runtime_templates] if args.key?(:notebook_runtime_templates)
        end
      end
      
      # Response message for NotebookService.ListNotebookRuntimes.
      class GoogleCloudAiplatformV1ListNotebookRuntimesResponse
        include Google::Apis::Core::Hashable
      
        # A token to retrieve next page of results. Pass to ListNotebookRuntimesRequest.
        # page_token to obtain that page.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # List of NotebookRuntimes in the requested page.
        # Corresponds to the JSON property `notebookRuntimes`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NotebookRuntime>]
        attr_accessor :notebook_runtimes
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @notebook_runtimes = args[:notebook_runtimes] if args.key?(:notebook_runtimes)
        end
      end
      
      # Request message for VizierService.ListOptimalTrials.
      class GoogleCloudAiplatformV1ListOptimalTrialsRequest
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Response message for VizierService.ListOptimalTrials.
      class GoogleCloudAiplatformV1ListOptimalTrialsResponse
        include Google::Apis::Core::Hashable
      
        # The pareto-optimal Trials for multiple objective Study or the optimal trial
        # for single objective Study. The definition of pareto-optimal can be checked in
        # wiki page. https://en.wikipedia.org/wiki/Pareto_efficiency
        # Corresponds to the JSON property `optimalTrials`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Trial>]
        attr_accessor :optimal_trials
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @optimal_trials = args[:optimal_trials] if args.key?(:optimal_trials)
        end
      end
      
      # Response message for PersistentResourceService.ListPersistentResources
      class GoogleCloudAiplatformV1ListPersistentResourcesResponse
        include Google::Apis::Core::Hashable
      
        # A token to retrieve next page of results. Pass to
        # ListPersistentResourcesRequest.page_token to obtain that page.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # 
        # Corresponds to the JSON property `persistentResources`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PersistentResource>]
        attr_accessor :persistent_resources
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @persistent_resources = args[:persistent_resources] if args.key?(:persistent_resources)
        end
      end
      
      # Response message for PipelineService.ListPipelineJobs
      class GoogleCloudAiplatformV1ListPipelineJobsResponse
        include Google::Apis::Core::Hashable
      
        # A token to retrieve the next page of results. Pass to ListPipelineJobsRequest.
        # page_token to obtain that page.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # List of PipelineJobs in the requested page.
        # Corresponds to the JSON property `pipelineJobs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PipelineJob>]
        attr_accessor :pipeline_jobs
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @pipeline_jobs = args[:pipeline_jobs] if args.key?(:pipeline_jobs)
        end
      end
      
      # Response message for VertexRagDataService.ListRagCorpora.
      class GoogleCloudAiplatformV1ListRagCorporaResponse
        include Google::Apis::Core::Hashable
      
        # A token to retrieve the next page of results. Pass to ListRagCorporaRequest.
        # page_token to obtain that page.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # List of RagCorpora in the requested page.
        # Corresponds to the JSON property `ragCorpora`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagCorpus>]
        attr_accessor :rag_corpora
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @rag_corpora = args[:rag_corpora] if args.key?(:rag_corpora)
        end
      end
      
      # Response message for VertexRagDataService.ListRagFiles.
      class GoogleCloudAiplatformV1ListRagFilesResponse
        include Google::Apis::Core::Hashable
      
        # A token to retrieve the next page of results. Pass to ListRagFilesRequest.
        # page_token to obtain that page.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # List of RagFiles in the requested page.
        # Corresponds to the JSON property `ragFiles`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagFile>]
        attr_accessor :rag_files
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @rag_files = args[:rag_files] if args.key?(:rag_files)
        end
      end
      
      # Response message for ReasoningEngineService.ListReasoningEngines
      class GoogleCloudAiplatformV1ListReasoningEnginesResponse
        include Google::Apis::Core::Hashable
      
        # A token to retrieve the next page of results. Pass to
        # ListReasoningEnginesRequest.page_token to obtain that page.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # List of ReasoningEngines in the requested page.
        # Corresponds to the JSON property `reasoningEngines`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ReasoningEngine>]
        attr_accessor :reasoning_engines
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @reasoning_engines = args[:reasoning_engines] if args.key?(:reasoning_engines)
        end
      end
      
      # Response message for DatasetService.ListSavedQueries.
      class GoogleCloudAiplatformV1ListSavedQueriesResponse
        include Google::Apis::Core::Hashable
      
        # The standard List next-page token.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # A list of SavedQueries that match the specified filter in the request.
        # Corresponds to the JSON property `savedQueries`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SavedQuery>]
        attr_accessor :saved_queries
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @saved_queries = args[:saved_queries] if args.key?(:saved_queries)
        end
      end
      
      # Response message for ScheduleService.ListSchedules
      class GoogleCloudAiplatformV1ListSchedulesResponse
        include Google::Apis::Core::Hashable
      
        # A token to retrieve the next page of results. Pass to ListSchedulesRequest.
        # page_token to obtain that page.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # List of Schedules in the requested page.
        # Corresponds to the JSON property `schedules`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Schedule>]
        attr_accessor :schedules
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @schedules = args[:schedules] if args.key?(:schedules)
        end
      end
      
      # Response message for SpecialistPoolService.ListSpecialistPools.
      class GoogleCloudAiplatformV1ListSpecialistPoolsResponse
        include Google::Apis::Core::Hashable
      
        # The standard List next-page token.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # A list of SpecialistPools that matches the specified filter in the request.
        # Corresponds to the JSON property `specialistPools`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SpecialistPool>]
        attr_accessor :specialist_pools
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @specialist_pools = args[:specialist_pools] if args.key?(:specialist_pools)
        end
      end
      
      # Response message for VizierService.ListStudies.
      class GoogleCloudAiplatformV1ListStudiesResponse
        include Google::Apis::Core::Hashable
      
        # Passes this token as the `page_token` field of the request for a subsequent
        # call. If this field is omitted, there are no subsequent pages.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # The studies associated with the project.
        # Corresponds to the JSON property `studies`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Study>]
        attr_accessor :studies
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @studies = args[:studies] if args.key?(:studies)
        end
      end
      
      # Response message for TensorboardService.ListTensorboardExperiments.
      class GoogleCloudAiplatformV1ListTensorboardExperimentsResponse
        include Google::Apis::Core::Hashable
      
        # A token, which can be sent as ListTensorboardExperimentsRequest.page_token to
        # retrieve the next page. If this field is omitted, there are no subsequent
        # pages.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # The TensorboardExperiments mathching the request.
        # Corresponds to the JSON property `tensorboardExperiments`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TensorboardExperiment>]
        attr_accessor :tensorboard_experiments
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @tensorboard_experiments = args[:tensorboard_experiments] if args.key?(:tensorboard_experiments)
        end
      end
      
      # Response message for TensorboardService.ListTensorboardRuns.
      class GoogleCloudAiplatformV1ListTensorboardRunsResponse
        include Google::Apis::Core::Hashable
      
        # A token, which can be sent as ListTensorboardRunsRequest.page_token to
        # retrieve the next page. If this field is omitted, there are no subsequent
        # pages.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # The TensorboardRuns mathching the request.
        # Corresponds to the JSON property `tensorboardRuns`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TensorboardRun>]
        attr_accessor :tensorboard_runs
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @tensorboard_runs = args[:tensorboard_runs] if args.key?(:tensorboard_runs)
        end
      end
      
      # Response message for TensorboardService.ListTensorboardTimeSeries.
      class GoogleCloudAiplatformV1ListTensorboardTimeSeriesResponse
        include Google::Apis::Core::Hashable
      
        # A token, which can be sent as ListTensorboardTimeSeriesRequest.page_token to
        # retrieve the next page. If this field is omitted, there are no subsequent
        # pages.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # The TensorboardTimeSeries mathching the request.
        # Corresponds to the JSON property `tensorboardTimeSeries`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TensorboardTimeSeries>]
        attr_accessor :tensorboard_time_series
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @tensorboard_time_series = args[:tensorboard_time_series] if args.key?(:tensorboard_time_series)
        end
      end
      
      # Response message for TensorboardService.ListTensorboards.
      class GoogleCloudAiplatformV1ListTensorboardsResponse
        include Google::Apis::Core::Hashable
      
        # A token, which can be sent as ListTensorboardsRequest.page_token to retrieve
        # the next page. If this field is omitted, there are no subsequent pages.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # The Tensorboards mathching the request.
        # Corresponds to the JSON property `tensorboards`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Tensorboard>]
        attr_accessor :tensorboards
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @tensorboards = args[:tensorboards] if args.key?(:tensorboards)
        end
      end
      
      # Response message for PipelineService.ListTrainingPipelines
      class GoogleCloudAiplatformV1ListTrainingPipelinesResponse
        include Google::Apis::Core::Hashable
      
        # A token to retrieve the next page of results. Pass to
        # ListTrainingPipelinesRequest.page_token to obtain that page.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # List of TrainingPipelines in the requested page.
        # Corresponds to the JSON property `trainingPipelines`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrainingPipeline>]
        attr_accessor :training_pipelines
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @training_pipelines = args[:training_pipelines] if args.key?(:training_pipelines)
        end
      end
      
      # Response message for VizierService.ListTrials.
      class GoogleCloudAiplatformV1ListTrialsResponse
        include Google::Apis::Core::Hashable
      
        # Pass this token as the `page_token` field of the request for a subsequent call.
        # If this field is omitted, there are no subsequent pages.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # The Trials associated with the Study.
        # Corresponds to the JSON property `trials`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Trial>]
        attr_accessor :trials
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @trials = args[:trials] if args.key?(:trials)
        end
      end
      
      # Response message for GenAiTuningService.ListTuningJobs
      class GoogleCloudAiplatformV1ListTuningJobsResponse
        include Google::Apis::Core::Hashable
      
        # A token to retrieve the next page of results. Pass to ListTuningJobsRequest.
        # page_token to obtain that page.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # List of TuningJobs in the requested page.
        # Corresponds to the JSON property `tuningJobs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TuningJob>]
        attr_accessor :tuning_jobs
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @tuning_jobs = args[:tuning_jobs] if args.key?(:tuning_jobs)
        end
      end
      
      # Logprobs Result
      class GoogleCloudAiplatformV1LogprobsResult
        include Google::Apis::Core::Hashable
      
        # Length = total number of decoding steps. The chosen candidates may or may not
        # be in top_candidates.
        # Corresponds to the JSON property `chosenCandidates`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1LogprobsResultCandidate>]
        attr_accessor :chosen_candidates
      
        # Length = total number of decoding steps.
        # Corresponds to the JSON property `topCandidates`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1LogprobsResultTopCandidates>]
        attr_accessor :top_candidates
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @chosen_candidates = args[:chosen_candidates] if args.key?(:chosen_candidates)
          @top_candidates = args[:top_candidates] if args.key?(:top_candidates)
        end
      end
      
      # Candidate for the logprobs token and score.
      class GoogleCloudAiplatformV1LogprobsResultCandidate
        include Google::Apis::Core::Hashable
      
        # The candidate's log probability.
        # Corresponds to the JSON property `logProbability`
        # @return [Float]
        attr_accessor :log_probability
      
        # The candidate's token string value.
        # Corresponds to the JSON property `token`
        # @return [String]
        attr_accessor :token
      
        # The candidate's token id value.
        # Corresponds to the JSON property `tokenId`
        # @return [Fixnum]
        attr_accessor :token_id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @log_probability = args[:log_probability] if args.key?(:log_probability)
          @token = args[:token] if args.key?(:token)
          @token_id = args[:token_id] if args.key?(:token_id)
        end
      end
      
      # Candidates with top log probabilities at each decoding step.
      class GoogleCloudAiplatformV1LogprobsResultTopCandidates
        include Google::Apis::Core::Hashable
      
        # Sorted by log probability in descending order.
        # Corresponds to the JSON property `candidates`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1LogprobsResultCandidate>]
        attr_accessor :candidates
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @candidates = args[:candidates] if args.key?(:candidates)
        end
      end
      
      # Request message for VizierService.LookupStudy.
      class GoogleCloudAiplatformV1LookupStudyRequest
        include Google::Apis::Core::Hashable
      
        # Required. The user-defined display name of the Study
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @display_name = args[:display_name] if args.key?(:display_name)
        end
      end
      
      # Represents a mount configuration for Lustre file system.
      class GoogleCloudAiplatformV1LustreMount
        include Google::Apis::Core::Hashable
      
        # Required. The name of the Lustre filesystem.
        # Corresponds to the JSON property `filesystem`
        # @return [String]
        attr_accessor :filesystem
      
        # Required. IP address of the Lustre instance.
        # Corresponds to the JSON property `instanceIp`
        # @return [String]
        attr_accessor :instance_ip
      
        # Required. Destination mount path. The Lustre file system will be mounted for
        # the user under /mnt/lustre/
        # Corresponds to the JSON property `mountPoint`
        # @return [String]
        attr_accessor :mount_point
      
        # Required. The unique identifier of the Lustre volume.
        # Corresponds to the JSON property `volumeHandle`
        # @return [String]
        attr_accessor :volume_handle
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @filesystem = args[:filesystem] if args.key?(:filesystem)
          @instance_ip = args[:instance_ip] if args.key?(:instance_ip)
          @mount_point = args[:mount_point] if args.key?(:mount_point)
          @volume_handle = args[:volume_handle] if args.key?(:volume_handle)
        end
      end
      
      # Specification of a single machine.
      class GoogleCloudAiplatformV1MachineSpec
        include Google::Apis::Core::Hashable
      
        # The number of accelerators to attach to the machine.
        # Corresponds to the JSON property `acceleratorCount`
        # @return [Fixnum]
        attr_accessor :accelerator_count
      
        # Immutable. The type of accelerator(s) that may be attached to the machine as
        # per accelerator_count.
        # Corresponds to the JSON property `acceleratorType`
        # @return [String]
        attr_accessor :accelerator_type
      
        # Immutable. The type of the machine. See the [list of machine types supported
        # for prediction](https://cloud.google.com/vertex-ai/docs/predictions/configure-
        # compute#machine-types) See the [list of machine types supported for custom
        # training](https://cloud.google.com/vertex-ai/docs/training/configure-compute#
        # machine-types). For DeployedModel this field is optional, and the default
        # value is `n1-standard-2`. For BatchPredictionJob or as part of WorkerPoolSpec
        # this field is required.
        # Corresponds to the JSON property `machineType`
        # @return [String]
        attr_accessor :machine_type
      
        # A ReservationAffinity can be used to configure a Vertex AI resource (e.g., a
        # DeployedModel) to draw its Compute Engine resources from a Shared Reservation,
        # or exclusively from on-demand capacity.
        # Corresponds to the JSON property `reservationAffinity`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ReservationAffinity]
        attr_accessor :reservation_affinity
      
        # Immutable. The topology of the TPUs. Corresponds to the TPU topologies
        # available from GKE. (Example: tpu_topology: "2x2x1").
        # Corresponds to the JSON property `tpuTopology`
        # @return [String]
        attr_accessor :tpu_topology
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @accelerator_count = args[:accelerator_count] if args.key?(:accelerator_count)
          @accelerator_type = args[:accelerator_type] if args.key?(:accelerator_type)
          @machine_type = args[:machine_type] if args.key?(:machine_type)
          @reservation_affinity = args[:reservation_affinity] if args.key?(:reservation_affinity)
          @tpu_topology = args[:tpu_topology] if args.key?(:tpu_topology)
        end
      end
      
      # Manual batch tuning parameters.
      class GoogleCloudAiplatformV1ManualBatchTuningParameters
        include Google::Apis::Core::Hashable
      
        # Immutable. The number of the records (e.g. instances) of the operation given
        # in each batch to a machine replica. Machine type, and size of a single record
        # should be considered when setting this parameter, higher value speeds up the
        # batch operation's execution, but too high value will result in a whole batch
        # not fitting in a machine's memory, and the whole operation will fail. The
        # default value is 64.
        # Corresponds to the JSON property `batchSize`
        # @return [Fixnum]
        attr_accessor :batch_size
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @batch_size = args[:batch_size] if args.key?(:batch_size)
        end
      end
      
      # A message representing a Measurement of a Trial. A Measurement contains the
      # Metrics got by executing a Trial using suggested hyperparameter values.
      class GoogleCloudAiplatformV1Measurement
        include Google::Apis::Core::Hashable
      
        # Output only. Time that the Trial has been running at the point of this
        # Measurement.
        # Corresponds to the JSON property `elapsedDuration`
        # @return [String]
        attr_accessor :elapsed_duration
      
        # Output only. A list of metrics got by evaluating the objective functions using
        # suggested Parameter values.
        # Corresponds to the JSON property `metrics`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1MeasurementMetric>]
        attr_accessor :metrics
      
        # Output only. The number of steps the machine learning model has been trained
        # for. Must be non-negative.
        # Corresponds to the JSON property `stepCount`
        # @return [Fixnum]
        attr_accessor :step_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @elapsed_duration = args[:elapsed_duration] if args.key?(:elapsed_duration)
          @metrics = args[:metrics] if args.key?(:metrics)
          @step_count = args[:step_count] if args.key?(:step_count)
        end
      end
      
      # A message representing a metric in the measurement.
      class GoogleCloudAiplatformV1MeasurementMetric
        include Google::Apis::Core::Hashable
      
        # Output only. The ID of the Metric. The Metric should be defined in StudySpec's
        # Metrics.
        # Corresponds to the JSON property `metricId`
        # @return [String]
        attr_accessor :metric_id
      
        # Output only. The value for this metric.
        # Corresponds to the JSON property `value`
        # @return [Float]
        attr_accessor :value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @metric_id = args[:metric_id] if args.key?(:metric_id)
          @value = args[:value] if args.key?(:value)
        end
      end
      
      # Request message for ModelService.MergeVersionAliases.
      class GoogleCloudAiplatformV1MergeVersionAliasesRequest
        include Google::Apis::Core::Hashable
      
        # Required. The set of version aliases to merge. The alias should be at most 128
        # characters, and match `a-z`0,126`[a-z-0-9]`. Add the `-` prefix to an alias
        # means removing that alias from the version. `-` is NOT counted in the 128
        # characters. Example: `-golden` means removing the `golden` alias from the
        # version. There is NO ordering in aliases, which means 1) The aliases returned
        # from GetModel API might not have the exactly same order from this
        # MergeVersionAliases API. 2) Adding and deleting the same alias in the request
        # is not recommended, and the 2 operations will be cancelled out.
        # Corresponds to the JSON property `versionAliases`
        # @return [Array<String>]
        attr_accessor :version_aliases
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @version_aliases = args[:version_aliases] if args.key?(:version_aliases)
        end
      end
      
      # Instance of a general MetadataSchema.
      class GoogleCloudAiplatformV1MetadataSchema
        include Google::Apis::Core::Hashable
      
        # Output only. Timestamp when this MetadataSchema was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Description of the Metadata Schema
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Output only. The resource name of the MetadataSchema.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Required. The raw YAML string representation of the MetadataSchema. The
        # combination of [MetadataSchema.version] and the schema name given by `title`
        # in [MetadataSchema.schema] must be unique within a MetadataStore. The schema
        # is defined as an OpenAPI 3.0.2 [MetadataSchema Object](https://github.com/OAI/
        # OpenAPI-Specification/blob/master/versions/3.0.2.md#schemaObject)
        # Corresponds to the JSON property `schema`
        # @return [String]
        attr_accessor :schema
      
        # The type of the MetadataSchema. This is a property that identifies which
        # metadata types will use the MetadataSchema.
        # Corresponds to the JSON property `schemaType`
        # @return [String]
        attr_accessor :schema_type
      
        # The version of the MetadataSchema. The version's format must match the
        # following regular expression: `^[0-9]+.+.+$`, which would allow to order/
        # compare different versions. Example: 1.0.0, 1.0.1, etc.
        # Corresponds to the JSON property `schemaVersion`
        # @return [String]
        attr_accessor :schema_version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @description = args[:description] if args.key?(:description)
          @name = args[:name] if args.key?(:name)
          @schema = args[:schema] if args.key?(:schema)
          @schema_type = args[:schema_type] if args.key?(:schema_type)
          @schema_version = args[:schema_version] if args.key?(:schema_version)
        end
      end
      
      # Instance of a metadata store. Contains a set of metadata that can be queried.
      class GoogleCloudAiplatformV1MetadataStore
        include Google::Apis::Core::Hashable
      
        # Output only. Timestamp when this MetadataStore was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Represents Dataplex integration settings.
        # Corresponds to the JSON property `dataplexConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1MetadataStoreDataplexConfig]
        attr_accessor :dataplex_config
      
        # Description of the MetadataStore.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Represents a customer-managed encryption key spec that can be applied to a top-
        # level resource.
        # Corresponds to the JSON property `encryptionSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EncryptionSpec]
        attr_accessor :encryption_spec
      
        # Output only. The resource name of the MetadataStore instance.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Represents state information for a MetadataStore.
        # Corresponds to the JSON property `state`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1MetadataStoreMetadataStoreState]
        attr_accessor :state
      
        # Output only. Timestamp when this MetadataStore was last updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @dataplex_config = args[:dataplex_config] if args.key?(:dataplex_config)
          @description = args[:description] if args.key?(:description)
          @encryption_spec = args[:encryption_spec] if args.key?(:encryption_spec)
          @name = args[:name] if args.key?(:name)
          @state = args[:state] if args.key?(:state)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # Represents Dataplex integration settings.
      class GoogleCloudAiplatformV1MetadataStoreDataplexConfig
        include Google::Apis::Core::Hashable
      
        # Optional. Whether or not Data Lineage synchronization is enabled for Vertex
        # Pipelines.
        # Corresponds to the JSON property `enabledPipelinesLineage`
        # @return [Boolean]
        attr_accessor :enabled_pipelines_lineage
        alias_method :enabled_pipelines_lineage?, :enabled_pipelines_lineage
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @enabled_pipelines_lineage = args[:enabled_pipelines_lineage] if args.key?(:enabled_pipelines_lineage)
        end
      end
      
      # Represents state information for a MetadataStore.
      class GoogleCloudAiplatformV1MetadataStoreMetadataStoreState
        include Google::Apis::Core::Hashable
      
        # The disk utilization of the MetadataStore in bytes.
        # Corresponds to the JSON property `diskUtilizationBytes`
        # @return [Fixnum]
        attr_accessor :disk_utilization_bytes
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @disk_utilization_bytes = args[:disk_utilization_bytes] if args.key?(:disk_utilization_bytes)
        end
      end
      
      # The metric used for running evaluations.
      class GoogleCloudAiplatformV1Metric
        include Google::Apis::Core::Hashable
      
        # Optional. The aggregation metrics to use.
        # Corresponds to the JSON property `aggregationMetrics`
        # @return [Array<String>]
        attr_accessor :aggregation_metrics
      
        # Spec for bleu score metric - calculates the precision of n-grams in the
        # prediction as compared to reference - returns a score ranging between 0 to 1.
        # Corresponds to the JSON property `bleuSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BleuSpec]
        attr_accessor :bleu_spec
      
        # Spec for exact match metric - returns 1 if prediction and reference exactly
        # matches, otherwise 0.
        # Corresponds to the JSON property `exactMatchSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExactMatchSpec]
        attr_accessor :exact_match_spec
      
        # Specification for an LLM based metric.
        # Corresponds to the JSON property `llmBasedMetricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1LlmBasedMetricSpec]
        attr_accessor :llm_based_metric_spec
      
        # Spec for pairwise metric.
        # Corresponds to the JSON property `pairwiseMetricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PairwiseMetricSpec]
        attr_accessor :pairwise_metric_spec
      
        # Spec for pointwise metric.
        # Corresponds to the JSON property `pointwiseMetricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PointwiseMetricSpec]
        attr_accessor :pointwise_metric_spec
      
        # The spec for a pre-defined metric.
        # Corresponds to the JSON property `predefinedMetricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PredefinedMetricSpec]
        attr_accessor :predefined_metric_spec
      
        # Spec for rouge score metric - calculates the recall of n-grams in prediction
        # as compared to reference - returns a score ranging between 0 and 1.
        # Corresponds to the JSON property `rougeSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RougeSpec]
        attr_accessor :rouge_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @aggregation_metrics = args[:aggregation_metrics] if args.key?(:aggregation_metrics)
          @bleu_spec = args[:bleu_spec] if args.key?(:bleu_spec)
          @exact_match_spec = args[:exact_match_spec] if args.key?(:exact_match_spec)
          @llm_based_metric_spec = args[:llm_based_metric_spec] if args.key?(:llm_based_metric_spec)
          @pairwise_metric_spec = args[:pairwise_metric_spec] if args.key?(:pairwise_metric_spec)
          @pointwise_metric_spec = args[:pointwise_metric_spec] if args.key?(:pointwise_metric_spec)
          @predefined_metric_spec = args[:predefined_metric_spec] if args.key?(:predefined_metric_spec)
          @rouge_spec = args[:rouge_spec] if args.key?(:rouge_spec)
        end
      end
      
      # Result for a single metric on a single instance.
      class GoogleCloudAiplatformV1MetricResult
        include Google::Apis::Core::Hashable
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `error`
        # @return [Google::Apis::AiplatformV1::GoogleRpcStatus]
        attr_accessor :error
      
        # Output only. The explanation for the metric result.
        # Corresponds to the JSON property `explanation`
        # @return [String]
        attr_accessor :explanation
      
        # Output only. For rubric-based metrics, the verdicts for each rubric.
        # Corresponds to the JSON property `rubricVerdicts`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RubricVerdict>]
        attr_accessor :rubric_verdicts
      
        # Output only. The score for the metric. Please refer to each metric's
        # documentation for the meaning of the score.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @error = args[:error] if args.key?(:error)
          @explanation = args[:explanation] if args.key?(:explanation)
          @rubric_verdicts = args[:rubric_verdicts] if args.key?(:rubric_verdicts)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # Input for MetricX metric.
      class GoogleCloudAiplatformV1MetricxInput
        include Google::Apis::Core::Hashable
      
        # Spec for MetricX instance - The fields used for evaluation are dependent on
        # the MetricX version.
        # Corresponds to the JSON property `instance`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1MetricxInstance]
        attr_accessor :instance
      
        # Spec for MetricX metric.
        # Corresponds to the JSON property `metricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1MetricxSpec]
        attr_accessor :metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instance = args[:instance] if args.key?(:instance)
          @metric_spec = args[:metric_spec] if args.key?(:metric_spec)
        end
      end
      
      # Spec for MetricX instance - The fields used for evaluation are dependent on
      # the MetricX version.
      class GoogleCloudAiplatformV1MetricxInstance
        include Google::Apis::Core::Hashable
      
        # Required. Output of the evaluated model.
        # Corresponds to the JSON property `prediction`
        # @return [String]
        attr_accessor :prediction
      
        # Optional. Ground truth used to compare against the prediction.
        # Corresponds to the JSON property `reference`
        # @return [String]
        attr_accessor :reference
      
        # Optional. Source text in original language.
        # Corresponds to the JSON property `source`
        # @return [String]
        attr_accessor :source
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @prediction = args[:prediction] if args.key?(:prediction)
          @reference = args[:reference] if args.key?(:reference)
          @source = args[:source] if args.key?(:source)
        end
      end
      
      # Spec for MetricX result - calculates the MetricX score for the given instance
      # using the version specified in the spec.
      class GoogleCloudAiplatformV1MetricxResult
        include Google::Apis::Core::Hashable
      
        # Output only. MetricX score. Range depends on version.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # Spec for MetricX metric.
      class GoogleCloudAiplatformV1MetricxSpec
        include Google::Apis::Core::Hashable
      
        # Optional. Source language in BCP-47 format.
        # Corresponds to the JSON property `sourceLanguage`
        # @return [String]
        attr_accessor :source_language
      
        # Optional. Target language in BCP-47 format. Covers both prediction and
        # reference.
        # Corresponds to the JSON property `targetLanguage`
        # @return [String]
        attr_accessor :target_language
      
        # Required. Which version to use for evaluation.
        # Corresponds to the JSON property `version`
        # @return [String]
        attr_accessor :version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @source_language = args[:source_language] if args.key?(:source_language)
          @target_language = args[:target_language] if args.key?(:target_language)
          @version = args[:version] if args.key?(:version)
        end
      end
      
      # Represents one resource that exists in automl.googleapis.com, datalabeling.
      # googleapis.com or ml.googleapis.com.
      class GoogleCloudAiplatformV1MigratableResource
        include Google::Apis::Core::Hashable
      
        # Represents one Dataset in automl.googleapis.com.
        # Corresponds to the JSON property `automlDataset`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1MigratableResourceAutomlDataset]
        attr_accessor :automl_dataset
      
        # Represents one Model in automl.googleapis.com.
        # Corresponds to the JSON property `automlModel`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1MigratableResourceAutomlModel]
        attr_accessor :automl_model
      
        # Represents one Dataset in datalabeling.googleapis.com.
        # Corresponds to the JSON property `dataLabelingDataset`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1MigratableResourceDataLabelingDataset]
        attr_accessor :data_labeling_dataset
      
        # Output only. Timestamp when the last migration attempt on this
        # MigratableResource started. Will not be set if there's no migration attempt on
        # this MigratableResource.
        # Corresponds to the JSON property `lastMigrateTime`
        # @return [String]
        attr_accessor :last_migrate_time
      
        # Output only. Timestamp when this MigratableResource was last updated.
        # Corresponds to the JSON property `lastUpdateTime`
        # @return [String]
        attr_accessor :last_update_time
      
        # Represents one model Version in ml.googleapis.com.
        # Corresponds to the JSON property `mlEngineModelVersion`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1MigratableResourceMlEngineModelVersion]
        attr_accessor :ml_engine_model_version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @automl_dataset = args[:automl_dataset] if args.key?(:automl_dataset)
          @automl_model = args[:automl_model] if args.key?(:automl_model)
          @data_labeling_dataset = args[:data_labeling_dataset] if args.key?(:data_labeling_dataset)
          @last_migrate_time = args[:last_migrate_time] if args.key?(:last_migrate_time)
          @last_update_time = args[:last_update_time] if args.key?(:last_update_time)
          @ml_engine_model_version = args[:ml_engine_model_version] if args.key?(:ml_engine_model_version)
        end
      end
      
      # Represents one Dataset in automl.googleapis.com.
      class GoogleCloudAiplatformV1MigratableResourceAutomlDataset
        include Google::Apis::Core::Hashable
      
        # Full resource name of automl Dataset. Format: `projects/`project`/locations/`
        # location`/datasets/`dataset``.
        # Corresponds to the JSON property `dataset`
        # @return [String]
        attr_accessor :dataset
      
        # The Dataset's display name in automl.googleapis.com.
        # Corresponds to the JSON property `datasetDisplayName`
        # @return [String]
        attr_accessor :dataset_display_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @dataset = args[:dataset] if args.key?(:dataset)
          @dataset_display_name = args[:dataset_display_name] if args.key?(:dataset_display_name)
        end
      end
      
      # Represents one Model in automl.googleapis.com.
      class GoogleCloudAiplatformV1MigratableResourceAutomlModel
        include Google::Apis::Core::Hashable
      
        # Full resource name of automl Model. Format: `projects/`project`/locations/`
        # location`/models/`model``.
        # Corresponds to the JSON property `model`
        # @return [String]
        attr_accessor :model
      
        # The Model's display name in automl.googleapis.com.
        # Corresponds to the JSON property `modelDisplayName`
        # @return [String]
        attr_accessor :model_display_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @model = args[:model] if args.key?(:model)
          @model_display_name = args[:model_display_name] if args.key?(:model_display_name)
        end
      end
      
      # Represents one Dataset in datalabeling.googleapis.com.
      class GoogleCloudAiplatformV1MigratableResourceDataLabelingDataset
        include Google::Apis::Core::Hashable
      
        # The migratable AnnotatedDataset in datalabeling.googleapis.com belongs to the
        # data labeling Dataset.
        # Corresponds to the JSON property `dataLabelingAnnotatedDatasets`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1MigratableResourceDataLabelingDatasetDataLabelingAnnotatedDataset>]
        attr_accessor :data_labeling_annotated_datasets
      
        # Full resource name of data labeling Dataset. Format: `projects/`project`/
        # datasets/`dataset``.
        # Corresponds to the JSON property `dataset`
        # @return [String]
        attr_accessor :dataset
      
        # The Dataset's display name in datalabeling.googleapis.com.
        # Corresponds to the JSON property `datasetDisplayName`
        # @return [String]
        attr_accessor :dataset_display_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @data_labeling_annotated_datasets = args[:data_labeling_annotated_datasets] if args.key?(:data_labeling_annotated_datasets)
          @dataset = args[:dataset] if args.key?(:dataset)
          @dataset_display_name = args[:dataset_display_name] if args.key?(:dataset_display_name)
        end
      end
      
      # Represents one AnnotatedDataset in datalabeling.googleapis.com.
      class GoogleCloudAiplatformV1MigratableResourceDataLabelingDatasetDataLabelingAnnotatedDataset
        include Google::Apis::Core::Hashable
      
        # Full resource name of data labeling AnnotatedDataset. Format: `projects/`
        # project`/datasets/`dataset`/annotatedDatasets/`annotated_dataset``.
        # Corresponds to the JSON property `annotatedDataset`
        # @return [String]
        attr_accessor :annotated_dataset
      
        # The AnnotatedDataset's display name in datalabeling.googleapis.com.
        # Corresponds to the JSON property `annotatedDatasetDisplayName`
        # @return [String]
        attr_accessor :annotated_dataset_display_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @annotated_dataset = args[:annotated_dataset] if args.key?(:annotated_dataset)
          @annotated_dataset_display_name = args[:annotated_dataset_display_name] if args.key?(:annotated_dataset_display_name)
        end
      end
      
      # Represents one model Version in ml.googleapis.com.
      class GoogleCloudAiplatformV1MigratableResourceMlEngineModelVersion
        include Google::Apis::Core::Hashable
      
        # The ml.googleapis.com endpoint that this model Version currently lives in.
        # Example values: * ml.googleapis.com * us-centrall-ml.googleapis.com * europe-
        # west4-ml.googleapis.com * asia-east1-ml.googleapis.com
        # Corresponds to the JSON property `endpoint`
        # @return [String]
        attr_accessor :endpoint
      
        # Full resource name of ml engine model Version. Format: `projects/`project`/
        # models/`model`/versions/`version``.
        # Corresponds to the JSON property `version`
        # @return [String]
        attr_accessor :version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @endpoint = args[:endpoint] if args.key?(:endpoint)
          @version = args[:version] if args.key?(:version)
        end
      end
      
      # Config of migrating one resource from automl.googleapis.com, datalabeling.
      # googleapis.com and ml.googleapis.com to Vertex AI.
      class GoogleCloudAiplatformV1MigrateResourceRequest
        include Google::Apis::Core::Hashable
      
        # Config for migrating Dataset in automl.googleapis.com to Vertex AI's Dataset.
        # Corresponds to the JSON property `migrateAutomlDatasetConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1MigrateResourceRequestMigrateAutomlDatasetConfig]
        attr_accessor :migrate_automl_dataset_config
      
        # Config for migrating Model in automl.googleapis.com to Vertex AI's Model.
        # Corresponds to the JSON property `migrateAutomlModelConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1MigrateResourceRequestMigrateAutomlModelConfig]
        attr_accessor :migrate_automl_model_config
      
        # Config for migrating Dataset in datalabeling.googleapis.com to Vertex AI's
        # Dataset.
        # Corresponds to the JSON property `migrateDataLabelingDatasetConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1MigrateResourceRequestMigrateDataLabelingDatasetConfig]
        attr_accessor :migrate_data_labeling_dataset_config
      
        # Config for migrating version in ml.googleapis.com to Vertex AI's Model.
        # Corresponds to the JSON property `migrateMlEngineModelVersionConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1MigrateResourceRequestMigrateMlEngineModelVersionConfig]
        attr_accessor :migrate_ml_engine_model_version_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @migrate_automl_dataset_config = args[:migrate_automl_dataset_config] if args.key?(:migrate_automl_dataset_config)
          @migrate_automl_model_config = args[:migrate_automl_model_config] if args.key?(:migrate_automl_model_config)
          @migrate_data_labeling_dataset_config = args[:migrate_data_labeling_dataset_config] if args.key?(:migrate_data_labeling_dataset_config)
          @migrate_ml_engine_model_version_config = args[:migrate_ml_engine_model_version_config] if args.key?(:migrate_ml_engine_model_version_config)
        end
      end
      
      # Config for migrating Dataset in automl.googleapis.com to Vertex AI's Dataset.
      class GoogleCloudAiplatformV1MigrateResourceRequestMigrateAutomlDatasetConfig
        include Google::Apis::Core::Hashable
      
        # Required. Full resource name of automl Dataset. Format: `projects/`project`/
        # locations/`location`/datasets/`dataset``.
        # Corresponds to the JSON property `dataset`
        # @return [String]
        attr_accessor :dataset
      
        # Required. Display name of the Dataset in Vertex AI. System will pick a display
        # name if unspecified.
        # Corresponds to the JSON property `datasetDisplayName`
        # @return [String]
        attr_accessor :dataset_display_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @dataset = args[:dataset] if args.key?(:dataset)
          @dataset_display_name = args[:dataset_display_name] if args.key?(:dataset_display_name)
        end
      end
      
      # Config for migrating Model in automl.googleapis.com to Vertex AI's Model.
      class GoogleCloudAiplatformV1MigrateResourceRequestMigrateAutomlModelConfig
        include Google::Apis::Core::Hashable
      
        # Required. Full resource name of automl Model. Format: `projects/`project`/
        # locations/`location`/models/`model``.
        # Corresponds to the JSON property `model`
        # @return [String]
        attr_accessor :model
      
        # Optional. Display name of the model in Vertex AI. System will pick a display
        # name if unspecified.
        # Corresponds to the JSON property `modelDisplayName`
        # @return [String]
        attr_accessor :model_display_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @model = args[:model] if args.key?(:model)
          @model_display_name = args[:model_display_name] if args.key?(:model_display_name)
        end
      end
      
      # Config for migrating Dataset in datalabeling.googleapis.com to Vertex AI's
      # Dataset.
      class GoogleCloudAiplatformV1MigrateResourceRequestMigrateDataLabelingDatasetConfig
        include Google::Apis::Core::Hashable
      
        # Required. Full resource name of data labeling Dataset. Format: `projects/`
        # project`/datasets/`dataset``.
        # Corresponds to the JSON property `dataset`
        # @return [String]
        attr_accessor :dataset
      
        # Optional. Display name of the Dataset in Vertex AI. System will pick a display
        # name if unspecified.
        # Corresponds to the JSON property `datasetDisplayName`
        # @return [String]
        attr_accessor :dataset_display_name
      
        # Optional. Configs for migrating AnnotatedDataset in datalabeling.googleapis.
        # com to Vertex AI's SavedQuery. The specified AnnotatedDatasets have to belong
        # to the datalabeling Dataset.
        # Corresponds to the JSON property `migrateDataLabelingAnnotatedDatasetConfigs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1MigrateResourceRequestMigrateDataLabelingDatasetConfigMigrateDataLabelingAnnotatedDatasetConfig>]
        attr_accessor :migrate_data_labeling_annotated_dataset_configs
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @dataset = args[:dataset] if args.key?(:dataset)
          @dataset_display_name = args[:dataset_display_name] if args.key?(:dataset_display_name)
          @migrate_data_labeling_annotated_dataset_configs = args[:migrate_data_labeling_annotated_dataset_configs] if args.key?(:migrate_data_labeling_annotated_dataset_configs)
        end
      end
      
      # Config for migrating AnnotatedDataset in datalabeling.googleapis.com to Vertex
      # AI's SavedQuery.
      class GoogleCloudAiplatformV1MigrateResourceRequestMigrateDataLabelingDatasetConfigMigrateDataLabelingAnnotatedDatasetConfig
        include Google::Apis::Core::Hashable
      
        # Required. Full resource name of data labeling AnnotatedDataset. Format: `
        # projects/`project`/datasets/`dataset`/annotatedDatasets/`annotated_dataset``.
        # Corresponds to the JSON property `annotatedDataset`
        # @return [String]
        attr_accessor :annotated_dataset
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @annotated_dataset = args[:annotated_dataset] if args.key?(:annotated_dataset)
        end
      end
      
      # Config for migrating version in ml.googleapis.com to Vertex AI's Model.
      class GoogleCloudAiplatformV1MigrateResourceRequestMigrateMlEngineModelVersionConfig
        include Google::Apis::Core::Hashable
      
        # Required. The ml.googleapis.com endpoint that this model version should be
        # migrated from. Example values: * ml.googleapis.com * us-centrall-ml.googleapis.
        # com * europe-west4-ml.googleapis.com * asia-east1-ml.googleapis.com
        # Corresponds to the JSON property `endpoint`
        # @return [String]
        attr_accessor :endpoint
      
        # Required. Display name of the model in Vertex AI. System will pick a display
        # name if unspecified.
        # Corresponds to the JSON property `modelDisplayName`
        # @return [String]
        attr_accessor :model_display_name
      
        # Required. Full resource name of ml engine model version. Format: `projects/`
        # project`/models/`model`/versions/`version``.
        # Corresponds to the JSON property `modelVersion`
        # @return [String]
        attr_accessor :model_version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @endpoint = args[:endpoint] if args.key?(:endpoint)
          @model_display_name = args[:model_display_name] if args.key?(:model_display_name)
          @model_version = args[:model_version] if args.key?(:model_version)
        end
      end
      
      # Describes a successfully migrated resource.
      class GoogleCloudAiplatformV1MigrateResourceResponse
        include Google::Apis::Core::Hashable
      
        # Migrated Dataset's resource name.
        # Corresponds to the JSON property `dataset`
        # @return [String]
        attr_accessor :dataset
      
        # Represents one resource that exists in automl.googleapis.com, datalabeling.
        # googleapis.com or ml.googleapis.com.
        # Corresponds to the JSON property `migratableResource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1MigratableResource]
        attr_accessor :migratable_resource
      
        # Migrated Model's resource name.
        # Corresponds to the JSON property `model`
        # @return [String]
        attr_accessor :model
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @dataset = args[:dataset] if args.key?(:dataset)
          @migratable_resource = args[:migratable_resource] if args.key?(:migratable_resource)
          @model = args[:model] if args.key?(:model)
        end
      end
      
      # Represents token counting info for a single modality.
      class GoogleCloudAiplatformV1ModalityTokenCount
        include Google::Apis::Core::Hashable
      
        # The modality associated with this token count.
        # Corresponds to the JSON property `modality`
        # @return [String]
        attr_accessor :modality
      
        # Number of tokens.
        # Corresponds to the JSON property `tokenCount`
        # @return [Fixnum]
        attr_accessor :token_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @modality = args[:modality] if args.key?(:modality)
          @token_count = args[:token_count] if args.key?(:token_count)
        end
      end
      
      # A trained machine learning Model.
      class GoogleCloudAiplatformV1Model
        include Google::Apis::Core::Hashable
      
        # Immutable. The path to the directory containing the Model artifact and any of
        # its supporting files. Not required for AutoML Models.
        # Corresponds to the JSON property `artifactUri`
        # @return [String]
        attr_accessor :artifact_uri
      
        # User input field to specify the base model source. Currently it only supports
        # specifing the Model Garden models and Genie models.
        # Corresponds to the JSON property `baseModelSource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelBaseModelSource]
        attr_accessor :base_model_source
      
        # Optional. Output only. The checkpoints of the model.
        # Corresponds to the JSON property `checkpoints`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Checkpoint>]
        attr_accessor :checkpoints
      
        # Specification of a container for serving predictions. Some fields in this
        # message correspond to fields in the [Kubernetes Container v1 core
        # specification](https://kubernetes.io/docs/reference/generated/kubernetes-api/
        # v1.23/#container-v1-core).
        # Corresponds to the JSON property `containerSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelContainerSpec]
        attr_accessor :container_spec
      
        # Output only. Timestamp when this Model was uploaded into Vertex AI.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Stats of data used for train or evaluate the Model.
        # Corresponds to the JSON property `dataStats`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelDataStats]
        attr_accessor :data_stats
      
        # The default checkpoint id of a model version.
        # Corresponds to the JSON property `defaultCheckpointId`
        # @return [String]
        attr_accessor :default_checkpoint_id
      
        # Output only. The pointers to DeployedModels created from this Model. Note that
        # Model could have been deployed to Endpoints in different Locations.
        # Corresponds to the JSON property `deployedModels`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DeployedModelRef>]
        attr_accessor :deployed_models
      
        # The description of the Model.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Required. The display name of the Model. The name can be up to 128 characters
        # long and can consist of any UTF-8 characters.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Represents a customer-managed encryption key spec that can be applied to a top-
        # level resource.
        # Corresponds to the JSON property `encryptionSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EncryptionSpec]
        attr_accessor :encryption_spec
      
        # Used to perform consistent read-modify-write updates. If not set, a blind "
        # overwrite" update happens.
        # Corresponds to the JSON property `etag`
        # @return [String]
        attr_accessor :etag
      
        # Specification of Model explanation.
        # Corresponds to the JSON property `explanationSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExplanationSpec]
        attr_accessor :explanation_spec
      
        # The labels with user-defined metadata to organize your Models. Label keys and
        # values can be no longer than 64 characters (Unicode codepoints), can only
        # contain lowercase letters, numeric characters, underscores and dashes.
        # International characters are allowed. See https://goo.gl/xmQnxf for more
        # information and examples of labels.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Immutable. An additional information about the Model; the schema of the
        # metadata can be found in metadata_schema. Unset if the Model does not have any
        # additional information.
        # Corresponds to the JSON property `metadata`
        # @return [Object]
        attr_accessor :metadata
      
        # Output only. The resource name of the Artifact that was created in
        # MetadataStore when creating the Model. The Artifact resource name pattern is `
        # projects/`project`/locations/`location`/metadataStores/`metadata_store`/
        # artifacts/`artifact``.
        # Corresponds to the JSON property `metadataArtifact`
        # @return [String]
        attr_accessor :metadata_artifact
      
        # Immutable. Points to a YAML file stored on Google Cloud Storage describing
        # additional information about the Model, that is specific to it. Unset if the
        # Model does not have any additional information. The schema is defined as an
        # OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/
        # blob/main/versions/3.0.2.md#schemaObject). AutoML Models always have this
        # field populated by Vertex AI, if no additional metadata is needed, this field
        # is set to an empty string. Note: The URI given on output will be immutable and
        # probably different, including the URI scheme, than the one given on input. The
        # output URI will point to a location where the user only has a read access.
        # Corresponds to the JSON property `metadataSchemaUri`
        # @return [String]
        attr_accessor :metadata_schema_uri
      
        # Detail description of the source information of the model.
        # Corresponds to the JSON property `modelSourceInfo`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelSourceInfo]
        attr_accessor :model_source_info
      
        # The resource name of the Model.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Contains information about the original Model if this Model is a copy.
        # Corresponds to the JSON property `originalModelInfo`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelOriginalModelInfo]
        attr_accessor :original_model_info
      
        # Optional. This field is populated if the model is produced by a pipeline job.
        # Corresponds to the JSON property `pipelineJob`
        # @return [String]
        attr_accessor :pipeline_job
      
        # Contains the schemata used in Model's predictions and explanations via
        # PredictionService.Predict, PredictionService.Explain and BatchPredictionJob.
        # Corresponds to the JSON property `predictSchemata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PredictSchemata]
        attr_accessor :predict_schemata
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzi`
        # @return [Boolean]
        attr_accessor :satisfies_pzi
        alias_method :satisfies_pzi?, :satisfies_pzi
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzs`
        # @return [Boolean]
        attr_accessor :satisfies_pzs
        alias_method :satisfies_pzs?, :satisfies_pzs
      
        # Output only. When this Model is deployed, its prediction resources are
        # described by the `prediction_resources` field of the Endpoint.deployed_models
        # object. Because not all Models support all resource configuration types, the
        # configuration types this Model supports are listed here. If no configuration
        # types are listed, the Model cannot be deployed to an Endpoint and does not
        # support online predictions (PredictionService.Predict or PredictionService.
        # Explain). Such a Model can serve predictions by using a BatchPredictionJob, if
        # it has at least one entry each in supported_input_storage_formats and
        # supported_output_storage_formats.
        # Corresponds to the JSON property `supportedDeploymentResourcesTypes`
        # @return [Array<String>]
        attr_accessor :supported_deployment_resources_types
      
        # Output only. The formats in which this Model may be exported. If empty, this
        # Model is not available for export.
        # Corresponds to the JSON property `supportedExportFormats`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelExportFormat>]
        attr_accessor :supported_export_formats
      
        # Output only. The formats this Model supports in BatchPredictionJob.
        # input_config. If PredictSchemata.instance_schema_uri exists, the instances
        # should be given as per that schema. The possible formats are: * `jsonl` The
        # JSON Lines format, where each instance is a single line. Uses GcsSource. * `
        # csv` The CSV format, where each instance is a single comma-separated line. The
        # first line in the file is the header, containing comma-separated field names.
        # Uses GcsSource. * `tf-record` The TFRecord format, where each instance is a
        # single record in tfrecord syntax. Uses GcsSource. * `tf-record-gzip` Similar
        # to `tf-record`, but the file is gzipped. Uses GcsSource. * `bigquery` Each
        # instance is a single row in BigQuery. Uses BigQuerySource. * `file-list` Each
        # line of the file is the location of an instance to process, uses `gcs_source`
        # field of the InputConfig object. If this Model doesn't support any of these
        # formats it means it cannot be used with a BatchPredictionJob. However, if it
        # has supported_deployment_resources_types, it could serve online predictions by
        # using PredictionService.Predict or PredictionService.Explain.
        # Corresponds to the JSON property `supportedInputStorageFormats`
        # @return [Array<String>]
        attr_accessor :supported_input_storage_formats
      
        # Output only. The formats this Model supports in BatchPredictionJob.
        # output_config. If both PredictSchemata.instance_schema_uri and PredictSchemata.
        # prediction_schema_uri exist, the predictions are returned together with their
        # instances. In other words, the prediction has the original instance data first,
        # followed by the actual prediction content (as per the schema). The possible
        # formats are: * `jsonl` The JSON Lines format, where each prediction is a
        # single line. Uses GcsDestination. * `csv` The CSV format, where each
        # prediction is a single comma-separated line. The first line in the file is the
        # header, containing comma-separated field names. Uses GcsDestination. * `
        # bigquery` Each prediction is a single row in a BigQuery table, uses
        # BigQueryDestination . If this Model doesn't support any of these formats it
        # means it cannot be used with a BatchPredictionJob. However, if it has
        # supported_deployment_resources_types, it could serve online predictions by
        # using PredictionService.Predict or PredictionService.Explain.
        # Corresponds to the JSON property `supportedOutputStorageFormats`
        # @return [Array<String>]
        attr_accessor :supported_output_storage_formats
      
        # Output only. The resource name of the TrainingPipeline that uploaded this
        # Model, if any.
        # Corresponds to the JSON property `trainingPipeline`
        # @return [String]
        attr_accessor :training_pipeline
      
        # Output only. Timestamp when this Model was most recently updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        # User provided version aliases so that a model version can be referenced via
        # alias (i.e. `projects/`project`/locations/`location`/models/`model_id`@`
        # version_alias`` instead of auto-generated version id (i.e. `projects/`project`/
        # locations/`location`/models/`model_id`@`version_id`)`. The format is a-z`0,126`
        # [a-z0-9] to distinguish from version_id. A default version alias will be
        # created for the first version of the model, and there must be exactly one
        # default version alias for a model.
        # Corresponds to the JSON property `versionAliases`
        # @return [Array<String>]
        attr_accessor :version_aliases
      
        # Output only. Timestamp when this version was created.
        # Corresponds to the JSON property `versionCreateTime`
        # @return [String]
        attr_accessor :version_create_time
      
        # The description of this version.
        # Corresponds to the JSON property `versionDescription`
        # @return [String]
        attr_accessor :version_description
      
        # Output only. Immutable. The version ID of the model. A new version is
        # committed when a new model version is uploaded or trained under an existing
        # model id. It is an auto-incrementing decimal number in string representation.
        # Corresponds to the JSON property `versionId`
        # @return [String]
        attr_accessor :version_id
      
        # Output only. Timestamp when this version was most recently updated.
        # Corresponds to the JSON property `versionUpdateTime`
        # @return [String]
        attr_accessor :version_update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @artifact_uri = args[:artifact_uri] if args.key?(:artifact_uri)
          @base_model_source = args[:base_model_source] if args.key?(:base_model_source)
          @checkpoints = args[:checkpoints] if args.key?(:checkpoints)
          @container_spec = args[:container_spec] if args.key?(:container_spec)
          @create_time = args[:create_time] if args.key?(:create_time)
          @data_stats = args[:data_stats] if args.key?(:data_stats)
          @default_checkpoint_id = args[:default_checkpoint_id] if args.key?(:default_checkpoint_id)
          @deployed_models = args[:deployed_models] if args.key?(:deployed_models)
          @description = args[:description] if args.key?(:description)
          @display_name = args[:display_name] if args.key?(:display_name)
          @encryption_spec = args[:encryption_spec] if args.key?(:encryption_spec)
          @etag = args[:etag] if args.key?(:etag)
          @explanation_spec = args[:explanation_spec] if args.key?(:explanation_spec)
          @labels = args[:labels] if args.key?(:labels)
          @metadata = args[:metadata] if args.key?(:metadata)
          @metadata_artifact = args[:metadata_artifact] if args.key?(:metadata_artifact)
          @metadata_schema_uri = args[:metadata_schema_uri] if args.key?(:metadata_schema_uri)
          @model_source_info = args[:model_source_info] if args.key?(:model_source_info)
          @name = args[:name] if args.key?(:name)
          @original_model_info = args[:original_model_info] if args.key?(:original_model_info)
          @pipeline_job = args[:pipeline_job] if args.key?(:pipeline_job)
          @predict_schemata = args[:predict_schemata] if args.key?(:predict_schemata)
          @satisfies_pzi = args[:satisfies_pzi] if args.key?(:satisfies_pzi)
          @satisfies_pzs = args[:satisfies_pzs] if args.key?(:satisfies_pzs)
          @supported_deployment_resources_types = args[:supported_deployment_resources_types] if args.key?(:supported_deployment_resources_types)
          @supported_export_formats = args[:supported_export_formats] if args.key?(:supported_export_formats)
          @supported_input_storage_formats = args[:supported_input_storage_formats] if args.key?(:supported_input_storage_formats)
          @supported_output_storage_formats = args[:supported_output_storage_formats] if args.key?(:supported_output_storage_formats)
          @training_pipeline = args[:training_pipeline] if args.key?(:training_pipeline)
          @update_time = args[:update_time] if args.key?(:update_time)
          @version_aliases = args[:version_aliases] if args.key?(:version_aliases)
          @version_create_time = args[:version_create_time] if args.key?(:version_create_time)
          @version_description = args[:version_description] if args.key?(:version_description)
          @version_id = args[:version_id] if args.key?(:version_id)
          @version_update_time = args[:version_update_time] if args.key?(:version_update_time)
        end
      end
      
      # Configuration for Model Armor integrations of prompt and responses.
      class GoogleCloudAiplatformV1ModelArmorConfig
        include Google::Apis::Core::Hashable
      
        # Optional. The name of the Model Armor template to use for prompt sanitization.
        # Corresponds to the JSON property `promptTemplateName`
        # @return [String]
        attr_accessor :prompt_template_name
      
        # Optional. The name of the Model Armor template to use for response
        # sanitization.
        # Corresponds to the JSON property `responseTemplateName`
        # @return [String]
        attr_accessor :response_template_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @prompt_template_name = args[:prompt_template_name] if args.key?(:prompt_template_name)
          @response_template_name = args[:response_template_name] if args.key?(:response_template_name)
        end
      end
      
      # User input field to specify the base model source. Currently it only supports
      # specifing the Model Garden models and Genie models.
      class GoogleCloudAiplatformV1ModelBaseModelSource
        include Google::Apis::Core::Hashable
      
        # Contains information about the source of the models generated from Generative
        # AI Studio.
        # Corresponds to the JSON property `genieSource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenieSource]
        attr_accessor :genie_source
      
        # Contains information about the source of the models generated from Model
        # Garden.
        # Corresponds to the JSON property `modelGardenSource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelGardenSource]
        attr_accessor :model_garden_source
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @genie_source = args[:genie_source] if args.key?(:genie_source)
          @model_garden_source = args[:model_garden_source] if args.key?(:model_garden_source)
        end
      end
      
      # Specification of a container for serving predictions. Some fields in this
      # message correspond to fields in the [Kubernetes Container v1 core
      # specification](https://kubernetes.io/docs/reference/generated/kubernetes-api/
      # v1.23/#container-v1-core).
      class GoogleCloudAiplatformV1ModelContainerSpec
        include Google::Apis::Core::Hashable
      
        # Immutable. Specifies arguments for the command that runs when the container
        # starts. This overrides the container's [`CMD`](https://docs.docker.com/engine/
        # reference/builder/#cmd). Specify this field as an array of executable and
        # arguments, similar to a Docker `CMD`'s "default parameters" form. If you don't
        # specify this field but do specify the command field, then the command from the
        # `command` field runs without any additional arguments. See the [Kubernetes
        # documentation about how the `command` and `args` fields interact with a
        # container's `ENTRYPOINT` and `CMD`](https://kubernetes.io/docs/tasks/inject-
        # data-application/define-command-argument-container/#notes). If you don't
        # specify this field and don't specify the `command` field, then the container's
        # [`ENTRYPOINT`](https://docs.docker.com/engine/reference/builder/#cmd) and `CMD`
        # determine what runs based on their default behavior. See the Docker
        # documentation about [how `CMD` and `ENTRYPOINT` interact](https://docs.docker.
        # com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact). In
        # this field, you can reference [environment variables set by Vertex AI](https://
        # cloud.google.com/vertex-ai/docs/predictions/custom-container-requirements#aip-
        # variables) and environment variables set in the env field. You cannot
        # reference environment variables set in the Docker image. In order for
        # environment variables to be expanded, reference them by using the following
        # syntax: $( VARIABLE_NAME) Note that this differs from Bash variable expansion,
        # which does not use parentheses. If a variable cannot be resolved, the
        # reference in the input string is used unchanged. To avoid variable expansion,
        # you can escape this syntax with `$$`; for example: $$(VARIABLE_NAME) This
        # field corresponds to the `args` field of the Kubernetes Containers [v1 core
        # API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#
        # container-v1-core).
        # Corresponds to the JSON property `args`
        # @return [Array<String>]
        attr_accessor :args
      
        # Immutable. Specifies the command that runs when the container starts. This
        # overrides the container's [ENTRYPOINT](https://docs.docker.com/engine/
        # reference/builder/#entrypoint). Specify this field as an array of executable
        # and arguments, similar to a Docker `ENTRYPOINT`'s "exec" form, not its "shell"
        # form. If you do not specify this field, then the container's `ENTRYPOINT` runs,
        # in conjunction with the args field or the container's [`CMD`](https://docs.
        # docker.com/engine/reference/builder/#cmd), if either exists. If this field is
        # not specified and the container does not have an `ENTRYPOINT`, then refer to
        # the Docker documentation about [how `CMD` and `ENTRYPOINT` interact](https://
        # docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-
        # interact). If you specify this field, then you can also specify the `args`
        # field to provide additional arguments for this command. However, if you
        # specify this field, then the container's `CMD` is ignored. See the [Kubernetes
        # documentation about how the `command` and `args` fields interact with a
        # container's `ENTRYPOINT` and `CMD`](https://kubernetes.io/docs/tasks/inject-
        # data-application/define-command-argument-container/#notes). In this field, you
        # can reference [environment variables set by Vertex AI](https://cloud.google.
        # com/vertex-ai/docs/predictions/custom-container-requirements#aip-variables)
        # and environment variables set in the env field. You cannot reference
        # environment variables set in the Docker image. In order for environment
        # variables to be expanded, reference them by using the following syntax: $(
        # VARIABLE_NAME) Note that this differs from Bash variable expansion, which does
        # not use parentheses. If a variable cannot be resolved, the reference in the
        # input string is used unchanged. To avoid variable expansion, you can escape
        # this syntax with `$$`; for example: $$(VARIABLE_NAME) This field corresponds
        # to the `command` field of the Kubernetes Containers [v1 core API](https://
        # kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#container-v1-core)
        # .
        # Corresponds to the JSON property `command`
        # @return [Array<String>]
        attr_accessor :command
      
        # Immutable. Deployment timeout. Limit for deployment timeout is 2 hours.
        # Corresponds to the JSON property `deploymentTimeout`
        # @return [String]
        attr_accessor :deployment_timeout
      
        # Immutable. List of environment variables to set in the container. After the
        # container starts running, code running in the container can read these
        # environment variables. Additionally, the command and args fields can reference
        # these variables. Later entries in this list can also reference earlier entries.
        # For example, the following example sets the variable `VAR_2` to have the
        # value `foo bar`: ```json [ ` "name": "VAR_1", "value": "foo" `, ` "name": "
        # VAR_2", "value": "$(VAR_1) bar" ` ] ``` If you switch the order of the
        # variables in the example, then the expansion does not occur. This field
        # corresponds to the `env` field of the Kubernetes Containers [v1 core API](
        # https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#container-
        # v1-core).
        # Corresponds to the JSON property `env`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EnvVar>]
        attr_accessor :env
      
        # Immutable. List of ports to expose from the container. Vertex AI sends gRPC
        # prediction requests that it receives to the first port on this list. Vertex AI
        # also sends liveness and health checks to this port. If you do not specify this
        # field, gRPC requests to the container will be disabled. Vertex AI does not use
        # ports other than the first one listed. This field corresponds to the `ports`
        # field of the Kubernetes Containers v1 core API.
        # Corresponds to the JSON property `grpcPorts`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Port>]
        attr_accessor :grpc_ports
      
        # Probe describes a health check to be performed against a container to
        # determine whether it is alive or ready to receive traffic.
        # Corresponds to the JSON property `healthProbe`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Probe]
        attr_accessor :health_probe
      
        # Immutable. HTTP path on the container to send health checks to. Vertex AI
        # intermittently sends GET requests to this path on the container's IP address
        # and port to check that the container is healthy. Read more about [health
        # checks](https://cloud.google.com/vertex-ai/docs/predictions/custom-container-
        # requirements#health). For example, if you set this field to `/bar`, then
        # Vertex AI intermittently sends a GET request to the `/bar` path on the port of
        # your container specified by the first value of this `ModelContainerSpec`'s
        # ports field. If you don't specify this field, it defaults to the following
        # value when you deploy this Model to an Endpoint: /v1/endpoints/ENDPOINT/
        # deployedModels/ DEPLOYED_MODEL:predict The placeholders in this value are
        # replaced as follows: * ENDPOINT: The last segment (following `endpoints/`)of
        # the Endpoint.name][] field of the Endpoint where this Model has been deployed.
        # (Vertex AI makes this value available to your container code as the [`
        # AIP_ENDPOINT_ID` environment variable](https://cloud.google.com/vertex-ai/docs/
        # predictions/custom-container-requirements#aip-variables).) * DEPLOYED_MODEL:
        # DeployedModel.id of the `DeployedModel`. (Vertex AI makes this value available
        # to your container code as the [`AIP_DEPLOYED_MODEL_ID` environment variable](
        # https://cloud.google.com/vertex-ai/docs/predictions/custom-container-
        # requirements#aip-variables).)
        # Corresponds to the JSON property `healthRoute`
        # @return [String]
        attr_accessor :health_route
      
        # Required. Immutable. URI of the Docker image to be used as the custom
        # container for serving predictions. This URI must identify an image in Artifact
        # Registry or Container Registry. Learn more about the [container publishing
        # requirements](https://cloud.google.com/vertex-ai/docs/predictions/custom-
        # container-requirements#publishing), including permissions requirements for the
        # Vertex AI Service Agent. The container image is ingested upon ModelService.
        # UploadModel, stored internally, and this original path is afterwards not used.
        # To learn about the requirements for the Docker image itself, see [Custom
        # container requirements](https://cloud.google.com/vertex-ai/docs/predictions/
        # custom-container-requirements#). You can use the URI to one of Vertex AI's [
        # pre-built container images for prediction](https://cloud.google.com/vertex-ai/
        # docs/predictions/pre-built-containers) in this field.
        # Corresponds to the JSON property `imageUri`
        # @return [String]
        attr_accessor :image_uri
      
        # Immutable. Invoke route prefix for the custom container. "/*" is the only
        # supported value right now. By setting this field, any non-root route on this
        # model will be accessible with invoke http call eg: "/invoke/foo/bar", however
        # the [PredictionService.Invoke] RPC is not supported yet. Only one of `
        # predict_route` or `invoke_route_prefix` can be set, and we default to using `
        # predict_route` if this field is not set. If this field is set, the Model can
        # only be deployed to dedicated endpoint.
        # Corresponds to the JSON property `invokeRoutePrefix`
        # @return [String]
        attr_accessor :invoke_route_prefix
      
        # Probe describes a health check to be performed against a container to
        # determine whether it is alive or ready to receive traffic.
        # Corresponds to the JSON property `livenessProbe`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Probe]
        attr_accessor :liveness_probe
      
        # Immutable. List of ports to expose from the container. Vertex AI sends any
        # prediction requests that it receives to the first port on this list. Vertex AI
        # also sends [liveness and health checks](https://cloud.google.com/vertex-ai/
        # docs/predictions/custom-container-requirements#liveness) to this port. If you
        # do not specify this field, it defaults to following value: ```json [ ` "
        # containerPort": 8080 ` ] ``` Vertex AI does not use ports other than the first
        # one listed. This field corresponds to the `ports` field of the Kubernetes
        # Containers [v1 core API](https://kubernetes.io/docs/reference/generated/
        # kubernetes-api/v1.23/#container-v1-core).
        # Corresponds to the JSON property `ports`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Port>]
        attr_accessor :ports
      
        # Immutable. HTTP path on the container to send prediction requests to. Vertex
        # AI forwards requests sent using projects.locations.endpoints.predict to this
        # path on the container's IP address and port. Vertex AI then returns the
        # container's response in the API response. For example, if you set this field
        # to `/foo`, then when Vertex AI receives a prediction request, it forwards the
        # request body in a POST request to the `/foo` path on the port of your
        # container specified by the first value of this `ModelContainerSpec`'s ports
        # field. If you don't specify this field, it defaults to the following value
        # when you deploy this Model to an Endpoint: /v1/endpoints/ENDPOINT/
        # deployedModels/DEPLOYED_MODEL:predict The placeholders in this value are
        # replaced as follows: * ENDPOINT: The last segment (following `endpoints/`)of
        # the Endpoint.name][] field of the Endpoint where this Model has been deployed.
        # (Vertex AI makes this value available to your container code as the [`
        # AIP_ENDPOINT_ID` environment variable](https://cloud.google.com/vertex-ai/docs/
        # predictions/custom-container-requirements#aip-variables).) * DEPLOYED_MODEL:
        # DeployedModel.id of the `DeployedModel`. (Vertex AI makes this value available
        # to your container code as the [`AIP_DEPLOYED_MODEL_ID` environment variable](
        # https://cloud.google.com/vertex-ai/docs/predictions/custom-container-
        # requirements#aip-variables).)
        # Corresponds to the JSON property `predictRoute`
        # @return [String]
        attr_accessor :predict_route
      
        # Immutable. The amount of the VM memory to reserve as the shared memory for the
        # model in megabytes.
        # Corresponds to the JSON property `sharedMemorySizeMb`
        # @return [Fixnum]
        attr_accessor :shared_memory_size_mb
      
        # Probe describes a health check to be performed against a container to
        # determine whether it is alive or ready to receive traffic.
        # Corresponds to the JSON property `startupProbe`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Probe]
        attr_accessor :startup_probe
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @args = args[:args] if args.key?(:args)
          @command = args[:command] if args.key?(:command)
          @deployment_timeout = args[:deployment_timeout] if args.key?(:deployment_timeout)
          @env = args[:env] if args.key?(:env)
          @grpc_ports = args[:grpc_ports] if args.key?(:grpc_ports)
          @health_probe = args[:health_probe] if args.key?(:health_probe)
          @health_route = args[:health_route] if args.key?(:health_route)
          @image_uri = args[:image_uri] if args.key?(:image_uri)
          @invoke_route_prefix = args[:invoke_route_prefix] if args.key?(:invoke_route_prefix)
          @liveness_probe = args[:liveness_probe] if args.key?(:liveness_probe)
          @ports = args[:ports] if args.key?(:ports)
          @predict_route = args[:predict_route] if args.key?(:predict_route)
          @shared_memory_size_mb = args[:shared_memory_size_mb] if args.key?(:shared_memory_size_mb)
          @startup_probe = args[:startup_probe] if args.key?(:startup_probe)
        end
      end
      
      # Stats of data used for train or evaluate the Model.
      class GoogleCloudAiplatformV1ModelDataStats
        include Google::Apis::Core::Hashable
      
        # Number of Annotations that are used for evaluating this Model. If the Model is
        # evaluated multiple times, this will be the number of test Annotations used by
        # the first evaluation. If the Model is not evaluated, the number is 0.
        # Corresponds to the JSON property `testAnnotationsCount`
        # @return [Fixnum]
        attr_accessor :test_annotations_count
      
        # Number of DataItems that were used for evaluating this Model. If the Model is
        # evaluated multiple times, this will be the number of test DataItems used by
        # the first evaluation. If the Model is not evaluated, the number is 0.
        # Corresponds to the JSON property `testDataItemsCount`
        # @return [Fixnum]
        attr_accessor :test_data_items_count
      
        # Number of Annotations that are used for training this Model.
        # Corresponds to the JSON property `trainingAnnotationsCount`
        # @return [Fixnum]
        attr_accessor :training_annotations_count
      
        # Number of DataItems that were used for training this Model.
        # Corresponds to the JSON property `trainingDataItemsCount`
        # @return [Fixnum]
        attr_accessor :training_data_items_count
      
        # Number of Annotations that are used for validating this Model during training.
        # Corresponds to the JSON property `validationAnnotationsCount`
        # @return [Fixnum]
        attr_accessor :validation_annotations_count
      
        # Number of DataItems that were used for validating this Model during training.
        # Corresponds to the JSON property `validationDataItemsCount`
        # @return [Fixnum]
        attr_accessor :validation_data_items_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @test_annotations_count = args[:test_annotations_count] if args.key?(:test_annotations_count)
          @test_data_items_count = args[:test_data_items_count] if args.key?(:test_data_items_count)
          @training_annotations_count = args[:training_annotations_count] if args.key?(:training_annotations_count)
          @training_data_items_count = args[:training_data_items_count] if args.key?(:training_data_items_count)
          @validation_annotations_count = args[:validation_annotations_count] if args.key?(:validation_annotations_count)
          @validation_data_items_count = args[:validation_data_items_count] if args.key?(:validation_data_items_count)
        end
      end
      
      # ModelDeploymentMonitoringBigQueryTable specifies the BigQuery table name as
      # well as some information of the logs stored in this table.
      class GoogleCloudAiplatformV1ModelDeploymentMonitoringBigQueryTable
        include Google::Apis::Core::Hashable
      
        # The created BigQuery table to store logs. Customer could do their own query &
        # analysis. Format: `bq://.model_deployment_monitoring_._`
        # Corresponds to the JSON property `bigqueryTablePath`
        # @return [String]
        attr_accessor :bigquery_table_path
      
        # The source of log.
        # Corresponds to the JSON property `logSource`
        # @return [String]
        attr_accessor :log_source
      
        # The type of log.
        # Corresponds to the JSON property `logType`
        # @return [String]
        attr_accessor :log_type
      
        # Output only. The schema version of the request/response logging BigQuery table.
        # Default to v1 if unset.
        # Corresponds to the JSON property `requestResponseLoggingSchemaVersion`
        # @return [String]
        attr_accessor :request_response_logging_schema_version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @bigquery_table_path = args[:bigquery_table_path] if args.key?(:bigquery_table_path)
          @log_source = args[:log_source] if args.key?(:log_source)
          @log_type = args[:log_type] if args.key?(:log_type)
          @request_response_logging_schema_version = args[:request_response_logging_schema_version] if args.key?(:request_response_logging_schema_version)
        end
      end
      
      # Represents a job that runs periodically to monitor the deployed models in an
      # endpoint. It will analyze the logged training & prediction data to detect any
      # abnormal behaviors.
      class GoogleCloudAiplatformV1ModelDeploymentMonitoringJob
        include Google::Apis::Core::Hashable
      
        # YAML schema file uri describing the format of a single instance that you want
        # Tensorflow Data Validation (TFDV) to analyze. If this field is empty, all the
        # feature data types are inferred from predict_instance_schema_uri, meaning that
        # TFDV will use the data in the exact format(data type) as prediction request/
        # response. If there are any data type differences between predict instance and
        # TFDV instance, this field can be used to override the schema. For models
        # trained with Vertex AI, this field must be set as all the fields in predict
        # instance formatted as string.
        # Corresponds to the JSON property `analysisInstanceSchemaUri`
        # @return [String]
        attr_accessor :analysis_instance_schema_uri
      
        # Output only. The created bigquery tables for the job under customer project.
        # Customer could do their own query & analysis. There could be 4 log tables in
        # maximum: 1. Training data logging predict request/response 2. Serving data
        # logging predict request/response
        # Corresponds to the JSON property `bigqueryTables`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelDeploymentMonitoringBigQueryTable>]
        attr_accessor :bigquery_tables
      
        # Output only. Timestamp when this ModelDeploymentMonitoringJob was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Required. The user-defined name of the ModelDeploymentMonitoringJob. The name
        # can be up to 128 characters long and can consist of any UTF-8 characters.
        # Display name of a ModelDeploymentMonitoringJob.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # If true, the scheduled monitoring pipeline logs are sent to Google Cloud
        # Logging, including pipeline status and anomalies detected. Please note the
        # logs incur cost, which are subject to [Cloud Logging pricing](https://cloud.
        # google.com/logging#pricing).
        # Corresponds to the JSON property `enableMonitoringPipelineLogs`
        # @return [Boolean]
        attr_accessor :enable_monitoring_pipeline_logs
        alias_method :enable_monitoring_pipeline_logs?, :enable_monitoring_pipeline_logs
      
        # Represents a customer-managed encryption key spec that can be applied to a top-
        # level resource.
        # Corresponds to the JSON property `encryptionSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EncryptionSpec]
        attr_accessor :encryption_spec
      
        # Required. Endpoint resource name. Format: `projects/`project`/locations/`
        # location`/endpoints/`endpoint``
        # Corresponds to the JSON property `endpoint`
        # @return [String]
        attr_accessor :endpoint
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `error`
        # @return [Google::Apis::AiplatformV1::GoogleRpcStatus]
        attr_accessor :error
      
        # The labels with user-defined metadata to organize your
        # ModelDeploymentMonitoringJob. Label keys and values can be no longer than 64
        # characters (Unicode codepoints), can only contain lowercase letters, numeric
        # characters, underscores and dashes. International characters are allowed. See
        # https://goo.gl/xmQnxf for more information and examples of labels.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # All metadata of most recent monitoring pipelines.
        # Corresponds to the JSON property `latestMonitoringPipelineMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelDeploymentMonitoringJobLatestMonitoringPipelineMetadata]
        attr_accessor :latest_monitoring_pipeline_metadata
      
        # The TTL of BigQuery tables in user projects which stores logs. A day is the
        # basic unit of the TTL and we take the ceil of TTL/86400(a day). e.g. ` second:
        # 3600` indicates ttl = 1 day.
        # Corresponds to the JSON property `logTtl`
        # @return [String]
        attr_accessor :log_ttl
      
        # Sampling Strategy for logging, can be for both training and prediction dataset.
        # Corresponds to the JSON property `loggingSamplingStrategy`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SamplingStrategy]
        attr_accessor :logging_sampling_strategy
      
        # Required. The config for monitoring objectives. This is a per DeployedModel
        # config. Each DeployedModel needs to be configured separately.
        # Corresponds to the JSON property `modelDeploymentMonitoringObjectiveConfigs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelDeploymentMonitoringObjectiveConfig>]
        attr_accessor :model_deployment_monitoring_objective_configs
      
        # The config for scheduling monitoring job.
        # Corresponds to the JSON property `modelDeploymentMonitoringScheduleConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelDeploymentMonitoringScheduleConfig]
        attr_accessor :model_deployment_monitoring_schedule_config
      
        # The alert config for model monitoring.
        # Corresponds to the JSON property `modelMonitoringAlertConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelMonitoringAlertConfig]
        attr_accessor :model_monitoring_alert_config
      
        # Output only. Resource name of a ModelDeploymentMonitoringJob.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Output only. Timestamp when this monitoring pipeline will be scheduled to run
        # for the next round.
        # Corresponds to the JSON property `nextScheduleTime`
        # @return [String]
        attr_accessor :next_schedule_time
      
        # YAML schema file uri describing the format of a single instance, which are
        # given to format this Endpoint's prediction (and explanation). If not set, we
        # will generate predict schema from collected predict requests.
        # Corresponds to the JSON property `predictInstanceSchemaUri`
        # @return [String]
        attr_accessor :predict_instance_schema_uri
      
        # Sample Predict instance, same format as PredictRequest.instances, this can be
        # set as a replacement of ModelDeploymentMonitoringJob.
        # predict_instance_schema_uri. If not set, we will generate predict schema from
        # collected predict requests.
        # Corresponds to the JSON property `samplePredictInstance`
        # @return [Object]
        attr_accessor :sample_predict_instance
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzi`
        # @return [Boolean]
        attr_accessor :satisfies_pzi
        alias_method :satisfies_pzi?, :satisfies_pzi
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzs`
        # @return [Boolean]
        attr_accessor :satisfies_pzs
        alias_method :satisfies_pzs?, :satisfies_pzs
      
        # Output only. Schedule state when the monitoring job is in Running state.
        # Corresponds to the JSON property `scheduleState`
        # @return [String]
        attr_accessor :schedule_state
      
        # Output only. The detailed state of the monitoring job. When the job is still
        # creating, the state will be 'PENDING'. Once the job is successfully created,
        # the state will be 'RUNNING'. Pause the job, the state will be 'PAUSED'. Resume
        # the job, the state will return to 'RUNNING'.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        # The Google Cloud Storage location where the output is to be written to.
        # Corresponds to the JSON property `statsAnomaliesBaseDirectory`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GcsDestination]
        attr_accessor :stats_anomalies_base_directory
      
        # Output only. Timestamp when this ModelDeploymentMonitoringJob was updated most
        # recently.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @analysis_instance_schema_uri = args[:analysis_instance_schema_uri] if args.key?(:analysis_instance_schema_uri)
          @bigquery_tables = args[:bigquery_tables] if args.key?(:bigquery_tables)
          @create_time = args[:create_time] if args.key?(:create_time)
          @display_name = args[:display_name] if args.key?(:display_name)
          @enable_monitoring_pipeline_logs = args[:enable_monitoring_pipeline_logs] if args.key?(:enable_monitoring_pipeline_logs)
          @encryption_spec = args[:encryption_spec] if args.key?(:encryption_spec)
          @endpoint = args[:endpoint] if args.key?(:endpoint)
          @error = args[:error] if args.key?(:error)
          @labels = args[:labels] if args.key?(:labels)
          @latest_monitoring_pipeline_metadata = args[:latest_monitoring_pipeline_metadata] if args.key?(:latest_monitoring_pipeline_metadata)
          @log_ttl = args[:log_ttl] if args.key?(:log_ttl)
          @logging_sampling_strategy = args[:logging_sampling_strategy] if args.key?(:logging_sampling_strategy)
          @model_deployment_monitoring_objective_configs = args[:model_deployment_monitoring_objective_configs] if args.key?(:model_deployment_monitoring_objective_configs)
          @model_deployment_monitoring_schedule_config = args[:model_deployment_monitoring_schedule_config] if args.key?(:model_deployment_monitoring_schedule_config)
          @model_monitoring_alert_config = args[:model_monitoring_alert_config] if args.key?(:model_monitoring_alert_config)
          @name = args[:name] if args.key?(:name)
          @next_schedule_time = args[:next_schedule_time] if args.key?(:next_schedule_time)
          @predict_instance_schema_uri = args[:predict_instance_schema_uri] if args.key?(:predict_instance_schema_uri)
          @sample_predict_instance = args[:sample_predict_instance] if args.key?(:sample_predict_instance)
          @satisfies_pzi = args[:satisfies_pzi] if args.key?(:satisfies_pzi)
          @satisfies_pzs = args[:satisfies_pzs] if args.key?(:satisfies_pzs)
          @schedule_state = args[:schedule_state] if args.key?(:schedule_state)
          @state = args[:state] if args.key?(:state)
          @stats_anomalies_base_directory = args[:stats_anomalies_base_directory] if args.key?(:stats_anomalies_base_directory)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # All metadata of most recent monitoring pipelines.
      class GoogleCloudAiplatformV1ModelDeploymentMonitoringJobLatestMonitoringPipelineMetadata
        include Google::Apis::Core::Hashable
      
        # The time that most recent monitoring pipelines that is related to this run.
        # Corresponds to the JSON property `runTime`
        # @return [String]
        attr_accessor :run_time
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `status`
        # @return [Google::Apis::AiplatformV1::GoogleRpcStatus]
        attr_accessor :status
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @run_time = args[:run_time] if args.key?(:run_time)
          @status = args[:status] if args.key?(:status)
        end
      end
      
      # ModelDeploymentMonitoringObjectiveConfig contains the pair of
      # deployed_model_id to ModelMonitoringObjectiveConfig.
      class GoogleCloudAiplatformV1ModelDeploymentMonitoringObjectiveConfig
        include Google::Apis::Core::Hashable
      
        # The DeployedModel ID of the objective config.
        # Corresponds to the JSON property `deployedModelId`
        # @return [String]
        attr_accessor :deployed_model_id
      
        # The objective configuration for model monitoring, including the information
        # needed to detect anomalies for one particular model.
        # Corresponds to the JSON property `objectiveConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelMonitoringObjectiveConfig]
        attr_accessor :objective_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @deployed_model_id = args[:deployed_model_id] if args.key?(:deployed_model_id)
          @objective_config = args[:objective_config] if args.key?(:objective_config)
        end
      end
      
      # The config for scheduling monitoring job.
      class GoogleCloudAiplatformV1ModelDeploymentMonitoringScheduleConfig
        include Google::Apis::Core::Hashable
      
        # Required. The model monitoring job scheduling interval. It will be rounded up
        # to next full hour. This defines how often the monitoring jobs are triggered.
        # Corresponds to the JSON property `monitorInterval`
        # @return [String]
        attr_accessor :monitor_interval
      
        # The time window of the prediction data being included in each prediction
        # dataset. This window specifies how long the data should be collected from
        # historical model results for each run. If not set,
        # ModelDeploymentMonitoringScheduleConfig.monitor_interval will be used. e.g. If
        # currently the cutoff time is 2022-01-08 14:30:00 and the monitor_window is set
        # to be 3600, then data from 2022-01-08 13:30:00 to 2022-01-08 14:30:00 will be
        # retrieved and aggregated to calculate the monitoring statistics.
        # Corresponds to the JSON property `monitorWindow`
        # @return [String]
        attr_accessor :monitor_window
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @monitor_interval = args[:monitor_interval] if args.key?(:monitor_interval)
          @monitor_window = args[:monitor_window] if args.key?(:monitor_window)
        end
      end
      
      # A collection of metrics calculated by comparing Model's predictions on all of
      # the test data against annotations from the test data.
      class GoogleCloudAiplatformV1ModelEvaluation
        include Google::Apis::Core::Hashable
      
        # Points to a YAML file stored on Google Cloud Storage describing
        # EvaluatedDataItemView.predictions, EvaluatedDataItemView.ground_truths,
        # EvaluatedAnnotation.predictions, and EvaluatedAnnotation.ground_truths. The
        # schema is defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/
        # OpenAPI-Specification/blob/main/versions/3.0.2.md#schemaObject). This field is
        # not populated if there are neither EvaluatedDataItemViews nor
        # EvaluatedAnnotations under this ModelEvaluation.
        # Corresponds to the JSON property `annotationSchemaUri`
        # @return [String]
        attr_accessor :annotation_schema_uri
      
        # Output only. Timestamp when this ModelEvaluation was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Points to a YAML file stored on Google Cloud Storage describing
        # EvaluatedDataItemView.data_item_payload and EvaluatedAnnotation.
        # data_item_payload. The schema is defined as an OpenAPI 3.0.2 [Schema Object](
        # https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#
        # schemaObject). This field is not populated if there are neither
        # EvaluatedDataItemViews nor EvaluatedAnnotations under this ModelEvaluation.
        # Corresponds to the JSON property `dataItemSchemaUri`
        # @return [String]
        attr_accessor :data_item_schema_uri
      
        # The display name of the ModelEvaluation.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Describes the values of ExplanationSpec that are used for explaining the
        # predicted values on the evaluated data.
        # Corresponds to the JSON property `explanationSpecs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelEvaluationModelEvaluationExplanationSpec>]
        attr_accessor :explanation_specs
      
        # The metadata of the ModelEvaluation. For the ModelEvaluation uploaded from
        # Managed Pipeline, metadata contains a structured value with keys of "
        # pipeline_job_id", "evaluation_dataset_type", "evaluation_dataset_path", "
        # row_based_metrics_path".
        # Corresponds to the JSON property `metadata`
        # @return [Object]
        attr_accessor :metadata
      
        # Evaluation metrics of the Model. The schema of the metrics is stored in
        # metrics_schema_uri
        # Corresponds to the JSON property `metrics`
        # @return [Object]
        attr_accessor :metrics
      
        # Points to a YAML file stored on Google Cloud Storage describing the metrics of
        # this ModelEvaluation. The schema is defined as an OpenAPI 3.0.2 [Schema Object]
        # (https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.2.md#
        # schemaObject).
        # Corresponds to the JSON property `metricsSchemaUri`
        # @return [String]
        attr_accessor :metrics_schema_uri
      
        # Aggregated explanation metrics for a Model over a set of instances.
        # Corresponds to the JSON property `modelExplanation`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelExplanation]
        attr_accessor :model_explanation
      
        # Output only. The resource name of the ModelEvaluation.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # All possible dimensions of ModelEvaluationSlices. The dimensions can be used
        # as the filter of the ModelService.ListModelEvaluationSlices request, in the
        # form of `slice.dimension = `.
        # Corresponds to the JSON property `sliceDimensions`
        # @return [Array<String>]
        attr_accessor :slice_dimensions
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @annotation_schema_uri = args[:annotation_schema_uri] if args.key?(:annotation_schema_uri)
          @create_time = args[:create_time] if args.key?(:create_time)
          @data_item_schema_uri = args[:data_item_schema_uri] if args.key?(:data_item_schema_uri)
          @display_name = args[:display_name] if args.key?(:display_name)
          @explanation_specs = args[:explanation_specs] if args.key?(:explanation_specs)
          @metadata = args[:metadata] if args.key?(:metadata)
          @metrics = args[:metrics] if args.key?(:metrics)
          @metrics_schema_uri = args[:metrics_schema_uri] if args.key?(:metrics_schema_uri)
          @model_explanation = args[:model_explanation] if args.key?(:model_explanation)
          @name = args[:name] if args.key?(:name)
          @slice_dimensions = args[:slice_dimensions] if args.key?(:slice_dimensions)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1ModelEvaluationModelEvaluationExplanationSpec
        include Google::Apis::Core::Hashable
      
        # Specification of Model explanation.
        # Corresponds to the JSON property `explanationSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExplanationSpec]
        attr_accessor :explanation_spec
      
        # Explanation type. For AutoML Image Classification models, possible values are:
        # * `image-integrated-gradients` * `image-xrai`
        # Corresponds to the JSON property `explanationType`
        # @return [String]
        attr_accessor :explanation_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @explanation_spec = args[:explanation_spec] if args.key?(:explanation_spec)
          @explanation_type = args[:explanation_type] if args.key?(:explanation_type)
        end
      end
      
      # A collection of metrics calculated by comparing Model's predictions on a slice
      # of the test data against ground truth annotations.
      class GoogleCloudAiplatformV1ModelEvaluationSlice
        include Google::Apis::Core::Hashable
      
        # Output only. Timestamp when this ModelEvaluationSlice was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Output only. Sliced evaluation metrics of the Model. The schema of the metrics
        # is stored in metrics_schema_uri
        # Corresponds to the JSON property `metrics`
        # @return [Object]
        attr_accessor :metrics
      
        # Output only. Points to a YAML file stored on Google Cloud Storage describing
        # the metrics of this ModelEvaluationSlice. The schema is defined as an OpenAPI
        # 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/
        # versions/3.0.2.md#schemaObject).
        # Corresponds to the JSON property `metricsSchemaUri`
        # @return [String]
        attr_accessor :metrics_schema_uri
      
        # Aggregated explanation metrics for a Model over a set of instances.
        # Corresponds to the JSON property `modelExplanation`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelExplanation]
        attr_accessor :model_explanation
      
        # Output only. The resource name of the ModelEvaluationSlice.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Definition of a slice.
        # Corresponds to the JSON property `slice`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelEvaluationSliceSlice]
        attr_accessor :slice
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @metrics = args[:metrics] if args.key?(:metrics)
          @metrics_schema_uri = args[:metrics_schema_uri] if args.key?(:metrics_schema_uri)
          @model_explanation = args[:model_explanation] if args.key?(:model_explanation)
          @name = args[:name] if args.key?(:name)
          @slice = args[:slice] if args.key?(:slice)
        end
      end
      
      # Definition of a slice.
      class GoogleCloudAiplatformV1ModelEvaluationSliceSlice
        include Google::Apis::Core::Hashable
      
        # Output only. The dimension of the slice. Well-known dimensions are: * `
        # annotationSpec`: This slice is on the test data that has either ground truth
        # or prediction with AnnotationSpec.display_name equals to value. * `slice`:
        # This slice is a user customized slice defined by its SliceSpec.
        # Corresponds to the JSON property `dimension`
        # @return [String]
        attr_accessor :dimension
      
        # Specification for how the data should be sliced.
        # Corresponds to the JSON property `sliceSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelEvaluationSliceSliceSliceSpec]
        attr_accessor :slice_spec
      
        # Output only. The value of the dimension in this slice.
        # Corresponds to the JSON property `value`
        # @return [String]
        attr_accessor :value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @dimension = args[:dimension] if args.key?(:dimension)
          @slice_spec = args[:slice_spec] if args.key?(:slice_spec)
          @value = args[:value] if args.key?(:value)
        end
      end
      
      # Specification for how the data should be sliced.
      class GoogleCloudAiplatformV1ModelEvaluationSliceSliceSliceSpec
        include Google::Apis::Core::Hashable
      
        # Mapping configuration for this SliceSpec. The key is the name of the feature.
        # By default, the key will be prefixed by "instance" as a dictionary prefix for
        # Vertex Batch Predictions output format.
        # Corresponds to the JSON property `configs`
        # @return [Hash<String,Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelEvaluationSliceSliceSliceSpecSliceConfig>]
        attr_accessor :configs
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @configs = args[:configs] if args.key?(:configs)
        end
      end
      
      # A range of values for slice(s). `low` is inclusive, `high` is exclusive.
      class GoogleCloudAiplatformV1ModelEvaluationSliceSliceSliceSpecRange
        include Google::Apis::Core::Hashable
      
        # Exclusive high value for the range.
        # Corresponds to the JSON property `high`
        # @return [Float]
        attr_accessor :high
      
        # Inclusive low value for the range.
        # Corresponds to the JSON property `low`
        # @return [Float]
        attr_accessor :low
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @high = args[:high] if args.key?(:high)
          @low = args[:low] if args.key?(:low)
        end
      end
      
      # Specification message containing the config for this SliceSpec. When `kind` is
      # selected as `value` and/or `range`, only a single slice will be computed. When
      # `all_values` is present, a separate slice will be computed for each possible
      # label/value for the corresponding key in `config`. Examples, with feature
      # zip_code with values 12345, 23334, 88888 and feature country with values "US",
      # "Canada", "Mexico" in the dataset: Example 1: ` "zip_code": ` "value": ` "
      # float_value": 12345.0 ` ` ` A single slice for any data with zip_code 12345 in
      # the dataset. Example 2: ` "zip_code": ` "range": ` "low": 12345, "high": 20000
      # ` ` ` A single slice containing data where the zip_codes between 12345 and
      # 20000 For this example, data with the zip_code of 12345 will be in this slice.
      # Example 3: ` "zip_code": ` "range": ` "low": 10000, "high": 20000 ` `, "
      # country": ` "value": ` "string_value": "US" ` ` ` A single slice containing
      # data where the zip_codes between 10000 and 20000 has the country "US". For
      # this example, data with the zip_code of 12345 and country "US" will be in this
      # slice. Example 4: ` "country": `"all_values": ` "value": true ` ` ` Three
      # slices are computed, one for each unique country in the dataset. Example 5: ` "
      # country": ` "all_values": ` "value": true ` `, "zip_code": ` "value": ` "
      # float_value": 12345.0 ` ` ` Three slices are computed, one for each unique
      # country in the dataset where the zip_code is also 12345. For this example,
      # data with zip_code 12345 and country "US" will be in one slice, zip_code 12345
      # and country "Canada" in another slice, and zip_code 12345 and country "Mexico"
      # in another slice, totaling 3 slices.
      class GoogleCloudAiplatformV1ModelEvaluationSliceSliceSliceSpecSliceConfig
        include Google::Apis::Core::Hashable
      
        # If all_values is set to true, then all possible labels of the keyed feature
        # will have another slice computed. Example: ``"all_values":`"value":true```
        # Corresponds to the JSON property `allValues`
        # @return [Boolean]
        attr_accessor :all_values
        alias_method :all_values?, :all_values
      
        # A range of values for slice(s). `low` is inclusive, `high` is exclusive.
        # Corresponds to the JSON property `range`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelEvaluationSliceSliceSliceSpecRange]
        attr_accessor :range
      
        # Single value that supports strings and floats.
        # Corresponds to the JSON property `value`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelEvaluationSliceSliceSliceSpecValue]
        attr_accessor :value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @all_values = args[:all_values] if args.key?(:all_values)
          @range = args[:range] if args.key?(:range)
          @value = args[:value] if args.key?(:value)
        end
      end
      
      # Single value that supports strings and floats.
      class GoogleCloudAiplatformV1ModelEvaluationSliceSliceSliceSpecValue
        include Google::Apis::Core::Hashable
      
        # Float type.
        # Corresponds to the JSON property `floatValue`
        # @return [Float]
        attr_accessor :float_value
      
        # String type.
        # Corresponds to the JSON property `stringValue`
        # @return [String]
        attr_accessor :string_value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @float_value = args[:float_value] if args.key?(:float_value)
          @string_value = args[:string_value] if args.key?(:string_value)
        end
      end
      
      # Aggregated explanation metrics for a Model over a set of instances.
      class GoogleCloudAiplatformV1ModelExplanation
        include Google::Apis::Core::Hashable
      
        # Output only. Aggregated attributions explaining the Model's prediction outputs
        # over the set of instances. The attributions are grouped by outputs. For Models
        # that predict only one output, such as regression Models that predict only one
        # score, there is only one attibution that explains the predicted output. For
        # Models that predict multiple outputs, such as multiclass Models that predict
        # multiple classes, each element explains one specific item. Attribution.
        # output_index can be used to identify which output this attribution is
        # explaining. The baselineOutputValue, instanceOutputValue and
        # featureAttributions fields are averaged over the test data. NOTE: Currently
        # AutoML tabular classification Models produce only one attribution, which
        # averages attributions over all the classes it predicts. Attribution.
        # approximation_error is not populated.
        # Corresponds to the JSON property `meanAttributions`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Attribution>]
        attr_accessor :mean_attributions
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @mean_attributions = args[:mean_attributions] if args.key?(:mean_attributions)
        end
      end
      
      # Represents export format supported by the Model. All formats export to Google
      # Cloud Storage.
      class GoogleCloudAiplatformV1ModelExportFormat
        include Google::Apis::Core::Hashable
      
        # Output only. The content of this Model that may be exported.
        # Corresponds to the JSON property `exportableContents`
        # @return [Array<String>]
        attr_accessor :exportable_contents
      
        # Output only. The ID of the export format. The possible format IDs are: * `
        # tflite` Used for Android mobile devices. * `edgetpu-tflite` Used for [Edge TPU]
        # (https://cloud.google.com/edge-tpu/) devices. * `tf-saved-model` A tensorflow
        # model in SavedModel format. * `tf-js` A [TensorFlow.js](https://www.tensorflow.
        # org/js) model that can be used in the browser and in Node.js using JavaScript.
        # * `core-ml` Used for iOS mobile devices. * `custom-trained` A Model that was
        # uploaded or trained by custom code. * `genie` A tuned Model Garden model.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @exportable_contents = args[:exportable_contents] if args.key?(:exportable_contents)
          @id = args[:id] if args.key?(:id)
        end
      end
      
      # Contains information about the source of the models generated from Model
      # Garden.
      class GoogleCloudAiplatformV1ModelGardenSource
        include Google::Apis::Core::Hashable
      
        # Required. The model garden source model resource name.
        # Corresponds to the JSON property `publicModelName`
        # @return [String]
        attr_accessor :public_model_name
      
        # Optional. Whether to avoid pulling the model from the HF cache.
        # Corresponds to the JSON property `skipHfModelCache`
        # @return [Boolean]
        attr_accessor :skip_hf_model_cache
        alias_method :skip_hf_model_cache?, :skip_hf_model_cache
      
        # Optional. The model garden source model version ID.
        # Corresponds to the JSON property `versionId`
        # @return [String]
        attr_accessor :version_id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @public_model_name = args[:public_model_name] if args.key?(:public_model_name)
          @skip_hf_model_cache = args[:skip_hf_model_cache] if args.key?(:skip_hf_model_cache)
          @version_id = args[:version_id] if args.key?(:version_id)
        end
      end
      
      # The alert config for model monitoring.
      class GoogleCloudAiplatformV1ModelMonitoringAlertConfig
        include Google::Apis::Core::Hashable
      
        # The config for email alert.
        # Corresponds to the JSON property `emailAlertConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelMonitoringAlertConfigEmailAlertConfig]
        attr_accessor :email_alert_config
      
        # Dump the anomalies to Cloud Logging. The anomalies will be put to json payload
        # encoded from proto ModelMonitoringStatsAnomalies. This can be further synced
        # to Pub/Sub or any other services supported by Cloud Logging.
        # Corresponds to the JSON property `enableLogging`
        # @return [Boolean]
        attr_accessor :enable_logging
        alias_method :enable_logging?, :enable_logging
      
        # Resource names of the NotificationChannels to send alert. Must be of the
        # format `projects//notificationChannels/`
        # Corresponds to the JSON property `notificationChannels`
        # @return [Array<String>]
        attr_accessor :notification_channels
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @email_alert_config = args[:email_alert_config] if args.key?(:email_alert_config)
          @enable_logging = args[:enable_logging] if args.key?(:enable_logging)
          @notification_channels = args[:notification_channels] if args.key?(:notification_channels)
        end
      end
      
      # The config for email alert.
      class GoogleCloudAiplatformV1ModelMonitoringAlertConfigEmailAlertConfig
        include Google::Apis::Core::Hashable
      
        # The email addresses to send the alert.
        # Corresponds to the JSON property `userEmails`
        # @return [Array<String>]
        attr_accessor :user_emails
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @user_emails = args[:user_emails] if args.key?(:user_emails)
        end
      end
      
      # The objective configuration for model monitoring, including the information
      # needed to detect anomalies for one particular model.
      class GoogleCloudAiplatformV1ModelMonitoringObjectiveConfig
        include Google::Apis::Core::Hashable
      
        # The config for integrating with Vertex Explainable AI. Only applicable if the
        # Model has explanation_spec populated.
        # Corresponds to the JSON property `explanationConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigExplanationConfig]
        attr_accessor :explanation_config
      
        # The config for Prediction data drift detection.
        # Corresponds to the JSON property `predictionDriftDetectionConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigPredictionDriftDetectionConfig]
        attr_accessor :prediction_drift_detection_config
      
        # Training Dataset information.
        # Corresponds to the JSON property `trainingDataset`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigTrainingDataset]
        attr_accessor :training_dataset
      
        # The config for Training & Prediction data skew detection. It specifies the
        # training dataset sources and the skew detection parameters.
        # Corresponds to the JSON property `trainingPredictionSkewDetectionConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigTrainingPredictionSkewDetectionConfig]
        attr_accessor :training_prediction_skew_detection_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @explanation_config = args[:explanation_config] if args.key?(:explanation_config)
          @prediction_drift_detection_config = args[:prediction_drift_detection_config] if args.key?(:prediction_drift_detection_config)
          @training_dataset = args[:training_dataset] if args.key?(:training_dataset)
          @training_prediction_skew_detection_config = args[:training_prediction_skew_detection_config] if args.key?(:training_prediction_skew_detection_config)
        end
      end
      
      # The config for integrating with Vertex Explainable AI. Only applicable if the
      # Model has explanation_spec populated.
      class GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigExplanationConfig
        include Google::Apis::Core::Hashable
      
        # If want to analyze the Vertex Explainable AI feature attribute scores or not.
        # If set to true, Vertex AI will log the feature attributions from explain
        # response and do the skew/drift detection for them.
        # Corresponds to the JSON property `enableFeatureAttributes`
        # @return [Boolean]
        attr_accessor :enable_feature_attributes
        alias_method :enable_feature_attributes?, :enable_feature_attributes
      
        # Output from BatchPredictionJob for Model Monitoring baseline dataset, which
        # can be used to generate baseline attribution scores.
        # Corresponds to the JSON property `explanationBaseline`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigExplanationConfigExplanationBaseline]
        attr_accessor :explanation_baseline
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @enable_feature_attributes = args[:enable_feature_attributes] if args.key?(:enable_feature_attributes)
          @explanation_baseline = args[:explanation_baseline] if args.key?(:explanation_baseline)
        end
      end
      
      # Output from BatchPredictionJob for Model Monitoring baseline dataset, which
      # can be used to generate baseline attribution scores.
      class GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigExplanationConfigExplanationBaseline
        include Google::Apis::Core::Hashable
      
        # The BigQuery location for the output content.
        # Corresponds to the JSON property `bigquery`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BigQueryDestination]
        attr_accessor :bigquery
      
        # The Google Cloud Storage location where the output is to be written to.
        # Corresponds to the JSON property `gcs`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GcsDestination]
        attr_accessor :gcs
      
        # The storage format of the predictions generated BatchPrediction job.
        # Corresponds to the JSON property `predictionFormat`
        # @return [String]
        attr_accessor :prediction_format
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @bigquery = args[:bigquery] if args.key?(:bigquery)
          @gcs = args[:gcs] if args.key?(:gcs)
          @prediction_format = args[:prediction_format] if args.key?(:prediction_format)
        end
      end
      
      # The config for Prediction data drift detection.
      class GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigPredictionDriftDetectionConfig
        include Google::Apis::Core::Hashable
      
        # Key is the feature name and value is the threshold. The threshold here is
        # against attribution score distance between different time windows.
        # Corresponds to the JSON property `attributionScoreDriftThresholds`
        # @return [Hash<String,Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ThresholdConfig>]
        attr_accessor :attribution_score_drift_thresholds
      
        # The config for feature monitoring threshold.
        # Corresponds to the JSON property `defaultDriftThreshold`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ThresholdConfig]
        attr_accessor :default_drift_threshold
      
        # Key is the feature name and value is the threshold. If a feature needs to be
        # monitored for drift, a value threshold must be configured for that feature.
        # The threshold here is against feature distribution distance between different
        # time windws.
        # Corresponds to the JSON property `driftThresholds`
        # @return [Hash<String,Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ThresholdConfig>]
        attr_accessor :drift_thresholds
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @attribution_score_drift_thresholds = args[:attribution_score_drift_thresholds] if args.key?(:attribution_score_drift_thresholds)
          @default_drift_threshold = args[:default_drift_threshold] if args.key?(:default_drift_threshold)
          @drift_thresholds = args[:drift_thresholds] if args.key?(:drift_thresholds)
        end
      end
      
      # Training Dataset information.
      class GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigTrainingDataset
        include Google::Apis::Core::Hashable
      
        # The BigQuery location for the input content.
        # Corresponds to the JSON property `bigquerySource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BigQuerySource]
        attr_accessor :bigquery_source
      
        # Data format of the dataset, only applicable if the input is from Google Cloud
        # Storage. The possible formats are: "tf-record" The source file is a TFRecord
        # file. "csv" The source file is a CSV file. "jsonl" The source file is a JSONL
        # file.
        # Corresponds to the JSON property `dataFormat`
        # @return [String]
        attr_accessor :data_format
      
        # The resource name of the Dataset used to train this Model.
        # Corresponds to the JSON property `dataset`
        # @return [String]
        attr_accessor :dataset
      
        # The Google Cloud Storage location for the input content.
        # Corresponds to the JSON property `gcsSource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GcsSource]
        attr_accessor :gcs_source
      
        # Sampling Strategy for logging, can be for both training and prediction dataset.
        # Corresponds to the JSON property `loggingSamplingStrategy`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SamplingStrategy]
        attr_accessor :logging_sampling_strategy
      
        # The target field name the model is to predict. This field will be excluded
        # when doing Predict and (or) Explain for the training data.
        # Corresponds to the JSON property `targetField`
        # @return [String]
        attr_accessor :target_field
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @bigquery_source = args[:bigquery_source] if args.key?(:bigquery_source)
          @data_format = args[:data_format] if args.key?(:data_format)
          @dataset = args[:dataset] if args.key?(:dataset)
          @gcs_source = args[:gcs_source] if args.key?(:gcs_source)
          @logging_sampling_strategy = args[:logging_sampling_strategy] if args.key?(:logging_sampling_strategy)
          @target_field = args[:target_field] if args.key?(:target_field)
        end
      end
      
      # The config for Training & Prediction data skew detection. It specifies the
      # training dataset sources and the skew detection parameters.
      class GoogleCloudAiplatformV1ModelMonitoringObjectiveConfigTrainingPredictionSkewDetectionConfig
        include Google::Apis::Core::Hashable
      
        # Key is the feature name and value is the threshold. The threshold here is
        # against attribution score distance between the training and prediction feature.
        # Corresponds to the JSON property `attributionScoreSkewThresholds`
        # @return [Hash<String,Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ThresholdConfig>]
        attr_accessor :attribution_score_skew_thresholds
      
        # The config for feature monitoring threshold.
        # Corresponds to the JSON property `defaultSkewThreshold`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ThresholdConfig]
        attr_accessor :default_skew_threshold
      
        # Key is the feature name and value is the threshold. If a feature needs to be
        # monitored for skew, a value threshold must be configured for that feature. The
        # threshold here is against feature distribution distance between the training
        # and prediction feature.
        # Corresponds to the JSON property `skewThresholds`
        # @return [Hash<String,Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ThresholdConfig>]
        attr_accessor :skew_thresholds
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @attribution_score_skew_thresholds = args[:attribution_score_skew_thresholds] if args.key?(:attribution_score_skew_thresholds)
          @default_skew_threshold = args[:default_skew_threshold] if args.key?(:default_skew_threshold)
          @skew_thresholds = args[:skew_thresholds] if args.key?(:skew_thresholds)
        end
      end
      
      # Statistics and anomalies generated by Model Monitoring.
      class GoogleCloudAiplatformV1ModelMonitoringStatsAnomalies
        include Google::Apis::Core::Hashable
      
        # Number of anomalies within all stats.
        # Corresponds to the JSON property `anomalyCount`
        # @return [Fixnum]
        attr_accessor :anomaly_count
      
        # Deployed Model ID.
        # Corresponds to the JSON property `deployedModelId`
        # @return [String]
        attr_accessor :deployed_model_id
      
        # A list of historical Stats and Anomalies generated for all Features.
        # Corresponds to the JSON property `featureStats`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelMonitoringStatsAnomaliesFeatureHistoricStatsAnomalies>]
        attr_accessor :feature_stats
      
        # Model Monitoring Objective those stats and anomalies belonging to.
        # Corresponds to the JSON property `objective`
        # @return [String]
        attr_accessor :objective
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @anomaly_count = args[:anomaly_count] if args.key?(:anomaly_count)
          @deployed_model_id = args[:deployed_model_id] if args.key?(:deployed_model_id)
          @feature_stats = args[:feature_stats] if args.key?(:feature_stats)
          @objective = args[:objective] if args.key?(:objective)
        end
      end
      
      # Historical Stats (and Anomalies) for a specific Feature.
      class GoogleCloudAiplatformV1ModelMonitoringStatsAnomaliesFeatureHistoricStatsAnomalies
        include Google::Apis::Core::Hashable
      
        # Display Name of the Feature.
        # Corresponds to the JSON property `featureDisplayName`
        # @return [String]
        attr_accessor :feature_display_name
      
        # A list of historical stats generated by different time window's Prediction
        # Dataset.
        # Corresponds to the JSON property `predictionStats`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureStatsAnomaly>]
        attr_accessor :prediction_stats
      
        # The config for feature monitoring threshold.
        # Corresponds to the JSON property `threshold`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ThresholdConfig]
        attr_accessor :threshold
      
        # Stats and Anomaly generated at specific timestamp for specific Feature. The
        # start_time and end_time are used to define the time range of the dataset that
        # current stats belongs to, e.g. prediction traffic is bucketed into prediction
        # datasets by time window. If the Dataset is not defined by time window,
        # start_time = end_time. Timestamp of the stats and anomalies always refers to
        # end_time. Raw stats and anomalies are stored in stats_uri or anomaly_uri in
        # the tensorflow defined protos. Field data_stats contains almost identical
        # information with the raw stats in Vertex AI defined proto, for UI to display.
        # Corresponds to the JSON property `trainingStats`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureStatsAnomaly]
        attr_accessor :training_stats
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @feature_display_name = args[:feature_display_name] if args.key?(:feature_display_name)
          @prediction_stats = args[:prediction_stats] if args.key?(:prediction_stats)
          @threshold = args[:threshold] if args.key?(:threshold)
          @training_stats = args[:training_stats] if args.key?(:training_stats)
        end
      end
      
      # Contains information about the original Model if this Model is a copy.
      class GoogleCloudAiplatformV1ModelOriginalModelInfo
        include Google::Apis::Core::Hashable
      
        # Output only. The resource name of the Model this Model is a copy of, including
        # the revision. Format: `projects/`project`/locations/`location`/models/`
        # model_id`@`version_id``
        # Corresponds to the JSON property `model`
        # @return [String]
        attr_accessor :model
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @model = args[:model] if args.key?(:model)
        end
      end
      
      # Detail description of the source information of the model.
      class GoogleCloudAiplatformV1ModelSourceInfo
        include Google::Apis::Core::Hashable
      
        # If this Model is copy of another Model. If true then source_type pertains to
        # the original.
        # Corresponds to the JSON property `copy`
        # @return [Boolean]
        attr_accessor :copy
        alias_method :copy?, :copy
      
        # Type of the model source.
        # Corresponds to the JSON property `sourceType`
        # @return [String]
        attr_accessor :source_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @copy = args[:copy] if args.key?(:copy)
          @source_type = args[:source_type] if args.key?(:source_type)
        end
      end
      
      # Describes the machine learning model version checkpoint.
      class GoogleCloudAiplatformV1ModelVersionCheckpoint
        include Google::Apis::Core::Hashable
      
        # The ID of the checkpoint.
        # Corresponds to the JSON property `checkpointId`
        # @return [String]
        attr_accessor :checkpoint_id
      
        # The epoch of the checkpoint.
        # Corresponds to the JSON property `epoch`
        # @return [Fixnum]
        attr_accessor :epoch
      
        # The step of the checkpoint.
        # Corresponds to the JSON property `step`
        # @return [Fixnum]
        attr_accessor :step
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @checkpoint_id = args[:checkpoint_id] if args.key?(:checkpoint_id)
          @epoch = args[:epoch] if args.key?(:epoch)
          @step = args[:step] if args.key?(:step)
        end
      end
      
      # Runtime operation information for IndexEndpointService.MutateDeployedIndex.
      class GoogleCloudAiplatformV1MutateDeployedIndexOperationMetadata
        include Google::Apis::Core::Hashable
      
        # The unique index id specified by user
        # Corresponds to the JSON property `deployedIndexId`
        # @return [String]
        attr_accessor :deployed_index_id
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @deployed_index_id = args[:deployed_index_id] if args.key?(:deployed_index_id)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Response message for IndexEndpointService.MutateDeployedIndex.
      class GoogleCloudAiplatformV1MutateDeployedIndexResponse
        include Google::Apis::Core::Hashable
      
        # A deployment of an Index. IndexEndpoints contain one or more DeployedIndexes.
        # Corresponds to the JSON property `deployedIndex`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DeployedIndex]
        attr_accessor :deployed_index
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @deployed_index = args[:deployed_index] if args.key?(:deployed_index)
        end
      end
      
      # Runtime operation information for EndpointService.MutateDeployedModel.
      class GoogleCloudAiplatformV1MutateDeployedModelOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Request message for EndpointService.MutateDeployedModel.
      class GoogleCloudAiplatformV1MutateDeployedModelRequest
        include Google::Apis::Core::Hashable
      
        # A deployment of a Model. Endpoints contain one or more DeployedModels.
        # Corresponds to the JSON property `deployedModel`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DeployedModel]
        attr_accessor :deployed_model
      
        # Required. The update mask applies to the resource. See google.protobuf.
        # FieldMask.
        # Corresponds to the JSON property `updateMask`
        # @return [String]
        attr_accessor :update_mask
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @deployed_model = args[:deployed_model] if args.key?(:deployed_model)
          @update_mask = args[:update_mask] if args.key?(:update_mask)
        end
      end
      
      # Response message for EndpointService.MutateDeployedModel.
      class GoogleCloudAiplatformV1MutateDeployedModelResponse
        include Google::Apis::Core::Hashable
      
        # A deployment of a Model. Endpoints contain one or more DeployedModels.
        # Corresponds to the JSON property `deployedModel`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DeployedModel]
        attr_accessor :deployed_model
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @deployed_model = args[:deployed_model] if args.key?(:deployed_model)
        end
      end
      
      # Represents a Neural Architecture Search (NAS) job.
      class GoogleCloudAiplatformV1NasJob
        include Google::Apis::Core::Hashable
      
        # Output only. Time when the NasJob was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Required. The display name of the NasJob. The name can be up to 128 characters
        # long and can consist of any UTF-8 characters.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Optional. Enable a separation of Custom model training and restricted image
        # training for tenant project.
        # Corresponds to the JSON property `enableRestrictedImageTraining`
        # @return [Boolean]
        attr_accessor :enable_restricted_image_training
        alias_method :enable_restricted_image_training?, :enable_restricted_image_training
      
        # Represents a customer-managed encryption key spec that can be applied to a top-
        # level resource.
        # Corresponds to the JSON property `encryptionSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EncryptionSpec]
        attr_accessor :encryption_spec
      
        # Output only. Time when the NasJob entered any of the following states: `
        # JOB_STATE_SUCCEEDED`, `JOB_STATE_FAILED`, `JOB_STATE_CANCELLED`.
        # Corresponds to the JSON property `endTime`
        # @return [String]
        attr_accessor :end_time
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `error`
        # @return [Google::Apis::AiplatformV1::GoogleRpcStatus]
        attr_accessor :error
      
        # The labels with user-defined metadata to organize NasJobs. Label keys and
        # values can be no longer than 64 characters (Unicode codepoints), can only
        # contain lowercase letters, numeric characters, underscores and dashes.
        # International characters are allowed. See https://goo.gl/xmQnxf for more
        # information and examples of labels.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Output only. Resource name of the NasJob.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Represents a uCAIP NasJob output.
        # Corresponds to the JSON property `nasJobOutput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NasJobOutput]
        attr_accessor :nas_job_output
      
        # Represents the spec of a NasJob.
        # Corresponds to the JSON property `nasJobSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NasJobSpec]
        attr_accessor :nas_job_spec
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzi`
        # @return [Boolean]
        attr_accessor :satisfies_pzi
        alias_method :satisfies_pzi?, :satisfies_pzi
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzs`
        # @return [Boolean]
        attr_accessor :satisfies_pzs
        alias_method :satisfies_pzs?, :satisfies_pzs
      
        # Output only. Time when the NasJob for the first time entered the `
        # JOB_STATE_RUNNING` state.
        # Corresponds to the JSON property `startTime`
        # @return [String]
        attr_accessor :start_time
      
        # Output only. The detailed state of the job.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        # Output only. Time when the NasJob was most recently updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @display_name = args[:display_name] if args.key?(:display_name)
          @enable_restricted_image_training = args[:enable_restricted_image_training] if args.key?(:enable_restricted_image_training)
          @encryption_spec = args[:encryption_spec] if args.key?(:encryption_spec)
          @end_time = args[:end_time] if args.key?(:end_time)
          @error = args[:error] if args.key?(:error)
          @labels = args[:labels] if args.key?(:labels)
          @name = args[:name] if args.key?(:name)
          @nas_job_output = args[:nas_job_output] if args.key?(:nas_job_output)
          @nas_job_spec = args[:nas_job_spec] if args.key?(:nas_job_spec)
          @satisfies_pzi = args[:satisfies_pzi] if args.key?(:satisfies_pzi)
          @satisfies_pzs = args[:satisfies_pzs] if args.key?(:satisfies_pzs)
          @start_time = args[:start_time] if args.key?(:start_time)
          @state = args[:state] if args.key?(:state)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # Represents a uCAIP NasJob output.
      class GoogleCloudAiplatformV1NasJobOutput
        include Google::Apis::Core::Hashable
      
        # The output of a multi-trial Neural Architecture Search (NAS) jobs.
        # Corresponds to the JSON property `multiTrialJobOutput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NasJobOutputMultiTrialJobOutput]
        attr_accessor :multi_trial_job_output
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @multi_trial_job_output = args[:multi_trial_job_output] if args.key?(:multi_trial_job_output)
        end
      end
      
      # The output of a multi-trial Neural Architecture Search (NAS) jobs.
      class GoogleCloudAiplatformV1NasJobOutputMultiTrialJobOutput
        include Google::Apis::Core::Hashable
      
        # Output only. List of NasTrials that were started as part of search stage.
        # Corresponds to the JSON property `searchTrials`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NasTrial>]
        attr_accessor :search_trials
      
        # Output only. List of NasTrials that were started as part of train stage.
        # Corresponds to the JSON property `trainTrials`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NasTrial>]
        attr_accessor :train_trials
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @search_trials = args[:search_trials] if args.key?(:search_trials)
          @train_trials = args[:train_trials] if args.key?(:train_trials)
        end
      end
      
      # Represents the spec of a NasJob.
      class GoogleCloudAiplatformV1NasJobSpec
        include Google::Apis::Core::Hashable
      
        # The spec of multi-trial Neural Architecture Search (NAS).
        # Corresponds to the JSON property `multiTrialAlgorithmSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NasJobSpecMultiTrialAlgorithmSpec]
        attr_accessor :multi_trial_algorithm_spec
      
        # The ID of the existing NasJob in the same Project and Location which will be
        # used to resume search. search_space_spec and nas_algorithm_spec are obtained
        # from previous NasJob hence should not provide them again for this NasJob.
        # Corresponds to the JSON property `resumeNasJobId`
        # @return [String]
        attr_accessor :resume_nas_job_id
      
        # It defines the search space for Neural Architecture Search (NAS).
        # Corresponds to the JSON property `searchSpaceSpec`
        # @return [String]
        attr_accessor :search_space_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @multi_trial_algorithm_spec = args[:multi_trial_algorithm_spec] if args.key?(:multi_trial_algorithm_spec)
          @resume_nas_job_id = args[:resume_nas_job_id] if args.key?(:resume_nas_job_id)
          @search_space_spec = args[:search_space_spec] if args.key?(:search_space_spec)
        end
      end
      
      # The spec of multi-trial Neural Architecture Search (NAS).
      class GoogleCloudAiplatformV1NasJobSpecMultiTrialAlgorithmSpec
        include Google::Apis::Core::Hashable
      
        # Represents a metric to optimize.
        # Corresponds to the JSON property `metric`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NasJobSpecMultiTrialAlgorithmSpecMetricSpec]
        attr_accessor :metric
      
        # The multi-trial Neural Architecture Search (NAS) algorithm type. Defaults to `
        # REINFORCEMENT_LEARNING`.
        # Corresponds to the JSON property `multiTrialAlgorithm`
        # @return [String]
        attr_accessor :multi_trial_algorithm
      
        # Represent spec for search trials.
        # Corresponds to the JSON property `searchTrialSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NasJobSpecMultiTrialAlgorithmSpecSearchTrialSpec]
        attr_accessor :search_trial_spec
      
        # Represent spec for train trials.
        # Corresponds to the JSON property `trainTrialSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NasJobSpecMultiTrialAlgorithmSpecTrainTrialSpec]
        attr_accessor :train_trial_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @metric = args[:metric] if args.key?(:metric)
          @multi_trial_algorithm = args[:multi_trial_algorithm] if args.key?(:multi_trial_algorithm)
          @search_trial_spec = args[:search_trial_spec] if args.key?(:search_trial_spec)
          @train_trial_spec = args[:train_trial_spec] if args.key?(:train_trial_spec)
        end
      end
      
      # Represents a metric to optimize.
      class GoogleCloudAiplatformV1NasJobSpecMultiTrialAlgorithmSpecMetricSpec
        include Google::Apis::Core::Hashable
      
        # Required. The optimization goal of the metric.
        # Corresponds to the JSON property `goal`
        # @return [String]
        attr_accessor :goal
      
        # Required. The ID of the metric. Must not contain whitespaces.
        # Corresponds to the JSON property `metricId`
        # @return [String]
        attr_accessor :metric_id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @goal = args[:goal] if args.key?(:goal)
          @metric_id = args[:metric_id] if args.key?(:metric_id)
        end
      end
      
      # Represent spec for search trials.
      class GoogleCloudAiplatformV1NasJobSpecMultiTrialAlgorithmSpecSearchTrialSpec
        include Google::Apis::Core::Hashable
      
        # The number of failed trials that need to be seen before failing the NasJob. If
        # set to 0, Vertex AI decides how many trials must fail before the whole job
        # fails.
        # Corresponds to the JSON property `maxFailedTrialCount`
        # @return [Fixnum]
        attr_accessor :max_failed_trial_count
      
        # Required. The maximum number of trials to run in parallel.
        # Corresponds to the JSON property `maxParallelTrialCount`
        # @return [Fixnum]
        attr_accessor :max_parallel_trial_count
      
        # Required. The maximum number of Neural Architecture Search (NAS) trials to run.
        # Corresponds to the JSON property `maxTrialCount`
        # @return [Fixnum]
        attr_accessor :max_trial_count
      
        # Represents the spec of a CustomJob.
        # Corresponds to the JSON property `searchTrialJobSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CustomJobSpec]
        attr_accessor :search_trial_job_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @max_failed_trial_count = args[:max_failed_trial_count] if args.key?(:max_failed_trial_count)
          @max_parallel_trial_count = args[:max_parallel_trial_count] if args.key?(:max_parallel_trial_count)
          @max_trial_count = args[:max_trial_count] if args.key?(:max_trial_count)
          @search_trial_job_spec = args[:search_trial_job_spec] if args.key?(:search_trial_job_spec)
        end
      end
      
      # Represent spec for train trials.
      class GoogleCloudAiplatformV1NasJobSpecMultiTrialAlgorithmSpecTrainTrialSpec
        include Google::Apis::Core::Hashable
      
        # Required. Frequency of search trials to start train stage. Top N [
        # TrainTrialSpec.max_parallel_trial_count] search trials will be trained for
        # every M [TrainTrialSpec.frequency] trials searched.
        # Corresponds to the JSON property `frequency`
        # @return [Fixnum]
        attr_accessor :frequency
      
        # Required. The maximum number of trials to run in parallel.
        # Corresponds to the JSON property `maxParallelTrialCount`
        # @return [Fixnum]
        attr_accessor :max_parallel_trial_count
      
        # Represents the spec of a CustomJob.
        # Corresponds to the JSON property `trainTrialJobSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CustomJobSpec]
        attr_accessor :train_trial_job_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @frequency = args[:frequency] if args.key?(:frequency)
          @max_parallel_trial_count = args[:max_parallel_trial_count] if args.key?(:max_parallel_trial_count)
          @train_trial_job_spec = args[:train_trial_job_spec] if args.key?(:train_trial_job_spec)
        end
      end
      
      # Represents a uCAIP NasJob trial.
      class GoogleCloudAiplatformV1NasTrial
        include Google::Apis::Core::Hashable
      
        # Output only. Time when the NasTrial's status changed to `SUCCEEDED` or `
        # INFEASIBLE`.
        # Corresponds to the JSON property `endTime`
        # @return [String]
        attr_accessor :end_time
      
        # A message representing a Measurement of a Trial. A Measurement contains the
        # Metrics got by executing a Trial using suggested hyperparameter values.
        # Corresponds to the JSON property `finalMeasurement`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Measurement]
        attr_accessor :final_measurement
      
        # Output only. The identifier of the NasTrial assigned by the service.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        # Output only. Time when the NasTrial was started.
        # Corresponds to the JSON property `startTime`
        # @return [String]
        attr_accessor :start_time
      
        # Output only. The detailed state of the NasTrial.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @end_time = args[:end_time] if args.key?(:end_time)
          @final_measurement = args[:final_measurement] if args.key?(:final_measurement)
          @id = args[:id] if args.key?(:id)
          @start_time = args[:start_time] if args.key?(:start_time)
          @state = args[:state] if args.key?(:state)
        end
      end
      
      # Represents a NasTrial details along with its parameters. If there is a
      # corresponding train NasTrial, the train NasTrial is also returned.
      class GoogleCloudAiplatformV1NasTrialDetail
        include Google::Apis::Core::Hashable
      
        # Output only. Resource name of the NasTrialDetail.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # The parameters for the NasJob NasTrial.
        # Corresponds to the JSON property `parameters`
        # @return [String]
        attr_accessor :parameters
      
        # Represents a uCAIP NasJob trial.
        # Corresponds to the JSON property `searchTrial`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NasTrial]
        attr_accessor :search_trial
      
        # Represents a uCAIP NasJob trial.
        # Corresponds to the JSON property `trainTrial`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NasTrial]
        attr_accessor :train_trial
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @name = args[:name] if args.key?(:name)
          @parameters = args[:parameters] if args.key?(:parameters)
          @search_trial = args[:search_trial] if args.key?(:search_trial)
          @train_trial = args[:train_trial] if args.key?(:train_trial)
        end
      end
      
      # A query to find a number of similar entities.
      class GoogleCloudAiplatformV1NearestNeighborQuery
        include Google::Apis::Core::Hashable
      
        # The embedding vector.
        # Corresponds to the JSON property `embedding`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NearestNeighborQueryEmbedding]
        attr_accessor :embedding
      
        # Optional. The entity id whose similar entities should be searched for. If
        # embedding is set, search will use embedding instead of entity_id.
        # Corresponds to the JSON property `entityId`
        # @return [String]
        attr_accessor :entity_id
      
        # Optional. The number of similar entities to be retrieved from feature view for
        # each query.
        # Corresponds to the JSON property `neighborCount`
        # @return [Fixnum]
        attr_accessor :neighbor_count
      
        # Optional. The list of numeric filters.
        # Corresponds to the JSON property `numericFilters`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NearestNeighborQueryNumericFilter>]
        attr_accessor :numeric_filters
      
        # Parameters that can be overrided in each query to tune query latency and
        # recall.
        # Corresponds to the JSON property `parameters`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NearestNeighborQueryParameters]
        attr_accessor :parameters
      
        # Optional. Crowding is a constraint on a neighbor list produced by nearest
        # neighbor search requiring that no more than
        # sper_crowding_attribute_neighbor_count of the k neighbors returned have the
        # same value of crowding_attribute. It's used for improving result diversity.
        # Corresponds to the JSON property `perCrowdingAttributeNeighborCount`
        # @return [Fixnum]
        attr_accessor :per_crowding_attribute_neighbor_count
      
        # Optional. The list of string filters.
        # Corresponds to the JSON property `stringFilters`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NearestNeighborQueryStringFilter>]
        attr_accessor :string_filters
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @embedding = args[:embedding] if args.key?(:embedding)
          @entity_id = args[:entity_id] if args.key?(:entity_id)
          @neighbor_count = args[:neighbor_count] if args.key?(:neighbor_count)
          @numeric_filters = args[:numeric_filters] if args.key?(:numeric_filters)
          @parameters = args[:parameters] if args.key?(:parameters)
          @per_crowding_attribute_neighbor_count = args[:per_crowding_attribute_neighbor_count] if args.key?(:per_crowding_attribute_neighbor_count)
          @string_filters = args[:string_filters] if args.key?(:string_filters)
        end
      end
      
      # The embedding vector.
      class GoogleCloudAiplatformV1NearestNeighborQueryEmbedding
        include Google::Apis::Core::Hashable
      
        # Optional. Individual value in the embedding.
        # Corresponds to the JSON property `value`
        # @return [Array<Float>]
        attr_accessor :value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @value = args[:value] if args.key?(:value)
        end
      end
      
      # Numeric filter is used to search a subset of the entities by using boolean
      # rules on numeric columns. For example: Database Point 0: `name: "a" value_int:
      # 42` `name: "b" value_float: 1.0` Database Point 1: `name: "a" value_int: 10` `
      # name: "b" value_float: 2.0` Database Point 2: `name: "a" value_int: -1` `name:
      # "b" value_float: 3.0` Query: `name: "a" value_int: 12 operator: LESS` //
      # Matches Point 1, 2 `name: "b" value_float: 2.0 operator: EQUAL` // Matches
      # Point 1
      class GoogleCloudAiplatformV1NearestNeighborQueryNumericFilter
        include Google::Apis::Core::Hashable
      
        # Required. Column name in BigQuery that used as filters.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Optional. This MUST be specified for queries and must NOT be specified for
        # database points.
        # Corresponds to the JSON property `op`
        # @return [String]
        attr_accessor :op
      
        # double value type.
        # Corresponds to the JSON property `valueDouble`
        # @return [Float]
        attr_accessor :value_double
      
        # float value type.
        # Corresponds to the JSON property `valueFloat`
        # @return [Float]
        attr_accessor :value_float
      
        # int value type.
        # Corresponds to the JSON property `valueInt`
        # @return [Fixnum]
        attr_accessor :value_int
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @name = args[:name] if args.key?(:name)
          @op = args[:op] if args.key?(:op)
          @value_double = args[:value_double] if args.key?(:value_double)
          @value_float = args[:value_float] if args.key?(:value_float)
          @value_int = args[:value_int] if args.key?(:value_int)
        end
      end
      
      # Parameters that can be overrided in each query to tune query latency and
      # recall.
      class GoogleCloudAiplatformV1NearestNeighborQueryParameters
        include Google::Apis::Core::Hashable
      
        # Optional. The number of neighbors to find via approximate search before exact
        # reordering is performed; if set, this value must be > neighbor_count.
        # Corresponds to the JSON property `approximateNeighborCandidates`
        # @return [Fixnum]
        attr_accessor :approximate_neighbor_candidates
      
        # Optional. The fraction of the number of leaves to search, set at query time
        # allows user to tune search performance. This value increase result in both
        # search accuracy and latency increase. The value should be between 0.0 and 1.0.
        # Corresponds to the JSON property `leafNodesSearchFraction`
        # @return [Float]
        attr_accessor :leaf_nodes_search_fraction
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @approximate_neighbor_candidates = args[:approximate_neighbor_candidates] if args.key?(:approximate_neighbor_candidates)
          @leaf_nodes_search_fraction = args[:leaf_nodes_search_fraction] if args.key?(:leaf_nodes_search_fraction)
        end
      end
      
      # String filter is used to search a subset of the entities by using boolean
      # rules on string columns. For example: if a query specifies string filter with '
      # name = color, allow_tokens = `red, blue`, deny_tokens = `purple`',' then that
      # query will match entities that are red or blue, but if those points are also
      # purple, then they will be excluded even if they are red/blue. Only string
      # filter is supported for now, numeric filter will be supported in the near
      # future.
      class GoogleCloudAiplatformV1NearestNeighborQueryStringFilter
        include Google::Apis::Core::Hashable
      
        # Optional. The allowed tokens.
        # Corresponds to the JSON property `allowTokens`
        # @return [Array<String>]
        attr_accessor :allow_tokens
      
        # Optional. The denied tokens.
        # Corresponds to the JSON property `denyTokens`
        # @return [Array<String>]
        attr_accessor :deny_tokens
      
        # Required. Column names in BigQuery that used as filters.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @allow_tokens = args[:allow_tokens] if args.key?(:allow_tokens)
          @deny_tokens = args[:deny_tokens] if args.key?(:deny_tokens)
          @name = args[:name] if args.key?(:name)
        end
      end
      
      # Runtime operation metadata with regard to Matching Engine Index.
      class GoogleCloudAiplatformV1NearestNeighborSearchOperationMetadata
        include Google::Apis::Core::Hashable
      
        # The validation stats of the content (per file) to be inserted or updated on
        # the Matching Engine Index resource. Populated if contentsDeltaUri is provided
        # as part of Index.metadata. Please note that, currently for those files that
        # are broken or has unsupported file format, we will not have the stats for
        # those files.
        # Corresponds to the JSON property `contentValidationStats`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NearestNeighborSearchOperationMetadataContentValidationStats>]
        attr_accessor :content_validation_stats
      
        # The ingested data size in bytes.
        # Corresponds to the JSON property `dataBytesCount`
        # @return [Fixnum]
        attr_accessor :data_bytes_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content_validation_stats = args[:content_validation_stats] if args.key?(:content_validation_stats)
          @data_bytes_count = args[:data_bytes_count] if args.key?(:data_bytes_count)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1NearestNeighborSearchOperationMetadataContentValidationStats
        include Google::Apis::Core::Hashable
      
        # Number of records in this file we skipped due to validate errors.
        # Corresponds to the JSON property `invalidRecordCount`
        # @return [Fixnum]
        attr_accessor :invalid_record_count
      
        # Number of sparse records in this file we skipped due to validate errors.
        # Corresponds to the JSON property `invalidSparseRecordCount`
        # @return [Fixnum]
        attr_accessor :invalid_sparse_record_count
      
        # The detail information of the partial failures encountered for those invalid
        # records that couldn't be parsed. Up to 50 partial errors will be reported.
        # Corresponds to the JSON property `partialErrors`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NearestNeighborSearchOperationMetadataRecordError>]
        attr_accessor :partial_errors
      
        # Cloud Storage URI pointing to the original file in user's bucket.
        # Corresponds to the JSON property `sourceGcsUri`
        # @return [String]
        attr_accessor :source_gcs_uri
      
        # Number of records in this file that were successfully processed.
        # Corresponds to the JSON property `validRecordCount`
        # @return [Fixnum]
        attr_accessor :valid_record_count
      
        # Number of sparse records in this file that were successfully processed.
        # Corresponds to the JSON property `validSparseRecordCount`
        # @return [Fixnum]
        attr_accessor :valid_sparse_record_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @invalid_record_count = args[:invalid_record_count] if args.key?(:invalid_record_count)
          @invalid_sparse_record_count = args[:invalid_sparse_record_count] if args.key?(:invalid_sparse_record_count)
          @partial_errors = args[:partial_errors] if args.key?(:partial_errors)
          @source_gcs_uri = args[:source_gcs_uri] if args.key?(:source_gcs_uri)
          @valid_record_count = args[:valid_record_count] if args.key?(:valid_record_count)
          @valid_sparse_record_count = args[:valid_sparse_record_count] if args.key?(:valid_sparse_record_count)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1NearestNeighborSearchOperationMetadataRecordError
        include Google::Apis::Core::Hashable
      
        # Empty if the embedding id is failed to parse.
        # Corresponds to the JSON property `embeddingId`
        # @return [String]
        attr_accessor :embedding_id
      
        # A human-readable message that is shown to the user to help them fix the error.
        # Note that this message may change from time to time, your code should check
        # against error_type as the source of truth.
        # Corresponds to the JSON property `errorMessage`
        # @return [String]
        attr_accessor :error_message
      
        # The error type of this record.
        # Corresponds to the JSON property `errorType`
        # @return [String]
        attr_accessor :error_type
      
        # The original content of this record.
        # Corresponds to the JSON property `rawRecord`
        # @return [String]
        attr_accessor :raw_record
      
        # Cloud Storage URI pointing to the original file in user's bucket.
        # Corresponds to the JSON property `sourceGcsUri`
        # @return [String]
        attr_accessor :source_gcs_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @embedding_id = args[:embedding_id] if args.key?(:embedding_id)
          @error_message = args[:error_message] if args.key?(:error_message)
          @error_type = args[:error_type] if args.key?(:error_type)
          @raw_record = args[:raw_record] if args.key?(:raw_record)
          @source_gcs_uri = args[:source_gcs_uri] if args.key?(:source_gcs_uri)
        end
      end
      
      # Nearest neighbors for one query.
      class GoogleCloudAiplatformV1NearestNeighbors
        include Google::Apis::Core::Hashable
      
        # All its neighbors.
        # Corresponds to the JSON property `neighbors`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NearestNeighborsNeighbor>]
        attr_accessor :neighbors
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @neighbors = args[:neighbors] if args.key?(:neighbors)
        end
      end
      
      # A neighbor of the query vector.
      class GoogleCloudAiplatformV1NearestNeighborsNeighbor
        include Google::Apis::Core::Hashable
      
        # The distance between the neighbor and the query vector.
        # Corresponds to the JSON property `distance`
        # @return [Float]
        attr_accessor :distance
      
        # The id of the similar entity.
        # Corresponds to the JSON property `entityId`
        # @return [String]
        attr_accessor :entity_id
      
        # Response message for FeatureOnlineStoreService.FetchFeatureValues
        # Corresponds to the JSON property `entityKeyValues`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FetchFeatureValuesResponse]
        attr_accessor :entity_key_values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @distance = args[:distance] if args.key?(:distance)
          @entity_id = args[:entity_id] if args.key?(:entity_id)
          @entity_key_values = args[:entity_key_values] if args.key?(:entity_key_values)
        end
      end
      
      # Neighbors for example-based explanations.
      class GoogleCloudAiplatformV1Neighbor
        include Google::Apis::Core::Hashable
      
        # Output only. The neighbor distance.
        # Corresponds to the JSON property `neighborDistance`
        # @return [Float]
        attr_accessor :neighbor_distance
      
        # Output only. The neighbor id.
        # Corresponds to the JSON property `neighborId`
        # @return [String]
        attr_accessor :neighbor_id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @neighbor_distance = args[:neighbor_distance] if args.key?(:neighbor_distance)
          @neighbor_id = args[:neighbor_id] if args.key?(:neighbor_id)
        end
      end
      
      # Network spec.
      class GoogleCloudAiplatformV1NetworkSpec
        include Google::Apis::Core::Hashable
      
        # Whether to enable public internet access. Default false.
        # Corresponds to the JSON property `enableInternetAccess`
        # @return [Boolean]
        attr_accessor :enable_internet_access
        alias_method :enable_internet_access?, :enable_internet_access
      
        # The full name of the Google Compute Engine [network](https://cloud.google.com//
        # compute/docs/networks-and-firewalls#networks)
        # Corresponds to the JSON property `network`
        # @return [String]
        attr_accessor :network
      
        # The name of the subnet that this instance is in. Format: `projects/`
        # project_id_or_number`/regions/`region`/subnetworks/`subnetwork_id``
        # Corresponds to the JSON property `subnetwork`
        # @return [String]
        attr_accessor :subnetwork
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @enable_internet_access = args[:enable_internet_access] if args.key?(:enable_internet_access)
          @network = args[:network] if args.key?(:network)
          @subnetwork = args[:subnetwork] if args.key?(:subnetwork)
        end
      end
      
      # Represents a mount configuration for Network File System (NFS) to mount.
      class GoogleCloudAiplatformV1NfsMount
        include Google::Apis::Core::Hashable
      
        # Required. Destination mount path. The NFS will be mounted for the user under /
        # mnt/nfs/
        # Corresponds to the JSON property `mountPoint`
        # @return [String]
        attr_accessor :mount_point
      
        # Required. Source path exported from NFS server. Has to start with '/', and
        # combined with the ip address, it indicates the source mount path in the form
        # of `server:path`
        # Corresponds to the JSON property `path`
        # @return [String]
        attr_accessor :path
      
        # Required. IP address of the NFS server.
        # Corresponds to the JSON property `server`
        # @return [String]
        attr_accessor :server
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @mount_point = args[:mount_point] if args.key?(:mount_point)
          @path = args[:path] if args.key?(:path)
          @server = args[:server] if args.key?(:server)
        end
      end
      
      # The euc configuration of NotebookRuntimeTemplate.
      class GoogleCloudAiplatformV1NotebookEucConfig
        include Google::Apis::Core::Hashable
      
        # Output only. Whether ActAs check is bypassed for service account attached to
        # the VM. If false, we need ActAs check for the default Compute Engine Service
        # account. When a Runtime is created, a VM is allocated using Default Compute
        # Engine Service Account. Any user requesting to use this Runtime requires
        # Service Account User (ActAs) permission over this SA. If true, Runtime owner
        # is using EUC and does not require the above permission as VM no longer use
        # default Compute Engine SA, but a P4SA.
        # Corresponds to the JSON property `bypassActasCheck`
        # @return [Boolean]
        attr_accessor :bypass_actas_check
        alias_method :bypass_actas_check?, :bypass_actas_check
      
        # Input only. Whether EUC is disabled in this NotebookRuntimeTemplate. In proto3,
        # the default value of a boolean is false. In this way, by default EUC will be
        # enabled for NotebookRuntimeTemplate.
        # Corresponds to the JSON property `eucDisabled`
        # @return [Boolean]
        attr_accessor :euc_disabled
        alias_method :euc_disabled?, :euc_disabled
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @bypass_actas_check = args[:bypass_actas_check] if args.key?(:bypass_actas_check)
          @euc_disabled = args[:euc_disabled] if args.key?(:euc_disabled)
        end
      end
      
      # NotebookExecutionJob represents an instance of a notebook execution.
      class GoogleCloudAiplatformV1NotebookExecutionJob
        include Google::Apis::Core::Hashable
      
        # Output only. Timestamp when this NotebookExecutionJob was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Compute configuration to use for an execution job.
        # Corresponds to the JSON property `customEnvironmentSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NotebookExecutionJobCustomEnvironmentSpec]
        attr_accessor :custom_environment_spec
      
        # The Dataform Repository containing the input notebook.
        # Corresponds to the JSON property `dataformRepositorySource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NotebookExecutionJobDataformRepositorySource]
        attr_accessor :dataform_repository_source
      
        # The content of the input notebook in ipynb format.
        # Corresponds to the JSON property `directNotebookSource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NotebookExecutionJobDirectNotebookSource]
        attr_accessor :direct_notebook_source
      
        # The display name of the NotebookExecutionJob. The name can be up to 128
        # characters long and can consist of any UTF-8 characters.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Represents a customer-managed encryption key spec that can be applied to a top-
        # level resource.
        # Corresponds to the JSON property `encryptionSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EncryptionSpec]
        attr_accessor :encryption_spec
      
        # Max running time of the execution job in seconds (default 86400s / 24 hrs).
        # Corresponds to the JSON property `executionTimeout`
        # @return [String]
        attr_accessor :execution_timeout
      
        # The user email to run the execution as. Only supported by Colab runtimes.
        # Corresponds to the JSON property `executionUser`
        # @return [String]
        attr_accessor :execution_user
      
        # The Cloud Storage uri for the input notebook.
        # Corresponds to the JSON property `gcsNotebookSource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NotebookExecutionJobGcsNotebookSource]
        attr_accessor :gcs_notebook_source
      
        # The Cloud Storage location to upload the result to. Format: `gs://bucket-name`
        # Corresponds to the JSON property `gcsOutputUri`
        # @return [String]
        attr_accessor :gcs_output_uri
      
        # Output only. The state of the NotebookExecutionJob.
        # Corresponds to the JSON property `jobState`
        # @return [String]
        attr_accessor :job_state
      
        # The name of the kernel to use during notebook execution. If unset, the default
        # kernel is used.
        # Corresponds to the JSON property `kernelName`
        # @return [String]
        attr_accessor :kernel_name
      
        # The labels with user-defined metadata to organize NotebookExecutionJobs. Label
        # keys and values can be no longer than 64 characters (Unicode codepoints), can
        # only contain lowercase letters, numeric characters, underscores and dashes.
        # International characters are allowed. See https://goo.gl/xmQnxf for more
        # information and examples of labels. System reserved label keys are prefixed
        # with "aiplatform.googleapis.com/" and are immutable.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Output only. The resource name of this NotebookExecutionJob. Format: `projects/
        # `project_id`/locations/`location`/notebookExecutionJobs/`job_id``
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # The NotebookRuntimeTemplate to source compute configuration from.
        # Corresponds to the JSON property `notebookRuntimeTemplateResourceName`
        # @return [String]
        attr_accessor :notebook_runtime_template_resource_name
      
        # The Schedule resource name if this job is triggered by one. Format: `projects/`
        # project_id`/locations/`location`/schedules/`schedule_id``
        # Corresponds to the JSON property `scheduleResourceName`
        # @return [String]
        attr_accessor :schedule_resource_name
      
        # The service account to run the execution as.
        # Corresponds to the JSON property `serviceAccount`
        # @return [String]
        attr_accessor :service_account
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `status`
        # @return [Google::Apis::AiplatformV1::GoogleRpcStatus]
        attr_accessor :status
      
        # Output only. Timestamp when this NotebookExecutionJob was most recently
        # updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        # Configuration for a Workbench Instances-based environment.
        # Corresponds to the JSON property `workbenchRuntime`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NotebookExecutionJobWorkbenchRuntime]
        attr_accessor :workbench_runtime
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @custom_environment_spec = args[:custom_environment_spec] if args.key?(:custom_environment_spec)
          @dataform_repository_source = args[:dataform_repository_source] if args.key?(:dataform_repository_source)
          @direct_notebook_source = args[:direct_notebook_source] if args.key?(:direct_notebook_source)
          @display_name = args[:display_name] if args.key?(:display_name)
          @encryption_spec = args[:encryption_spec] if args.key?(:encryption_spec)
          @execution_timeout = args[:execution_timeout] if args.key?(:execution_timeout)
          @execution_user = args[:execution_user] if args.key?(:execution_user)
          @gcs_notebook_source = args[:gcs_notebook_source] if args.key?(:gcs_notebook_source)
          @gcs_output_uri = args[:gcs_output_uri] if args.key?(:gcs_output_uri)
          @job_state = args[:job_state] if args.key?(:job_state)
          @kernel_name = args[:kernel_name] if args.key?(:kernel_name)
          @labels = args[:labels] if args.key?(:labels)
          @name = args[:name] if args.key?(:name)
          @notebook_runtime_template_resource_name = args[:notebook_runtime_template_resource_name] if args.key?(:notebook_runtime_template_resource_name)
          @schedule_resource_name = args[:schedule_resource_name] if args.key?(:schedule_resource_name)
          @service_account = args[:service_account] if args.key?(:service_account)
          @status = args[:status] if args.key?(:status)
          @update_time = args[:update_time] if args.key?(:update_time)
          @workbench_runtime = args[:workbench_runtime] if args.key?(:workbench_runtime)
        end
      end
      
      # Compute configuration to use for an execution job.
      class GoogleCloudAiplatformV1NotebookExecutionJobCustomEnvironmentSpec
        include Google::Apis::Core::Hashable
      
        # Specification of a single machine.
        # Corresponds to the JSON property `machineSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1MachineSpec]
        attr_accessor :machine_spec
      
        # Network spec.
        # Corresponds to the JSON property `networkSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NetworkSpec]
        attr_accessor :network_spec
      
        # Represents the spec of persistent disk options.
        # Corresponds to the JSON property `persistentDiskSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PersistentDiskSpec]
        attr_accessor :persistent_disk_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @machine_spec = args[:machine_spec] if args.key?(:machine_spec)
          @network_spec = args[:network_spec] if args.key?(:network_spec)
          @persistent_disk_spec = args[:persistent_disk_spec] if args.key?(:persistent_disk_spec)
        end
      end
      
      # The Dataform Repository containing the input notebook.
      class GoogleCloudAiplatformV1NotebookExecutionJobDataformRepositorySource
        include Google::Apis::Core::Hashable
      
        # The commit SHA to read repository with. If unset, the file will be read at
        # HEAD.
        # Corresponds to the JSON property `commitSha`
        # @return [String]
        attr_accessor :commit_sha
      
        # The resource name of the Dataform Repository. Format: `projects/`project_id`/
        # locations/`location`/repositories/`repository_id``
        # Corresponds to the JSON property `dataformRepositoryResourceName`
        # @return [String]
        attr_accessor :dataform_repository_resource_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @commit_sha = args[:commit_sha] if args.key?(:commit_sha)
          @dataform_repository_resource_name = args[:dataform_repository_resource_name] if args.key?(:dataform_repository_resource_name)
        end
      end
      
      # The content of the input notebook in ipynb format.
      class GoogleCloudAiplatformV1NotebookExecutionJobDirectNotebookSource
        include Google::Apis::Core::Hashable
      
        # The base64-encoded contents of the input notebook file.
        # Corresponds to the JSON property `content`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :content
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content = args[:content] if args.key?(:content)
        end
      end
      
      # The Cloud Storage uri for the input notebook.
      class GoogleCloudAiplatformV1NotebookExecutionJobGcsNotebookSource
        include Google::Apis::Core::Hashable
      
        # The version of the Cloud Storage object to read. If unset, the current version
        # of the object is read. See https://cloud.google.com/storage/docs/metadata#
        # generation-number.
        # Corresponds to the JSON property `generation`
        # @return [String]
        attr_accessor :generation
      
        # The Cloud Storage uri pointing to the ipynb file. Format: `gs://bucket/
        # notebook_file.ipynb`
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generation = args[:generation] if args.key?(:generation)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # Configuration for a Workbench Instances-based environment.
      class GoogleCloudAiplatformV1NotebookExecutionJobWorkbenchRuntime
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # The idle shutdown configuration of NotebookRuntimeTemplate, which contains the
      # idle_timeout as required field.
      class GoogleCloudAiplatformV1NotebookIdleShutdownConfig
        include Google::Apis::Core::Hashable
      
        # Whether Idle Shutdown is disabled in this NotebookRuntimeTemplate.
        # Corresponds to the JSON property `idleShutdownDisabled`
        # @return [Boolean]
        attr_accessor :idle_shutdown_disabled
        alias_method :idle_shutdown_disabled?, :idle_shutdown_disabled
      
        # Required. Duration is accurate to the second. In Notebook, Idle Timeout is
        # accurate to minute so the range of idle_timeout (second) is: 10 * 60 ~ 1440 *
        # 60.
        # Corresponds to the JSON property `idleTimeout`
        # @return [String]
        attr_accessor :idle_timeout
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @idle_shutdown_disabled = args[:idle_shutdown_disabled] if args.key?(:idle_shutdown_disabled)
          @idle_timeout = args[:idle_timeout] if args.key?(:idle_timeout)
        end
      end
      
      # Notebook Reservation Affinity for consuming Zonal reservation.
      class GoogleCloudAiplatformV1NotebookReservationAffinity
        include Google::Apis::Core::Hashable
      
        # Required. Specifies the type of reservation from which this instance can
        # consume resources: RESERVATION_ANY (default), RESERVATION_SPECIFIC, or
        # RESERVATION_NONE. See Consuming reserved instances for examples.
        # Corresponds to the JSON property `consumeReservationType`
        # @return [String]
        attr_accessor :consume_reservation_type
      
        # Optional. Corresponds to the label key of a reservation resource. To target a
        # RESERVATION_SPECIFIC by name, use compute.googleapis.com/reservation-name as
        # the key and specify the name of your reservation as its value.
        # Corresponds to the JSON property `key`
        # @return [String]
        attr_accessor :key
      
        # Optional. Corresponds to the label values of a reservation resource. This must
        # be the full path name of Reservation.
        # Corresponds to the JSON property `values`
        # @return [Array<String>]
        attr_accessor :values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @consume_reservation_type = args[:consume_reservation_type] if args.key?(:consume_reservation_type)
          @key = args[:key] if args.key?(:key)
          @values = args[:values] if args.key?(:values)
        end
      end
      
      # A runtime is a virtual machine allocated to a particular user for a particular
      # Notebook file on temporary basis with lifetime. Default runtimes have a
      # lifetime of 18 hours, while custom runtimes last for 6 months from their
      # creation or last upgrade.
      class GoogleCloudAiplatformV1NotebookRuntime
        include Google::Apis::Core::Hashable
      
        # Output only. Timestamp when this NotebookRuntime was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Represents the spec of persistent disk options.
        # Corresponds to the JSON property `dataPersistentDiskSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PersistentDiskSpec]
        attr_accessor :data_persistent_disk_spec
      
        # The description of the NotebookRuntime.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Required. The display name of the NotebookRuntime. The name can be up to 128
        # characters long and can consist of any UTF-8 characters.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Represents a customer-managed encryption key spec that can be applied to a top-
        # level resource.
        # Corresponds to the JSON property `encryptionSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EncryptionSpec]
        attr_accessor :encryption_spec
      
        # The euc configuration of NotebookRuntimeTemplate.
        # Corresponds to the JSON property `eucConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NotebookEucConfig]
        attr_accessor :euc_config
      
        # Output only. Timestamp when this NotebookRuntime will be expired: 1. System
        # Predefined NotebookRuntime: 24 hours after creation. After expiration, system
        # predifined runtime will be deleted. 2. User created NotebookRuntime: 6 months
        # after last upgrade. After expiration, user created runtime will be stopped and
        # allowed for upgrade.
        # Corresponds to the JSON property `expirationTime`
        # @return [String]
        attr_accessor :expiration_time
      
        # Output only. The health state of the NotebookRuntime.
        # Corresponds to the JSON property `healthState`
        # @return [String]
        attr_accessor :health_state
      
        # The idle shutdown configuration of NotebookRuntimeTemplate, which contains the
        # idle_timeout as required field.
        # Corresponds to the JSON property `idleShutdownConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NotebookIdleShutdownConfig]
        attr_accessor :idle_shutdown_config
      
        # Output only. Whether NotebookRuntime is upgradable.
        # Corresponds to the JSON property `isUpgradable`
        # @return [Boolean]
        attr_accessor :is_upgradable
        alias_method :is_upgradable?, :is_upgradable
      
        # The labels with user-defined metadata to organize your NotebookRuntime. Label
        # keys and values can be no longer than 64 characters (Unicode codepoints), can
        # only contain lowercase letters, numeric characters, underscores and dashes.
        # International characters are allowed. No more than 64 user labels can be
        # associated with one NotebookRuntime (System labels are excluded). See https://
        # goo.gl/xmQnxf for more information and examples of labels. System reserved
        # label keys are prefixed with "aiplatform.googleapis.com/" and are immutable.
        # Following system labels exist for NotebookRuntime: * "aiplatform.googleapis.
        # com/notebook_runtime_gce_instance_id": output only, its value is the Compute
        # Engine instance id. * "aiplatform.googleapis.com/
        # colab_enterprise_entry_service": its value is either "bigquery" or "vertex";
        # if absent, it should be "vertex". This is to describe the entry service,
        # either BigQuery or Vertex.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Specification of a single machine.
        # Corresponds to the JSON property `machineSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1MachineSpec]
        attr_accessor :machine_spec
      
        # Output only. The resource name of the NotebookRuntime.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Network spec.
        # Corresponds to the JSON property `networkSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NetworkSpec]
        attr_accessor :network_spec
      
        # Optional. The Compute Engine tags to add to runtime (see [Tagging instances](
        # https://cloud.google.com/vpc/docs/add-remove-network-tags)).
        # Corresponds to the JSON property `networkTags`
        # @return [Array<String>]
        attr_accessor :network_tags
      
        # Points to a NotebookRuntimeTemplateRef.
        # Corresponds to the JSON property `notebookRuntimeTemplateRef`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NotebookRuntimeTemplateRef]
        attr_accessor :notebook_runtime_template_ref
      
        # Output only. The type of the notebook runtime.
        # Corresponds to the JSON property `notebookRuntimeType`
        # @return [String]
        attr_accessor :notebook_runtime_type
      
        # Output only. The proxy endpoint used to access the NotebookRuntime.
        # Corresponds to the JSON property `proxyUri`
        # @return [String]
        attr_accessor :proxy_uri
      
        # Notebook Reservation Affinity for consuming Zonal reservation.
        # Corresponds to the JSON property `reservationAffinity`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NotebookReservationAffinity]
        attr_accessor :reservation_affinity
      
        # Output only. The runtime (instance) state of the NotebookRuntime.
        # Corresponds to the JSON property `runtimeState`
        # @return [String]
        attr_accessor :runtime_state
      
        # Required. The user email of the NotebookRuntime.
        # Corresponds to the JSON property `runtimeUser`
        # @return [String]
        attr_accessor :runtime_user
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzi`
        # @return [Boolean]
        attr_accessor :satisfies_pzi
        alias_method :satisfies_pzi?, :satisfies_pzi
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzs`
        # @return [Boolean]
        attr_accessor :satisfies_pzs
        alias_method :satisfies_pzs?, :satisfies_pzs
      
        # Output only. Deprecated: This field is no longer used and the "Vertex AI
        # Notebook Service Account" (service-PROJECT_NUMBER@gcp-sa-aiplatform-vm.iam.
        # gserviceaccount.com) is used for the runtime workload identity. See https://
        # cloud.google.com/iam/docs/service-agents#vertex-ai-notebook-service-account
        # for more details. The service account that the NotebookRuntime workload runs
        # as.
        # Corresponds to the JSON property `serviceAccount`
        # @return [String]
        attr_accessor :service_account
      
        # A set of Shielded Instance options. See [Images using supported Shielded VM
        # features](https://cloud.google.com/compute/docs/instances/modifying-shielded-
        # vm).
        # Corresponds to the JSON property `shieldedVmConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ShieldedVmConfig]
        attr_accessor :shielded_vm_config
      
        # Notebook Software Config. This is passed to the backend when user makes
        # software configurations in UI.
        # Corresponds to the JSON property `softwareConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NotebookSoftwareConfig]
        attr_accessor :software_config
      
        # Output only. Timestamp when this NotebookRuntime was most recently updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        # Output only. The VM os image version of NotebookRuntime.
        # Corresponds to the JSON property `version`
        # @return [String]
        attr_accessor :version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @data_persistent_disk_spec = args[:data_persistent_disk_spec] if args.key?(:data_persistent_disk_spec)
          @description = args[:description] if args.key?(:description)
          @display_name = args[:display_name] if args.key?(:display_name)
          @encryption_spec = args[:encryption_spec] if args.key?(:encryption_spec)
          @euc_config = args[:euc_config] if args.key?(:euc_config)
          @expiration_time = args[:expiration_time] if args.key?(:expiration_time)
          @health_state = args[:health_state] if args.key?(:health_state)
          @idle_shutdown_config = args[:idle_shutdown_config] if args.key?(:idle_shutdown_config)
          @is_upgradable = args[:is_upgradable] if args.key?(:is_upgradable)
          @labels = args[:labels] if args.key?(:labels)
          @machine_spec = args[:machine_spec] if args.key?(:machine_spec)
          @name = args[:name] if args.key?(:name)
          @network_spec = args[:network_spec] if args.key?(:network_spec)
          @network_tags = args[:network_tags] if args.key?(:network_tags)
          @notebook_runtime_template_ref = args[:notebook_runtime_template_ref] if args.key?(:notebook_runtime_template_ref)
          @notebook_runtime_type = args[:notebook_runtime_type] if args.key?(:notebook_runtime_type)
          @proxy_uri = args[:proxy_uri] if args.key?(:proxy_uri)
          @reservation_affinity = args[:reservation_affinity] if args.key?(:reservation_affinity)
          @runtime_state = args[:runtime_state] if args.key?(:runtime_state)
          @runtime_user = args[:runtime_user] if args.key?(:runtime_user)
          @satisfies_pzi = args[:satisfies_pzi] if args.key?(:satisfies_pzi)
          @satisfies_pzs = args[:satisfies_pzs] if args.key?(:satisfies_pzs)
          @service_account = args[:service_account] if args.key?(:service_account)
          @shielded_vm_config = args[:shielded_vm_config] if args.key?(:shielded_vm_config)
          @software_config = args[:software_config] if args.key?(:software_config)
          @update_time = args[:update_time] if args.key?(:update_time)
          @version = args[:version] if args.key?(:version)
        end
      end
      
      # A template that specifies runtime configurations such as machine type, runtime
      # version, network configurations, etc. Multiple runtimes can be created from a
      # runtime template.
      class GoogleCloudAiplatformV1NotebookRuntimeTemplate
        include Google::Apis::Core::Hashable
      
        # Output only. Timestamp when this NotebookRuntimeTemplate was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Represents the spec of persistent disk options.
        # Corresponds to the JSON property `dataPersistentDiskSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PersistentDiskSpec]
        attr_accessor :data_persistent_disk_spec
      
        # The description of the NotebookRuntimeTemplate.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Required. The display name of the NotebookRuntimeTemplate. The name can be up
        # to 128 characters long and can consist of any UTF-8 characters.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Represents a customer-managed encryption key spec that can be applied to a top-
        # level resource.
        # Corresponds to the JSON property `encryptionSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EncryptionSpec]
        attr_accessor :encryption_spec
      
        # Used to perform consistent read-modify-write updates. If not set, a blind "
        # overwrite" update happens.
        # Corresponds to the JSON property `etag`
        # @return [String]
        attr_accessor :etag
      
        # The euc configuration of NotebookRuntimeTemplate.
        # Corresponds to the JSON property `eucConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NotebookEucConfig]
        attr_accessor :euc_config
      
        # The idle shutdown configuration of NotebookRuntimeTemplate, which contains the
        # idle_timeout as required field.
        # Corresponds to the JSON property `idleShutdownConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NotebookIdleShutdownConfig]
        attr_accessor :idle_shutdown_config
      
        # Output only. Deprecated: This field has no behavior. Use notebook_runtime_type
        # = 'ONE_CLICK' instead. The default template to use if not specified.
        # Corresponds to the JSON property `isDefault`
        # @return [Boolean]
        attr_accessor :is_default
        alias_method :is_default?, :is_default
      
        # The labels with user-defined metadata to organize the NotebookRuntimeTemplates.
        # Label keys and values can be no longer than 64 characters (Unicode codepoints)
        # , can only contain lowercase letters, numeric characters, underscores and
        # dashes. International characters are allowed. See https://goo.gl/xmQnxf for
        # more information and examples of labels.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Specification of a single machine.
        # Corresponds to the JSON property `machineSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1MachineSpec]
        attr_accessor :machine_spec
      
        # The resource name of the NotebookRuntimeTemplate.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Network spec.
        # Corresponds to the JSON property `networkSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NetworkSpec]
        attr_accessor :network_spec
      
        # Optional. The Compute Engine tags to add to runtime (see [Tagging instances](
        # https://cloud.google.com/vpc/docs/add-remove-network-tags)).
        # Corresponds to the JSON property `networkTags`
        # @return [Array<String>]
        attr_accessor :network_tags
      
        # Optional. Immutable. The type of the notebook runtime template.
        # Corresponds to the JSON property `notebookRuntimeType`
        # @return [String]
        attr_accessor :notebook_runtime_type
      
        # Notebook Reservation Affinity for consuming Zonal reservation.
        # Corresponds to the JSON property `reservationAffinity`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NotebookReservationAffinity]
        attr_accessor :reservation_affinity
      
        # Deprecated: This field is ignored and the "Vertex AI Notebook Service Account"
        # (service-PROJECT_NUMBER@gcp-sa-aiplatform-vm.iam.gserviceaccount.com) is used
        # for the runtime workload identity. See https://cloud.google.com/iam/docs/
        # service-agents#vertex-ai-notebook-service-account for more details. For
        # NotebookExecutionJob, use NotebookExecutionJob.service_account instead. The
        # service account that the runtime workload runs as. You can use any service
        # account within the same project, but you must have the service account user
        # permission to use the instance. If not specified, the [Compute Engine default
        # service account](https://cloud.google.com/compute/docs/access/service-accounts#
        # default_service_account) is used.
        # Corresponds to the JSON property `serviceAccount`
        # @return [String]
        attr_accessor :service_account
      
        # A set of Shielded Instance options. See [Images using supported Shielded VM
        # features](https://cloud.google.com/compute/docs/instances/modifying-shielded-
        # vm).
        # Corresponds to the JSON property `shieldedVmConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ShieldedVmConfig]
        attr_accessor :shielded_vm_config
      
        # Notebook Software Config. This is passed to the backend when user makes
        # software configurations in UI.
        # Corresponds to the JSON property `softwareConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NotebookSoftwareConfig]
        attr_accessor :software_config
      
        # Output only. Timestamp when this NotebookRuntimeTemplate was most recently
        # updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @data_persistent_disk_spec = args[:data_persistent_disk_spec] if args.key?(:data_persistent_disk_spec)
          @description = args[:description] if args.key?(:description)
          @display_name = args[:display_name] if args.key?(:display_name)
          @encryption_spec = args[:encryption_spec] if args.key?(:encryption_spec)
          @etag = args[:etag] if args.key?(:etag)
          @euc_config = args[:euc_config] if args.key?(:euc_config)
          @idle_shutdown_config = args[:idle_shutdown_config] if args.key?(:idle_shutdown_config)
          @is_default = args[:is_default] if args.key?(:is_default)
          @labels = args[:labels] if args.key?(:labels)
          @machine_spec = args[:machine_spec] if args.key?(:machine_spec)
          @name = args[:name] if args.key?(:name)
          @network_spec = args[:network_spec] if args.key?(:network_spec)
          @network_tags = args[:network_tags] if args.key?(:network_tags)
          @notebook_runtime_type = args[:notebook_runtime_type] if args.key?(:notebook_runtime_type)
          @reservation_affinity = args[:reservation_affinity] if args.key?(:reservation_affinity)
          @service_account = args[:service_account] if args.key?(:service_account)
          @shielded_vm_config = args[:shielded_vm_config] if args.key?(:shielded_vm_config)
          @software_config = args[:software_config] if args.key?(:software_config)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # Points to a NotebookRuntimeTemplateRef.
      class GoogleCloudAiplatformV1NotebookRuntimeTemplateRef
        include Google::Apis::Core::Hashable
      
        # Immutable. A resource name of the NotebookRuntimeTemplate.
        # Corresponds to the JSON property `notebookRuntimeTemplate`
        # @return [String]
        attr_accessor :notebook_runtime_template
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @notebook_runtime_template = args[:notebook_runtime_template] if args.key?(:notebook_runtime_template)
        end
      end
      
      # Notebook Software Config. This is passed to the backend when user makes
      # software configurations in UI.
      class GoogleCloudAiplatformV1NotebookSoftwareConfig
        include Google::Apis::Core::Hashable
      
        # Colab image of the runtime.
        # Corresponds to the JSON property `colabImage`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ColabImage]
        attr_accessor :colab_image
      
        # Optional. Environment variables to be passed to the container. Maximum limit
        # is 100.
        # Corresponds to the JSON property `env`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EnvVar>]
        attr_accessor :env
      
        # Post startup script config.
        # Corresponds to the JSON property `postStartupScriptConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PostStartupScriptConfig]
        attr_accessor :post_startup_script_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @colab_image = args[:colab_image] if args.key?(:colab_image)
          @env = args[:env] if args.key?(:env)
          @post_startup_script_config = args[:post_startup_script_config] if args.key?(:post_startup_script_config)
        end
      end
      
      # Config for evaluation output.
      class GoogleCloudAiplatformV1OutputConfig
        include Google::Apis::Core::Hashable
      
        # The Google Cloud Storage location where the output is to be written to.
        # Corresponds to the JSON property `gcsDestination`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GcsDestination]
        attr_accessor :gcs_destination
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @gcs_destination = args[:gcs_destination] if args.key?(:gcs_destination)
        end
      end
      
      # Defines a specification for a single output field.
      class GoogleCloudAiplatformV1OutputFieldSpec
        include Google::Apis::Core::Hashable
      
        # Required. The name of the output field.
        # Corresponds to the JSON property `fieldName`
        # @return [String]
        attr_accessor :field_name
      
        # Optional. The data type of the field. Defaults to CONTENT if not set.
        # Corresponds to the JSON property `fieldType`
        # @return [String]
        attr_accessor :field_type
      
        # Optional. Optional, but recommended. Additional guidance specific to this
        # field to provide targeted instructions for the LLM to generate the content of
        # a single output field. While the LLM can sometimes infer content from the
        # field name, providing explicit guidance is preferred.
        # Corresponds to the JSON property `guidance`
        # @return [String]
        attr_accessor :guidance
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @field_name = args[:field_name] if args.key?(:field_name)
          @field_type = args[:field_type] if args.key?(:field_type)
          @guidance = args[:guidance] if args.key?(:guidance)
        end
      end
      
      # PSC config that is used to automatically create PSC endpoints in the user
      # projects.
      class GoogleCloudAiplatformV1PscAutomationConfig
        include Google::Apis::Core::Hashable
      
        # Output only. Error message if the PSC service automation failed.
        # Corresponds to the JSON property `errorMessage`
        # @return [String]
        attr_accessor :error_message
      
        # Output only. Forwarding rule created by the PSC service automation.
        # Corresponds to the JSON property `forwardingRule`
        # @return [String]
        attr_accessor :forwarding_rule
      
        # Output only. IP address rule created by the PSC service automation.
        # Corresponds to the JSON property `ipAddress`
        # @return [String]
        attr_accessor :ip_address
      
        # Required. The full name of the Google Compute Engine [network](https://cloud.
        # google.com/compute/docs/networks-and-firewalls#networks). [Format](https://
        # cloud.google.com/compute/docs/reference/rest/v1/networks/get): `projects/`
        # project`/global/networks/`network``.
        # Corresponds to the JSON property `network`
        # @return [String]
        attr_accessor :network
      
        # Required. Project id used to create forwarding rule.
        # Corresponds to the JSON property `projectId`
        # @return [String]
        attr_accessor :project_id
      
        # Output only. The state of the PSC service automation.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @error_message = args[:error_message] if args.key?(:error_message)
          @forwarding_rule = args[:forwarding_rule] if args.key?(:forwarding_rule)
          @ip_address = args[:ip_address] if args.key?(:ip_address)
          @network = args[:network] if args.key?(:network)
          @project_id = args[:project_id] if args.key?(:project_id)
          @state = args[:state] if args.key?(:state)
        end
      end
      
      # Input for pairwise metric.
      class GoogleCloudAiplatformV1PairwiseMetricInput
        include Google::Apis::Core::Hashable
      
        # Pairwise metric instance. Usually one instance corresponds to one row in an
        # evaluation dataset.
        # Corresponds to the JSON property `instance`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PairwiseMetricInstance]
        attr_accessor :instance
      
        # Spec for pairwise metric.
        # Corresponds to the JSON property `metricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PairwiseMetricSpec]
        attr_accessor :metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instance = args[:instance] if args.key?(:instance)
          @metric_spec = args[:metric_spec] if args.key?(:metric_spec)
        end
      end
      
      # Pairwise metric instance. Usually one instance corresponds to one row in an
      # evaluation dataset.
      class GoogleCloudAiplatformV1PairwiseMetricInstance
        include Google::Apis::Core::Hashable
      
        # Map of placeholder in metric prompt template to contents of model input.
        # Corresponds to the JSON property `contentMapInstance`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ContentMap]
        attr_accessor :content_map_instance
      
        # Instance specified as a json string. String key-value pairs are expected in
        # the json_instance to render PairwiseMetricSpec.instance_prompt_template.
        # Corresponds to the JSON property `jsonInstance`
        # @return [String]
        attr_accessor :json_instance
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content_map_instance = args[:content_map_instance] if args.key?(:content_map_instance)
          @json_instance = args[:json_instance] if args.key?(:json_instance)
        end
      end
      
      # Spec for pairwise metric result.
      class GoogleCloudAiplatformV1PairwiseMetricResult
        include Google::Apis::Core::Hashable
      
        # Spec for custom output.
        # Corresponds to the JSON property `customOutput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CustomOutput]
        attr_accessor :custom_output
      
        # Output only. Explanation for pairwise metric score.
        # Corresponds to the JSON property `explanation`
        # @return [String]
        attr_accessor :explanation
      
        # Output only. Pairwise metric choice.
        # Corresponds to the JSON property `pairwiseChoice`
        # @return [String]
        attr_accessor :pairwise_choice
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @custom_output = args[:custom_output] if args.key?(:custom_output)
          @explanation = args[:explanation] if args.key?(:explanation)
          @pairwise_choice = args[:pairwise_choice] if args.key?(:pairwise_choice)
        end
      end
      
      # Spec for pairwise metric.
      class GoogleCloudAiplatformV1PairwiseMetricSpec
        include Google::Apis::Core::Hashable
      
        # Optional. The field name of the baseline response.
        # Corresponds to the JSON property `baselineResponseFieldName`
        # @return [String]
        attr_accessor :baseline_response_field_name
      
        # Optional. The field name of the candidate response.
        # Corresponds to the JSON property `candidateResponseFieldName`
        # @return [String]
        attr_accessor :candidate_response_field_name
      
        # Spec for custom output format configuration.
        # Corresponds to the JSON property `customOutputFormatConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CustomOutputFormatConfig]
        attr_accessor :custom_output_format_config
      
        # Required. Metric prompt template for pairwise metric.
        # Corresponds to the JSON property `metricPromptTemplate`
        # @return [String]
        attr_accessor :metric_prompt_template
      
        # Optional. System instructions for pairwise metric.
        # Corresponds to the JSON property `systemInstruction`
        # @return [String]
        attr_accessor :system_instruction
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @baseline_response_field_name = args[:baseline_response_field_name] if args.key?(:baseline_response_field_name)
          @candidate_response_field_name = args[:candidate_response_field_name] if args.key?(:candidate_response_field_name)
          @custom_output_format_config = args[:custom_output_format_config] if args.key?(:custom_output_format_config)
          @metric_prompt_template = args[:metric_prompt_template] if args.key?(:metric_prompt_template)
          @system_instruction = args[:system_instruction] if args.key?(:system_instruction)
        end
      end
      
      # Input for pairwise question answering quality metric.
      class GoogleCloudAiplatformV1PairwiseQuestionAnsweringQualityInput
        include Google::Apis::Core::Hashable
      
        # Spec for pairwise question answering quality instance.
        # Corresponds to the JSON property `instance`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PairwiseQuestionAnsweringQualityInstance]
        attr_accessor :instance
      
        # Spec for pairwise question answering quality score metric.
        # Corresponds to the JSON property `metricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PairwiseQuestionAnsweringQualitySpec]
        attr_accessor :metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instance = args[:instance] if args.key?(:instance)
          @metric_spec = args[:metric_spec] if args.key?(:metric_spec)
        end
      end
      
      # Spec for pairwise question answering quality instance.
      class GoogleCloudAiplatformV1PairwiseQuestionAnsweringQualityInstance
        include Google::Apis::Core::Hashable
      
        # Required. Output of the baseline model.
        # Corresponds to the JSON property `baselinePrediction`
        # @return [String]
        attr_accessor :baseline_prediction
      
        # Required. Text to answer the question.
        # Corresponds to the JSON property `context`
        # @return [String]
        attr_accessor :context
      
        # Required. Question Answering prompt for LLM.
        # Corresponds to the JSON property `instruction`
        # @return [String]
        attr_accessor :instruction
      
        # Required. Output of the candidate model.
        # Corresponds to the JSON property `prediction`
        # @return [String]
        attr_accessor :prediction
      
        # Optional. Ground truth used to compare against the prediction.
        # Corresponds to the JSON property `reference`
        # @return [String]
        attr_accessor :reference
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @baseline_prediction = args[:baseline_prediction] if args.key?(:baseline_prediction)
          @context = args[:context] if args.key?(:context)
          @instruction = args[:instruction] if args.key?(:instruction)
          @prediction = args[:prediction] if args.key?(:prediction)
          @reference = args[:reference] if args.key?(:reference)
        end
      end
      
      # Spec for pairwise question answering quality result.
      class GoogleCloudAiplatformV1PairwiseQuestionAnsweringQualityResult
        include Google::Apis::Core::Hashable
      
        # Output only. Confidence for question answering quality score.
        # Corresponds to the JSON property `confidence`
        # @return [Float]
        attr_accessor :confidence
      
        # Output only. Explanation for question answering quality score.
        # Corresponds to the JSON property `explanation`
        # @return [String]
        attr_accessor :explanation
      
        # Output only. Pairwise question answering prediction choice.
        # Corresponds to the JSON property `pairwiseChoice`
        # @return [String]
        attr_accessor :pairwise_choice
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence = args[:confidence] if args.key?(:confidence)
          @explanation = args[:explanation] if args.key?(:explanation)
          @pairwise_choice = args[:pairwise_choice] if args.key?(:pairwise_choice)
        end
      end
      
      # Spec for pairwise question answering quality score metric.
      class GoogleCloudAiplatformV1PairwiseQuestionAnsweringQualitySpec
        include Google::Apis::Core::Hashable
      
        # Optional. Whether to use instance.reference to compute question answering
        # quality.
        # Corresponds to the JSON property `useReference`
        # @return [Boolean]
        attr_accessor :use_reference
        alias_method :use_reference?, :use_reference
      
        # Optional. Which version to use for evaluation.
        # Corresponds to the JSON property `version`
        # @return [Fixnum]
        attr_accessor :version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @use_reference = args[:use_reference] if args.key?(:use_reference)
          @version = args[:version] if args.key?(:version)
        end
      end
      
      # Input for pairwise summarization quality metric.
      class GoogleCloudAiplatformV1PairwiseSummarizationQualityInput
        include Google::Apis::Core::Hashable
      
        # Spec for pairwise summarization quality instance.
        # Corresponds to the JSON property `instance`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PairwiseSummarizationQualityInstance]
        attr_accessor :instance
      
        # Spec for pairwise summarization quality score metric.
        # Corresponds to the JSON property `metricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PairwiseSummarizationQualitySpec]
        attr_accessor :metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instance = args[:instance] if args.key?(:instance)
          @metric_spec = args[:metric_spec] if args.key?(:metric_spec)
        end
      end
      
      # Spec for pairwise summarization quality instance.
      class GoogleCloudAiplatformV1PairwiseSummarizationQualityInstance
        include Google::Apis::Core::Hashable
      
        # Required. Output of the baseline model.
        # Corresponds to the JSON property `baselinePrediction`
        # @return [String]
        attr_accessor :baseline_prediction
      
        # Required. Text to be summarized.
        # Corresponds to the JSON property `context`
        # @return [String]
        attr_accessor :context
      
        # Required. Summarization prompt for LLM.
        # Corresponds to the JSON property `instruction`
        # @return [String]
        attr_accessor :instruction
      
        # Required. Output of the candidate model.
        # Corresponds to the JSON property `prediction`
        # @return [String]
        attr_accessor :prediction
      
        # Optional. Ground truth used to compare against the prediction.
        # Corresponds to the JSON property `reference`
        # @return [String]
        attr_accessor :reference
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @baseline_prediction = args[:baseline_prediction] if args.key?(:baseline_prediction)
          @context = args[:context] if args.key?(:context)
          @instruction = args[:instruction] if args.key?(:instruction)
          @prediction = args[:prediction] if args.key?(:prediction)
          @reference = args[:reference] if args.key?(:reference)
        end
      end
      
      # Spec for pairwise summarization quality result.
      class GoogleCloudAiplatformV1PairwiseSummarizationQualityResult
        include Google::Apis::Core::Hashable
      
        # Output only. Confidence for summarization quality score.
        # Corresponds to the JSON property `confidence`
        # @return [Float]
        attr_accessor :confidence
      
        # Output only. Explanation for summarization quality score.
        # Corresponds to the JSON property `explanation`
        # @return [String]
        attr_accessor :explanation
      
        # Output only. Pairwise summarization prediction choice.
        # Corresponds to the JSON property `pairwiseChoice`
        # @return [String]
        attr_accessor :pairwise_choice
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence = args[:confidence] if args.key?(:confidence)
          @explanation = args[:explanation] if args.key?(:explanation)
          @pairwise_choice = args[:pairwise_choice] if args.key?(:pairwise_choice)
        end
      end
      
      # Spec for pairwise summarization quality score metric.
      class GoogleCloudAiplatformV1PairwiseSummarizationQualitySpec
        include Google::Apis::Core::Hashable
      
        # Optional. Whether to use instance.reference to compute pairwise summarization
        # quality.
        # Corresponds to the JSON property `useReference`
        # @return [Boolean]
        attr_accessor :use_reference
        alias_method :use_reference?, :use_reference
      
        # Optional. Which version to use for evaluation.
        # Corresponds to the JSON property `version`
        # @return [Fixnum]
        attr_accessor :version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @use_reference = args[:use_reference] if args.key?(:use_reference)
          @version = args[:version] if args.key?(:version)
        end
      end
      
      # A datatype containing media that is part of a multi-part `Content` message. A `
      # Part` consists of data which has an associated datatype. A `Part` can only
      # contain one of the accepted types in `Part.data`. A `Part` must have a fixed
      # IANA MIME type identifying the type and subtype of the media if `inline_data`
      # or `file_data` field is filled with raw bytes.
      class GoogleCloudAiplatformV1Part
        include Google::Apis::Core::Hashable
      
        # Result of executing the [ExecutableCode]. Only generated when using the [
        # CodeExecution] tool, and always follows a `part` containing the [
        # ExecutableCode].
        # Corresponds to the JSON property `codeExecutionResult`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CodeExecutionResult]
        attr_accessor :code_execution_result
      
        # Code generated by the model that is meant to be executed, and the result
        # returned to the model. Generated when using the [CodeExecution] tool, in which
        # the code will be automatically executed, and a corresponding [
        # CodeExecutionResult] will also be generated.
        # Corresponds to the JSON property `executableCode`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExecutableCode]
        attr_accessor :executable_code
      
        # URI based data.
        # Corresponds to the JSON property `fileData`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FileData]
        attr_accessor :file_data
      
        # A predicted [FunctionCall] returned from the model that contains a string
        # representing the [FunctionDeclaration.name] and a structured JSON object
        # containing the parameters and their values.
        # Corresponds to the JSON property `functionCall`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FunctionCall]
        attr_accessor :function_call
      
        # The result output from a [FunctionCall] that contains a string representing
        # the [FunctionDeclaration.name] and a structured JSON object containing any
        # output from the function is used as context to the model. This should contain
        # the result of a [FunctionCall] made based on model prediction.
        # Corresponds to the JSON property `functionResponse`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FunctionResponse]
        attr_accessor :function_response
      
        # Content blob.
        # Corresponds to the JSON property `inlineData`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Blob]
        attr_accessor :inline_data
      
        # Optional. Text part (can be code).
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        # Optional. Indicates if the part is thought from the model.
        # Corresponds to the JSON property `thought`
        # @return [Boolean]
        attr_accessor :thought
        alias_method :thought?, :thought
      
        # Optional. An opaque signature for the thought so it can be reused in
        # subsequent requests.
        # Corresponds to the JSON property `thoughtSignature`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :thought_signature
      
        # Metadata describes the input video content.
        # Corresponds to the JSON property `videoMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1VideoMetadata]
        attr_accessor :video_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @code_execution_result = args[:code_execution_result] if args.key?(:code_execution_result)
          @executable_code = args[:executable_code] if args.key?(:executable_code)
          @file_data = args[:file_data] if args.key?(:file_data)
          @function_call = args[:function_call] if args.key?(:function_call)
          @function_response = args[:function_response] if args.key?(:function_response)
          @inline_data = args[:inline_data] if args.key?(:inline_data)
          @text = args[:text] if args.key?(:text)
          @thought = args[:thought] if args.key?(:thought)
          @thought_signature = args[:thought_signature] if args.key?(:thought_signature)
          @video_metadata = args[:video_metadata] if args.key?(:video_metadata)
        end
      end
      
      # Request message for JobService.PauseModelDeploymentMonitoringJob.
      class GoogleCloudAiplatformV1PauseModelDeploymentMonitoringJobRequest
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Request message for ScheduleService.PauseSchedule.
      class GoogleCloudAiplatformV1PauseScheduleRequest
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Represents the spec of persistent disk options.
      class GoogleCloudAiplatformV1PersistentDiskSpec
        include Google::Apis::Core::Hashable
      
        # Size in GB of the disk (default is 100GB).
        # Corresponds to the JSON property `diskSizeGb`
        # @return [Fixnum]
        attr_accessor :disk_size_gb
      
        # Type of the disk (default is "pd-standard"). Valid values: "pd-ssd" (
        # Persistent Disk Solid State Drive) "pd-standard" (Persistent Disk Hard Disk
        # Drive) "pd-balanced" (Balanced Persistent Disk) "pd-extreme" (Extreme
        # Persistent Disk)
        # Corresponds to the JSON property `diskType`
        # @return [String]
        attr_accessor :disk_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @disk_size_gb = args[:disk_size_gb] if args.key?(:disk_size_gb)
          @disk_type = args[:disk_type] if args.key?(:disk_type)
        end
      end
      
      # Represents long-lasting resources that are dedicated to users to runs custom
      # workloads. A PersistentResource can have multiple node pools and each node
      # pool can have its own machine spec.
      class GoogleCloudAiplatformV1PersistentResource
        include Google::Apis::Core::Hashable
      
        # Output only. Time when the PersistentResource was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Optional. The display name of the PersistentResource. The name can be up to
        # 128 characters long and can consist of any UTF-8 characters.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Represents a customer-managed encryption key spec that can be applied to a top-
        # level resource.
        # Corresponds to the JSON property `encryptionSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EncryptionSpec]
        attr_accessor :encryption_spec
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `error`
        # @return [Google::Apis::AiplatformV1::GoogleRpcStatus]
        attr_accessor :error
      
        # Optional. The labels with user-defined metadata to organize PersistentResource.
        # Label keys and values can be no longer than 64 characters (Unicode codepoints)
        # , can only contain lowercase letters, numeric characters, underscores and
        # dashes. International characters are allowed. See https://goo.gl/xmQnxf for
        # more information and examples of labels.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Immutable. Resource name of a PersistentResource.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Optional. The full name of the Compute Engine [network](/compute/docs/networks-
        # and-firewalls#networks) to peered with Vertex AI to host the persistent
        # resources. For example, `projects/12345/global/networks/myVPC`. [Format](/
        # compute/docs/reference/rest/v1/networks/insert) is of the form `projects/`
        # project`/global/networks/`network``. Where `project` is a project number, as
        # in `12345`, and `network` is a network name. To specify this field, you must
        # have already [configured VPC Network Peering for Vertex AI](https://cloud.
        # google.com/vertex-ai/docs/general/vpc-peering). If this field is left
        # unspecified, the resources aren't peered with any network.
        # Corresponds to the JSON property `network`
        # @return [String]
        attr_accessor :network
      
        # Configuration for PSC-I.
        # Corresponds to the JSON property `pscInterfaceConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PscInterfaceConfig]
        attr_accessor :psc_interface_config
      
        # Optional. A list of names for the reserved IP ranges under the VPC network
        # that can be used for this persistent resource. If set, we will deploy the
        # persistent resource within the provided IP ranges. Otherwise, the persistent
        # resource is deployed to any IP ranges under the provided VPC network. Example:
        # ['vertex-ai-ip-range'].
        # Corresponds to the JSON property `reservedIpRanges`
        # @return [Array<String>]
        attr_accessor :reserved_ip_ranges
      
        # Required. The spec of the pools of different resources.
        # Corresponds to the JSON property `resourcePools`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ResourcePool>]
        attr_accessor :resource_pools
      
        # Persistent Cluster runtime information as output
        # Corresponds to the JSON property `resourceRuntime`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ResourceRuntime]
        attr_accessor :resource_runtime
      
        # Configuration for the runtime on a PersistentResource instance, including but
        # not limited to: * Service accounts used to run the workloads. * Whether to
        # make it a dedicated Ray Cluster.
        # Corresponds to the JSON property `resourceRuntimeSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ResourceRuntimeSpec]
        attr_accessor :resource_runtime_spec
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzi`
        # @return [Boolean]
        attr_accessor :satisfies_pzi
        alias_method :satisfies_pzi?, :satisfies_pzi
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzs`
        # @return [Boolean]
        attr_accessor :satisfies_pzs
        alias_method :satisfies_pzs?, :satisfies_pzs
      
        # Output only. Time when the PersistentResource for the first time entered the `
        # RUNNING` state.
        # Corresponds to the JSON property `startTime`
        # @return [String]
        attr_accessor :start_time
      
        # Output only. The detailed state of a Study.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        # Output only. Time when the PersistentResource was most recently updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @display_name = args[:display_name] if args.key?(:display_name)
          @encryption_spec = args[:encryption_spec] if args.key?(:encryption_spec)
          @error = args[:error] if args.key?(:error)
          @labels = args[:labels] if args.key?(:labels)
          @name = args[:name] if args.key?(:name)
          @network = args[:network] if args.key?(:network)
          @psc_interface_config = args[:psc_interface_config] if args.key?(:psc_interface_config)
          @reserved_ip_ranges = args[:reserved_ip_ranges] if args.key?(:reserved_ip_ranges)
          @resource_pools = args[:resource_pools] if args.key?(:resource_pools)
          @resource_runtime = args[:resource_runtime] if args.key?(:resource_runtime)
          @resource_runtime_spec = args[:resource_runtime_spec] if args.key?(:resource_runtime_spec)
          @satisfies_pzi = args[:satisfies_pzi] if args.key?(:satisfies_pzi)
          @satisfies_pzs = args[:satisfies_pzs] if args.key?(:satisfies_pzs)
          @start_time = args[:start_time] if args.key?(:start_time)
          @state = args[:state] if args.key?(:state)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # An instance of a machine learning PipelineJob.
      class GoogleCloudAiplatformV1PipelineJob
        include Google::Apis::Core::Hashable
      
        # Output only. Pipeline creation time.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # The display name of the Pipeline. The name can be up to 128 characters long
        # and can consist of any UTF-8 characters.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Represents a customer-managed encryption key spec that can be applied to a top-
        # level resource.
        # Corresponds to the JSON property `encryptionSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EncryptionSpec]
        attr_accessor :encryption_spec
      
        # Output only. Pipeline end time.
        # Corresponds to the JSON property `endTime`
        # @return [String]
        attr_accessor :end_time
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `error`
        # @return [Google::Apis::AiplatformV1::GoogleRpcStatus]
        attr_accessor :error
      
        # The runtime detail of PipelineJob.
        # Corresponds to the JSON property `jobDetail`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PipelineJobDetail]
        attr_accessor :job_detail
      
        # The labels with user-defined metadata to organize PipelineJob. Label keys and
        # values can be no longer than 64 characters (Unicode codepoints), can only
        # contain lowercase letters, numeric characters, underscores and dashes.
        # International characters are allowed. See https://goo.gl/xmQnxf for more
        # information and examples of labels. Note there is some reserved label key for
        # Vertex AI Pipelines. - `vertex-ai-pipelines-run-billing-id`, user set value
        # will get overrided.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Output only. The resource name of the PipelineJob.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # The full name of the Compute Engine [network](/compute/docs/networks-and-
        # firewalls#networks) to which the Pipeline Job's workload should be peered. For
        # example, `projects/12345/global/networks/myVPC`. [Format](/compute/docs/
        # reference/rest/v1/networks/insert) is of the form `projects/`project`/global/
        # networks/`network``. Where `project` is a project number, as in `12345`, and `
        # network` is a network name. Private services access must already be configured
        # for the network. Pipeline job will apply the network configuration to the
        # Google Cloud resources being launched, if applied, such as Vertex AI Training
        # or Dataflow job. If left unspecified, the workload is not peered with any
        # network.
        # Corresponds to the JSON property `network`
        # @return [String]
        attr_accessor :network
      
        # The spec of the pipeline.
        # Corresponds to the JSON property `pipelineSpec`
        # @return [Hash<String,Object>]
        attr_accessor :pipeline_spec
      
        # Optional. Whether to do component level validations before job creation.
        # Corresponds to the JSON property `preflightValidations`
        # @return [Boolean]
        attr_accessor :preflight_validations
        alias_method :preflight_validations?, :preflight_validations
      
        # Configuration for PSC-I.
        # Corresponds to the JSON property `pscInterfaceConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PscInterfaceConfig]
        attr_accessor :psc_interface_config
      
        # A list of names for the reserved ip ranges under the VPC network that can be
        # used for this Pipeline Job's workload. If set, we will deploy the Pipeline Job'
        # s workload within the provided ip ranges. Otherwise, the job will be deployed
        # to any ip ranges under the provided VPC network. Example: ['vertex-ai-ip-range'
        # ].
        # Corresponds to the JSON property `reservedIpRanges`
        # @return [Array<String>]
        attr_accessor :reserved_ip_ranges
      
        # The runtime config of a PipelineJob.
        # Corresponds to the JSON property `runtimeConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PipelineJobRuntimeConfig]
        attr_accessor :runtime_config
      
        # Output only. The schedule resource name. Only returned if the Pipeline is
        # created by Schedule API.
        # Corresponds to the JSON property `scheduleName`
        # @return [String]
        attr_accessor :schedule_name
      
        # The service account that the pipeline workload runs as. If not specified, the
        # Compute Engine default service account in the project will be used. See https:/
        # /cloud.google.com/compute/docs/access/service-accounts#default_service_account
        # Users starting the pipeline must have the `iam.serviceAccounts.actAs`
        # permission on this service account.
        # Corresponds to the JSON property `serviceAccount`
        # @return [String]
        attr_accessor :service_account
      
        # Output only. Pipeline start time.
        # Corresponds to the JSON property `startTime`
        # @return [String]
        attr_accessor :start_time
      
        # Output only. The detailed state of the job.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        # Pipeline template metadata if PipelineJob.template_uri is from supported
        # template registry. Currently, the only supported registry is Artifact Registry.
        # Corresponds to the JSON property `templateMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PipelineTemplateMetadata]
        attr_accessor :template_metadata
      
        # A template uri from where the PipelineJob.pipeline_spec, if empty, will be
        # downloaded. Currently, only uri from Vertex Template Registry & Gallery is
        # supported. Reference to https://cloud.google.com/vertex-ai/docs/pipelines/
        # create-pipeline-template.
        # Corresponds to the JSON property `templateUri`
        # @return [String]
        attr_accessor :template_uri
      
        # Output only. Timestamp when this PipelineJob was most recently updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @display_name = args[:display_name] if args.key?(:display_name)
          @encryption_spec = args[:encryption_spec] if args.key?(:encryption_spec)
          @end_time = args[:end_time] if args.key?(:end_time)
          @error = args[:error] if args.key?(:error)
          @job_detail = args[:job_detail] if args.key?(:job_detail)
          @labels = args[:labels] if args.key?(:labels)
          @name = args[:name] if args.key?(:name)
          @network = args[:network] if args.key?(:network)
          @pipeline_spec = args[:pipeline_spec] if args.key?(:pipeline_spec)
          @preflight_validations = args[:preflight_validations] if args.key?(:preflight_validations)
          @psc_interface_config = args[:psc_interface_config] if args.key?(:psc_interface_config)
          @reserved_ip_ranges = args[:reserved_ip_ranges] if args.key?(:reserved_ip_ranges)
          @runtime_config = args[:runtime_config] if args.key?(:runtime_config)
          @schedule_name = args[:schedule_name] if args.key?(:schedule_name)
          @service_account = args[:service_account] if args.key?(:service_account)
          @start_time = args[:start_time] if args.key?(:start_time)
          @state = args[:state] if args.key?(:state)
          @template_metadata = args[:template_metadata] if args.key?(:template_metadata)
          @template_uri = args[:template_uri] if args.key?(:template_uri)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # The runtime detail of PipelineJob.
      class GoogleCloudAiplatformV1PipelineJobDetail
        include Google::Apis::Core::Hashable
      
        # Instance of a general context.
        # Corresponds to the JSON property `pipelineContext`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Context]
        attr_accessor :pipeline_context
      
        # Instance of a general context.
        # Corresponds to the JSON property `pipelineRunContext`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Context]
        attr_accessor :pipeline_run_context
      
        # Output only. The runtime details of the tasks under the pipeline.
        # Corresponds to the JSON property `taskDetails`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PipelineTaskDetail>]
        attr_accessor :task_details
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @pipeline_context = args[:pipeline_context] if args.key?(:pipeline_context)
          @pipeline_run_context = args[:pipeline_run_context] if args.key?(:pipeline_run_context)
          @task_details = args[:task_details] if args.key?(:task_details)
        end
      end
      
      # The runtime config of a PipelineJob.
      class GoogleCloudAiplatformV1PipelineJobRuntimeConfig
        include Google::Apis::Core::Hashable
      
        # Represents the failure policy of a pipeline. Currently, the default of a
        # pipeline is that the pipeline will continue to run until no more tasks can be
        # executed, also known as PIPELINE_FAILURE_POLICY_FAIL_SLOW. However, if a
        # pipeline is set to PIPELINE_FAILURE_POLICY_FAIL_FAST, it will stop scheduling
        # any new tasks when a task has failed. Any scheduled tasks will continue to
        # completion.
        # Corresponds to the JSON property `failurePolicy`
        # @return [String]
        attr_accessor :failure_policy
      
        # Required. A path in a Cloud Storage bucket, which will be treated as the root
        # output directory of the pipeline. It is used by the system to generate the
        # paths of output artifacts. The artifact paths are generated with a sub-path
        # pattern ``job_id`/`task_id`/`output_key`` under the specified output directory.
        # The service account specified in this pipeline must have the `storage.objects.
        # get` and `storage.objects.create` permissions for this bucket.
        # Corresponds to the JSON property `gcsOutputDirectory`
        # @return [String]
        attr_accessor :gcs_output_directory
      
        # The runtime artifacts of the PipelineJob. The key will be the input artifact
        # name and the value would be one of the InputArtifact.
        # Corresponds to the JSON property `inputArtifacts`
        # @return [Hash<String,Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PipelineJobRuntimeConfigInputArtifact>]
        attr_accessor :input_artifacts
      
        # The runtime parameters of the PipelineJob. The parameters will be passed into
        # PipelineJob.pipeline_spec to replace the placeholders at runtime. This field
        # is used by pipelines built using `PipelineJob.pipeline_spec.schema_version` 2.
        # 1.0, such as pipelines built using Kubeflow Pipelines SDK 1.9 or higher and
        # the v2 DSL.
        # Corresponds to the JSON property `parameterValues`
        # @return [Hash<String,Object>]
        attr_accessor :parameter_values
      
        # Deprecated. Use RuntimeConfig.parameter_values instead. The runtime parameters
        # of the PipelineJob. The parameters will be passed into PipelineJob.
        # pipeline_spec to replace the placeholders at runtime. This field is used by
        # pipelines built using `PipelineJob.pipeline_spec.schema_version` 2.0.0 or
        # lower, such as pipelines built using Kubeflow Pipelines SDK 1.8 or lower.
        # Corresponds to the JSON property `parameters`
        # @return [Hash<String,Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Value>]
        attr_accessor :parameters
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @failure_policy = args[:failure_policy] if args.key?(:failure_policy)
          @gcs_output_directory = args[:gcs_output_directory] if args.key?(:gcs_output_directory)
          @input_artifacts = args[:input_artifacts] if args.key?(:input_artifacts)
          @parameter_values = args[:parameter_values] if args.key?(:parameter_values)
          @parameters = args[:parameters] if args.key?(:parameters)
        end
      end
      
      # The type of an input artifact.
      class GoogleCloudAiplatformV1PipelineJobRuntimeConfigInputArtifact
        include Google::Apis::Core::Hashable
      
        # Artifact resource id from MLMD. Which is the last portion of an artifact
        # resource name: `projects/`project`/locations/`location`/metadataStores/default/
        # artifacts/`artifact_id``. The artifact must stay within the same project,
        # location and default metadatastore as the pipeline.
        # Corresponds to the JSON property `artifactId`
        # @return [String]
        attr_accessor :artifact_id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @artifact_id = args[:artifact_id] if args.key?(:artifact_id)
        end
      end
      
      # The runtime detail of a task execution.
      class GoogleCloudAiplatformV1PipelineTaskDetail
        include Google::Apis::Core::Hashable
      
        # Output only. Task create time.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Output only. Task end time.
        # Corresponds to the JSON property `endTime`
        # @return [String]
        attr_accessor :end_time
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `error`
        # @return [Google::Apis::AiplatformV1::GoogleRpcStatus]
        attr_accessor :error
      
        # Instance of a general execution.
        # Corresponds to the JSON property `execution`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Execution]
        attr_accessor :execution
      
        # The runtime detail of a pipeline executor.
        # Corresponds to the JSON property `executorDetail`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PipelineTaskExecutorDetail]
        attr_accessor :executor_detail
      
        # Output only. The runtime input artifacts of the task.
        # Corresponds to the JSON property `inputs`
        # @return [Hash<String,Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PipelineTaskDetailArtifactList>]
        attr_accessor :inputs
      
        # Output only. The runtime output artifacts of the task.
        # Corresponds to the JSON property `outputs`
        # @return [Hash<String,Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PipelineTaskDetailArtifactList>]
        attr_accessor :outputs
      
        # Output only. The id of the parent task if the task is within a component scope.
        # Empty if the task is at the root level.
        # Corresponds to the JSON property `parentTaskId`
        # @return [Fixnum]
        attr_accessor :parent_task_id
      
        # Output only. A list of task status. This field keeps a record of task status
        # evolving over time.
        # Corresponds to the JSON property `pipelineTaskStatus`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PipelineTaskDetailPipelineTaskStatus>]
        attr_accessor :pipeline_task_status
      
        # Output only. Task start time.
        # Corresponds to the JSON property `startTime`
        # @return [String]
        attr_accessor :start_time
      
        # Output only. State of the task.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        # Output only. The system generated ID of the task.
        # Corresponds to the JSON property `taskId`
        # @return [Fixnum]
        attr_accessor :task_id
      
        # Output only. The user specified name of the task that is defined in
        # pipeline_spec.
        # Corresponds to the JSON property `taskName`
        # @return [String]
        attr_accessor :task_name
      
        # Output only. The unique name of a task. This field is used by rerun pipeline
        # job. Console UI and Vertex AI SDK will support triggering pipeline job reruns.
        # The name is constructed by concatenating all the parent tasks name with the
        # task name. For example, if a task named "child_task" has a parent task named "
        # parent_task_1" and parent task 1 has a parent task named "parent_task_2", the
        # task unique name will be "parent_task_2.parent_task_1.child_task".
        # Corresponds to the JSON property `taskUniqueName`
        # @return [String]
        attr_accessor :task_unique_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @end_time = args[:end_time] if args.key?(:end_time)
          @error = args[:error] if args.key?(:error)
          @execution = args[:execution] if args.key?(:execution)
          @executor_detail = args[:executor_detail] if args.key?(:executor_detail)
          @inputs = args[:inputs] if args.key?(:inputs)
          @outputs = args[:outputs] if args.key?(:outputs)
          @parent_task_id = args[:parent_task_id] if args.key?(:parent_task_id)
          @pipeline_task_status = args[:pipeline_task_status] if args.key?(:pipeline_task_status)
          @start_time = args[:start_time] if args.key?(:start_time)
          @state = args[:state] if args.key?(:state)
          @task_id = args[:task_id] if args.key?(:task_id)
          @task_name = args[:task_name] if args.key?(:task_name)
          @task_unique_name = args[:task_unique_name] if args.key?(:task_unique_name)
        end
      end
      
      # A list of artifact metadata.
      class GoogleCloudAiplatformV1PipelineTaskDetailArtifactList
        include Google::Apis::Core::Hashable
      
        # Output only. A list of artifact metadata.
        # Corresponds to the JSON property `artifacts`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Artifact>]
        attr_accessor :artifacts
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @artifacts = args[:artifacts] if args.key?(:artifacts)
        end
      end
      
      # A single record of the task status.
      class GoogleCloudAiplatformV1PipelineTaskDetailPipelineTaskStatus
        include Google::Apis::Core::Hashable
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `error`
        # @return [Google::Apis::AiplatformV1::GoogleRpcStatus]
        attr_accessor :error
      
        # Output only. The state of the task.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        # Output only. Update time of this status.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @error = args[:error] if args.key?(:error)
          @state = args[:state] if args.key?(:state)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # The runtime detail of a pipeline executor.
      class GoogleCloudAiplatformV1PipelineTaskExecutorDetail
        include Google::Apis::Core::Hashable
      
        # The detail of a container execution. It contains the job names of the
        # lifecycle of a container execution.
        # Corresponds to the JSON property `containerDetail`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PipelineTaskExecutorDetailContainerDetail]
        attr_accessor :container_detail
      
        # The detailed info for a custom job executor.
        # Corresponds to the JSON property `customJobDetail`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PipelineTaskExecutorDetailCustomJobDetail]
        attr_accessor :custom_job_detail
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @container_detail = args[:container_detail] if args.key?(:container_detail)
          @custom_job_detail = args[:custom_job_detail] if args.key?(:custom_job_detail)
        end
      end
      
      # The detail of a container execution. It contains the job names of the
      # lifecycle of a container execution.
      class GoogleCloudAiplatformV1PipelineTaskExecutorDetailContainerDetail
        include Google::Apis::Core::Hashable
      
        # Output only. The names of the previously failed CustomJob for the main
        # container executions. The list includes the all attempts in chronological
        # order.
        # Corresponds to the JSON property `failedMainJobs`
        # @return [Array<String>]
        attr_accessor :failed_main_jobs
      
        # Output only. The names of the previously failed CustomJob for the pre-caching-
        # check container executions. This job will be available if the PipelineJob.
        # pipeline_spec specifies the `pre_caching_check` hook in the lifecycle events.
        # The list includes the all attempts in chronological order.
        # Corresponds to the JSON property `failedPreCachingCheckJobs`
        # @return [Array<String>]
        attr_accessor :failed_pre_caching_check_jobs
      
        # Output only. The name of the CustomJob for the main container execution.
        # Corresponds to the JSON property `mainJob`
        # @return [String]
        attr_accessor :main_job
      
        # Output only. The name of the CustomJob for the pre-caching-check container
        # execution. This job will be available if the PipelineJob.pipeline_spec
        # specifies the `pre_caching_check` hook in the lifecycle events.
        # Corresponds to the JSON property `preCachingCheckJob`
        # @return [String]
        attr_accessor :pre_caching_check_job
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @failed_main_jobs = args[:failed_main_jobs] if args.key?(:failed_main_jobs)
          @failed_pre_caching_check_jobs = args[:failed_pre_caching_check_jobs] if args.key?(:failed_pre_caching_check_jobs)
          @main_job = args[:main_job] if args.key?(:main_job)
          @pre_caching_check_job = args[:pre_caching_check_job] if args.key?(:pre_caching_check_job)
        end
      end
      
      # The detailed info for a custom job executor.
      class GoogleCloudAiplatformV1PipelineTaskExecutorDetailCustomJobDetail
        include Google::Apis::Core::Hashable
      
        # Output only. The names of the previously failed CustomJob. The list includes
        # the all attempts in chronological order.
        # Corresponds to the JSON property `failedJobs`
        # @return [Array<String>]
        attr_accessor :failed_jobs
      
        # Output only. The name of the CustomJob.
        # Corresponds to the JSON property `job`
        # @return [String]
        attr_accessor :job
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @failed_jobs = args[:failed_jobs] if args.key?(:failed_jobs)
          @job = args[:job] if args.key?(:job)
        end
      end
      
      # Pipeline template metadata if PipelineJob.template_uri is from supported
      # template registry. Currently, the only supported registry is Artifact Registry.
      class GoogleCloudAiplatformV1PipelineTemplateMetadata
        include Google::Apis::Core::Hashable
      
        # The version_name in artifact registry. Will always be presented in output if
        # the PipelineJob.template_uri is from supported template registry. Format is "
        # sha256:abcdef123456...".
        # Corresponds to the JSON property `version`
        # @return [String]
        attr_accessor :version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @version = args[:version] if args.key?(:version)
        end
      end
      
      # Input for pointwise metric.
      class GoogleCloudAiplatformV1PointwiseMetricInput
        include Google::Apis::Core::Hashable
      
        # Pointwise metric instance. Usually one instance corresponds to one row in an
        # evaluation dataset.
        # Corresponds to the JSON property `instance`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PointwiseMetricInstance]
        attr_accessor :instance
      
        # Spec for pointwise metric.
        # Corresponds to the JSON property `metricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PointwiseMetricSpec]
        attr_accessor :metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instance = args[:instance] if args.key?(:instance)
          @metric_spec = args[:metric_spec] if args.key?(:metric_spec)
        end
      end
      
      # Pointwise metric instance. Usually one instance corresponds to one row in an
      # evaluation dataset.
      class GoogleCloudAiplatformV1PointwiseMetricInstance
        include Google::Apis::Core::Hashable
      
        # Map of placeholder in metric prompt template to contents of model input.
        # Corresponds to the JSON property `contentMapInstance`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ContentMap]
        attr_accessor :content_map_instance
      
        # Instance specified as a json string. String key-value pairs are expected in
        # the json_instance to render PointwiseMetricSpec.instance_prompt_template.
        # Corresponds to the JSON property `jsonInstance`
        # @return [String]
        attr_accessor :json_instance
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content_map_instance = args[:content_map_instance] if args.key?(:content_map_instance)
          @json_instance = args[:json_instance] if args.key?(:json_instance)
        end
      end
      
      # Spec for pointwise metric result.
      class GoogleCloudAiplatformV1PointwiseMetricResult
        include Google::Apis::Core::Hashable
      
        # Spec for custom output.
        # Corresponds to the JSON property `customOutput`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CustomOutput]
        attr_accessor :custom_output
      
        # Output only. Explanation for pointwise metric score.
        # Corresponds to the JSON property `explanation`
        # @return [String]
        attr_accessor :explanation
      
        # Output only. Pointwise metric score.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @custom_output = args[:custom_output] if args.key?(:custom_output)
          @explanation = args[:explanation] if args.key?(:explanation)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # Spec for pointwise metric.
      class GoogleCloudAiplatformV1PointwiseMetricSpec
        include Google::Apis::Core::Hashable
      
        # Spec for custom output format configuration.
        # Corresponds to the JSON property `customOutputFormatConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CustomOutputFormatConfig]
        attr_accessor :custom_output_format_config
      
        # Required. Metric prompt template for pointwise metric.
        # Corresponds to the JSON property `metricPromptTemplate`
        # @return [String]
        attr_accessor :metric_prompt_template
      
        # Optional. System instructions for pointwise metric.
        # Corresponds to the JSON property `systemInstruction`
        # @return [String]
        attr_accessor :system_instruction
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @custom_output_format_config = args[:custom_output_format_config] if args.key?(:custom_output_format_config)
          @metric_prompt_template = args[:metric_prompt_template] if args.key?(:metric_prompt_template)
          @system_instruction = args[:system_instruction] if args.key?(:system_instruction)
        end
      end
      
      # Represents a network port in a container.
      class GoogleCloudAiplatformV1Port
        include Google::Apis::Core::Hashable
      
        # The number of the port to expose on the pod's IP address. Must be a valid port
        # number, between 1 and 65535 inclusive.
        # Corresponds to the JSON property `containerPort`
        # @return [Fixnum]
        attr_accessor :container_port
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @container_port = args[:container_port] if args.key?(:container_port)
        end
      end
      
      # Post startup script config.
      class GoogleCloudAiplatformV1PostStartupScriptConfig
        include Google::Apis::Core::Hashable
      
        # Optional. Post startup script to run after runtime is started.
        # Corresponds to the JSON property `postStartupScript`
        # @return [String]
        attr_accessor :post_startup_script
      
        # Optional. Post startup script behavior that defines download and execution
        # behavior.
        # Corresponds to the JSON property `postStartupScriptBehavior`
        # @return [String]
        attr_accessor :post_startup_script_behavior
      
        # Optional. Post startup script url to download. Example: `gs://bucket/script.sh`
        # Corresponds to the JSON property `postStartupScriptUrl`
        # @return [String]
        attr_accessor :post_startup_script_url
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @post_startup_script = args[:post_startup_script] if args.key?(:post_startup_script)
          @post_startup_script_behavior = args[:post_startup_script_behavior] if args.key?(:post_startup_script_behavior)
          @post_startup_script_url = args[:post_startup_script_url] if args.key?(:post_startup_script_url)
        end
      end
      
      # The configuration for the prebuilt speaker to use.
      class GoogleCloudAiplatformV1PrebuiltVoiceConfig
        include Google::Apis::Core::Hashable
      
        # The name of the preset voice to use.
        # Corresponds to the JSON property `voiceName`
        # @return [String]
        attr_accessor :voice_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @voice_name = args[:voice_name] if args.key?(:voice_name)
        end
      end
      
      # The spec for a pre-defined metric.
      class GoogleCloudAiplatformV1PredefinedMetricSpec
        include Google::Apis::Core::Hashable
      
        # Required. The name of a pre-defined metric, such as "instruction_following_v1"
        # or "text_quality_v1".
        # Corresponds to the JSON property `metricSpecName`
        # @return [String]
        attr_accessor :metric_spec_name
      
        # Optional. The parameters needed to run the pre-defined metric.
        # Corresponds to the JSON property `metricSpecParameters`
        # @return [Hash<String,Object>]
        attr_accessor :metric_spec_parameters
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @metric_spec_name = args[:metric_spec_name] if args.key?(:metric_spec_name)
          @metric_spec_parameters = args[:metric_spec_parameters] if args.key?(:metric_spec_parameters)
        end
      end
      
      # Assigns input data to training, validation, and test sets based on the value
      # of a provided key. Supported only for tabular Datasets.
      class GoogleCloudAiplatformV1PredefinedSplit
        include Google::Apis::Core::Hashable
      
        # Required. The key is a name of one of the Dataset's data columns. The value of
        # the key (either the label's value or value in the column) must be one of ``
        # training`, `validation`, `test``, and it defines to which set the given piece
        # of data is assigned. If for a piece of data the key is not present or has an
        # invalid value, that piece is ignored by the pipeline.
        # Corresponds to the JSON property `key`
        # @return [String]
        attr_accessor :key
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @key = args[:key] if args.key?(:key)
        end
      end
      
      # Request message for PredictionService.PredictLongRunning.
      class GoogleCloudAiplatformV1PredictLongRunningRequest
        include Google::Apis::Core::Hashable
      
        # Required. The instances that are the input to the prediction call. A
        # DeployedModel may have an upper limit on the number of instances it supports
        # per request, and when it is exceeded the prediction call errors in case of
        # AutoML Models, or, in case of customer created Models, the behaviour is as
        # documented by that Model. The schema of any single instance may be specified
        # via Endpoint's DeployedModels' Model's PredictSchemata's instance_schema_uri.
        # Corresponds to the JSON property `instances`
        # @return [Array<Object>]
        attr_accessor :instances
      
        # Optional. The parameters that govern the prediction. The schema of the
        # parameters may be specified via Endpoint's DeployedModels' Model's
        # PredictSchemata's parameters_schema_uri.
        # Corresponds to the JSON property `parameters`
        # @return [Object]
        attr_accessor :parameters
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instances = args[:instances] if args.key?(:instances)
          @parameters = args[:parameters] if args.key?(:parameters)
        end
      end
      
      # Request message for PredictionService.Predict.
      class GoogleCloudAiplatformV1PredictRequest
        include Google::Apis::Core::Hashable
      
        # Required. The instances that are the input to the prediction call. A
        # DeployedModel may have an upper limit on the number of instances it supports
        # per request, and when it is exceeded the prediction call errors in case of
        # AutoML Models, or, in case of customer created Models, the behaviour is as
        # documented by that Model. The schema of any single instance may be specified
        # via Endpoint's DeployedModels' Model's PredictSchemata's instance_schema_uri.
        # Corresponds to the JSON property `instances`
        # @return [Array<Object>]
        attr_accessor :instances
      
        # The parameters that govern the prediction. The schema of the parameters may be
        # specified via Endpoint's DeployedModels' Model's PredictSchemata's
        # parameters_schema_uri.
        # Corresponds to the JSON property `parameters`
        # @return [Object]
        attr_accessor :parameters
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instances = args[:instances] if args.key?(:instances)
          @parameters = args[:parameters] if args.key?(:parameters)
        end
      end
      
      # Configuration for logging request-response to a BigQuery table.
      class GoogleCloudAiplatformV1PredictRequestResponseLoggingConfig
        include Google::Apis::Core::Hashable
      
        # The BigQuery location for the output content.
        # Corresponds to the JSON property `bigqueryDestination`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BigQueryDestination]
        attr_accessor :bigquery_destination
      
        # If logging is enabled or not.
        # Corresponds to the JSON property `enabled`
        # @return [Boolean]
        attr_accessor :enabled
        alias_method :enabled?, :enabled
      
        # Percentage of requests to be logged, expressed as a fraction in range(0,1].
        # Corresponds to the JSON property `samplingRate`
        # @return [Float]
        attr_accessor :sampling_rate
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @bigquery_destination = args[:bigquery_destination] if args.key?(:bigquery_destination)
          @enabled = args[:enabled] if args.key?(:enabled)
          @sampling_rate = args[:sampling_rate] if args.key?(:sampling_rate)
        end
      end
      
      # Response message for PredictionService.Predict.
      class GoogleCloudAiplatformV1PredictResponse
        include Google::Apis::Core::Hashable
      
        # ID of the Endpoint's DeployedModel that served this prediction.
        # Corresponds to the JSON property `deployedModelId`
        # @return [String]
        attr_accessor :deployed_model_id
      
        # Output only. Request-level metadata returned by the model. The metadata type
        # will be dependent upon the model implementation.
        # Corresponds to the JSON property `metadata`
        # @return [Object]
        attr_accessor :metadata
      
        # Output only. The resource name of the Model which is deployed as the
        # DeployedModel that this prediction hits.
        # Corresponds to the JSON property `model`
        # @return [String]
        attr_accessor :model
      
        # Output only. The display name of the Model which is deployed as the
        # DeployedModel that this prediction hits.
        # Corresponds to the JSON property `modelDisplayName`
        # @return [String]
        attr_accessor :model_display_name
      
        # Output only. The version ID of the Model which is deployed as the
        # DeployedModel that this prediction hits.
        # Corresponds to the JSON property `modelVersionId`
        # @return [String]
        attr_accessor :model_version_id
      
        # The predictions that are the output of the predictions call. The schema of any
        # single prediction may be specified via Endpoint's DeployedModels' Model's
        # PredictSchemata's prediction_schema_uri.
        # Corresponds to the JSON property `predictions`
        # @return [Array<Object>]
        attr_accessor :predictions
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @deployed_model_id = args[:deployed_model_id] if args.key?(:deployed_model_id)
          @metadata = args[:metadata] if args.key?(:metadata)
          @model = args[:model] if args.key?(:model)
          @model_display_name = args[:model_display_name] if args.key?(:model_display_name)
          @model_version_id = args[:model_version_id] if args.key?(:model_version_id)
          @predictions = args[:predictions] if args.key?(:predictions)
        end
      end
      
      # Contains the schemata used in Model's predictions and explanations via
      # PredictionService.Predict, PredictionService.Explain and BatchPredictionJob.
      class GoogleCloudAiplatformV1PredictSchemata
        include Google::Apis::Core::Hashable
      
        # Immutable. Points to a YAML file stored on Google Cloud Storage describing the
        # format of a single instance, which are used in PredictRequest.instances,
        # ExplainRequest.instances and BatchPredictionJob.input_config. The schema is
        # defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-
        # Specification/blob/main/versions/3.0.2.md#schemaObject). AutoML Models always
        # have this field populated by Vertex AI. Note: The URI given on output will be
        # immutable and probably different, including the URI scheme, than the one given
        # on input. The output URI will point to a location where the user only has a
        # read access.
        # Corresponds to the JSON property `instanceSchemaUri`
        # @return [String]
        attr_accessor :instance_schema_uri
      
        # Immutable. Points to a YAML file stored on Google Cloud Storage describing the
        # parameters of prediction and explanation via PredictRequest.parameters,
        # ExplainRequest.parameters and BatchPredictionJob.model_parameters. The schema
        # is defined as an OpenAPI 3.0.2 [Schema Object](https://github.com/OAI/OpenAPI-
        # Specification/blob/main/versions/3.0.2.md#schemaObject). AutoML Models always
        # have this field populated by Vertex AI, if no parameters are supported, then
        # it is set to an empty string. Note: The URI given on output will be immutable
        # and probably different, including the URI scheme, than the one given on input.
        # The output URI will point to a location where the user only has a read access.
        # Corresponds to the JSON property `parametersSchemaUri`
        # @return [String]
        attr_accessor :parameters_schema_uri
      
        # Immutable. Points to a YAML file stored on Google Cloud Storage describing the
        # format of a single prediction produced by this Model, which are returned via
        # PredictResponse.predictions, ExplainResponse.explanations, and
        # BatchPredictionJob.output_config. The schema is defined as an OpenAPI 3.0.2 [
        # Schema Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/
        # 3.0.2.md#schemaObject). AutoML Models always have this field populated by
        # Vertex AI. Note: The URI given on output will be immutable and probably
        # different, including the URI scheme, than the one given on input. The output
        # URI will point to a location where the user only has a read access.
        # Corresponds to the JSON property `predictionSchemaUri`
        # @return [String]
        attr_accessor :prediction_schema_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instance_schema_uri = args[:instance_schema_uri] if args.key?(:instance_schema_uri)
          @parameters_schema_uri = args[:parameters_schema_uri] if args.key?(:parameters_schema_uri)
          @prediction_schema_uri = args[:prediction_schema_uri] if args.key?(:prediction_schema_uri)
        end
      end
      
      # Preset configuration for example-based explanations
      class GoogleCloudAiplatformV1Presets
        include Google::Apis::Core::Hashable
      
        # The modality of the uploaded model, which automatically configures the
        # distance measurement and feature normalization for the underlying example
        # index and queries. If your model does not precisely fit one of these types, it
        # is okay to choose the closest type.
        # Corresponds to the JSON property `modality`
        # @return [String]
        attr_accessor :modality
      
        # Preset option controlling parameters for speed-precision trade-off when
        # querying for examples. If omitted, defaults to `PRECISE`.
        # Corresponds to the JSON property `query`
        # @return [String]
        attr_accessor :query
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @modality = args[:modality] if args.key?(:modality)
          @query = args[:query] if args.key?(:query)
        end
      end
      
      # PrivateEndpoints proto is used to provide paths for users to send requests
      # privately. To send request via private service access, use predict_http_uri,
      # explain_http_uri or health_http_uri. To send request via private service
      # connect, use service_attachment.
      class GoogleCloudAiplatformV1PrivateEndpoints
        include Google::Apis::Core::Hashable
      
        # Output only. Http(s) path to send explain requests.
        # Corresponds to the JSON property `explainHttpUri`
        # @return [String]
        attr_accessor :explain_http_uri
      
        # Output only. Http(s) path to send health check requests.
        # Corresponds to the JSON property `healthHttpUri`
        # @return [String]
        attr_accessor :health_http_uri
      
        # Output only. Http(s) path to send prediction requests.
        # Corresponds to the JSON property `predictHttpUri`
        # @return [String]
        attr_accessor :predict_http_uri
      
        # Output only. The name of the service attachment resource. Populated if private
        # service connect is enabled.
        # Corresponds to the JSON property `serviceAttachment`
        # @return [String]
        attr_accessor :service_attachment
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @explain_http_uri = args[:explain_http_uri] if args.key?(:explain_http_uri)
          @health_http_uri = args[:health_http_uri] if args.key?(:health_http_uri)
          @predict_http_uri = args[:predict_http_uri] if args.key?(:predict_http_uri)
          @service_attachment = args[:service_attachment] if args.key?(:service_attachment)
        end
      end
      
      # Represents configuration for private service connect.
      class GoogleCloudAiplatformV1PrivateServiceConnectConfig
        include Google::Apis::Core::Hashable
      
        # Required. If true, expose the IndexEndpoint via private service connect.
        # Corresponds to the JSON property `enablePrivateServiceConnect`
        # @return [Boolean]
        attr_accessor :enable_private_service_connect
        alias_method :enable_private_service_connect?, :enable_private_service_connect
      
        # A list of Projects from which the forwarding rule will target the service
        # attachment.
        # Corresponds to the JSON property `projectAllowlist`
        # @return [Array<String>]
        attr_accessor :project_allowlist
      
        # Optional. List of projects and networks where the PSC endpoints will be
        # created. This field is used by Online Inference(Prediction) only.
        # Corresponds to the JSON property `pscAutomationConfigs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PscAutomationConfig>]
        attr_accessor :psc_automation_configs
      
        # Output only. The name of the generated service attachment resource. This is
        # only populated if the endpoint is deployed with PrivateServiceConnect.
        # Corresponds to the JSON property `serviceAttachment`
        # @return [String]
        attr_accessor :service_attachment
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @enable_private_service_connect = args[:enable_private_service_connect] if args.key?(:enable_private_service_connect)
          @project_allowlist = args[:project_allowlist] if args.key?(:project_allowlist)
          @psc_automation_configs = args[:psc_automation_configs] if args.key?(:psc_automation_configs)
          @service_attachment = args[:service_attachment] if args.key?(:service_attachment)
        end
      end
      
      # Probe describes a health check to be performed against a container to
      # determine whether it is alive or ready to receive traffic.
      class GoogleCloudAiplatformV1Probe
        include Google::Apis::Core::Hashable
      
        # ExecAction specifies a command to execute.
        # Corresponds to the JSON property `exec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ProbeExecAction]
        attr_accessor :exec
      
        # Number of consecutive failures before the probe is considered failed. Defaults
        # to 3. Minimum value is 1. Maps to Kubernetes probe argument 'failureThreshold'.
        # Corresponds to the JSON property `failureThreshold`
        # @return [Fixnum]
        attr_accessor :failure_threshold
      
        # GrpcAction checks the health of a container using a gRPC service.
        # Corresponds to the JSON property `grpc`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ProbeGrpcAction]
        attr_accessor :grpc
      
        # HttpGetAction describes an action based on HTTP Get requests.
        # Corresponds to the JSON property `httpGet`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ProbeHttpGetAction]
        attr_accessor :http_get
      
        # Number of seconds to wait before starting the probe. Defaults to 0. Minimum
        # value is 0. Maps to Kubernetes probe argument 'initialDelaySeconds'.
        # Corresponds to the JSON property `initialDelaySeconds`
        # @return [Fixnum]
        attr_accessor :initial_delay_seconds
      
        # How often (in seconds) to perform the probe. Default to 10 seconds. Minimum
        # value is 1. Must be less than timeout_seconds. Maps to Kubernetes probe
        # argument 'periodSeconds'.
        # Corresponds to the JSON property `periodSeconds`
        # @return [Fixnum]
        attr_accessor :period_seconds
      
        # Number of consecutive successes before the probe is considered successful.
        # Defaults to 1. Minimum value is 1. Maps to Kubernetes probe argument '
        # successThreshold'.
        # Corresponds to the JSON property `successThreshold`
        # @return [Fixnum]
        attr_accessor :success_threshold
      
        # TcpSocketAction probes the health of a container by opening a TCP socket
        # connection.
        # Corresponds to the JSON property `tcpSocket`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ProbeTcpSocketAction]
        attr_accessor :tcp_socket
      
        # Number of seconds after which the probe times out. Defaults to 1 second.
        # Minimum value is 1. Must be greater or equal to period_seconds. Maps to
        # Kubernetes probe argument 'timeoutSeconds'.
        # Corresponds to the JSON property `timeoutSeconds`
        # @return [Fixnum]
        attr_accessor :timeout_seconds
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @exec = args[:exec] if args.key?(:exec)
          @failure_threshold = args[:failure_threshold] if args.key?(:failure_threshold)
          @grpc = args[:grpc] if args.key?(:grpc)
          @http_get = args[:http_get] if args.key?(:http_get)
          @initial_delay_seconds = args[:initial_delay_seconds] if args.key?(:initial_delay_seconds)
          @period_seconds = args[:period_seconds] if args.key?(:period_seconds)
          @success_threshold = args[:success_threshold] if args.key?(:success_threshold)
          @tcp_socket = args[:tcp_socket] if args.key?(:tcp_socket)
          @timeout_seconds = args[:timeout_seconds] if args.key?(:timeout_seconds)
        end
      end
      
      # ExecAction specifies a command to execute.
      class GoogleCloudAiplatformV1ProbeExecAction
        include Google::Apis::Core::Hashable
      
        # Command is the command line to execute inside the container, the working
        # directory for the command is root ('/') in the container's filesystem. The
        # command is simply exec'd, it is not run inside a shell, so traditional shell
        # instructions ('|', etc) won't work. To use a shell, you need to explicitly
        # call out to that shell. Exit status of 0 is treated as live/healthy and non-
        # zero is unhealthy.
        # Corresponds to the JSON property `command`
        # @return [Array<String>]
        attr_accessor :command
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @command = args[:command] if args.key?(:command)
        end
      end
      
      # GrpcAction checks the health of a container using a gRPC service.
      class GoogleCloudAiplatformV1ProbeGrpcAction
        include Google::Apis::Core::Hashable
      
        # Port number of the gRPC service. Number must be in the range 1 to 65535.
        # Corresponds to the JSON property `port`
        # @return [Fixnum]
        attr_accessor :port
      
        # Service is the name of the service to place in the gRPC HealthCheckRequest.
        # See https://github.com/grpc/grpc/blob/master/doc/health-checking.md. If this
        # is not specified, the default behavior is defined by gRPC.
        # Corresponds to the JSON property `service`
        # @return [String]
        attr_accessor :service
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @port = args[:port] if args.key?(:port)
          @service = args[:service] if args.key?(:service)
        end
      end
      
      # HttpGetAction describes an action based on HTTP Get requests.
      class GoogleCloudAiplatformV1ProbeHttpGetAction
        include Google::Apis::Core::Hashable
      
        # Host name to connect to, defaults to the model serving container's IP. You
        # probably want to set "Host" in httpHeaders instead.
        # Corresponds to the JSON property `host`
        # @return [String]
        attr_accessor :host
      
        # Custom headers to set in the request. HTTP allows repeated headers.
        # Corresponds to the JSON property `httpHeaders`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ProbeHttpHeader>]
        attr_accessor :http_headers
      
        # Path to access on the HTTP server.
        # Corresponds to the JSON property `path`
        # @return [String]
        attr_accessor :path
      
        # Number of the port to access on the container. Number must be in the range 1
        # to 65535.
        # Corresponds to the JSON property `port`
        # @return [Fixnum]
        attr_accessor :port
      
        # Scheme to use for connecting to the host. Defaults to HTTP. Acceptable values
        # are "HTTP" or "HTTPS".
        # Corresponds to the JSON property `scheme`
        # @return [String]
        attr_accessor :scheme
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @host = args[:host] if args.key?(:host)
          @http_headers = args[:http_headers] if args.key?(:http_headers)
          @path = args[:path] if args.key?(:path)
          @port = args[:port] if args.key?(:port)
          @scheme = args[:scheme] if args.key?(:scheme)
        end
      end
      
      # HttpHeader describes a custom header to be used in HTTP probes
      class GoogleCloudAiplatformV1ProbeHttpHeader
        include Google::Apis::Core::Hashable
      
        # The header field name. This will be canonicalized upon output, so case-variant
        # names will be understood as the same header.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # The header field value
        # Corresponds to the JSON property `value`
        # @return [String]
        attr_accessor :value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @name = args[:name] if args.key?(:name)
          @value = args[:value] if args.key?(:value)
        end
      end
      
      # TcpSocketAction probes the health of a container by opening a TCP socket
      # connection.
      class GoogleCloudAiplatformV1ProbeTcpSocketAction
        include Google::Apis::Core::Hashable
      
        # Optional: Host name to connect to, defaults to the model serving container's
        # IP.
        # Corresponds to the JSON property `host`
        # @return [String]
        attr_accessor :host
      
        # Number of the port to access on the container. Number must be in the range 1
        # to 65535.
        # Corresponds to the JSON property `port`
        # @return [Fixnum]
        attr_accessor :port
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @host = args[:host] if args.key?(:host)
          @port = args[:port] if args.key?(:port)
        end
      end
      
      # PscAutomatedEndpoints defines the output of the forwarding rule automatically
      # created by each PscAutomationConfig.
      class GoogleCloudAiplatformV1PscAutomatedEndpoints
        include Google::Apis::Core::Hashable
      
        # Ip Address created by the automated forwarding rule.
        # Corresponds to the JSON property `matchAddress`
        # @return [String]
        attr_accessor :match_address
      
        # Corresponding network in pscAutomationConfigs.
        # Corresponds to the JSON property `network`
        # @return [String]
        attr_accessor :network
      
        # Corresponding project_id in pscAutomationConfigs
        # Corresponds to the JSON property `projectId`
        # @return [String]
        attr_accessor :project_id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @match_address = args[:match_address] if args.key?(:match_address)
          @network = args[:network] if args.key?(:network)
          @project_id = args[:project_id] if args.key?(:project_id)
        end
      end
      
      # Configuration for PSC-I.
      class GoogleCloudAiplatformV1PscInterfaceConfig
        include Google::Apis::Core::Hashable
      
        # Optional. DNS peering configurations. When specified, Vertex AI will attempt
        # to configure DNS peering zones in the tenant project VPC to resolve the
        # specified domains using the target network's Cloud DNS. The user must grant
        # the dns.peer role to the Vertex AI Service Agent on the target project.
        # Corresponds to the JSON property `dnsPeeringConfigs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DnsPeeringConfig>]
        attr_accessor :dns_peering_configs
      
        # Optional. The name of the Compute Engine [network attachment](https://cloud.
        # google.com/vpc/docs/about-network-attachments) to attach to the resource
        # within the region and user project. To specify this field, you must have
        # already [created a network attachment] (https://cloud.google.com/vpc/docs/
        # create-manage-network-attachments#create-network-attachments). This field is
        # only used for resources using PSC-I.
        # Corresponds to the JSON property `networkAttachment`
        # @return [String]
        attr_accessor :network_attachment
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @dns_peering_configs = args[:dns_peering_configs] if args.key?(:dns_peering_configs)
          @network_attachment = args[:network_attachment] if args.key?(:network_attachment)
        end
      end
      
      # A Model Garden Publisher Model.
      class GoogleCloudAiplatformV1PublisherModel
        include Google::Apis::Core::Hashable
      
        # Optional. Additional information about the model's Frameworks.
        # Corresponds to the JSON property `frameworks`
        # @return [Array<String>]
        attr_accessor :frameworks
      
        # Optional. Indicates the launch stage of the model.
        # Corresponds to the JSON property `launchStage`
        # @return [String]
        attr_accessor :launch_stage
      
        # Output only. The resource name of the PublisherModel.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Required. Indicates the open source category of the publisher model.
        # Corresponds to the JSON property `openSourceCategory`
        # @return [String]
        attr_accessor :open_source_category
      
        # Contains the schemata used in Model's predictions and explanations via
        # PredictionService.Predict, PredictionService.Explain and BatchPredictionJob.
        # Corresponds to the JSON property `predictSchemata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PredictSchemata]
        attr_accessor :predict_schemata
      
        # Optional. Output only. Immutable. Used to indicate this model has a publisher
        # model and provide the template of the publisher model resource name.
        # Corresponds to the JSON property `publisherModelTemplate`
        # @return [String]
        attr_accessor :publisher_model_template
      
        # Actions could take on this Publisher Model.
        # Corresponds to the JSON property `supportedActions`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PublisherModelCallToAction]
        attr_accessor :supported_actions
      
        # Output only. Immutable. The version ID of the PublisherModel. A new version is
        # committed when a new model version is uploaded under an existing model id. It
        # is an auto-incrementing decimal number in string representation.
        # Corresponds to the JSON property `versionId`
        # @return [String]
        attr_accessor :version_id
      
        # Optional. Indicates the state of the model version.
        # Corresponds to the JSON property `versionState`
        # @return [String]
        attr_accessor :version_state
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @frameworks = args[:frameworks] if args.key?(:frameworks)
          @launch_stage = args[:launch_stage] if args.key?(:launch_stage)
          @name = args[:name] if args.key?(:name)
          @open_source_category = args[:open_source_category] if args.key?(:open_source_category)
          @predict_schemata = args[:predict_schemata] if args.key?(:predict_schemata)
          @publisher_model_template = args[:publisher_model_template] if args.key?(:publisher_model_template)
          @supported_actions = args[:supported_actions] if args.key?(:supported_actions)
          @version_id = args[:version_id] if args.key?(:version_id)
          @version_state = args[:version_state] if args.key?(:version_state)
        end
      end
      
      # Actions could take on this Publisher Model.
      class GoogleCloudAiplatformV1PublisherModelCallToAction
        include Google::Apis::Core::Hashable
      
        # The regional resource name or the URI. Key is region, e.g., us-central1,
        # europe-west2, global, etc..
        # Corresponds to the JSON property `createApplication`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PublisherModelCallToActionRegionalResourceReferences]
        attr_accessor :create_application
      
        # Model metadata that is needed for UploadModel or DeployModel/CreateEndpoint
        # requests.
        # Corresponds to the JSON property `deploy`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PublisherModelCallToActionDeploy]
        attr_accessor :deploy
      
        # Configurations for PublisherModel GKE deployment
        # Corresponds to the JSON property `deployGke`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PublisherModelCallToActionDeployGke]
        attr_accessor :deploy_gke
      
        # Multiple setups to deploy the PublisherModel.
        # Corresponds to the JSON property `multiDeployVertex`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PublisherModelCallToActionDeployVertex]
        attr_accessor :multi_deploy_vertex
      
        # The regional resource name or the URI. Key is region, e.g., us-central1,
        # europe-west2, global, etc..
        # Corresponds to the JSON property `openEvaluationPipeline`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PublisherModelCallToActionRegionalResourceReferences]
        attr_accessor :open_evaluation_pipeline
      
        # The regional resource name or the URI. Key is region, e.g., us-central1,
        # europe-west2, global, etc..
        # Corresponds to the JSON property `openFineTuningPipeline`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PublisherModelCallToActionRegionalResourceReferences]
        attr_accessor :open_fine_tuning_pipeline
      
        # Open fine tuning pipelines.
        # Corresponds to the JSON property `openFineTuningPipelines`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PublisherModelCallToActionOpenFineTuningPipelines]
        attr_accessor :open_fine_tuning_pipelines
      
        # The regional resource name or the URI. Key is region, e.g., us-central1,
        # europe-west2, global, etc..
        # Corresponds to the JSON property `openGenerationAiStudio`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PublisherModelCallToActionRegionalResourceReferences]
        attr_accessor :open_generation_ai_studio
      
        # The regional resource name or the URI. Key is region, e.g., us-central1,
        # europe-west2, global, etc..
        # Corresponds to the JSON property `openGenie`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PublisherModelCallToActionRegionalResourceReferences]
        attr_accessor :open_genie
      
        # The regional resource name or the URI. Key is region, e.g., us-central1,
        # europe-west2, global, etc..
        # Corresponds to the JSON property `openNotebook`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PublisherModelCallToActionRegionalResourceReferences]
        attr_accessor :open_notebook
      
        # Open notebooks.
        # Corresponds to the JSON property `openNotebooks`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PublisherModelCallToActionOpenNotebooks]
        attr_accessor :open_notebooks
      
        # The regional resource name or the URI. Key is region, e.g., us-central1,
        # europe-west2, global, etc..
        # Corresponds to the JSON property `openPromptTuningPipeline`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PublisherModelCallToActionRegionalResourceReferences]
        attr_accessor :open_prompt_tuning_pipeline
      
        # The regional resource name or the URI. Key is region, e.g., us-central1,
        # europe-west2, global, etc..
        # Corresponds to the JSON property `requestAccess`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PublisherModelCallToActionRegionalResourceReferences]
        attr_accessor :request_access
      
        # Rest API docs.
        # Corresponds to the JSON property `viewRestApi`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PublisherModelCallToActionViewRestApi]
        attr_accessor :view_rest_api
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_application = args[:create_application] if args.key?(:create_application)
          @deploy = args[:deploy] if args.key?(:deploy)
          @deploy_gke = args[:deploy_gke] if args.key?(:deploy_gke)
          @multi_deploy_vertex = args[:multi_deploy_vertex] if args.key?(:multi_deploy_vertex)
          @open_evaluation_pipeline = args[:open_evaluation_pipeline] if args.key?(:open_evaluation_pipeline)
          @open_fine_tuning_pipeline = args[:open_fine_tuning_pipeline] if args.key?(:open_fine_tuning_pipeline)
          @open_fine_tuning_pipelines = args[:open_fine_tuning_pipelines] if args.key?(:open_fine_tuning_pipelines)
          @open_generation_ai_studio = args[:open_generation_ai_studio] if args.key?(:open_generation_ai_studio)
          @open_genie = args[:open_genie] if args.key?(:open_genie)
          @open_notebook = args[:open_notebook] if args.key?(:open_notebook)
          @open_notebooks = args[:open_notebooks] if args.key?(:open_notebooks)
          @open_prompt_tuning_pipeline = args[:open_prompt_tuning_pipeline] if args.key?(:open_prompt_tuning_pipeline)
          @request_access = args[:request_access] if args.key?(:request_access)
          @view_rest_api = args[:view_rest_api] if args.key?(:view_rest_api)
        end
      end
      
      # Model metadata that is needed for UploadModel or DeployModel/CreateEndpoint
      # requests.
      class GoogleCloudAiplatformV1PublisherModelCallToActionDeploy
        include Google::Apis::Core::Hashable
      
        # Optional. The path to the directory containing the Model artifact and any of
        # its supporting files.
        # Corresponds to the JSON property `artifactUri`
        # @return [String]
        attr_accessor :artifact_uri
      
        # A description of resources that to large degree are decided by Vertex AI, and
        # require only a modest additional configuration. Each Model supporting these
        # resources documents its specific guidelines.
        # Corresponds to the JSON property `automaticResources`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1AutomaticResources]
        attr_accessor :automatic_resources
      
        # Specification of a container for serving predictions. Some fields in this
        # message correspond to fields in the [Kubernetes Container v1 core
        # specification](https://kubernetes.io/docs/reference/generated/kubernetes-api/
        # v1.23/#container-v1-core).
        # Corresponds to the JSON property `containerSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelContainerSpec]
        attr_accessor :container_spec
      
        # A description of resources that are dedicated to a DeployedModel or
        # DeployedIndex, and that need a higher degree of manual configuration.
        # Corresponds to the JSON property `dedicatedResources`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DedicatedResources]
        attr_accessor :dedicated_resources
      
        # Metadata information about the deployment for managing deployment config.
        # Corresponds to the JSON property `deployMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PublisherModelCallToActionDeployDeployMetadata]
        attr_accessor :deploy_metadata
      
        # Optional. The name of the deploy task (e.g., "text to image generation").
        # Corresponds to the JSON property `deployTaskName`
        # @return [String]
        attr_accessor :deploy_task_name
      
        # Contains information about the Large Model.
        # Corresponds to the JSON property `largeModelReference`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1LargeModelReference]
        attr_accessor :large_model_reference
      
        # Optional. Default model display name.
        # Corresponds to the JSON property `modelDisplayName`
        # @return [String]
        attr_accessor :model_display_name
      
        # Optional. The signed URI for ephemeral Cloud Storage access to model artifact.
        # Corresponds to the JSON property `publicArtifactUri`
        # @return [String]
        attr_accessor :public_artifact_uri
      
        # The resource name of the shared DeploymentResourcePool to deploy on. Format: `
        # projects/`project`/locations/`location`/deploymentResourcePools/`
        # deployment_resource_pool``
        # Corresponds to the JSON property `sharedResources`
        # @return [String]
        attr_accessor :shared_resources
      
        # Required. The title of the regional resource reference.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @artifact_uri = args[:artifact_uri] if args.key?(:artifact_uri)
          @automatic_resources = args[:automatic_resources] if args.key?(:automatic_resources)
          @container_spec = args[:container_spec] if args.key?(:container_spec)
          @dedicated_resources = args[:dedicated_resources] if args.key?(:dedicated_resources)
          @deploy_metadata = args[:deploy_metadata] if args.key?(:deploy_metadata)
          @deploy_task_name = args[:deploy_task_name] if args.key?(:deploy_task_name)
          @large_model_reference = args[:large_model_reference] if args.key?(:large_model_reference)
          @model_display_name = args[:model_display_name] if args.key?(:model_display_name)
          @public_artifact_uri = args[:public_artifact_uri] if args.key?(:public_artifact_uri)
          @shared_resources = args[:shared_resources] if args.key?(:shared_resources)
          @title = args[:title] if args.key?(:title)
        end
      end
      
      # Metadata information about the deployment for managing deployment config.
      class GoogleCloudAiplatformV1PublisherModelCallToActionDeployDeployMetadata
        include Google::Apis::Core::Hashable
      
        # Optional. Labels for the deployment config. For managing deployment config
        # like verifying, source of deployment config, etc.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Optional. Sample request for deployed endpoint.
        # Corresponds to the JSON property `sampleRequest`
        # @return [String]
        attr_accessor :sample_request
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @labels = args[:labels] if args.key?(:labels)
          @sample_request = args[:sample_request] if args.key?(:sample_request)
        end
      end
      
      # Configurations for PublisherModel GKE deployment
      class GoogleCloudAiplatformV1PublisherModelCallToActionDeployGke
        include Google::Apis::Core::Hashable
      
        # Optional. GKE deployment configuration in yaml format.
        # Corresponds to the JSON property `gkeYamlConfigs`
        # @return [Array<String>]
        attr_accessor :gke_yaml_configs
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @gke_yaml_configs = args[:gke_yaml_configs] if args.key?(:gke_yaml_configs)
        end
      end
      
      # Multiple setups to deploy the PublisherModel.
      class GoogleCloudAiplatformV1PublisherModelCallToActionDeployVertex
        include Google::Apis::Core::Hashable
      
        # Optional. One click deployment configurations.
        # Corresponds to the JSON property `multiDeployVertex`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PublisherModelCallToActionDeploy>]
        attr_accessor :multi_deploy_vertex
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @multi_deploy_vertex = args[:multi_deploy_vertex] if args.key?(:multi_deploy_vertex)
        end
      end
      
      # Open fine tuning pipelines.
      class GoogleCloudAiplatformV1PublisherModelCallToActionOpenFineTuningPipelines
        include Google::Apis::Core::Hashable
      
        # Required. Regional resource references to fine tuning pipelines.
        # Corresponds to the JSON property `fineTuningPipelines`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PublisherModelCallToActionRegionalResourceReferences>]
        attr_accessor :fine_tuning_pipelines
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @fine_tuning_pipelines = args[:fine_tuning_pipelines] if args.key?(:fine_tuning_pipelines)
        end
      end
      
      # Open notebooks.
      class GoogleCloudAiplatformV1PublisherModelCallToActionOpenNotebooks
        include Google::Apis::Core::Hashable
      
        # Required. Regional resource references to notebooks.
        # Corresponds to the JSON property `notebooks`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PublisherModelCallToActionRegionalResourceReferences>]
        attr_accessor :notebooks
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @notebooks = args[:notebooks] if args.key?(:notebooks)
        end
      end
      
      # The regional resource name or the URI. Key is region, e.g., us-central1,
      # europe-west2, global, etc..
      class GoogleCloudAiplatformV1PublisherModelCallToActionRegionalResourceReferences
        include Google::Apis::Core::Hashable
      
        # Optional. For notebook resource. When set to true, the Colab Enterprise link
        # will be disabled in the "open notebook" dialog in UI.
        # Corresponds to the JSON property `colabNotebookDisabled`
        # @return [Boolean]
        attr_accessor :colab_notebook_disabled
        alias_method :colab_notebook_disabled?, :colab_notebook_disabled
      
        # Required.
        # Corresponds to the JSON property `references`
        # @return [Hash<String,Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PublisherModelResourceReference>]
        attr_accessor :references
      
        # Optional. Description of the resource.
        # Corresponds to the JSON property `resourceDescription`
        # @return [String]
        attr_accessor :resource_description
      
        # Optional. Title of the resource.
        # Corresponds to the JSON property `resourceTitle`
        # @return [String]
        attr_accessor :resource_title
      
        # Optional. Use case (CUJ) of the resource.
        # Corresponds to the JSON property `resourceUseCase`
        # @return [String]
        attr_accessor :resource_use_case
      
        # Optional. For notebook resource, whether the notebook supports Workbench.
        # Corresponds to the JSON property `supportsWorkbench`
        # @return [Boolean]
        attr_accessor :supports_workbench
        alias_method :supports_workbench?, :supports_workbench
      
        # Required.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @colab_notebook_disabled = args[:colab_notebook_disabled] if args.key?(:colab_notebook_disabled)
          @references = args[:references] if args.key?(:references)
          @resource_description = args[:resource_description] if args.key?(:resource_description)
          @resource_title = args[:resource_title] if args.key?(:resource_title)
          @resource_use_case = args[:resource_use_case] if args.key?(:resource_use_case)
          @supports_workbench = args[:supports_workbench] if args.key?(:supports_workbench)
          @title = args[:title] if args.key?(:title)
        end
      end
      
      # Rest API docs.
      class GoogleCloudAiplatformV1PublisherModelCallToActionViewRestApi
        include Google::Apis::Core::Hashable
      
        # Required.
        # Corresponds to the JSON property `documentations`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PublisherModelDocumentation>]
        attr_accessor :documentations
      
        # Required. The title of the view rest API.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @documentations = args[:documentations] if args.key?(:documentations)
          @title = args[:title] if args.key?(:title)
        end
      end
      
      # A named piece of documentation.
      class GoogleCloudAiplatformV1PublisherModelDocumentation
        include Google::Apis::Core::Hashable
      
        # Required. Content of this piece of document (in Markdown format).
        # Corresponds to the JSON property `content`
        # @return [String]
        attr_accessor :content
      
        # Required. E.g., OVERVIEW, USE CASES, DOCUMENTATION, SDK & SAMPLES, JAVA, NODE.
        # JS, etc..
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content = args[:content] if args.key?(:content)
          @title = args[:title] if args.key?(:title)
        end
      end
      
      # Reference to a resource.
      class GoogleCloudAiplatformV1PublisherModelResourceReference
        include Google::Apis::Core::Hashable
      
        # Description of the resource.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # The resource name of the Google Cloud resource.
        # Corresponds to the JSON property `resourceName`
        # @return [String]
        attr_accessor :resource_name
      
        # The URI of the resource.
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        # Use case (CUJ) of the resource.
        # Corresponds to the JSON property `useCase`
        # @return [String]
        attr_accessor :use_case
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @description = args[:description] if args.key?(:description)
          @resource_name = args[:resource_name] if args.key?(:resource_name)
          @uri = args[:uri] if args.key?(:uri)
          @use_case = args[:use_case] if args.key?(:use_case)
        end
      end
      
      # Details of operations that perform MetadataService.PurgeArtifacts.
      class GoogleCloudAiplatformV1PurgeArtifactsMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Request message for MetadataService.PurgeArtifacts.
      class GoogleCloudAiplatformV1PurgeArtifactsRequest
        include Google::Apis::Core::Hashable
      
        # Required. A required filter matching the Artifacts to be purged. E.g., `
        # update_time <= 2020-11-19T11:30:00-04:00`.
        # Corresponds to the JSON property `filter`
        # @return [String]
        attr_accessor :filter
      
        # Optional. Flag to indicate to actually perform the purge. If `force` is set to
        # false, the method will return a sample of Artifact names that would be deleted.
        # Corresponds to the JSON property `force`
        # @return [Boolean]
        attr_accessor :force
        alias_method :force?, :force
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @filter = args[:filter] if args.key?(:filter)
          @force = args[:force] if args.key?(:force)
        end
      end
      
      # Response message for MetadataService.PurgeArtifacts.
      class GoogleCloudAiplatformV1PurgeArtifactsResponse
        include Google::Apis::Core::Hashable
      
        # The number of Artifacts that this request deleted (or, if `force` is false,
        # the number of Artifacts that will be deleted). This can be an estimate.
        # Corresponds to the JSON property `purgeCount`
        # @return [Fixnum]
        attr_accessor :purge_count
      
        # A sample of the Artifact names that will be deleted. Only populated if `force`
        # is set to false. The maximum number of samples is 100 (it is possible to
        # return fewer).
        # Corresponds to the JSON property `purgeSample`
        # @return [Array<String>]
        attr_accessor :purge_sample
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @purge_count = args[:purge_count] if args.key?(:purge_count)
          @purge_sample = args[:purge_sample] if args.key?(:purge_sample)
        end
      end
      
      # Details of operations that perform MetadataService.PurgeContexts.
      class GoogleCloudAiplatformV1PurgeContextsMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Request message for MetadataService.PurgeContexts.
      class GoogleCloudAiplatformV1PurgeContextsRequest
        include Google::Apis::Core::Hashable
      
        # Required. A required filter matching the Contexts to be purged. E.g., `
        # update_time <= 2020-11-19T11:30:00-04:00`.
        # Corresponds to the JSON property `filter`
        # @return [String]
        attr_accessor :filter
      
        # Optional. Flag to indicate to actually perform the purge. If `force` is set to
        # false, the method will return a sample of Context names that would be deleted.
        # Corresponds to the JSON property `force`
        # @return [Boolean]
        attr_accessor :force
        alias_method :force?, :force
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @filter = args[:filter] if args.key?(:filter)
          @force = args[:force] if args.key?(:force)
        end
      end
      
      # Response message for MetadataService.PurgeContexts.
      class GoogleCloudAiplatformV1PurgeContextsResponse
        include Google::Apis::Core::Hashable
      
        # The number of Contexts that this request deleted (or, if `force` is false, the
        # number of Contexts that will be deleted). This can be an estimate.
        # Corresponds to the JSON property `purgeCount`
        # @return [Fixnum]
        attr_accessor :purge_count
      
        # A sample of the Context names that will be deleted. Only populated if `force`
        # is set to false. The maximum number of samples is 100 (it is possible to
        # return fewer).
        # Corresponds to the JSON property `purgeSample`
        # @return [Array<String>]
        attr_accessor :purge_sample
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @purge_count = args[:purge_count] if args.key?(:purge_count)
          @purge_sample = args[:purge_sample] if args.key?(:purge_sample)
        end
      end
      
      # Details of operations that perform MetadataService.PurgeExecutions.
      class GoogleCloudAiplatformV1PurgeExecutionsMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Request message for MetadataService.PurgeExecutions.
      class GoogleCloudAiplatformV1PurgeExecutionsRequest
        include Google::Apis::Core::Hashable
      
        # Required. A required filter matching the Executions to be purged. E.g., `
        # update_time <= 2020-11-19T11:30:00-04:00`.
        # Corresponds to the JSON property `filter`
        # @return [String]
        attr_accessor :filter
      
        # Optional. Flag to indicate to actually perform the purge. If `force` is set to
        # false, the method will return a sample of Execution names that would be
        # deleted.
        # Corresponds to the JSON property `force`
        # @return [Boolean]
        attr_accessor :force
        alias_method :force?, :force
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @filter = args[:filter] if args.key?(:filter)
          @force = args[:force] if args.key?(:force)
        end
      end
      
      # Response message for MetadataService.PurgeExecutions.
      class GoogleCloudAiplatformV1PurgeExecutionsResponse
        include Google::Apis::Core::Hashable
      
        # The number of Executions that this request deleted (or, if `force` is false,
        # the number of Executions that will be deleted). This can be an estimate.
        # Corresponds to the JSON property `purgeCount`
        # @return [Fixnum]
        attr_accessor :purge_count
      
        # A sample of the Execution names that will be deleted. Only populated if `force`
        # is set to false. The maximum number of samples is 100 (it is possible to
        # return fewer).
        # Corresponds to the JSON property `purgeSample`
        # @return [Array<String>]
        attr_accessor :purge_sample
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @purge_count = args[:purge_count] if args.key?(:purge_count)
          @purge_sample = args[:purge_sample] if args.key?(:purge_sample)
        end
      end
      
      # The spec of a Python packaged code.
      class GoogleCloudAiplatformV1PythonPackageSpec
        include Google::Apis::Core::Hashable
      
        # Command line arguments to be passed to the Python task.
        # Corresponds to the JSON property `args`
        # @return [Array<String>]
        attr_accessor :args
      
        # Environment variables to be passed to the python module. Maximum limit is 100.
        # Corresponds to the JSON property `env`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EnvVar>]
        attr_accessor :env
      
        # Required. The URI of a container image in Artifact Registry that will run the
        # provided Python package. Vertex AI provides a wide range of executor images
        # with pre-installed packages to meet users' various use cases. See the list of [
        # pre-built containers for training](https://cloud.google.com/vertex-ai/docs/
        # training/pre-built-containers). You must use an image from this list.
        # Corresponds to the JSON property `executorImageUri`
        # @return [String]
        attr_accessor :executor_image_uri
      
        # Required. The Google Cloud Storage location of the Python package files which
        # are the training program and its dependent packages. The maximum number of
        # package URIs is 100.
        # Corresponds to the JSON property `packageUris`
        # @return [Array<String>]
        attr_accessor :package_uris
      
        # Required. The Python module name to run after installing the packages.
        # Corresponds to the JSON property `pythonModule`
        # @return [String]
        attr_accessor :python_module
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @args = args[:args] if args.key?(:args)
          @env = args[:env] if args.key?(:env)
          @executor_image_uri = args[:executor_image_uri] if args.key?(:executor_image_uri)
          @package_uris = args[:package_uris] if args.key?(:package_uris)
          @python_module = args[:python_module] if args.key?(:python_module)
        end
      end
      
      # Response message for QueryDeployedModels method.
      class GoogleCloudAiplatformV1QueryDeployedModelsResponse
        include Google::Apis::Core::Hashable
      
        # References to the DeployedModels that share the specified
        # deploymentResourcePool.
        # Corresponds to the JSON property `deployedModelRefs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DeployedModelRef>]
        attr_accessor :deployed_model_refs
      
        # DEPRECATED Use deployed_model_refs instead.
        # Corresponds to the JSON property `deployedModels`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DeployedModel>]
        attr_accessor :deployed_models
      
        # A token, which can be sent as `page_token` to retrieve the next page. If this
        # field is omitted, there are no subsequent pages.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # The total number of DeployedModels on this DeploymentResourcePool.
        # Corresponds to the JSON property `totalDeployedModelCount`
        # @return [Fixnum]
        attr_accessor :total_deployed_model_count
      
        # The total number of Endpoints that have DeployedModels on this
        # DeploymentResourcePool.
        # Corresponds to the JSON property `totalEndpointCount`
        # @return [Fixnum]
        attr_accessor :total_endpoint_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @deployed_model_refs = args[:deployed_model_refs] if args.key?(:deployed_model_refs)
          @deployed_models = args[:deployed_models] if args.key?(:deployed_models)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @total_deployed_model_count = args[:total_deployed_model_count] if args.key?(:total_deployed_model_count)
          @total_endpoint_count = args[:total_endpoint_count] if args.key?(:total_endpoint_count)
        end
      end
      
      # Request message for ReasoningEngineExecutionService.Query.
      class GoogleCloudAiplatformV1QueryReasoningEngineRequest
        include Google::Apis::Core::Hashable
      
        # Optional. Class method to be used for the query. It is optional and defaults
        # to "query" if unspecified.
        # Corresponds to the JSON property `classMethod`
        # @return [String]
        attr_accessor :class_method
      
        # Optional. Input content provided by users in JSON object format. Examples
        # include text query, function calling parameters, media bytes, etc.
        # Corresponds to the JSON property `input`
        # @return [Hash<String,Object>]
        attr_accessor :input
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @class_method = args[:class_method] if args.key?(:class_method)
          @input = args[:input] if args.key?(:input)
        end
      end
      
      # Response message for ReasoningEngineExecutionService.Query
      class GoogleCloudAiplatformV1QueryReasoningEngineResponse
        include Google::Apis::Core::Hashable
      
        # Response provided by users in JSON object format.
        # Corresponds to the JSON property `output`
        # @return [Object]
        attr_accessor :output
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @output = args[:output] if args.key?(:output)
        end
      end
      
      # Input for question answering correctness metric.
      class GoogleCloudAiplatformV1QuestionAnsweringCorrectnessInput
        include Google::Apis::Core::Hashable
      
        # Spec for question answering correctness instance.
        # Corresponds to the JSON property `instance`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1QuestionAnsweringCorrectnessInstance]
        attr_accessor :instance
      
        # Spec for question answering correctness metric.
        # Corresponds to the JSON property `metricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1QuestionAnsweringCorrectnessSpec]
        attr_accessor :metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instance = args[:instance] if args.key?(:instance)
          @metric_spec = args[:metric_spec] if args.key?(:metric_spec)
        end
      end
      
      # Spec for question answering correctness instance.
      class GoogleCloudAiplatformV1QuestionAnsweringCorrectnessInstance
        include Google::Apis::Core::Hashable
      
        # Optional. Text provided as context to answer the question.
        # Corresponds to the JSON property `context`
        # @return [String]
        attr_accessor :context
      
        # Required. The question asked and other instruction in the inference prompt.
        # Corresponds to the JSON property `instruction`
        # @return [String]
        attr_accessor :instruction
      
        # Required. Output of the evaluated model.
        # Corresponds to the JSON property `prediction`
        # @return [String]
        attr_accessor :prediction
      
        # Optional. Ground truth used to compare against the prediction.
        # Corresponds to the JSON property `reference`
        # @return [String]
        attr_accessor :reference
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @context = args[:context] if args.key?(:context)
          @instruction = args[:instruction] if args.key?(:instruction)
          @prediction = args[:prediction] if args.key?(:prediction)
          @reference = args[:reference] if args.key?(:reference)
        end
      end
      
      # Spec for question answering correctness result.
      class GoogleCloudAiplatformV1QuestionAnsweringCorrectnessResult
        include Google::Apis::Core::Hashable
      
        # Output only. Confidence for question answering correctness score.
        # Corresponds to the JSON property `confidence`
        # @return [Float]
        attr_accessor :confidence
      
        # Output only. Explanation for question answering correctness score.
        # Corresponds to the JSON property `explanation`
        # @return [String]
        attr_accessor :explanation
      
        # Output only. Question Answering Correctness score.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence = args[:confidence] if args.key?(:confidence)
          @explanation = args[:explanation] if args.key?(:explanation)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # Spec for question answering correctness metric.
      class GoogleCloudAiplatformV1QuestionAnsweringCorrectnessSpec
        include Google::Apis::Core::Hashable
      
        # Optional. Whether to use instance.reference to compute question answering
        # correctness.
        # Corresponds to the JSON property `useReference`
        # @return [Boolean]
        attr_accessor :use_reference
        alias_method :use_reference?, :use_reference
      
        # Optional. Which version to use for evaluation.
        # Corresponds to the JSON property `version`
        # @return [Fixnum]
        attr_accessor :version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @use_reference = args[:use_reference] if args.key?(:use_reference)
          @version = args[:version] if args.key?(:version)
        end
      end
      
      # Input for question answering helpfulness metric.
      class GoogleCloudAiplatformV1QuestionAnsweringHelpfulnessInput
        include Google::Apis::Core::Hashable
      
        # Spec for question answering helpfulness instance.
        # Corresponds to the JSON property `instance`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1QuestionAnsweringHelpfulnessInstance]
        attr_accessor :instance
      
        # Spec for question answering helpfulness metric.
        # Corresponds to the JSON property `metricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1QuestionAnsweringHelpfulnessSpec]
        attr_accessor :metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instance = args[:instance] if args.key?(:instance)
          @metric_spec = args[:metric_spec] if args.key?(:metric_spec)
        end
      end
      
      # Spec for question answering helpfulness instance.
      class GoogleCloudAiplatformV1QuestionAnsweringHelpfulnessInstance
        include Google::Apis::Core::Hashable
      
        # Optional. Text provided as context to answer the question.
        # Corresponds to the JSON property `context`
        # @return [String]
        attr_accessor :context
      
        # Required. The question asked and other instruction in the inference prompt.
        # Corresponds to the JSON property `instruction`
        # @return [String]
        attr_accessor :instruction
      
        # Required. Output of the evaluated model.
        # Corresponds to the JSON property `prediction`
        # @return [String]
        attr_accessor :prediction
      
        # Optional. Ground truth used to compare against the prediction.
        # Corresponds to the JSON property `reference`
        # @return [String]
        attr_accessor :reference
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @context = args[:context] if args.key?(:context)
          @instruction = args[:instruction] if args.key?(:instruction)
          @prediction = args[:prediction] if args.key?(:prediction)
          @reference = args[:reference] if args.key?(:reference)
        end
      end
      
      # Spec for question answering helpfulness result.
      class GoogleCloudAiplatformV1QuestionAnsweringHelpfulnessResult
        include Google::Apis::Core::Hashable
      
        # Output only. Confidence for question answering helpfulness score.
        # Corresponds to the JSON property `confidence`
        # @return [Float]
        attr_accessor :confidence
      
        # Output only. Explanation for question answering helpfulness score.
        # Corresponds to the JSON property `explanation`
        # @return [String]
        attr_accessor :explanation
      
        # Output only. Question Answering Helpfulness score.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence = args[:confidence] if args.key?(:confidence)
          @explanation = args[:explanation] if args.key?(:explanation)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # Spec for question answering helpfulness metric.
      class GoogleCloudAiplatformV1QuestionAnsweringHelpfulnessSpec
        include Google::Apis::Core::Hashable
      
        # Optional. Whether to use instance.reference to compute question answering
        # helpfulness.
        # Corresponds to the JSON property `useReference`
        # @return [Boolean]
        attr_accessor :use_reference
        alias_method :use_reference?, :use_reference
      
        # Optional. Which version to use for evaluation.
        # Corresponds to the JSON property `version`
        # @return [Fixnum]
        attr_accessor :version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @use_reference = args[:use_reference] if args.key?(:use_reference)
          @version = args[:version] if args.key?(:version)
        end
      end
      
      # Input for question answering quality metric.
      class GoogleCloudAiplatformV1QuestionAnsweringQualityInput
        include Google::Apis::Core::Hashable
      
        # Spec for question answering quality instance.
        # Corresponds to the JSON property `instance`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1QuestionAnsweringQualityInstance]
        attr_accessor :instance
      
        # Spec for question answering quality score metric.
        # Corresponds to the JSON property `metricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1QuestionAnsweringQualitySpec]
        attr_accessor :metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instance = args[:instance] if args.key?(:instance)
          @metric_spec = args[:metric_spec] if args.key?(:metric_spec)
        end
      end
      
      # Spec for question answering quality instance.
      class GoogleCloudAiplatformV1QuestionAnsweringQualityInstance
        include Google::Apis::Core::Hashable
      
        # Required. Text to answer the question.
        # Corresponds to the JSON property `context`
        # @return [String]
        attr_accessor :context
      
        # Required. Question Answering prompt for LLM.
        # Corresponds to the JSON property `instruction`
        # @return [String]
        attr_accessor :instruction
      
        # Required. Output of the evaluated model.
        # Corresponds to the JSON property `prediction`
        # @return [String]
        attr_accessor :prediction
      
        # Optional. Ground truth used to compare against the prediction.
        # Corresponds to the JSON property `reference`
        # @return [String]
        attr_accessor :reference
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @context = args[:context] if args.key?(:context)
          @instruction = args[:instruction] if args.key?(:instruction)
          @prediction = args[:prediction] if args.key?(:prediction)
          @reference = args[:reference] if args.key?(:reference)
        end
      end
      
      # Spec for question answering quality result.
      class GoogleCloudAiplatformV1QuestionAnsweringQualityResult
        include Google::Apis::Core::Hashable
      
        # Output only. Confidence for question answering quality score.
        # Corresponds to the JSON property `confidence`
        # @return [Float]
        attr_accessor :confidence
      
        # Output only. Explanation for question answering quality score.
        # Corresponds to the JSON property `explanation`
        # @return [String]
        attr_accessor :explanation
      
        # Output only. Question Answering Quality score.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence = args[:confidence] if args.key?(:confidence)
          @explanation = args[:explanation] if args.key?(:explanation)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # Spec for question answering quality score metric.
      class GoogleCloudAiplatformV1QuestionAnsweringQualitySpec
        include Google::Apis::Core::Hashable
      
        # Optional. Whether to use instance.reference to compute question answering
        # quality.
        # Corresponds to the JSON property `useReference`
        # @return [Boolean]
        attr_accessor :use_reference
        alias_method :use_reference?, :use_reference
      
        # Optional. Which version to use for evaluation.
        # Corresponds to the JSON property `version`
        # @return [Fixnum]
        attr_accessor :version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @use_reference = args[:use_reference] if args.key?(:use_reference)
          @version = args[:version] if args.key?(:version)
        end
      end
      
      # Input for question answering relevance metric.
      class GoogleCloudAiplatformV1QuestionAnsweringRelevanceInput
        include Google::Apis::Core::Hashable
      
        # Spec for question answering relevance instance.
        # Corresponds to the JSON property `instance`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1QuestionAnsweringRelevanceInstance]
        attr_accessor :instance
      
        # Spec for question answering relevance metric.
        # Corresponds to the JSON property `metricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1QuestionAnsweringRelevanceSpec]
        attr_accessor :metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instance = args[:instance] if args.key?(:instance)
          @metric_spec = args[:metric_spec] if args.key?(:metric_spec)
        end
      end
      
      # Spec for question answering relevance instance.
      class GoogleCloudAiplatformV1QuestionAnsweringRelevanceInstance
        include Google::Apis::Core::Hashable
      
        # Optional. Text provided as context to answer the question.
        # Corresponds to the JSON property `context`
        # @return [String]
        attr_accessor :context
      
        # Required. The question asked and other instruction in the inference prompt.
        # Corresponds to the JSON property `instruction`
        # @return [String]
        attr_accessor :instruction
      
        # Required. Output of the evaluated model.
        # Corresponds to the JSON property `prediction`
        # @return [String]
        attr_accessor :prediction
      
        # Optional. Ground truth used to compare against the prediction.
        # Corresponds to the JSON property `reference`
        # @return [String]
        attr_accessor :reference
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @context = args[:context] if args.key?(:context)
          @instruction = args[:instruction] if args.key?(:instruction)
          @prediction = args[:prediction] if args.key?(:prediction)
          @reference = args[:reference] if args.key?(:reference)
        end
      end
      
      # Spec for question answering relevance result.
      class GoogleCloudAiplatformV1QuestionAnsweringRelevanceResult
        include Google::Apis::Core::Hashable
      
        # Output only. Confidence for question answering relevance score.
        # Corresponds to the JSON property `confidence`
        # @return [Float]
        attr_accessor :confidence
      
        # Output only. Explanation for question answering relevance score.
        # Corresponds to the JSON property `explanation`
        # @return [String]
        attr_accessor :explanation
      
        # Output only. Question Answering Relevance score.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence = args[:confidence] if args.key?(:confidence)
          @explanation = args[:explanation] if args.key?(:explanation)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # Spec for question answering relevance metric.
      class GoogleCloudAiplatformV1QuestionAnsweringRelevanceSpec
        include Google::Apis::Core::Hashable
      
        # Optional. Whether to use instance.reference to compute question answering
        # relevance.
        # Corresponds to the JSON property `useReference`
        # @return [Boolean]
        attr_accessor :use_reference
        alias_method :use_reference?, :use_reference
      
        # Optional. Which version to use for evaluation.
        # Corresponds to the JSON property `version`
        # @return [Fixnum]
        attr_accessor :version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @use_reference = args[:use_reference] if args.key?(:use_reference)
          @version = args[:version] if args.key?(:version)
        end
      end
      
      # A RagChunk includes the content of a chunk of a RagFile, and associated
      # metadata.
      class GoogleCloudAiplatformV1RagChunk
        include Google::Apis::Core::Hashable
      
        # Represents where the chunk starts and ends in the document.
        # Corresponds to the JSON property `pageSpan`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagChunkPageSpan]
        attr_accessor :page_span
      
        # The content of the chunk.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @page_span = args[:page_span] if args.key?(:page_span)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # Represents where the chunk starts and ends in the document.
      class GoogleCloudAiplatformV1RagChunkPageSpan
        include Google::Apis::Core::Hashable
      
        # Page where chunk starts in the document. Inclusive. 1-indexed.
        # Corresponds to the JSON property `firstPage`
        # @return [Fixnum]
        attr_accessor :first_page
      
        # Page where chunk ends in the document. Inclusive. 1-indexed.
        # Corresponds to the JSON property `lastPage`
        # @return [Fixnum]
        attr_accessor :last_page
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @first_page = args[:first_page] if args.key?(:first_page)
          @last_page = args[:last_page] if args.key?(:last_page)
        end
      end
      
      # Relevant contexts for one query.
      class GoogleCloudAiplatformV1RagContexts
        include Google::Apis::Core::Hashable
      
        # All its contexts.
        # Corresponds to the JSON property `contexts`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagContextsContext>]
        attr_accessor :contexts
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @contexts = args[:contexts] if args.key?(:contexts)
        end
      end
      
      # A context of the query.
      class GoogleCloudAiplatformV1RagContextsContext
        include Google::Apis::Core::Hashable
      
        # A RagChunk includes the content of a chunk of a RagFile, and associated
        # metadata.
        # Corresponds to the JSON property `chunk`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagChunk]
        attr_accessor :chunk
      
        # According to the underlying Vector DB and the selected metric type, the score
        # can be either the distance or the similarity between the query and the context
        # and its range depends on the metric type. For example, if the metric type is
        # COSINE_DISTANCE, it represents the distance between the query and the context.
        # The larger the distance, the less relevant the context is to the query. The
        # range is [0, 2], while 0 means the most relevant and 2 means the least
        # relevant.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        # The file display name.
        # Corresponds to the JSON property `sourceDisplayName`
        # @return [String]
        attr_accessor :source_display_name
      
        # If the file is imported from Cloud Storage or Google Drive, source_uri will be
        # original file URI in Cloud Storage or Google Drive; if file is uploaded,
        # source_uri will be file display name.
        # Corresponds to the JSON property `sourceUri`
        # @return [String]
        attr_accessor :source_uri
      
        # The text chunk.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @chunk = args[:chunk] if args.key?(:chunk)
          @score = args[:score] if args.key?(:score)
          @source_display_name = args[:source_display_name] if args.key?(:source_display_name)
          @source_uri = args[:source_uri] if args.key?(:source_uri)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # A RagCorpus is a RagFile container and a project can have multiple RagCorpora.
      class GoogleCloudAiplatformV1RagCorpus
        include Google::Apis::Core::Hashable
      
        # RagCorpus status.
        # Corresponds to the JSON property `corpusStatus`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CorpusStatus]
        attr_accessor :corpus_status
      
        # Output only. Timestamp when this RagCorpus was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Optional. The description of the RagCorpus.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Required. The display name of the RagCorpus. The name can be up to 128
        # characters long and can consist of any UTF-8 characters.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Represents a customer-managed encryption key spec that can be applied to a top-
        # level resource.
        # Corresponds to the JSON property `encryptionSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EncryptionSpec]
        attr_accessor :encryption_spec
      
        # Output only. The resource name of the RagCorpus.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Output only. Timestamp when this RagCorpus was last updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        # Config for the Vector DB to use for RAG.
        # Corresponds to the JSON property `vectorDbConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagVectorDbConfig]
        attr_accessor :vector_db_config
      
        # Config for the Vertex AI Search.
        # Corresponds to the JSON property `vertexAiSearchConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1VertexAiSearchConfig]
        attr_accessor :vertex_ai_search_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @corpus_status = args[:corpus_status] if args.key?(:corpus_status)
          @create_time = args[:create_time] if args.key?(:create_time)
          @description = args[:description] if args.key?(:description)
          @display_name = args[:display_name] if args.key?(:display_name)
          @encryption_spec = args[:encryption_spec] if args.key?(:encryption_spec)
          @name = args[:name] if args.key?(:name)
          @update_time = args[:update_time] if args.key?(:update_time)
          @vector_db_config = args[:vector_db_config] if args.key?(:vector_db_config)
          @vertex_ai_search_config = args[:vertex_ai_search_config] if args.key?(:vertex_ai_search_config)
        end
      end
      
      # Config for the embedding model to use for RAG.
      class GoogleCloudAiplatformV1RagEmbeddingModelConfig
        include Google::Apis::Core::Hashable
      
        # Config representing a model hosted on Vertex Prediction Endpoint.
        # Corresponds to the JSON property `vertexPredictionEndpoint`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagEmbeddingModelConfigVertexPredictionEndpoint]
        attr_accessor :vertex_prediction_endpoint
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @vertex_prediction_endpoint = args[:vertex_prediction_endpoint] if args.key?(:vertex_prediction_endpoint)
        end
      end
      
      # Config representing a model hosted on Vertex Prediction Endpoint.
      class GoogleCloudAiplatformV1RagEmbeddingModelConfigVertexPredictionEndpoint
        include Google::Apis::Core::Hashable
      
        # Required. The endpoint resource name. Format: `projects/`project`/locations/`
        # location`/publishers/`publisher`/models/`model`` or `projects/`project`/
        # locations/`location`/endpoints/`endpoint``
        # Corresponds to the JSON property `endpoint`
        # @return [String]
        attr_accessor :endpoint
      
        # Output only. The resource name of the model that is deployed on the endpoint.
        # Present only when the endpoint is not a publisher model. Pattern: `projects/`
        # project`/locations/`location`/models/`model``
        # Corresponds to the JSON property `model`
        # @return [String]
        attr_accessor :model
      
        # Output only. Version ID of the model that is deployed on the endpoint. Present
        # only when the endpoint is not a publisher model.
        # Corresponds to the JSON property `modelVersionId`
        # @return [String]
        attr_accessor :model_version_id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @endpoint = args[:endpoint] if args.key?(:endpoint)
          @model = args[:model] if args.key?(:model)
          @model_version_id = args[:model_version_id] if args.key?(:model_version_id)
        end
      end
      
      # Config for RagEngine.
      class GoogleCloudAiplatformV1RagEngineConfig
        include Google::Apis::Core::Hashable
      
        # Identifier. The name of the RagEngineConfig. Format: `projects/`project`/
        # locations/`location`/ragEngineConfig`
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Configuration message for RagManagedDb used by RagEngine.
        # Corresponds to the JSON property `ragManagedDbConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagManagedDbConfig]
        attr_accessor :rag_managed_db_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @name = args[:name] if args.key?(:name)
          @rag_managed_db_config = args[:rag_managed_db_config] if args.key?(:rag_managed_db_config)
        end
      end
      
      # A RagFile contains user data for chunking, embedding and indexing.
      class GoogleCloudAiplatformV1RagFile
        include Google::Apis::Core::Hashable
      
        # Output only. Timestamp when this RagFile was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Optional. The description of the RagFile.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # The input content is encapsulated and uploaded in the request.
        # Corresponds to the JSON property `directUploadSource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DirectUploadSource]
        attr_accessor :direct_upload_source
      
        # Required. The display name of the RagFile. The name can be up to 128
        # characters long and can consist of any UTF-8 characters.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # RagFile status.
        # Corresponds to the JSON property `fileStatus`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FileStatus]
        attr_accessor :file_status
      
        # The Google Cloud Storage location for the input content.
        # Corresponds to the JSON property `gcsSource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GcsSource]
        attr_accessor :gcs_source
      
        # The Google Drive location for the input content.
        # Corresponds to the JSON property `googleDriveSource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GoogleDriveSource]
        attr_accessor :google_drive_source
      
        # The Jira source for the ImportRagFilesRequest.
        # Corresponds to the JSON property `jiraSource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1JiraSource]
        attr_accessor :jira_source
      
        # Output only. The resource name of the RagFile.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # The SharePointSources to pass to ImportRagFiles.
        # Corresponds to the JSON property `sharePointSources`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SharePointSources]
        attr_accessor :share_point_sources
      
        # The Slack source for the ImportRagFilesRequest.
        # Corresponds to the JSON property `slackSource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SlackSource]
        attr_accessor :slack_source
      
        # Output only. Timestamp when this RagFile was last updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        # Output only. The metadata for metadata search. The user_metadata Needs to be
        # in JSON format.
        # Corresponds to the JSON property `userMetadata`
        # @return [String]
        attr_accessor :user_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @description = args[:description] if args.key?(:description)
          @direct_upload_source = args[:direct_upload_source] if args.key?(:direct_upload_source)
          @display_name = args[:display_name] if args.key?(:display_name)
          @file_status = args[:file_status] if args.key?(:file_status)
          @gcs_source = args[:gcs_source] if args.key?(:gcs_source)
          @google_drive_source = args[:google_drive_source] if args.key?(:google_drive_source)
          @jira_source = args[:jira_source] if args.key?(:jira_source)
          @name = args[:name] if args.key?(:name)
          @share_point_sources = args[:share_point_sources] if args.key?(:share_point_sources)
          @slack_source = args[:slack_source] if args.key?(:slack_source)
          @update_time = args[:update_time] if args.key?(:update_time)
          @user_metadata = args[:user_metadata] if args.key?(:user_metadata)
        end
      end
      
      # Specifies the size and overlap of chunks for RagFiles.
      class GoogleCloudAiplatformV1RagFileChunkingConfig
        include Google::Apis::Core::Hashable
      
        # Specifies the fixed length chunking config.
        # Corresponds to the JSON property `fixedLengthChunking`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagFileChunkingConfigFixedLengthChunking]
        attr_accessor :fixed_length_chunking
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @fixed_length_chunking = args[:fixed_length_chunking] if args.key?(:fixed_length_chunking)
        end
      end
      
      # Specifies the fixed length chunking config.
      class GoogleCloudAiplatformV1RagFileChunkingConfigFixedLengthChunking
        include Google::Apis::Core::Hashable
      
        # The overlap between chunks.
        # Corresponds to the JSON property `chunkOverlap`
        # @return [Fixnum]
        attr_accessor :chunk_overlap
      
        # The size of the chunks.
        # Corresponds to the JSON property `chunkSize`
        # @return [Fixnum]
        attr_accessor :chunk_size
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @chunk_overlap = args[:chunk_overlap] if args.key?(:chunk_overlap)
          @chunk_size = args[:chunk_size] if args.key?(:chunk_size)
        end
      end
      
      # Specifies the parsing config for RagFiles.
      class GoogleCloudAiplatformV1RagFileParsingConfig
        include Google::Apis::Core::Hashable
      
        # Document AI Layout Parser config.
        # Corresponds to the JSON property `layoutParser`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagFileParsingConfigLayoutParser]
        attr_accessor :layout_parser
      
        # Specifies the LLM parsing for RagFiles.
        # Corresponds to the JSON property `llmParser`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagFileParsingConfigLlmParser]
        attr_accessor :llm_parser
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @layout_parser = args[:layout_parser] if args.key?(:layout_parser)
          @llm_parser = args[:llm_parser] if args.key?(:llm_parser)
        end
      end
      
      # Document AI Layout Parser config.
      class GoogleCloudAiplatformV1RagFileParsingConfigLayoutParser
        include Google::Apis::Core::Hashable
      
        # The maximum number of requests the job is allowed to make to the Document AI
        # processor per minute. Consult https://cloud.google.com/document-ai/quotas and
        # the Quota page for your project to set an appropriate value here. If
        # unspecified, a default value of 120 QPM would be used.
        # Corresponds to the JSON property `maxParsingRequestsPerMin`
        # @return [Fixnum]
        attr_accessor :max_parsing_requests_per_min
      
        # The full resource name of a Document AI processor or processor version. The
        # processor must have type `LAYOUT_PARSER_PROCESSOR`. If specified, the `
        # additional_config.parse_as_scanned_pdf` field must be false. Format: * `
        # projects/`project_id`/locations/`location`/processors/`processor_id`` * `
        # projects/`project_id`/locations/`location`/processors/`processor_id`/
        # processorVersions/`processor_version_id``
        # Corresponds to the JSON property `processorName`
        # @return [String]
        attr_accessor :processor_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @max_parsing_requests_per_min = args[:max_parsing_requests_per_min] if args.key?(:max_parsing_requests_per_min)
          @processor_name = args[:processor_name] if args.key?(:processor_name)
        end
      end
      
      # Specifies the LLM parsing for RagFiles.
      class GoogleCloudAiplatformV1RagFileParsingConfigLlmParser
        include Google::Apis::Core::Hashable
      
        # The prompt to use for parsing. If not specified, a default prompt will be used.
        # Corresponds to the JSON property `customParsingPrompt`
        # @return [String]
        attr_accessor :custom_parsing_prompt
      
        # The maximum number of requests the job is allowed to make to the LLM model per
        # minute. Consult https://cloud.google.com/vertex-ai/generative-ai/docs/quotas
        # and your document size to set an appropriate value here. If unspecified, a
        # default value of 5000 QPM would be used.
        # Corresponds to the JSON property `maxParsingRequestsPerMin`
        # @return [Fixnum]
        attr_accessor :max_parsing_requests_per_min
      
        # The name of a LLM model used for parsing. Format: * `projects/`project_id`/
        # locations/`location`/publishers/`publisher`/models/`model``
        # Corresponds to the JSON property `modelName`
        # @return [String]
        attr_accessor :model_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @custom_parsing_prompt = args[:custom_parsing_prompt] if args.key?(:custom_parsing_prompt)
          @max_parsing_requests_per_min = args[:max_parsing_requests_per_min] if args.key?(:max_parsing_requests_per_min)
          @model_name = args[:model_name] if args.key?(:model_name)
        end
      end
      
      # Specifies the transformation config for RagFiles.
      class GoogleCloudAiplatformV1RagFileTransformationConfig
        include Google::Apis::Core::Hashable
      
        # Specifies the size and overlap of chunks for RagFiles.
        # Corresponds to the JSON property `ragFileChunkingConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagFileChunkingConfig]
        attr_accessor :rag_file_chunking_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @rag_file_chunking_config = args[:rag_file_chunking_config] if args.key?(:rag_file_chunking_config)
        end
      end
      
      # Configuration message for RagManagedDb used by RagEngine.
      class GoogleCloudAiplatformV1RagManagedDbConfig
        include Google::Apis::Core::Hashable
      
        # Basic tier is a cost-effective and low compute tier suitable for the following
        # cases: * Experimenting with RagManagedDb. * Small data size. * Latency
        # insensitive workload. * Only using RAG Engine with external vector DBs. NOTE:
        # This is the default tier if not explicitly chosen.
        # Corresponds to the JSON property `basic`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagManagedDbConfigBasic]
        attr_accessor :basic
      
        # Scaled tier offers production grade performance along with autoscaling
        # functionality. It is suitable for customers with large amounts of data or
        # performance sensitive workloads.
        # Corresponds to the JSON property `scaled`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagManagedDbConfigScaled]
        attr_accessor :scaled
      
        # Disables the RAG Engine service and deletes all your data held within this
        # service. This will halt the billing of the service. NOTE: Once deleted the
        # data cannot be recovered. To start using RAG Engine again, you will need to
        # update the tier by calling the UpdateRagEngineConfig API.
        # Corresponds to the JSON property `unprovisioned`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagManagedDbConfigUnprovisioned]
        attr_accessor :unprovisioned
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @basic = args[:basic] if args.key?(:basic)
          @scaled = args[:scaled] if args.key?(:scaled)
          @unprovisioned = args[:unprovisioned] if args.key?(:unprovisioned)
        end
      end
      
      # Basic tier is a cost-effective and low compute tier suitable for the following
      # cases: * Experimenting with RagManagedDb. * Small data size. * Latency
      # insensitive workload. * Only using RAG Engine with external vector DBs. NOTE:
      # This is the default tier if not explicitly chosen.
      class GoogleCloudAiplatformV1RagManagedDbConfigBasic
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Scaled tier offers production grade performance along with autoscaling
      # functionality. It is suitable for customers with large amounts of data or
      # performance sensitive workloads.
      class GoogleCloudAiplatformV1RagManagedDbConfigScaled
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Disables the RAG Engine service and deletes all your data held within this
      # service. This will halt the billing of the service. NOTE: Once deleted the
      # data cannot be recovered. To start using RAG Engine again, you will need to
      # update the tier by calling the UpdateRagEngineConfig API.
      class GoogleCloudAiplatformV1RagManagedDbConfigUnprovisioned
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # A query to retrieve relevant contexts.
      class GoogleCloudAiplatformV1RagQuery
        include Google::Apis::Core::Hashable
      
        # Specifies the context retrieval config.
        # Corresponds to the JSON property `ragRetrievalConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagRetrievalConfig]
        attr_accessor :rag_retrieval_config
      
        # Optional. The query in text format to get relevant contexts.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @rag_retrieval_config = args[:rag_retrieval_config] if args.key?(:rag_retrieval_config)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # Specifies the context retrieval config.
      class GoogleCloudAiplatformV1RagRetrievalConfig
        include Google::Apis::Core::Hashable
      
        # Config for filters.
        # Corresponds to the JSON property `filter`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagRetrievalConfigFilter]
        attr_accessor :filter
      
        # Config for ranking and reranking.
        # Corresponds to the JSON property `ranking`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagRetrievalConfigRanking]
        attr_accessor :ranking
      
        # Optional. The number of contexts to retrieve.
        # Corresponds to the JSON property `topK`
        # @return [Fixnum]
        attr_accessor :top_k
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @filter = args[:filter] if args.key?(:filter)
          @ranking = args[:ranking] if args.key?(:ranking)
          @top_k = args[:top_k] if args.key?(:top_k)
        end
      end
      
      # Config for filters.
      class GoogleCloudAiplatformV1RagRetrievalConfigFilter
        include Google::Apis::Core::Hashable
      
        # Optional. String for metadata filtering.
        # Corresponds to the JSON property `metadataFilter`
        # @return [String]
        attr_accessor :metadata_filter
      
        # Optional. Only returns contexts with vector distance smaller than the
        # threshold.
        # Corresponds to the JSON property `vectorDistanceThreshold`
        # @return [Float]
        attr_accessor :vector_distance_threshold
      
        # Optional. Only returns contexts with vector similarity larger than the
        # threshold.
        # Corresponds to the JSON property `vectorSimilarityThreshold`
        # @return [Float]
        attr_accessor :vector_similarity_threshold
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @metadata_filter = args[:metadata_filter] if args.key?(:metadata_filter)
          @vector_distance_threshold = args[:vector_distance_threshold] if args.key?(:vector_distance_threshold)
          @vector_similarity_threshold = args[:vector_similarity_threshold] if args.key?(:vector_similarity_threshold)
        end
      end
      
      # Config for ranking and reranking.
      class GoogleCloudAiplatformV1RagRetrievalConfigRanking
        include Google::Apis::Core::Hashable
      
        # Config for LlmRanker.
        # Corresponds to the JSON property `llmRanker`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagRetrievalConfigRankingLlmRanker]
        attr_accessor :llm_ranker
      
        # Config for Rank Service.
        # Corresponds to the JSON property `rankService`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagRetrievalConfigRankingRankService]
        attr_accessor :rank_service
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @llm_ranker = args[:llm_ranker] if args.key?(:llm_ranker)
          @rank_service = args[:rank_service] if args.key?(:rank_service)
        end
      end
      
      # Config for LlmRanker.
      class GoogleCloudAiplatformV1RagRetrievalConfigRankingLlmRanker
        include Google::Apis::Core::Hashable
      
        # Optional. The model name used for ranking. See [Supported models](https://
        # cloud.google.com/vertex-ai/generative-ai/docs/model-reference/inference#
        # supported-models).
        # Corresponds to the JSON property `modelName`
        # @return [String]
        attr_accessor :model_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @model_name = args[:model_name] if args.key?(:model_name)
        end
      end
      
      # Config for Rank Service.
      class GoogleCloudAiplatformV1RagRetrievalConfigRankingRankService
        include Google::Apis::Core::Hashable
      
        # Optional. The model name of the rank service. Format: `semantic-ranker-512@
        # latest`
        # Corresponds to the JSON property `modelName`
        # @return [String]
        attr_accessor :model_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @model_name = args[:model_name] if args.key?(:model_name)
        end
      end
      
      # Config for the Vector DB to use for RAG.
      class GoogleCloudAiplatformV1RagVectorDbConfig
        include Google::Apis::Core::Hashable
      
        # The generic reusable api auth config. Deprecated. Please use AuthConfig (
        # google/cloud/aiplatform/master/auth.proto) instead.
        # Corresponds to the JSON property `apiAuth`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ApiAuth]
        attr_accessor :api_auth
      
        # The config for the Pinecone.
        # Corresponds to the JSON property `pinecone`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagVectorDbConfigPinecone]
        attr_accessor :pinecone
      
        # Config for the embedding model to use for RAG.
        # Corresponds to the JSON property `ragEmbeddingModelConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagEmbeddingModelConfig]
        attr_accessor :rag_embedding_model_config
      
        # The config for the default RAG-managed Vector DB.
        # Corresponds to the JSON property `ragManagedDb`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagVectorDbConfigRagManagedDb]
        attr_accessor :rag_managed_db
      
        # The config for the Vertex Vector Search.
        # Corresponds to the JSON property `vertexVectorSearch`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagVectorDbConfigVertexVectorSearch]
        attr_accessor :vertex_vector_search
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @api_auth = args[:api_auth] if args.key?(:api_auth)
          @pinecone = args[:pinecone] if args.key?(:pinecone)
          @rag_embedding_model_config = args[:rag_embedding_model_config] if args.key?(:rag_embedding_model_config)
          @rag_managed_db = args[:rag_managed_db] if args.key?(:rag_managed_db)
          @vertex_vector_search = args[:vertex_vector_search] if args.key?(:vertex_vector_search)
        end
      end
      
      # The config for the Pinecone.
      class GoogleCloudAiplatformV1RagVectorDbConfigPinecone
        include Google::Apis::Core::Hashable
      
        # Pinecone index name. This value cannot be changed after it's set.
        # Corresponds to the JSON property `indexName`
        # @return [String]
        attr_accessor :index_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @index_name = args[:index_name] if args.key?(:index_name)
        end
      end
      
      # The config for the default RAG-managed Vector DB.
      class GoogleCloudAiplatformV1RagVectorDbConfigRagManagedDb
        include Google::Apis::Core::Hashable
      
        # Config for ANN search. RagManagedDb uses a tree-based structure to partition
        # data and facilitate faster searches. As a tradeoff, it requires longer
        # indexing time and manual triggering of index rebuild via the ImportRagFiles
        # and UpdateRagCorpus API.
        # Corresponds to the JSON property `ann`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagVectorDbConfigRagManagedDbAnn]
        attr_accessor :ann
      
        # Config for KNN search.
        # Corresponds to the JSON property `knn`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagVectorDbConfigRagManagedDbKnn]
        attr_accessor :knn
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @ann = args[:ann] if args.key?(:ann)
          @knn = args[:knn] if args.key?(:knn)
        end
      end
      
      # Config for ANN search. RagManagedDb uses a tree-based structure to partition
      # data and facilitate faster searches. As a tradeoff, it requires longer
      # indexing time and manual triggering of index rebuild via the ImportRagFiles
      # and UpdateRagCorpus API.
      class GoogleCloudAiplatformV1RagVectorDbConfigRagManagedDbAnn
        include Google::Apis::Core::Hashable
      
        # Number of leaf nodes in the tree-based structure. Each leaf node contains
        # groups of closely related vectors along with their corresponding centroid.
        # Recommended value is 10 * sqrt(num of RagFiles in your RagCorpus). Default
        # value is 500.
        # Corresponds to the JSON property `leafCount`
        # @return [Fixnum]
        attr_accessor :leaf_count
      
        # The depth of the tree-based structure. Only depth values of 2 and 3 are
        # supported. Recommended value is 2 if you have if you have O(10K) files in the
        # RagCorpus and set this to 3 if more than that. Default value is 2.
        # Corresponds to the JSON property `treeDepth`
        # @return [Fixnum]
        attr_accessor :tree_depth
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @leaf_count = args[:leaf_count] if args.key?(:leaf_count)
          @tree_depth = args[:tree_depth] if args.key?(:tree_depth)
        end
      end
      
      # Config for KNN search.
      class GoogleCloudAiplatformV1RagVectorDbConfigRagManagedDbKnn
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # The config for the Vertex Vector Search.
      class GoogleCloudAiplatformV1RagVectorDbConfigVertexVectorSearch
        include Google::Apis::Core::Hashable
      
        # The resource name of the Index. Format: `projects/`project`/locations/`
        # location`/indexes/`index``
        # Corresponds to the JSON property `index`
        # @return [String]
        attr_accessor :index
      
        # The resource name of the Index Endpoint. Format: `projects/`project`/locations/
        # `location`/indexEndpoints/`index_endpoint``
        # Corresponds to the JSON property `indexEndpoint`
        # @return [String]
        attr_accessor :index_endpoint
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @index = args[:index] if args.key?(:index)
          @index_endpoint = args[:index_endpoint] if args.key?(:index_endpoint)
        end
      end
      
      # Raw output.
      class GoogleCloudAiplatformV1RawOutput
        include Google::Apis::Core::Hashable
      
        # Output only. Raw output string.
        # Corresponds to the JSON property `rawOutput`
        # @return [Array<String>]
        attr_accessor :raw_output
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @raw_output = args[:raw_output] if args.key?(:raw_output)
        end
      end
      
      # Request message for PredictionService.RawPredict.
      class GoogleCloudAiplatformV1RawPredictRequest
        include Google::Apis::Core::Hashable
      
        # Message that represents an arbitrary HTTP body. It should only be used for
        # payload formats that can't be represented as JSON, such as raw binary or an
        # HTML page. This message can be used both in streaming and non-streaming API
        # methods in the request as well as the response. It can be used as a top-level
        # request field, which is convenient if one wants to extract parameters from
        # either the URL or HTTP template into the request fields and also want access
        # to the raw HTTP body. Example: message GetResourceRequest ` // A unique
        # request id. string request_id = 1; // The raw HTTP body is bound to this field.
        # google.api.HttpBody http_body = 2; ` service ResourceService ` rpc
        # GetResource(GetResourceRequest) returns (google.api.HttpBody); rpc
        # UpdateResource(google.api.HttpBody) returns (google.protobuf.Empty); ` Example
        # with streaming methods: service CaldavService ` rpc GetCalendar(stream google.
        # api.HttpBody) returns (stream google.api.HttpBody); rpc UpdateCalendar(stream
        # google.api.HttpBody) returns (stream google.api.HttpBody); ` Use of this type
        # only changes how the request and response bodies are handled, all other
        # features will continue to work unchanged.
        # Corresponds to the JSON property `httpBody`
        # @return [Google::Apis::AiplatformV1::GoogleApiHttpBody]
        attr_accessor :http_body
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @http_body = args[:http_body] if args.key?(:http_body)
        end
      end
      
      # Configuration for the Ray OSS Logs.
      class GoogleCloudAiplatformV1RayLogsSpec
        include Google::Apis::Core::Hashable
      
        # Optional. Flag to disable the export of Ray OSS logs to Cloud Logging.
        # Corresponds to the JSON property `disabled`
        # @return [Boolean]
        attr_accessor :disabled
        alias_method :disabled?, :disabled
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @disabled = args[:disabled] if args.key?(:disabled)
        end
      end
      
      # Configuration for the Ray metrics.
      class GoogleCloudAiplatformV1RayMetricSpec
        include Google::Apis::Core::Hashable
      
        # Optional. Flag to disable the Ray metrics collection.
        # Corresponds to the JSON property `disabled`
        # @return [Boolean]
        attr_accessor :disabled
        alias_method :disabled?, :disabled
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @disabled = args[:disabled] if args.key?(:disabled)
        end
      end
      
      # Configuration information for the Ray cluster. For experimental launch, Ray
      # cluster creation and Persistent cluster creation are 1:1 mapping: We will
      # provision all the nodes within the Persistent cluster as Ray nodes.
      class GoogleCloudAiplatformV1RaySpec
        include Google::Apis::Core::Hashable
      
        # Optional. This will be used to indicate which resource pool will serve as the
        # Ray head node(the first node within that pool). Will use the machine from the
        # first workerpool as the head node by default if this field isn't set.
        # Corresponds to the JSON property `headNodeResourcePoolId`
        # @return [String]
        attr_accessor :head_node_resource_pool_id
      
        # Optional. Default image for user to choose a preferred ML framework (for
        # example, TensorFlow or Pytorch) by choosing from [Vertex prebuilt images](
        # https://cloud.google.com/vertex-ai/docs/training/pre-built-containers). Either
        # this or the resource_pool_images is required. Use this field if you need all
        # the resource pools to have the same Ray image. Otherwise, use the `@code
        # resource_pool_images` field.
        # Corresponds to the JSON property `imageUri`
        # @return [String]
        attr_accessor :image_uri
      
        # Configuration for the Ray OSS Logs.
        # Corresponds to the JSON property `rayLogsSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RayLogsSpec]
        attr_accessor :ray_logs_spec
      
        # Configuration for the Ray metrics.
        # Corresponds to the JSON property `rayMetricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RayMetricSpec]
        attr_accessor :ray_metric_spec
      
        # Optional. Required if image_uri isn't set. A map of resource_pool_id to
        # prebuild Ray image if user need to use different images for different head/
        # worker pools. This map needs to cover all the resource pool ids. Example: ` "
        # ray_head_node_pool": "head image" "ray_worker_node_pool1": "worker image" "
        # ray_worker_node_pool2": "another worker image" `
        # Corresponds to the JSON property `resourcePoolImages`
        # @return [Hash<String,String>]
        attr_accessor :resource_pool_images
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @head_node_resource_pool_id = args[:head_node_resource_pool_id] if args.key?(:head_node_resource_pool_id)
          @image_uri = args[:image_uri] if args.key?(:image_uri)
          @ray_logs_spec = args[:ray_logs_spec] if args.key?(:ray_logs_spec)
          @ray_metric_spec = args[:ray_metric_spec] if args.key?(:ray_metric_spec)
          @resource_pool_images = args[:resource_pool_images] if args.key?(:resource_pool_images)
        end
      end
      
      # Request message for FeaturestoreOnlineServingService.ReadFeatureValues.
      class GoogleCloudAiplatformV1ReadFeatureValuesRequest
        include Google::Apis::Core::Hashable
      
        # Required. ID for a specific entity. For example, for a machine learning model
        # predicting user clicks on a website, an entity ID could be `user_123`.
        # Corresponds to the JSON property `entityId`
        # @return [String]
        attr_accessor :entity_id
      
        # Selector for Features of an EntityType.
        # Corresponds to the JSON property `featureSelector`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureSelector]
        attr_accessor :feature_selector
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entity_id = args[:entity_id] if args.key?(:entity_id)
          @feature_selector = args[:feature_selector] if args.key?(:feature_selector)
        end
      end
      
      # Response message for FeaturestoreOnlineServingService.ReadFeatureValues.
      class GoogleCloudAiplatformV1ReadFeatureValuesResponse
        include Google::Apis::Core::Hashable
      
        # Entity view with Feature values.
        # Corresponds to the JSON property `entityView`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ReadFeatureValuesResponseEntityView]
        attr_accessor :entity_view
      
        # Response header with metadata for the requested ReadFeatureValuesRequest.
        # entity_type and Features.
        # Corresponds to the JSON property `header`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ReadFeatureValuesResponseHeader]
        attr_accessor :header
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entity_view = args[:entity_view] if args.key?(:entity_view)
          @header = args[:header] if args.key?(:header)
        end
      end
      
      # Entity view with Feature values.
      class GoogleCloudAiplatformV1ReadFeatureValuesResponseEntityView
        include Google::Apis::Core::Hashable
      
        # Each piece of data holds the k requested values for one requested Feature. If
        # no values for the requested Feature exist, the corresponding cell will be
        # empty. This has the same size and is in the same order as the features from
        # the header ReadFeatureValuesResponse.header.
        # Corresponds to the JSON property `data`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ReadFeatureValuesResponseEntityViewData>]
        attr_accessor :data
      
        # ID of the requested entity.
        # Corresponds to the JSON property `entityId`
        # @return [String]
        attr_accessor :entity_id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @data = args[:data] if args.key?(:data)
          @entity_id = args[:entity_id] if args.key?(:entity_id)
        end
      end
      
      # Container to hold value(s), successive in time, for one Feature from the
      # request.
      class GoogleCloudAiplatformV1ReadFeatureValuesResponseEntityViewData
        include Google::Apis::Core::Hashable
      
        # Value for a feature.
        # Corresponds to the JSON property `value`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureValue]
        attr_accessor :value
      
        # Container for list of values.
        # Corresponds to the JSON property `values`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureValueList]
        attr_accessor :values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @value = args[:value] if args.key?(:value)
          @values = args[:values] if args.key?(:values)
        end
      end
      
      # Metadata for requested Features.
      class GoogleCloudAiplatformV1ReadFeatureValuesResponseFeatureDescriptor
        include Google::Apis::Core::Hashable
      
        # Feature ID.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @id = args[:id] if args.key?(:id)
        end
      end
      
      # Response header with metadata for the requested ReadFeatureValuesRequest.
      # entity_type and Features.
      class GoogleCloudAiplatformV1ReadFeatureValuesResponseHeader
        include Google::Apis::Core::Hashable
      
        # The resource name of the EntityType from the ReadFeatureValuesRequest. Value
        # format: `projects/`project`/locations/`location`/featurestores/`featurestore`/
        # entityTypes/`entityType``.
        # Corresponds to the JSON property `entityType`
        # @return [String]
        attr_accessor :entity_type
      
        # List of Feature metadata corresponding to each piece of
        # ReadFeatureValuesResponse.EntityView.data.
        # Corresponds to the JSON property `featureDescriptors`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ReadFeatureValuesResponseFeatureDescriptor>]
        attr_accessor :feature_descriptors
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entity_type = args[:entity_type] if args.key?(:entity_type)
          @feature_descriptors = args[:feature_descriptors] if args.key?(:feature_descriptors)
        end
      end
      
      # The request message for MatchService.ReadIndexDatapoints.
      class GoogleCloudAiplatformV1ReadIndexDatapointsRequest
        include Google::Apis::Core::Hashable
      
        # The ID of the DeployedIndex that will serve the request.
        # Corresponds to the JSON property `deployedIndexId`
        # @return [String]
        attr_accessor :deployed_index_id
      
        # IDs of the datapoints to be searched for.
        # Corresponds to the JSON property `ids`
        # @return [Array<String>]
        attr_accessor :ids
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @deployed_index_id = args[:deployed_index_id] if args.key?(:deployed_index_id)
          @ids = args[:ids] if args.key?(:ids)
        end
      end
      
      # The response message for MatchService.ReadIndexDatapoints.
      class GoogleCloudAiplatformV1ReadIndexDatapointsResponse
        include Google::Apis::Core::Hashable
      
        # The result list of datapoints.
        # Corresponds to the JSON property `datapoints`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1IndexDatapoint>]
        attr_accessor :datapoints
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @datapoints = args[:datapoints] if args.key?(:datapoints)
        end
      end
      
      # Response message for TensorboardService.ReadTensorboardBlobData.
      class GoogleCloudAiplatformV1ReadTensorboardBlobDataResponse
        include Google::Apis::Core::Hashable
      
        # Blob messages containing blob bytes.
        # Corresponds to the JSON property `blobs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TensorboardBlob>]
        attr_accessor :blobs
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @blobs = args[:blobs] if args.key?(:blobs)
        end
      end
      
      # Response message for TensorboardService.ReadTensorboardSize.
      class GoogleCloudAiplatformV1ReadTensorboardSizeResponse
        include Google::Apis::Core::Hashable
      
        # Payload storage size for the TensorBoard
        # Corresponds to the JSON property `storageSizeByte`
        # @return [Fixnum]
        attr_accessor :storage_size_byte
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @storage_size_byte = args[:storage_size_byte] if args.key?(:storage_size_byte)
        end
      end
      
      # Response message for TensorboardService.ReadTensorboardTimeSeriesData.
      class GoogleCloudAiplatformV1ReadTensorboardTimeSeriesDataResponse
        include Google::Apis::Core::Hashable
      
        # All the data stored in a TensorboardTimeSeries.
        # Corresponds to the JSON property `timeSeriesData`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TimeSeriesData]
        attr_accessor :time_series_data
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @time_series_data = args[:time_series_data] if args.key?(:time_series_data)
        end
      end
      
      # Response message for TensorboardService.ReadTensorboardUsage.
      class GoogleCloudAiplatformV1ReadTensorboardUsageResponse
        include Google::Apis::Core::Hashable
      
        # Maps year-month (YYYYMM) string to per month usage data.
        # Corresponds to the JSON property `monthlyUsageData`
        # @return [Hash<String,Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ReadTensorboardUsageResponsePerMonthUsageData>]
        attr_accessor :monthly_usage_data
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @monthly_usage_data = args[:monthly_usage_data] if args.key?(:monthly_usage_data)
        end
      end
      
      # Per month usage data
      class GoogleCloudAiplatformV1ReadTensorboardUsageResponsePerMonthUsageData
        include Google::Apis::Core::Hashable
      
        # Usage data for each user in the given month.
        # Corresponds to the JSON property `userUsageData`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ReadTensorboardUsageResponsePerUserUsageData>]
        attr_accessor :user_usage_data
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @user_usage_data = args[:user_usage_data] if args.key?(:user_usage_data)
        end
      end
      
      # Per user usage data.
      class GoogleCloudAiplatformV1ReadTensorboardUsageResponsePerUserUsageData
        include Google::Apis::Core::Hashable
      
        # User's username
        # Corresponds to the JSON property `username`
        # @return [String]
        attr_accessor :username
      
        # Number of times the user has read data within the Tensorboard.
        # Corresponds to the JSON property `viewCount`
        # @return [Fixnum]
        attr_accessor :view_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @username = args[:username] if args.key?(:username)
          @view_count = args[:view_count] if args.key?(:view_count)
        end
      end
      
      # ReasoningEngine provides a customizable runtime for models to determine which
      # actions to take and in which order.
      class GoogleCloudAiplatformV1ReasoningEngine
        include Google::Apis::Core::Hashable
      
        # Output only. Timestamp when this ReasoningEngine was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Optional. The description of the ReasoningEngine.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Required. The display name of the ReasoningEngine.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Represents a customer-managed encryption key spec that can be applied to a top-
        # level resource.
        # Corresponds to the JSON property `encryptionSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EncryptionSpec]
        attr_accessor :encryption_spec
      
        # Optional. Used to perform consistent read-modify-write updates. If not set, a
        # blind "overwrite" update happens.
        # Corresponds to the JSON property `etag`
        # @return [String]
        attr_accessor :etag
      
        # Labels for the ReasoningEngine.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Identifier. The resource name of the ReasoningEngine. Format: `projects/`
        # project`/locations/`location`/reasoningEngines/`reasoning_engine``
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # ReasoningEngine configurations
        # Corresponds to the JSON property `spec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ReasoningEngineSpec]
        attr_accessor :spec
      
        # Output only. Timestamp when this ReasoningEngine was most recently updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @description = args[:description] if args.key?(:description)
          @display_name = args[:display_name] if args.key?(:display_name)
          @encryption_spec = args[:encryption_spec] if args.key?(:encryption_spec)
          @etag = args[:etag] if args.key?(:etag)
          @labels = args[:labels] if args.key?(:labels)
          @name = args[:name] if args.key?(:name)
          @spec = args[:spec] if args.key?(:spec)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # ReasoningEngine configurations
      class GoogleCloudAiplatformV1ReasoningEngineSpec
        include Google::Apis::Core::Hashable
      
        # Optional. The OSS agent framework used to develop the agent. Currently
        # supported values: "google-adk", "langchain", "langgraph", "ag2", "llama-index",
        # "custom".
        # Corresponds to the JSON property `agentFramework`
        # @return [String]
        attr_accessor :agent_framework
      
        # Optional. Declarations for object class methods in OpenAPI specification
        # format.
        # Corresponds to the JSON property `classMethods`
        # @return [Array<Hash<String,Object>>]
        attr_accessor :class_methods
      
        # The specification of a Reasoning Engine deployment.
        # Corresponds to the JSON property `deploymentSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ReasoningEngineSpecDeploymentSpec]
        attr_accessor :deployment_spec
      
        # User-provided package specification, containing pickled object and package
        # requirements.
        # Corresponds to the JSON property `packageSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ReasoningEngineSpecPackageSpec]
        attr_accessor :package_spec
      
        # Optional. The service account that the Reasoning Engine artifact runs as. It
        # should have "roles/storage.objectViewer" for reading the user project's Cloud
        # Storage and "roles/aiplatform.user" for using Vertex extensions. If not
        # specified, the Vertex AI Reasoning Engine Service Agent in the project will be
        # used.
        # Corresponds to the JSON property `serviceAccount`
        # @return [String]
        attr_accessor :service_account
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @agent_framework = args[:agent_framework] if args.key?(:agent_framework)
          @class_methods = args[:class_methods] if args.key?(:class_methods)
          @deployment_spec = args[:deployment_spec] if args.key?(:deployment_spec)
          @package_spec = args[:package_spec] if args.key?(:package_spec)
          @service_account = args[:service_account] if args.key?(:service_account)
        end
      end
      
      # The specification of a Reasoning Engine deployment.
      class GoogleCloudAiplatformV1ReasoningEngineSpecDeploymentSpec
        include Google::Apis::Core::Hashable
      
        # Optional. Concurrency for each container and agent server. Recommended value:
        # 2 * cpu + 1. Defaults to 9.
        # Corresponds to the JSON property `containerConcurrency`
        # @return [Fixnum]
        attr_accessor :container_concurrency
      
        # Optional. Environment variables to be set with the Reasoning Engine deployment.
        # The environment variables can be updated through the UpdateReasoningEngine
        # API.
        # Corresponds to the JSON property `env`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EnvVar>]
        attr_accessor :env
      
        # Optional. The maximum number of application instances that can be launched to
        # handle increased traffic. Defaults to 100. Range: [1, 1000]. If VPC-SC or PSC-
        # I is enabled, the acceptable range is [1, 100].
        # Corresponds to the JSON property `maxInstances`
        # @return [Fixnum]
        attr_accessor :max_instances
      
        # Optional. The minimum number of application instances that will be kept
        # running at all times. Defaults to 1. Range: [0, 10].
        # Corresponds to the JSON property `minInstances`
        # @return [Fixnum]
        attr_accessor :min_instances
      
        # Configuration for PSC-I.
        # Corresponds to the JSON property `pscInterfaceConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PscInterfaceConfig]
        attr_accessor :psc_interface_config
      
        # Optional. Resource limits for each container. Only 'cpu' and 'memory' keys are
        # supported. Defaults to `"cpu": "4", "memory": "4Gi"`. * The only supported
        # values for CPU are '1', '2', '4', '6' and '8'. For more information, go to
        # https://cloud.google.com/run/docs/configuring/cpu. * The only supported values
        # for memory are '1Gi', '2Gi', ... '32 Gi'. * For required cpu on different
        # memory values, go to https://cloud.google.com/run/docs/configuring/memory-
        # limits
        # Corresponds to the JSON property `resourceLimits`
        # @return [Hash<String,String>]
        attr_accessor :resource_limits
      
        # Optional. Environment variables where the value is a secret in Cloud Secret
        # Manager. To use this feature, add 'Secret Manager Secret Accessor' role (roles/
        # secretmanager.secretAccessor) to AI Platform Reasoning Engine Service Agent.
        # Corresponds to the JSON property `secretEnv`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SecretEnvVar>]
        attr_accessor :secret_env
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @container_concurrency = args[:container_concurrency] if args.key?(:container_concurrency)
          @env = args[:env] if args.key?(:env)
          @max_instances = args[:max_instances] if args.key?(:max_instances)
          @min_instances = args[:min_instances] if args.key?(:min_instances)
          @psc_interface_config = args[:psc_interface_config] if args.key?(:psc_interface_config)
          @resource_limits = args[:resource_limits] if args.key?(:resource_limits)
          @secret_env = args[:secret_env] if args.key?(:secret_env)
        end
      end
      
      # User-provided package specification, containing pickled object and package
      # requirements.
      class GoogleCloudAiplatformV1ReasoningEngineSpecPackageSpec
        include Google::Apis::Core::Hashable
      
        # Optional. The Cloud Storage URI of the dependency files in tar.gz format.
        # Corresponds to the JSON property `dependencyFilesGcsUri`
        # @return [String]
        attr_accessor :dependency_files_gcs_uri
      
        # Optional. The Cloud Storage URI of the pickled python object.
        # Corresponds to the JSON property `pickleObjectGcsUri`
        # @return [String]
        attr_accessor :pickle_object_gcs_uri
      
        # Optional. The Python version. Currently support 3.8, 3.9, 3.10, 3.11. If not
        # specified, default value is 3.10.
        # Corresponds to the JSON property `pythonVersion`
        # @return [String]
        attr_accessor :python_version
      
        # Optional. The Cloud Storage URI of the `requirements.txt` file
        # Corresponds to the JSON property `requirementsGcsUri`
        # @return [String]
        attr_accessor :requirements_gcs_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @dependency_files_gcs_uri = args[:dependency_files_gcs_uri] if args.key?(:dependency_files_gcs_uri)
          @pickle_object_gcs_uri = args[:pickle_object_gcs_uri] if args.key?(:pickle_object_gcs_uri)
          @python_version = args[:python_version] if args.key?(:python_version)
          @requirements_gcs_uri = args[:requirements_gcs_uri] if args.key?(:requirements_gcs_uri)
        end
      end
      
      # Request message for GenAiTuningService.RebaseTunedModel.
      class GoogleCloudAiplatformV1RebaseTunedModelRequest
        include Google::Apis::Core::Hashable
      
        # The Google Cloud Storage location where the output is to be written to.
        # Corresponds to the JSON property `artifactDestination`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GcsDestination]
        attr_accessor :artifact_destination
      
        # Optional. By default, bison to gemini migration will always create new model/
        # endpoint, but for gemini-1.0 to gemini-1.5 migration, we default deploy to the
        # same endpoint. See details in this Section.
        # Corresponds to the JSON property `deployToSameEndpoint`
        # @return [Boolean]
        attr_accessor :deploy_to_same_endpoint
        alias_method :deploy_to_same_endpoint?, :deploy_to_same_endpoint
      
        # TunedModel Reference for legacy model migration.
        # Corresponds to the JSON property `tunedModelRef`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TunedModelRef]
        attr_accessor :tuned_model_ref
      
        # Represents a TuningJob that runs with Google owned models.
        # Corresponds to the JSON property `tuningJob`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TuningJob]
        attr_accessor :tuning_job
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @artifact_destination = args[:artifact_destination] if args.key?(:artifact_destination)
          @deploy_to_same_endpoint = args[:deploy_to_same_endpoint] if args.key?(:deploy_to_same_endpoint)
          @tuned_model_ref = args[:tuned_model_ref] if args.key?(:tuned_model_ref)
          @tuning_job = args[:tuning_job] if args.key?(:tuning_job)
        end
      end
      
      # Details of operations that perform reboot PersistentResource.
      class GoogleCloudAiplatformV1RebootPersistentResourceOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        # Progress Message for Reboot LRO
        # Corresponds to the JSON property `progressMessage`
        # @return [String]
        attr_accessor :progress_message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
          @progress_message = args[:progress_message] if args.key?(:progress_message)
        end
      end
      
      # Request message for PersistentResourceService.RebootPersistentResource.
      class GoogleCloudAiplatformV1RebootPersistentResourceRequest
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Request message for MetadataService.DeleteContextChildrenRequest.
      class GoogleCloudAiplatformV1RemoveContextChildrenRequest
        include Google::Apis::Core::Hashable
      
        # The resource names of the child Contexts.
        # Corresponds to the JSON property `childContexts`
        # @return [Array<String>]
        attr_accessor :child_contexts
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @child_contexts = args[:child_contexts] if args.key?(:child_contexts)
        end
      end
      
      # Response message for MetadataService.RemoveContextChildren.
      class GoogleCloudAiplatformV1RemoveContextChildrenResponse
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Request message for IndexService.RemoveDatapoints
      class GoogleCloudAiplatformV1RemoveDatapointsRequest
        include Google::Apis::Core::Hashable
      
        # A list of datapoint ids to be deleted.
        # Corresponds to the JSON property `datapointIds`
        # @return [Array<String>]
        attr_accessor :datapoint_ids
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @datapoint_ids = args[:datapoint_ids] if args.key?(:datapoint_ids)
        end
      end
      
      # Response message for IndexService.RemoveDatapoints
      class GoogleCloudAiplatformV1RemoveDatapointsResponse
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # A ReservationAffinity can be used to configure a Vertex AI resource (e.g., a
      # DeployedModel) to draw its Compute Engine resources from a Shared Reservation,
      # or exclusively from on-demand capacity.
      class GoogleCloudAiplatformV1ReservationAffinity
        include Google::Apis::Core::Hashable
      
        # Optional. Corresponds to the label key of a reservation resource. To target a
        # SPECIFIC_RESERVATION by name, use `compute.googleapis.com/reservation-name` as
        # the key and specify the name of your reservation as its value.
        # Corresponds to the JSON property `key`
        # @return [String]
        attr_accessor :key
      
        # Required. Specifies the reservation affinity type.
        # Corresponds to the JSON property `reservationAffinityType`
        # @return [String]
        attr_accessor :reservation_affinity_type
      
        # Optional. Corresponds to the label values of a reservation resource. This must
        # be the full resource name of the reservation or reservation block.
        # Corresponds to the JSON property `values`
        # @return [Array<String>]
        attr_accessor :values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @key = args[:key] if args.key?(:key)
          @reservation_affinity_type = args[:reservation_affinity_type] if args.key?(:reservation_affinity_type)
          @values = args[:values] if args.key?(:values)
        end
      end
      
      # Represents the spec of a group of resources of the same type, for example
      # machine type, disk, and accelerators, in a PersistentResource.
      class GoogleCloudAiplatformV1ResourcePool
        include Google::Apis::Core::Hashable
      
        # The min/max number of replicas allowed if enabling autoscaling
        # Corresponds to the JSON property `autoscalingSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ResourcePoolAutoscalingSpec]
        attr_accessor :autoscaling_spec
      
        # Represents the spec of disk options.
        # Corresponds to the JSON property `diskSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DiskSpec]
        attr_accessor :disk_spec
      
        # Immutable. The unique ID in a PersistentResource for referring to this
        # resource pool. User can specify it if necessary. Otherwise, it's generated
        # automatically.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        # Specification of a single machine.
        # Corresponds to the JSON property `machineSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1MachineSpec]
        attr_accessor :machine_spec
      
        # Optional. The total number of machines to use for this resource pool.
        # Corresponds to the JSON property `replicaCount`
        # @return [Fixnum]
        attr_accessor :replica_count
      
        # Output only. The number of machines currently in use by training jobs for this
        # resource pool. Will replace idle_replica_count.
        # Corresponds to the JSON property `usedReplicaCount`
        # @return [Fixnum]
        attr_accessor :used_replica_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @autoscaling_spec = args[:autoscaling_spec] if args.key?(:autoscaling_spec)
          @disk_spec = args[:disk_spec] if args.key?(:disk_spec)
          @id = args[:id] if args.key?(:id)
          @machine_spec = args[:machine_spec] if args.key?(:machine_spec)
          @replica_count = args[:replica_count] if args.key?(:replica_count)
          @used_replica_count = args[:used_replica_count] if args.key?(:used_replica_count)
        end
      end
      
      # The min/max number of replicas allowed if enabling autoscaling
      class GoogleCloudAiplatformV1ResourcePoolAutoscalingSpec
        include Google::Apis::Core::Hashable
      
        # Optional. max replicas in the node pool, must be ≥ replica_count and >
        # min_replica_count or will throw error
        # Corresponds to the JSON property `maxReplicaCount`
        # @return [Fixnum]
        attr_accessor :max_replica_count
      
        # Optional. min replicas in the node pool, must be ≤ replica_count and <
        # max_replica_count or will throw error. For autoscaling enabled Ray-on-Vertex,
        # we allow min_replica_count of a resource_pool to be 0 to match the OSS Ray
        # behavior(https://docs.ray.io/en/latest/cluster/vms/user-guides/configuring-
        # autoscaling.html#cluster-config-parameters). As for Persistent Resource, the
        # min_replica_count must be > 0, we added a corresponding validation inside
        # CreatePersistentResourceRequestValidator.java.
        # Corresponds to the JSON property `minReplicaCount`
        # @return [Fixnum]
        attr_accessor :min_replica_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @max_replica_count = args[:max_replica_count] if args.key?(:max_replica_count)
          @min_replica_count = args[:min_replica_count] if args.key?(:min_replica_count)
        end
      end
      
      # Persistent Cluster runtime information as output
      class GoogleCloudAiplatformV1ResourceRuntime
        include Google::Apis::Core::Hashable
      
        # Output only. URIs for user to connect to the Cluster. Example: ` "
        # RAY_HEAD_NODE_INTERNAL_IP": "head-node-IP:10001" "RAY_DASHBOARD_URI": "ray-
        # dashboard-address:8888" `
        # Corresponds to the JSON property `accessUris`
        # @return [Hash<String,String>]
        attr_accessor :access_uris
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @access_uris = args[:access_uris] if args.key?(:access_uris)
        end
      end
      
      # Configuration for the runtime on a PersistentResource instance, including but
      # not limited to: * Service accounts used to run the workloads. * Whether to
      # make it a dedicated Ray Cluster.
      class GoogleCloudAiplatformV1ResourceRuntimeSpec
        include Google::Apis::Core::Hashable
      
        # Configuration information for the Ray cluster. For experimental launch, Ray
        # cluster creation and Persistent cluster creation are 1:1 mapping: We will
        # provision all the nodes within the Persistent cluster as Ray nodes.
        # Corresponds to the JSON property `raySpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RaySpec]
        attr_accessor :ray_spec
      
        # Configuration for the use of custom service account to run the workloads.
        # Corresponds to the JSON property `serviceAccountSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ServiceAccountSpec]
        attr_accessor :service_account_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @ray_spec = args[:ray_spec] if args.key?(:ray_spec)
          @service_account_spec = args[:service_account_spec] if args.key?(:service_account_spec)
        end
      end
      
      # Statistics information about resource consumption.
      class GoogleCloudAiplatformV1ResourcesConsumed
        include Google::Apis::Core::Hashable
      
        # Output only. The number of replica hours used. Note that many replicas may run
        # in parallel, and additionally any given work may be queued for some time.
        # Therefore this value is not strictly related to wall time.
        # Corresponds to the JSON property `replicaHours`
        # @return [Float]
        attr_accessor :replica_hours
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @replica_hours = args[:replica_hours] if args.key?(:replica_hours)
        end
      end
      
      # Runtime operation information for DatasetService.RestoreDatasetVersion.
      class GoogleCloudAiplatformV1RestoreDatasetVersionOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Request message for JobService.ResumeModelDeploymentMonitoringJob.
      class GoogleCloudAiplatformV1ResumeModelDeploymentMonitoringJobRequest
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Request message for ScheduleService.ResumeSchedule.
      class GoogleCloudAiplatformV1ResumeScheduleRequest
        include Google::Apis::Core::Hashable
      
        # Optional. Whether to backfill missed runs when the schedule is resumed from
        # PAUSED state. If set to true, all missed runs will be scheduled. New runs will
        # be scheduled after the backfill is complete. This will also update Schedule.
        # catch_up field. Default to false.
        # Corresponds to the JSON property `catchUp`
        # @return [Boolean]
        attr_accessor :catch_up
        alias_method :catch_up?, :catch_up
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @catch_up = args[:catch_up] if args.key?(:catch_up)
        end
      end
      
      # Defines a retrieval tool that model can call to access external knowledge.
      class GoogleCloudAiplatformV1Retrieval
        include Google::Apis::Core::Hashable
      
        # Optional. Deprecated. This option is no longer supported.
        # Corresponds to the JSON property `disableAttribution`
        # @return [Boolean]
        attr_accessor :disable_attribution
        alias_method :disable_attribution?, :disable_attribution
      
        # Retrieve from data source powered by external API for grounding. The external
        # API is not owned by Google, but need to follow the pre-defined API spec.
        # Corresponds to the JSON property `externalApi`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ExternalApi]
        attr_accessor :external_api
      
        # Retrieve from Vertex AI Search datastore or engine for grounding. datastore
        # and engine are mutually exclusive. See https://cloud.google.com/products/agent-
        # builder
        # Corresponds to the JSON property `vertexAiSearch`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1VertexAiSearch]
        attr_accessor :vertex_ai_search
      
        # Retrieve from Vertex RAG Store for grounding.
        # Corresponds to the JSON property `vertexRagStore`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1VertexRagStore]
        attr_accessor :vertex_rag_store
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @disable_attribution = args[:disable_attribution] if args.key?(:disable_attribution)
          @external_api = args[:external_api] if args.key?(:external_api)
          @vertex_ai_search = args[:vertex_ai_search] if args.key?(:vertex_ai_search)
          @vertex_rag_store = args[:vertex_rag_store] if args.key?(:vertex_rag_store)
        end
      end
      
      # Retrieval config.
      class GoogleCloudAiplatformV1RetrievalConfig
        include Google::Apis::Core::Hashable
      
        # The language code of the user.
        # Corresponds to the JSON property `languageCode`
        # @return [String]
        attr_accessor :language_code
      
        # An object that represents a latitude/longitude pair. This is expressed as a
        # pair of doubles to represent degrees latitude and degrees longitude. Unless
        # specified otherwise, this object must conform to the WGS84 standard. Values
        # must be within normalized ranges.
        # Corresponds to the JSON property `latLng`
        # @return [Google::Apis::AiplatformV1::GoogleTypeLatLng]
        attr_accessor :lat_lng
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @language_code = args[:language_code] if args.key?(:language_code)
          @lat_lng = args[:lat_lng] if args.key?(:lat_lng)
        end
      end
      
      # Metadata related to retrieval in the grounding flow.
      class GoogleCloudAiplatformV1RetrievalMetadata
        include Google::Apis::Core::Hashable
      
        # Optional. Score indicating how likely information from Google Search could
        # help answer the prompt. The score is in the range `[0, 1]`, where 0 is the
        # least likely and 1 is the most likely. This score is only populated when
        # Google Search grounding and dynamic retrieval is enabled. It will be compared
        # to the threshold to determine whether to trigger Google Search.
        # Corresponds to the JSON property `googleSearchDynamicRetrievalScore`
        # @return [Float]
        attr_accessor :google_search_dynamic_retrieval_score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @google_search_dynamic_retrieval_score = args[:google_search_dynamic_retrieval_score] if args.key?(:google_search_dynamic_retrieval_score)
        end
      end
      
      # Request message for VertexRagService.RetrieveContexts.
      class GoogleCloudAiplatformV1RetrieveContextsRequest
        include Google::Apis::Core::Hashable
      
        # A query to retrieve relevant contexts.
        # Corresponds to the JSON property `query`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagQuery]
        attr_accessor :query
      
        # The data source for Vertex RagStore.
        # Corresponds to the JSON property `vertexRagStore`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RetrieveContextsRequestVertexRagStore]
        attr_accessor :vertex_rag_store
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @query = args[:query] if args.key?(:query)
          @vertex_rag_store = args[:vertex_rag_store] if args.key?(:vertex_rag_store)
        end
      end
      
      # The data source for Vertex RagStore.
      class GoogleCloudAiplatformV1RetrieveContextsRequestVertexRagStore
        include Google::Apis::Core::Hashable
      
        # Optional. The representation of the rag source. It can be used to specify
        # corpus only or ragfiles. Currently only support one corpus or multiple files
        # from one corpus. In the future we may open up multiple corpora support.
        # Corresponds to the JSON property `ragResources`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RetrieveContextsRequestVertexRagStoreRagResource>]
        attr_accessor :rag_resources
      
        # Optional. Only return contexts with vector distance smaller than the threshold.
        # Corresponds to the JSON property `vectorDistanceThreshold`
        # @return [Float]
        attr_accessor :vector_distance_threshold
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @rag_resources = args[:rag_resources] if args.key?(:rag_resources)
          @vector_distance_threshold = args[:vector_distance_threshold] if args.key?(:vector_distance_threshold)
        end
      end
      
      # The definition of the Rag resource.
      class GoogleCloudAiplatformV1RetrieveContextsRequestVertexRagStoreRagResource
        include Google::Apis::Core::Hashable
      
        # Optional. RagCorpora resource name. Format: `projects/`project`/locations/`
        # location`/ragCorpora/`rag_corpus``
        # Corresponds to the JSON property `ragCorpus`
        # @return [String]
        attr_accessor :rag_corpus
      
        # Optional. rag_file_id. The files should be in the same rag_corpus set in
        # rag_corpus field.
        # Corresponds to the JSON property `ragFileIds`
        # @return [Array<String>]
        attr_accessor :rag_file_ids
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @rag_corpus = args[:rag_corpus] if args.key?(:rag_corpus)
          @rag_file_ids = args[:rag_file_ids] if args.key?(:rag_file_ids)
        end
      end
      
      # Response message for VertexRagService.RetrieveContexts.
      class GoogleCloudAiplatformV1RetrieveContextsResponse
        include Google::Apis::Core::Hashable
      
        # Relevant contexts for one query.
        # Corresponds to the JSON property `contexts`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagContexts]
        attr_accessor :contexts
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @contexts = args[:contexts] if args.key?(:contexts)
        end
      end
      
      # Input for rouge metric.
      class GoogleCloudAiplatformV1RougeInput
        include Google::Apis::Core::Hashable
      
        # Required. Repeated rouge instances.
        # Corresponds to the JSON property `instances`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RougeInstance>]
        attr_accessor :instances
      
        # Spec for rouge score metric - calculates the recall of n-grams in prediction
        # as compared to reference - returns a score ranging between 0 and 1.
        # Corresponds to the JSON property `metricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RougeSpec]
        attr_accessor :metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instances = args[:instances] if args.key?(:instances)
          @metric_spec = args[:metric_spec] if args.key?(:metric_spec)
        end
      end
      
      # Spec for rouge instance.
      class GoogleCloudAiplatformV1RougeInstance
        include Google::Apis::Core::Hashable
      
        # Required. Output of the evaluated model.
        # Corresponds to the JSON property `prediction`
        # @return [String]
        attr_accessor :prediction
      
        # Required. Ground truth used to compare against the prediction.
        # Corresponds to the JSON property `reference`
        # @return [String]
        attr_accessor :reference
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @prediction = args[:prediction] if args.key?(:prediction)
          @reference = args[:reference] if args.key?(:reference)
        end
      end
      
      # Rouge metric value for an instance.
      class GoogleCloudAiplatformV1RougeMetricValue
        include Google::Apis::Core::Hashable
      
        # Output only. Rouge score.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # Results for rouge metric.
      class GoogleCloudAiplatformV1RougeResults
        include Google::Apis::Core::Hashable
      
        # Output only. Rouge metric values.
        # Corresponds to the JSON property `rougeMetricValues`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RougeMetricValue>]
        attr_accessor :rouge_metric_values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @rouge_metric_values = args[:rouge_metric_values] if args.key?(:rouge_metric_values)
        end
      end
      
      # Spec for rouge score metric - calculates the recall of n-grams in prediction
      # as compared to reference - returns a score ranging between 0 and 1.
      class GoogleCloudAiplatformV1RougeSpec
        include Google::Apis::Core::Hashable
      
        # Optional. Supported rouge types are rougen[1-9], rougeL, and rougeLsum.
        # Corresponds to the JSON property `rougeType`
        # @return [String]
        attr_accessor :rouge_type
      
        # Optional. Whether to split summaries while using rougeLsum.
        # Corresponds to the JSON property `splitSummaries`
        # @return [Boolean]
        attr_accessor :split_summaries
        alias_method :split_summaries?, :split_summaries
      
        # Optional. Whether to use stemmer to compute rouge score.
        # Corresponds to the JSON property `useStemmer`
        # @return [Boolean]
        attr_accessor :use_stemmer
        alias_method :use_stemmer?, :use_stemmer
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @rouge_type = args[:rouge_type] if args.key?(:rouge_type)
          @split_summaries = args[:split_summaries] if args.key?(:split_summaries)
          @use_stemmer = args[:use_stemmer] if args.key?(:use_stemmer)
        end
      end
      
      # Message representing a single testable criterion for evaluation. One input
      # prompt could have multiple rubrics.
      class GoogleCloudAiplatformV1Rubric
        include Google::Apis::Core::Hashable
      
        # Content of the rubric, defining the testable criteria.
        # Corresponds to the JSON property `content`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RubricContent]
        attr_accessor :content
      
        # Optional. The relative importance of this rubric.
        # Corresponds to the JSON property `importance`
        # @return [String]
        attr_accessor :importance
      
        # Unique identifier for the rubric. This ID is used to refer to this rubric, e.g.
        # , in RubricVerdict.
        # Corresponds to the JSON property `rubricId`
        # @return [String]
        attr_accessor :rubric_id
      
        # Optional. A type designator for the rubric, which can inform how it's
        # evaluated or interpreted by systems or users. It's recommended to use
        # consistent, well-defined, upper snake_case strings. Examples: "
        # SUMMARIZATION_QUALITY", "SAFETY_HARMFUL_CONTENT", "INSTRUCTION_ADHERENCE".
        # Corresponds to the JSON property `type`
        # @return [String]
        attr_accessor :type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content = args[:content] if args.key?(:content)
          @importance = args[:importance] if args.key?(:importance)
          @rubric_id = args[:rubric_id] if args.key?(:rubric_id)
          @type = args[:type] if args.key?(:type)
        end
      end
      
      # Instance and metric spec for RubricBasedInstructionFollowing metric.
      class GoogleCloudAiplatformV1RubricBasedInstructionFollowingInput
        include Google::Apis::Core::Hashable
      
        # Instance for RubricBasedInstructionFollowing metric - one instance corresponds
        # to one row in an evaluation dataset.
        # Corresponds to the JSON property `instance`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RubricBasedInstructionFollowingInstance]
        attr_accessor :instance
      
        # Spec for RubricBasedInstructionFollowing metric - returns rubrics and verdicts
        # corresponding to rubrics along with overall score.
        # Corresponds to the JSON property `metricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RubricBasedInstructionFollowingSpec]
        attr_accessor :metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instance = args[:instance] if args.key?(:instance)
          @metric_spec = args[:metric_spec] if args.key?(:metric_spec)
        end
      end
      
      # Instance for RubricBasedInstructionFollowing metric - one instance corresponds
      # to one row in an evaluation dataset.
      class GoogleCloudAiplatformV1RubricBasedInstructionFollowingInstance
        include Google::Apis::Core::Hashable
      
        # Required. Instance specified as a json string. String key-value pairs are
        # expected in the json_instance to render RubricBasedInstructionFollowing prompt
        # templates.
        # Corresponds to the JSON property `jsonInstance`
        # @return [String]
        attr_accessor :json_instance
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @json_instance = args[:json_instance] if args.key?(:json_instance)
        end
      end
      
      # Result for RubricBasedInstructionFollowing metric.
      class GoogleCloudAiplatformV1RubricBasedInstructionFollowingResult
        include Google::Apis::Core::Hashable
      
        # Output only. List of per rubric critique results.
        # Corresponds to the JSON property `rubricCritiqueResults`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RubricCritiqueResult>]
        attr_accessor :rubric_critique_results
      
        # Output only. Overall score for the instruction following.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @rubric_critique_results = args[:rubric_critique_results] if args.key?(:rubric_critique_results)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # Spec for RubricBasedInstructionFollowing metric - returns rubrics and verdicts
      # corresponding to rubrics along with overall score.
      class GoogleCloudAiplatformV1RubricBasedInstructionFollowingSpec
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Content of the rubric, defining the testable criteria.
      class GoogleCloudAiplatformV1RubricContent
        include Google::Apis::Core::Hashable
      
        # Defines criteria based on a specific property.
        # Corresponds to the JSON property `property`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RubricContentProperty]
        attr_accessor :property
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @property = args[:property] if args.key?(:property)
        end
      end
      
      # Defines criteria based on a specific property.
      class GoogleCloudAiplatformV1RubricContentProperty
        include Google::Apis::Core::Hashable
      
        # Description of the property being evaluated. Example: "The model's response is
        # grammatically correct."
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @description = args[:description] if args.key?(:description)
        end
      end
      
      # Rubric critique result.
      class GoogleCloudAiplatformV1RubricCritiqueResult
        include Google::Apis::Core::Hashable
      
        # Output only. Rubric to be evaluated.
        # Corresponds to the JSON property `rubric`
        # @return [String]
        attr_accessor :rubric
      
        # Output only. Verdict for the rubric - true if the rubric is met, false
        # otherwise.
        # Corresponds to the JSON property `verdict`
        # @return [Boolean]
        attr_accessor :verdict
        alias_method :verdict?, :verdict
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @rubric = args[:rubric] if args.key?(:rubric)
          @verdict = args[:verdict] if args.key?(:verdict)
        end
      end
      
      # Specification for how rubrics should be generated.
      class GoogleCloudAiplatformV1RubricGenerationSpec
        include Google::Apis::Core::Hashable
      
        # The configs for autorater. This is applicable to both EvaluateInstances and
        # EvaluateDataset.
        # Corresponds to the JSON property `modelConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1AutoraterConfig]
        attr_accessor :model_config
      
        # Template for the prompt used to generate rubrics. The details should be
        # updated based on the most-recent recipe requirements.
        # Corresponds to the JSON property `promptTemplate`
        # @return [String]
        attr_accessor :prompt_template
      
        # The type of rubric content to be generated.
        # Corresponds to the JSON property `rubricContentType`
        # @return [String]
        attr_accessor :rubric_content_type
      
        # Optional. An optional, pre-defined list of allowed types for generated rubrics.
        # If this field is provided, it implies `include_rubric_type` should be true,
        # and the generated rubric types should be chosen from this ontology.
        # Corresponds to the JSON property `rubricTypeOntology`
        # @return [Array<String>]
        attr_accessor :rubric_type_ontology
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @model_config = args[:model_config] if args.key?(:model_config)
          @prompt_template = args[:prompt_template] if args.key?(:prompt_template)
          @rubric_content_type = args[:rubric_content_type] if args.key?(:rubric_content_type)
          @rubric_type_ontology = args[:rubric_type_ontology] if args.key?(:rubric_type_ontology)
        end
      end
      
      # A group of rubrics, used for grouping rubrics based on a metric or a version.
      class GoogleCloudAiplatformV1RubricGroup
        include Google::Apis::Core::Hashable
      
        # Human-readable name for the group. This should be unique within a given
        # context if used for display or selection. Example: "Instruction Following V1",
        # "Content Quality - Summarization Task".
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Unique identifier for the group.
        # Corresponds to the JSON property `groupId`
        # @return [String]
        attr_accessor :group_id
      
        # Rubrics that are part of this group.
        # Corresponds to the JSON property `rubrics`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Rubric>]
        attr_accessor :rubrics
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @display_name = args[:display_name] if args.key?(:display_name)
          @group_id = args[:group_id] if args.key?(:group_id)
          @rubrics = args[:rubrics] if args.key?(:rubrics)
        end
      end
      
      # Represents the verdict of an evaluation against a single rubric.
      class GoogleCloudAiplatformV1RubricVerdict
        include Google::Apis::Core::Hashable
      
        # Message representing a single testable criterion for evaluation. One input
        # prompt could have multiple rubrics.
        # Corresponds to the JSON property `evaluatedRubric`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Rubric]
        attr_accessor :evaluated_rubric
      
        # Optional. Human-readable reasoning or explanation for the verdict. This can
        # include specific examples or details from the evaluated content that justify
        # the given verdict.
        # Corresponds to the JSON property `reasoning`
        # @return [String]
        attr_accessor :reasoning
      
        # Required. Outcome of the evaluation against the rubric, represented as a
        # boolean. `true` indicates a "Pass", `false` indicates a "Fail".
        # Corresponds to the JSON property `verdict`
        # @return [Boolean]
        attr_accessor :verdict
        alias_method :verdict?, :verdict
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @evaluated_rubric = args[:evaluated_rubric] if args.key?(:evaluated_rubric)
          @reasoning = args[:reasoning] if args.key?(:reasoning)
          @verdict = args[:verdict] if args.key?(:verdict)
        end
      end
      
      # Input for safety metric.
      class GoogleCloudAiplatformV1SafetyInput
        include Google::Apis::Core::Hashable
      
        # Spec for safety instance.
        # Corresponds to the JSON property `instance`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SafetyInstance]
        attr_accessor :instance
      
        # Spec for safety metric.
        # Corresponds to the JSON property `metricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SafetySpec]
        attr_accessor :metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instance = args[:instance] if args.key?(:instance)
          @metric_spec = args[:metric_spec] if args.key?(:metric_spec)
        end
      end
      
      # Spec for safety instance.
      class GoogleCloudAiplatformV1SafetyInstance
        include Google::Apis::Core::Hashable
      
        # Required. Output of the evaluated model.
        # Corresponds to the JSON property `prediction`
        # @return [String]
        attr_accessor :prediction
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @prediction = args[:prediction] if args.key?(:prediction)
        end
      end
      
      # Safety rating corresponding to the generated content.
      class GoogleCloudAiplatformV1SafetyRating
        include Google::Apis::Core::Hashable
      
        # Output only. Indicates whether the content was filtered out because of this
        # rating.
        # Corresponds to the JSON property `blocked`
        # @return [Boolean]
        attr_accessor :blocked
        alias_method :blocked?, :blocked
      
        # Output only. Harm category.
        # Corresponds to the JSON property `category`
        # @return [String]
        attr_accessor :category
      
        # Output only. The overwritten threshold for the safety category of Gemini 2.0
        # image out. If minors are detected in the output image, the threshold of each
        # safety category will be overwritten if user sets a lower threshold.
        # Corresponds to the JSON property `overwrittenThreshold`
        # @return [String]
        attr_accessor :overwritten_threshold
      
        # Output only. Harm probability levels in the content.
        # Corresponds to the JSON property `probability`
        # @return [String]
        attr_accessor :probability
      
        # Output only. Harm probability score.
        # Corresponds to the JSON property `probabilityScore`
        # @return [Float]
        attr_accessor :probability_score
      
        # Output only. Harm severity levels in the content.
        # Corresponds to the JSON property `severity`
        # @return [String]
        attr_accessor :severity
      
        # Output only. Harm severity score.
        # Corresponds to the JSON property `severityScore`
        # @return [Float]
        attr_accessor :severity_score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @blocked = args[:blocked] if args.key?(:blocked)
          @category = args[:category] if args.key?(:category)
          @overwritten_threshold = args[:overwritten_threshold] if args.key?(:overwritten_threshold)
          @probability = args[:probability] if args.key?(:probability)
          @probability_score = args[:probability_score] if args.key?(:probability_score)
          @severity = args[:severity] if args.key?(:severity)
          @severity_score = args[:severity_score] if args.key?(:severity_score)
        end
      end
      
      # Spec for safety result.
      class GoogleCloudAiplatformV1SafetyResult
        include Google::Apis::Core::Hashable
      
        # Output only. Confidence for safety score.
        # Corresponds to the JSON property `confidence`
        # @return [Float]
        attr_accessor :confidence
      
        # Output only. Explanation for safety score.
        # Corresponds to the JSON property `explanation`
        # @return [String]
        attr_accessor :explanation
      
        # Output only. Safety score.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence = args[:confidence] if args.key?(:confidence)
          @explanation = args[:explanation] if args.key?(:explanation)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # Safety settings.
      class GoogleCloudAiplatformV1SafetySetting
        include Google::Apis::Core::Hashable
      
        # Required. Harm category.
        # Corresponds to the JSON property `category`
        # @return [String]
        attr_accessor :category
      
        # Optional. Specify if the threshold is used for probability or severity score.
        # If not specified, the threshold is used for probability score.
        # Corresponds to the JSON property `method`
        # @return [String]
        attr_accessor :method_prop
      
        # Required. The harm block threshold.
        # Corresponds to the JSON property `threshold`
        # @return [String]
        attr_accessor :threshold
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @category = args[:category] if args.key?(:category)
          @method_prop = args[:method_prop] if args.key?(:method_prop)
          @threshold = args[:threshold] if args.key?(:threshold)
        end
      end
      
      # Spec for safety metric.
      class GoogleCloudAiplatformV1SafetySpec
        include Google::Apis::Core::Hashable
      
        # Optional. Which version to use for evaluation.
        # Corresponds to the JSON property `version`
        # @return [Fixnum]
        attr_accessor :version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @version = args[:version] if args.key?(:version)
        end
      end
      
      # Active learning data sampling config. For every active learning labeling
      # iteration, it will select a batch of data based on the sampling strategy.
      class GoogleCloudAiplatformV1SampleConfig
        include Google::Apis::Core::Hashable
      
        # The percentage of data needed to be labeled in each following batch (except
        # the first batch).
        # Corresponds to the JSON property `followingBatchSamplePercentage`
        # @return [Fixnum]
        attr_accessor :following_batch_sample_percentage
      
        # The percentage of data needed to be labeled in the first batch.
        # Corresponds to the JSON property `initialBatchSamplePercentage`
        # @return [Fixnum]
        attr_accessor :initial_batch_sample_percentage
      
        # Field to choose sampling strategy. Sampling strategy will decide which data
        # should be selected for human labeling in every batch.
        # Corresponds to the JSON property `sampleStrategy`
        # @return [String]
        attr_accessor :sample_strategy
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @following_batch_sample_percentage = args[:following_batch_sample_percentage] if args.key?(:following_batch_sample_percentage)
          @initial_batch_sample_percentage = args[:initial_batch_sample_percentage] if args.key?(:initial_batch_sample_percentage)
          @sample_strategy = args[:sample_strategy] if args.key?(:sample_strategy)
        end
      end
      
      # An attribution method that approximates Shapley values for features that
      # contribute to the label being predicted. A sampling strategy is used to
      # approximate the value rather than considering all subsets of features.
      class GoogleCloudAiplatformV1SampledShapleyAttribution
        include Google::Apis::Core::Hashable
      
        # Required. The number of feature permutations to consider when approximating
        # the Shapley values. Valid range of its value is [1, 50], inclusively.
        # Corresponds to the JSON property `pathCount`
        # @return [Fixnum]
        attr_accessor :path_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @path_count = args[:path_count] if args.key?(:path_count)
        end
      end
      
      # Sampling Strategy for logging, can be for both training and prediction dataset.
      class GoogleCloudAiplatformV1SamplingStrategy
        include Google::Apis::Core::Hashable
      
        # Requests are randomly selected.
        # Corresponds to the JSON property `randomSampleConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SamplingStrategyRandomSampleConfig]
        attr_accessor :random_sample_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @random_sample_config = args[:random_sample_config] if args.key?(:random_sample_config)
        end
      end
      
      # Requests are randomly selected.
      class GoogleCloudAiplatformV1SamplingStrategyRandomSampleConfig
        include Google::Apis::Core::Hashable
      
        # Sample rate (0, 1]
        # Corresponds to the JSON property `sampleRate`
        # @return [Float]
        attr_accessor :sample_rate
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @sample_rate = args[:sample_rate] if args.key?(:sample_rate)
        end
      end
      
      # A SavedQuery is a view of the dataset. It references a subset of annotations
      # by problem type and filters.
      class GoogleCloudAiplatformV1SavedQuery
        include Google::Apis::Core::Hashable
      
        # Output only. Filters on the Annotations in the dataset.
        # Corresponds to the JSON property `annotationFilter`
        # @return [String]
        attr_accessor :annotation_filter
      
        # Output only. Number of AnnotationSpecs in the context of the SavedQuery.
        # Corresponds to the JSON property `annotationSpecCount`
        # @return [Fixnum]
        attr_accessor :annotation_spec_count
      
        # Output only. Timestamp when this SavedQuery was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Required. The user-defined name of the SavedQuery. The name can be up to 128
        # characters long and can consist of any UTF-8 characters.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Used to perform a consistent read-modify-write update. If not set, a blind "
        # overwrite" update happens.
        # Corresponds to the JSON property `etag`
        # @return [String]
        attr_accessor :etag
      
        # Some additional information about the SavedQuery.
        # Corresponds to the JSON property `metadata`
        # @return [Object]
        attr_accessor :metadata
      
        # Output only. Resource name of the SavedQuery.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Required. Problem type of the SavedQuery. Allowed values: *
        # IMAGE_CLASSIFICATION_SINGLE_LABEL * IMAGE_CLASSIFICATION_MULTI_LABEL *
        # IMAGE_BOUNDING_POLY * IMAGE_BOUNDING_BOX * TEXT_CLASSIFICATION_SINGLE_LABEL *
        # TEXT_CLASSIFICATION_MULTI_LABEL * TEXT_EXTRACTION * TEXT_SENTIMENT *
        # VIDEO_CLASSIFICATION * VIDEO_OBJECT_TRACKING
        # Corresponds to the JSON property `problemType`
        # @return [String]
        attr_accessor :problem_type
      
        # Output only. If the Annotations belonging to the SavedQuery can be used for
        # AutoML training.
        # Corresponds to the JSON property `supportAutomlTraining`
        # @return [Boolean]
        attr_accessor :support_automl_training
        alias_method :support_automl_training?, :support_automl_training
      
        # Output only. Timestamp when SavedQuery was last updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @annotation_filter = args[:annotation_filter] if args.key?(:annotation_filter)
          @annotation_spec_count = args[:annotation_spec_count] if args.key?(:annotation_spec_count)
          @create_time = args[:create_time] if args.key?(:create_time)
          @display_name = args[:display_name] if args.key?(:display_name)
          @etag = args[:etag] if args.key?(:etag)
          @metadata = args[:metadata] if args.key?(:metadata)
          @name = args[:name] if args.key?(:name)
          @problem_type = args[:problem_type] if args.key?(:problem_type)
          @support_automl_training = args[:support_automl_training] if args.key?(:support_automl_training)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # One point viewable on a scalar metric plot.
      class GoogleCloudAiplatformV1Scalar
        include Google::Apis::Core::Hashable
      
        # Value of the point at this step / timestamp.
        # Corresponds to the JSON property `value`
        # @return [Float]
        attr_accessor :value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @value = args[:value] if args.key?(:value)
        end
      end
      
      # An instance of a Schedule periodically schedules runs to make API calls based
      # on user specified time specification and API request type.
      class GoogleCloudAiplatformV1Schedule
        include Google::Apis::Core::Hashable
      
        # Optional. Whether new scheduled runs can be queued when max_concurrent_runs
        # limit is reached. If set to true, new runs will be queued instead of skipped.
        # Default to false.
        # Corresponds to the JSON property `allowQueueing`
        # @return [Boolean]
        attr_accessor :allow_queueing
        alias_method :allow_queueing?, :allow_queueing
      
        # Output only. Whether to backfill missed runs when the schedule is resumed from
        # PAUSED state. If set to true, all missed runs will be scheduled. New runs will
        # be scheduled after the backfill is complete. Default to false.
        # Corresponds to the JSON property `catchUp`
        # @return [Boolean]
        attr_accessor :catch_up
        alias_method :catch_up?, :catch_up
      
        # Request message for [NotebookService.CreateNotebookExecutionJob]
        # Corresponds to the JSON property `createNotebookExecutionJobRequest`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CreateNotebookExecutionJobRequest]
        attr_accessor :create_notebook_execution_job_request
      
        # Request message for PipelineService.CreatePipelineJob.
        # Corresponds to the JSON property `createPipelineJobRequest`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CreatePipelineJobRequest]
        attr_accessor :create_pipeline_job_request
      
        # Output only. Timestamp when this Schedule was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Cron schedule (https://en.wikipedia.org/wiki/Cron) to launch scheduled runs.
        # To explicitly set a timezone to the cron tab, apply a prefix in the cron tab: "
        # CRON_TZ=$`IANA_TIME_ZONE`" or "TZ=$`IANA_TIME_ZONE`". The $`IANA_TIME_ZONE`
        # may only be a valid string from IANA time zone database. For example, "CRON_TZ=
        # America/New_York 1 * * * *", or "TZ=America/New_York 1 * * * *".
        # Corresponds to the JSON property `cron`
        # @return [String]
        attr_accessor :cron
      
        # Required. User provided name of the Schedule. The name can be up to 128
        # characters long and can consist of any UTF-8 characters.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Optional. Timestamp after which no new runs can be scheduled. If specified,
        # The schedule will be completed when either end_time is reached or when
        # scheduled_run_count >= max_run_count. If not specified, new runs will keep
        # getting scheduled until this Schedule is paused or deleted. Already scheduled
        # runs will be allowed to complete. Unset if not specified.
        # Corresponds to the JSON property `endTime`
        # @return [String]
        attr_accessor :end_time
      
        # Output only. Timestamp when this Schedule was last paused. Unset if never
        # paused.
        # Corresponds to the JSON property `lastPauseTime`
        # @return [String]
        attr_accessor :last_pause_time
      
        # Output only. Timestamp when this Schedule was last resumed. Unset if never
        # resumed from pause.
        # Corresponds to the JSON property `lastResumeTime`
        # @return [String]
        attr_accessor :last_resume_time
      
        # Status of a scheduled run.
        # Corresponds to the JSON property `lastScheduledRunResponse`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ScheduleRunResponse]
        attr_accessor :last_scheduled_run_response
      
        # Required. Maximum number of runs that can be started concurrently for this
        # Schedule. This is the limit for starting the scheduled requests and not the
        # execution of the operations/jobs created by the requests (if applicable).
        # Corresponds to the JSON property `maxConcurrentRunCount`
        # @return [Fixnum]
        attr_accessor :max_concurrent_run_count
      
        # Optional. Maximum run count of the schedule. If specified, The schedule will
        # be completed when either started_run_count >= max_run_count or when end_time
        # is reached. If not specified, new runs will keep getting scheduled until this
        # Schedule is paused or deleted. Already scheduled runs will be allowed to
        # complete. Unset if not specified.
        # Corresponds to the JSON property `maxRunCount`
        # @return [Fixnum]
        attr_accessor :max_run_count
      
        # Immutable. The resource name of the Schedule.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Output only. Timestamp when this Schedule should schedule the next run. Having
        # a next_run_time in the past means the runs are being started behind schedule.
        # Corresponds to the JSON property `nextRunTime`
        # @return [String]
        attr_accessor :next_run_time
      
        # Optional. Timestamp after which the first run can be scheduled. Default to
        # Schedule create time if not specified.
        # Corresponds to the JSON property `startTime`
        # @return [String]
        attr_accessor :start_time
      
        # Output only. The number of runs started by this schedule.
        # Corresponds to the JSON property `startedRunCount`
        # @return [Fixnum]
        attr_accessor :started_run_count
      
        # Output only. The state of this Schedule.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        # Output only. Timestamp when this Schedule was updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @allow_queueing = args[:allow_queueing] if args.key?(:allow_queueing)
          @catch_up = args[:catch_up] if args.key?(:catch_up)
          @create_notebook_execution_job_request = args[:create_notebook_execution_job_request] if args.key?(:create_notebook_execution_job_request)
          @create_pipeline_job_request = args[:create_pipeline_job_request] if args.key?(:create_pipeline_job_request)
          @create_time = args[:create_time] if args.key?(:create_time)
          @cron = args[:cron] if args.key?(:cron)
          @display_name = args[:display_name] if args.key?(:display_name)
          @end_time = args[:end_time] if args.key?(:end_time)
          @last_pause_time = args[:last_pause_time] if args.key?(:last_pause_time)
          @last_resume_time = args[:last_resume_time] if args.key?(:last_resume_time)
          @last_scheduled_run_response = args[:last_scheduled_run_response] if args.key?(:last_scheduled_run_response)
          @max_concurrent_run_count = args[:max_concurrent_run_count] if args.key?(:max_concurrent_run_count)
          @max_run_count = args[:max_run_count] if args.key?(:max_run_count)
          @name = args[:name] if args.key?(:name)
          @next_run_time = args[:next_run_time] if args.key?(:next_run_time)
          @start_time = args[:start_time] if args.key?(:start_time)
          @started_run_count = args[:started_run_count] if args.key?(:started_run_count)
          @state = args[:state] if args.key?(:state)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # Status of a scheduled run.
      class GoogleCloudAiplatformV1ScheduleRunResponse
        include Google::Apis::Core::Hashable
      
        # The response of the scheduled run.
        # Corresponds to the JSON property `runResponse`
        # @return [String]
        attr_accessor :run_response
      
        # The scheduled run time based on the user-specified schedule.
        # Corresponds to the JSON property `scheduledRunTime`
        # @return [String]
        attr_accessor :scheduled_run_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @run_response = args[:run_response] if args.key?(:run_response)
          @scheduled_run_time = args[:scheduled_run_time] if args.key?(:scheduled_run_time)
        end
      end
      
      # All parameters related to queuing and scheduling of custom jobs.
      class GoogleCloudAiplatformV1Scheduling
        include Google::Apis::Core::Hashable
      
        # Optional. Indicates if the job should retry for internal errors after the job
        # starts running. If true, overrides `Scheduling.restart_job_on_worker_restart`
        # to false.
        # Corresponds to the JSON property `disableRetries`
        # @return [Boolean]
        attr_accessor :disable_retries
        alias_method :disable_retries?, :disable_retries
      
        # Optional. This is the maximum duration that a job will wait for the requested
        # resources to be provisioned if the scheduling strategy is set to [Strategy.
        # DWS_FLEX_START]. If set to 0, the job will wait indefinitely. The default is
        # 24 hours.
        # Corresponds to the JSON property `maxWaitDuration`
        # @return [String]
        attr_accessor :max_wait_duration
      
        # Optional. Restarts the entire CustomJob if a worker gets restarted. This
        # feature can be used by distributed training jobs that are not resilient to
        # workers leaving and joining a job.
        # Corresponds to the JSON property `restartJobOnWorkerRestart`
        # @return [Boolean]
        attr_accessor :restart_job_on_worker_restart
        alias_method :restart_job_on_worker_restart?, :restart_job_on_worker_restart
      
        # Optional. This determines which type of scheduling strategy to use.
        # Corresponds to the JSON property `strategy`
        # @return [String]
        attr_accessor :strategy
      
        # Optional. The maximum job running time. The default is 7 days.
        # Corresponds to the JSON property `timeout`
        # @return [String]
        attr_accessor :timeout
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @disable_retries = args[:disable_retries] if args.key?(:disable_retries)
          @max_wait_duration = args[:max_wait_duration] if args.key?(:max_wait_duration)
          @restart_job_on_worker_restart = args[:restart_job_on_worker_restart] if args.key?(:restart_job_on_worker_restart)
          @strategy = args[:strategy] if args.key?(:strategy)
          @timeout = args[:timeout] if args.key?(:timeout)
        end
      end
      
      # Schema is used to define the format of input/output data. Represents a select
      # subset of an [OpenAPI 3.0 schema object](https://spec.openapis.org/oas/v3.0.3#
      # schema-object). More fields may be added in the future as needed.
      class GoogleCloudAiplatformV1Schema
        include Google::Apis::Core::Hashable
      
        # Optional. Can either be a boolean or an object; controls the presence of
        # additional properties.
        # Corresponds to the JSON property `additionalProperties`
        # @return [Object]
        attr_accessor :additional_properties
      
        # Optional. The value should be validated against any (one or more) of the
        # subschemas in the list.
        # Corresponds to the JSON property `anyOf`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Schema>]
        attr_accessor :any_of
      
        # Optional. Default value of the data.
        # Corresponds to the JSON property `default`
        # @return [Object]
        attr_accessor :default
      
        # Optional. A map of definitions for use by `ref` Only allowed at the root of
        # the schema.
        # Corresponds to the JSON property `defs`
        # @return [Hash<String,Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Schema>]
        attr_accessor :defs
      
        # Optional. The description of the data.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Optional. Possible values of the element of primitive type with enum format.
        # Examples: 1. We can define direction as : `type:STRING, format:enum, enum:["
        # EAST", NORTH", "SOUTH", "WEST"]` 2. We can define apartment number as : `type:
        # INTEGER, format:enum, enum:["101", "201", "301"]`
        # Corresponds to the JSON property `enum`
        # @return [Array<String>]
        attr_accessor :enum
      
        # Optional. Example of the object. Will only populated when the object is the
        # root.
        # Corresponds to the JSON property `example`
        # @return [Object]
        attr_accessor :example
      
        # Optional. The format of the data. Supported formats: for NUMBER type: "float",
        # "double" for INTEGER type: "int32", "int64" for STRING type: "email", "byte",
        # etc
        # Corresponds to the JSON property `format`
        # @return [String]
        attr_accessor :format
      
        # Schema is used to define the format of input/output data. Represents a select
        # subset of an [OpenAPI 3.0 schema object](https://spec.openapis.org/oas/v3.0.3#
        # schema-object). More fields may be added in the future as needed.
        # Corresponds to the JSON property `items`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Schema]
        attr_accessor :items
      
        # Optional. Maximum number of the elements for Type.ARRAY.
        # Corresponds to the JSON property `maxItems`
        # @return [Fixnum]
        attr_accessor :max_items
      
        # Optional. Maximum length of the Type.STRING
        # Corresponds to the JSON property `maxLength`
        # @return [Fixnum]
        attr_accessor :max_length
      
        # Optional. Maximum number of the properties for Type.OBJECT.
        # Corresponds to the JSON property `maxProperties`
        # @return [Fixnum]
        attr_accessor :max_properties
      
        # Optional. Maximum value of the Type.INTEGER and Type.NUMBER
        # Corresponds to the JSON property `maximum`
        # @return [Float]
        attr_accessor :maximum
      
        # Optional. Minimum number of the elements for Type.ARRAY.
        # Corresponds to the JSON property `minItems`
        # @return [Fixnum]
        attr_accessor :min_items
      
        # Optional. SCHEMA FIELDS FOR TYPE STRING Minimum length of the Type.STRING
        # Corresponds to the JSON property `minLength`
        # @return [Fixnum]
        attr_accessor :min_length
      
        # Optional. Minimum number of the properties for Type.OBJECT.
        # Corresponds to the JSON property `minProperties`
        # @return [Fixnum]
        attr_accessor :min_properties
      
        # Optional. SCHEMA FIELDS FOR TYPE INTEGER and NUMBER Minimum value of the Type.
        # INTEGER and Type.NUMBER
        # Corresponds to the JSON property `minimum`
        # @return [Float]
        attr_accessor :minimum
      
        # Optional. Indicates if the value may be null.
        # Corresponds to the JSON property `nullable`
        # @return [Boolean]
        attr_accessor :nullable
        alias_method :nullable?, :nullable
      
        # Optional. Pattern of the Type.STRING to restrict a string to a regular
        # expression.
        # Corresponds to the JSON property `pattern`
        # @return [String]
        attr_accessor :pattern
      
        # Optional. SCHEMA FIELDS FOR TYPE OBJECT Properties of Type.OBJECT.
        # Corresponds to the JSON property `properties`
        # @return [Hash<String,Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Schema>]
        attr_accessor :properties
      
        # Optional. The order of the properties. Not a standard field in open api spec.
        # Only used to support the order of the properties.
        # Corresponds to the JSON property `propertyOrdering`
        # @return [Array<String>]
        attr_accessor :property_ordering
      
        # Optional. Allows indirect references between schema nodes. The value should be
        # a valid reference to a child of the root `defs`. For example, the following
        # schema defines a reference to a schema node named "Pet": type: object
        # properties: pet: ref: #/defs/Pet defs: Pet: type: object properties: name:
        # type: string The value of the "pet" property is a reference to the schema node
        # named "Pet". See details in https://json-schema.org/understanding-json-schema/
        # structuring
        # Corresponds to the JSON property `ref`
        # @return [String]
        attr_accessor :ref
      
        # Optional. Required properties of Type.OBJECT.
        # Corresponds to the JSON property `required`
        # @return [Array<String>]
        attr_accessor :required
      
        # Optional. The title of the Schema.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        # Optional. The type of the data.
        # Corresponds to the JSON property `type`
        # @return [String]
        attr_accessor :type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @additional_properties = args[:additional_properties] if args.key?(:additional_properties)
          @any_of = args[:any_of] if args.key?(:any_of)
          @default = args[:default] if args.key?(:default)
          @defs = args[:defs] if args.key?(:defs)
          @description = args[:description] if args.key?(:description)
          @enum = args[:enum] if args.key?(:enum)
          @example = args[:example] if args.key?(:example)
          @format = args[:format] if args.key?(:format)
          @items = args[:items] if args.key?(:items)
          @max_items = args[:max_items] if args.key?(:max_items)
          @max_length = args[:max_length] if args.key?(:max_length)
          @max_properties = args[:max_properties] if args.key?(:max_properties)
          @maximum = args[:maximum] if args.key?(:maximum)
          @min_items = args[:min_items] if args.key?(:min_items)
          @min_length = args[:min_length] if args.key?(:min_length)
          @min_properties = args[:min_properties] if args.key?(:min_properties)
          @minimum = args[:minimum] if args.key?(:minimum)
          @nullable = args[:nullable] if args.key?(:nullable)
          @pattern = args[:pattern] if args.key?(:pattern)
          @properties = args[:properties] if args.key?(:properties)
          @property_ordering = args[:property_ordering] if args.key?(:property_ordering)
          @ref = args[:ref] if args.key?(:ref)
          @required = args[:required] if args.key?(:required)
          @title = args[:title] if args.key?(:title)
          @type = args[:type] if args.key?(:type)
        end
      end
      
      # An entry of mapping between color and AnnotationSpec. The mapping is used in
      # segmentation mask.
      class GoogleCloudAiplatformV1SchemaAnnotationSpecColor
        include Google::Apis::Core::Hashable
      
        # Represents a color in the RGBA color space. This representation is designed
        # for simplicity of conversion to and from color representations in various
        # languages over compactness. For example, the fields of this representation can
        # be trivially provided to the constructor of `java.awt.Color` in Java; it can
        # also be trivially provided to UIColor's `+colorWithRed:green:blue:alpha`
        # method in iOS; and, with just a little work, it can be easily formatted into a
        # CSS `rgba()` string in JavaScript. This reference page doesn't have
        # information about the absolute color space that should be used to interpret
        # the RGB value—for example, sRGB, Adobe RGB, DCI-P3, and BT.2020. By default,
        # applications should assume the sRGB color space. When color equality needs to
        # be decided, implementations, unless documented otherwise, treat two colors as
        # equal if all their red, green, blue, and alpha values each differ by at most `
        # 1e-5`. Example (Java): import com.google.type.Color; // ... public static java.
        # awt.Color fromProto(Color protocolor) ` float alpha = protocolor.hasAlpha() ?
        # protocolor.getAlpha().getValue() : 1.0; return new java.awt.Color( protocolor.
        # getRed(), protocolor.getGreen(), protocolor.getBlue(), alpha); ` public static
        # Color toProto(java.awt.Color color) ` float red = (float) color.getRed();
        # float green = (float) color.getGreen(); float blue = (float) color.getBlue();
        # float denominator = 255.0; Color.Builder resultBuilder = Color .newBuilder() .
        # setRed(red / denominator) .setGreen(green / denominator) .setBlue(blue /
        # denominator); int alpha = color.getAlpha(); if (alpha != 255) ` result.
        # setAlpha( FloatValue .newBuilder() .setValue(((float) alpha) / denominator) .
        # build()); ` return resultBuilder.build(); ` // ... Example (iOS / Obj-C): // ..
        # . static UIColor* fromProto(Color* protocolor) ` float red = [protocolor red];
        # float green = [protocolor green]; float blue = [protocolor blue]; FloatValue*
        # alpha_wrapper = [protocolor alpha]; float alpha = 1.0; if (alpha_wrapper !=
        # nil) ` alpha = [alpha_wrapper value]; ` return [UIColor colorWithRed:red green:
        # green blue:blue alpha:alpha]; ` static Color* toProto(UIColor* color) `
        # CGFloat red, green, blue, alpha; if (![color getRed:&red green:&green blue:&
        # blue alpha:&alpha]) ` return nil; ` Color* result = [[Color alloc] init]; [
        # result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha <
        # = 0.9999) ` [result setAlpha:floatWrapperWithValue(alpha)]; ` [result
        # autorelease]; return result; ` // ... Example (JavaScript): // ... var
        # protoToCssColor = function(rgb_color) ` var redFrac = rgb_color.red || 0.0;
        # var greenFrac = rgb_color.green || 0.0; var blueFrac = rgb_color.blue || 0.0;
        # var red = Math.floor(redFrac * 255); var green = Math.floor(greenFrac * 255);
        # var blue = Math.floor(blueFrac * 255); if (!('alpha' in rgb_color)) ` return
        # rgbToCssColor(red, green, blue); ` var alphaFrac = rgb_color.alpha.value || 0.
        # 0; var rgbParams = [red, green, blue].join(','); return ['rgba(', rgbParams, ',
        # ', alphaFrac, ')'].join(''); `; var rgbToCssColor = function(red, green, blue)
        # ` var rgbNumber = new Number((red << 16) | (green << 8) | blue); var hexString
        # = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var
        # resultBuilder = ['#']; for (var i = 0; i < missingZeros; i++) ` resultBuilder.
        # push('0'); ` resultBuilder.push(hexString); return resultBuilder.join(''); `; /
        # / ...
        # Corresponds to the JSON property `color`
        # @return [Google::Apis::AiplatformV1::GoogleTypeColor]
        attr_accessor :color
      
        # The display name of the AnnotationSpec represented by the color in the
        # segmentation mask.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # The ID of the AnnotationSpec represented by the color in the segmentation mask.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @color = args[:color] if args.key?(:color)
          @display_name = args[:display_name] if args.key?(:display_name)
          @id = args[:id] if args.key?(:id)
        end
      end
      
      # Annotation details specific to image object detection.
      class GoogleCloudAiplatformV1SchemaImageBoundingBoxAnnotation
        include Google::Apis::Core::Hashable
      
        # The resource Id of the AnnotationSpec that this Annotation pertains to.
        # Corresponds to the JSON property `annotationSpecId`
        # @return [String]
        attr_accessor :annotation_spec_id
      
        # The display name of the AnnotationSpec that this Annotation pertains to.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # The rightmost coordinate of the bounding box.
        # Corresponds to the JSON property `xMax`
        # @return [Float]
        attr_accessor :x_max
      
        # The leftmost coordinate of the bounding box.
        # Corresponds to the JSON property `xMin`
        # @return [Float]
        attr_accessor :x_min
      
        # The bottommost coordinate of the bounding box.
        # Corresponds to the JSON property `yMax`
        # @return [Float]
        attr_accessor :y_max
      
        # The topmost coordinate of the bounding box.
        # Corresponds to the JSON property `yMin`
        # @return [Float]
        attr_accessor :y_min
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @annotation_spec_id = args[:annotation_spec_id] if args.key?(:annotation_spec_id)
          @display_name = args[:display_name] if args.key?(:display_name)
          @x_max = args[:x_max] if args.key?(:x_max)
          @x_min = args[:x_min] if args.key?(:x_min)
          @y_max = args[:y_max] if args.key?(:y_max)
          @y_min = args[:y_min] if args.key?(:y_min)
        end
      end
      
      # Annotation details specific to image classification.
      class GoogleCloudAiplatformV1SchemaImageClassificationAnnotation
        include Google::Apis::Core::Hashable
      
        # The resource Id of the AnnotationSpec that this Annotation pertains to.
        # Corresponds to the JSON property `annotationSpecId`
        # @return [String]
        attr_accessor :annotation_spec_id
      
        # The display name of the AnnotationSpec that this Annotation pertains to.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @annotation_spec_id = args[:annotation_spec_id] if args.key?(:annotation_spec_id)
          @display_name = args[:display_name] if args.key?(:display_name)
        end
      end
      
      # Payload of Image DataItem.
      class GoogleCloudAiplatformV1SchemaImageDataItem
        include Google::Apis::Core::Hashable
      
        # Required. Google Cloud Storage URI points to the original image in user's
        # bucket. The image is up to 30MB in size.
        # Corresponds to the JSON property `gcsUri`
        # @return [String]
        attr_accessor :gcs_uri
      
        # Output only. The mime type of the content of the image. Only the images in
        # below listed mime types are supported. - image/jpeg - image/gif - image/png -
        # image/webp - image/bmp - image/tiff - image/vnd.microsoft.icon
        # Corresponds to the JSON property `mimeType`
        # @return [String]
        attr_accessor :mime_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @gcs_uri = args[:gcs_uri] if args.key?(:gcs_uri)
          @mime_type = args[:mime_type] if args.key?(:mime_type)
        end
      end
      
      # The metadata of Datasets that contain Image DataItems.
      class GoogleCloudAiplatformV1SchemaImageDatasetMetadata
        include Google::Apis::Core::Hashable
      
        # Points to a YAML file stored on Google Cloud Storage describing payload of the
        # Image DataItems that belong to this Dataset.
        # Corresponds to the JSON property `dataItemSchemaUri`
        # @return [String]
        attr_accessor :data_item_schema_uri
      
        # Google Cloud Storage Bucket name that contains the blob data of this Dataset.
        # Corresponds to the JSON property `gcsBucket`
        # @return [String]
        attr_accessor :gcs_bucket
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @data_item_schema_uri = args[:data_item_schema_uri] if args.key?(:data_item_schema_uri)
          @gcs_bucket = args[:gcs_bucket] if args.key?(:gcs_bucket)
        end
      end
      
      # Annotation details specific to image segmentation.
      class GoogleCloudAiplatformV1SchemaImageSegmentationAnnotation
        include Google::Apis::Core::Hashable
      
        # The mask based segmentation annotation.
        # Corresponds to the JSON property `maskAnnotation`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaImageSegmentationAnnotationMaskAnnotation]
        attr_accessor :mask_annotation
      
        # Represents a polygon in image.
        # Corresponds to the JSON property `polygonAnnotation`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaImageSegmentationAnnotationPolygonAnnotation]
        attr_accessor :polygon_annotation
      
        # Represents a polyline in image.
        # Corresponds to the JSON property `polylineAnnotation`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaImageSegmentationAnnotationPolylineAnnotation]
        attr_accessor :polyline_annotation
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @mask_annotation = args[:mask_annotation] if args.key?(:mask_annotation)
          @polygon_annotation = args[:polygon_annotation] if args.key?(:polygon_annotation)
          @polyline_annotation = args[:polyline_annotation] if args.key?(:polyline_annotation)
        end
      end
      
      # The mask based segmentation annotation.
      class GoogleCloudAiplatformV1SchemaImageSegmentationAnnotationMaskAnnotation
        include Google::Apis::Core::Hashable
      
        # The mapping between color and AnnotationSpec for this Annotation.
        # Corresponds to the JSON property `annotationSpecColors`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaAnnotationSpecColor>]
        attr_accessor :annotation_spec_colors
      
        # Google Cloud Storage URI that points to the mask image. The image must be in
        # PNG format. It must have the same size as the DataItem's image. Each pixel in
        # the image mask represents the AnnotationSpec which the pixel in the image
        # DataItem belong to. Each color is mapped to one AnnotationSpec based on
        # annotation_spec_colors.
        # Corresponds to the JSON property `maskGcsUri`
        # @return [String]
        attr_accessor :mask_gcs_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @annotation_spec_colors = args[:annotation_spec_colors] if args.key?(:annotation_spec_colors)
          @mask_gcs_uri = args[:mask_gcs_uri] if args.key?(:mask_gcs_uri)
        end
      end
      
      # Represents a polygon in image.
      class GoogleCloudAiplatformV1SchemaImageSegmentationAnnotationPolygonAnnotation
        include Google::Apis::Core::Hashable
      
        # The resource Id of the AnnotationSpec that this Annotation pertains to.
        # Corresponds to the JSON property `annotationSpecId`
        # @return [String]
        attr_accessor :annotation_spec_id
      
        # The display name of the AnnotationSpec that this Annotation pertains to.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # The vertexes are connected one by one and the last vertex is connected to the
        # first one to represent a polygon.
        # Corresponds to the JSON property `vertexes`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaVertex>]
        attr_accessor :vertexes
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @annotation_spec_id = args[:annotation_spec_id] if args.key?(:annotation_spec_id)
          @display_name = args[:display_name] if args.key?(:display_name)
          @vertexes = args[:vertexes] if args.key?(:vertexes)
        end
      end
      
      # Represents a polyline in image.
      class GoogleCloudAiplatformV1SchemaImageSegmentationAnnotationPolylineAnnotation
        include Google::Apis::Core::Hashable
      
        # The resource Id of the AnnotationSpec that this Annotation pertains to.
        # Corresponds to the JSON property `annotationSpecId`
        # @return [String]
        attr_accessor :annotation_spec_id
      
        # The display name of the AnnotationSpec that this Annotation pertains to.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # The vertexes are connected one by one and the last vertex in not connected to
        # the first one.
        # Corresponds to the JSON property `vertexes`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaVertex>]
        attr_accessor :vertexes
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @annotation_spec_id = args[:annotation_spec_id] if args.key?(:annotation_spec_id)
          @display_name = args[:display_name] if args.key?(:display_name)
          @vertexes = args[:vertexes] if args.key?(:vertexes)
        end
      end
      
      # Bounding box matching model metrics for a single intersection-over-union
      # threshold and multiple label match confidence thresholds.
      class GoogleCloudAiplatformV1SchemaModelevaluationMetricsBoundingBoxMetrics
        include Google::Apis::Core::Hashable
      
        # Metrics for each label-match confidence_threshold from 0.05,0.10,...,0.95,0.96,
        # 0.97,0.98,0.99. Precision-recall curve is derived from them.
        # Corresponds to the JSON property `confidenceMetrics`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaModelevaluationMetricsBoundingBoxMetricsConfidenceMetrics>]
        attr_accessor :confidence_metrics
      
        # The intersection-over-union threshold value used to compute this metrics entry.
        # Corresponds to the JSON property `iouThreshold`
        # @return [Float]
        attr_accessor :iou_threshold
      
        # The mean average precision, most often close to `auPrc`.
        # Corresponds to the JSON property `meanAveragePrecision`
        # @return [Float]
        attr_accessor :mean_average_precision
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence_metrics = args[:confidence_metrics] if args.key?(:confidence_metrics)
          @iou_threshold = args[:iou_threshold] if args.key?(:iou_threshold)
          @mean_average_precision = args[:mean_average_precision] if args.key?(:mean_average_precision)
        end
      end
      
      # Metrics for a single confidence threshold.
      class GoogleCloudAiplatformV1SchemaModelevaluationMetricsBoundingBoxMetricsConfidenceMetrics
        include Google::Apis::Core::Hashable
      
        # The confidence threshold value used to compute the metrics.
        # Corresponds to the JSON property `confidenceThreshold`
        # @return [Float]
        attr_accessor :confidence_threshold
      
        # The harmonic mean of recall and precision.
        # Corresponds to the JSON property `f1Score`
        # @return [Float]
        attr_accessor :f1_score
      
        # Precision under the given confidence threshold.
        # Corresponds to the JSON property `precision`
        # @return [Float]
        attr_accessor :precision
      
        # Recall under the given confidence threshold.
        # Corresponds to the JSON property `recall`
        # @return [Float]
        attr_accessor :recall
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence_threshold = args[:confidence_threshold] if args.key?(:confidence_threshold)
          @f1_score = args[:f1_score] if args.key?(:f1_score)
          @precision = args[:precision] if args.key?(:precision)
          @recall = args[:recall] if args.key?(:recall)
        end
      end
      
      # Metrics for classification evaluation results.
      class GoogleCloudAiplatformV1SchemaModelevaluationMetricsClassificationEvaluationMetrics
        include Google::Apis::Core::Hashable
      
        # The Area Under Precision-Recall Curve metric. Micro-averaged for the overall
        # evaluation.
        # Corresponds to the JSON property `auPrc`
        # @return [Float]
        attr_accessor :au_prc
      
        # The Area Under Receiver Operating Characteristic curve metric. Micro-averaged
        # for the overall evaluation.
        # Corresponds to the JSON property `auRoc`
        # @return [Float]
        attr_accessor :au_roc
      
        # Metrics for each `confidenceThreshold` in 0.00,0.05,0.10,...,0.95,0.96,0.97,0.
        # 98,0.99 and `positionThreshold` = INT32_MAX_VALUE. ROC and precision-recall
        # curves, and other aggregated metrics are derived from them. The confidence
        # metrics entries may also be supplied for additional values of `
        # positionThreshold`, but from these no aggregated metrics are computed.
        # Corresponds to the JSON property `confidenceMetrics`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaModelevaluationMetricsClassificationEvaluationMetricsConfidenceMetrics>]
        attr_accessor :confidence_metrics
      
        # Confusion matrix of the evaluation.
        # Corresponds to the JSON property `confusionMatrix`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaModelevaluationMetricsConfusionMatrix]
        attr_accessor :confusion_matrix
      
        # The Log Loss metric.
        # Corresponds to the JSON property `logLoss`
        # @return [Float]
        attr_accessor :log_loss
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @au_prc = args[:au_prc] if args.key?(:au_prc)
          @au_roc = args[:au_roc] if args.key?(:au_roc)
          @confidence_metrics = args[:confidence_metrics] if args.key?(:confidence_metrics)
          @confusion_matrix = args[:confusion_matrix] if args.key?(:confusion_matrix)
          @log_loss = args[:log_loss] if args.key?(:log_loss)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaModelevaluationMetricsClassificationEvaluationMetricsConfidenceMetrics
        include Google::Apis::Core::Hashable
      
        # Metrics are computed with an assumption that the Model never returns
        # predictions with score lower than this value.
        # Corresponds to the JSON property `confidenceThreshold`
        # @return [Float]
        attr_accessor :confidence_threshold
      
        # Confusion matrix of the evaluation for this confidence_threshold.
        # Corresponds to the JSON property `confusionMatrix`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaModelevaluationMetricsConfusionMatrix]
        attr_accessor :confusion_matrix
      
        # The harmonic mean of recall and precision. For summary metrics, it computes
        # the micro-averaged F1 score.
        # Corresponds to the JSON property `f1Score`
        # @return [Float]
        attr_accessor :f1_score
      
        # The harmonic mean of recallAt1 and precisionAt1.
        # Corresponds to the JSON property `f1ScoreAt1`
        # @return [Float]
        attr_accessor :f1_score_at1
      
        # Macro-averaged F1 Score.
        # Corresponds to the JSON property `f1ScoreMacro`
        # @return [Float]
        attr_accessor :f1_score_macro
      
        # Micro-averaged F1 Score.
        # Corresponds to the JSON property `f1ScoreMicro`
        # @return [Float]
        attr_accessor :f1_score_micro
      
        # The number of ground truth labels that are not matched by a Model created
        # label.
        # Corresponds to the JSON property `falseNegativeCount`
        # @return [Fixnum]
        attr_accessor :false_negative_count
      
        # The number of Model created labels that do not match a ground truth label.
        # Corresponds to the JSON property `falsePositiveCount`
        # @return [Fixnum]
        attr_accessor :false_positive_count
      
        # False Positive Rate for the given confidence threshold.
        # Corresponds to the JSON property `falsePositiveRate`
        # @return [Float]
        attr_accessor :false_positive_rate
      
        # The False Positive Rate when only considering the label that has the highest
        # prediction score and not below the confidence threshold for each DataItem.
        # Corresponds to the JSON property `falsePositiveRateAt1`
        # @return [Float]
        attr_accessor :false_positive_rate_at1
      
        # Metrics are computed with an assumption that the Model always returns at most
        # this many predictions (ordered by their score, descendingly), but they all
        # still need to meet the `confidenceThreshold`.
        # Corresponds to the JSON property `maxPredictions`
        # @return [Fixnum]
        attr_accessor :max_predictions
      
        # Precision for the given confidence threshold.
        # Corresponds to the JSON property `precision`
        # @return [Float]
        attr_accessor :precision
      
        # The precision when only considering the label that has the highest prediction
        # score and not below the confidence threshold for each DataItem.
        # Corresponds to the JSON property `precisionAt1`
        # @return [Float]
        attr_accessor :precision_at1
      
        # Recall (True Positive Rate) for the given confidence threshold.
        # Corresponds to the JSON property `recall`
        # @return [Float]
        attr_accessor :recall
      
        # The Recall (True Positive Rate) when only considering the label that has the
        # highest prediction score and not below the confidence threshold for each
        # DataItem.
        # Corresponds to the JSON property `recallAt1`
        # @return [Float]
        attr_accessor :recall_at1
      
        # The number of labels that were not created by the Model, but if they would,
        # they would not match a ground truth label.
        # Corresponds to the JSON property `trueNegativeCount`
        # @return [Fixnum]
        attr_accessor :true_negative_count
      
        # The number of Model created labels that match a ground truth label.
        # Corresponds to the JSON property `truePositiveCount`
        # @return [Fixnum]
        attr_accessor :true_positive_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence_threshold = args[:confidence_threshold] if args.key?(:confidence_threshold)
          @confusion_matrix = args[:confusion_matrix] if args.key?(:confusion_matrix)
          @f1_score = args[:f1_score] if args.key?(:f1_score)
          @f1_score_at1 = args[:f1_score_at1] if args.key?(:f1_score_at1)
          @f1_score_macro = args[:f1_score_macro] if args.key?(:f1_score_macro)
          @f1_score_micro = args[:f1_score_micro] if args.key?(:f1_score_micro)
          @false_negative_count = args[:false_negative_count] if args.key?(:false_negative_count)
          @false_positive_count = args[:false_positive_count] if args.key?(:false_positive_count)
          @false_positive_rate = args[:false_positive_rate] if args.key?(:false_positive_rate)
          @false_positive_rate_at1 = args[:false_positive_rate_at1] if args.key?(:false_positive_rate_at1)
          @max_predictions = args[:max_predictions] if args.key?(:max_predictions)
          @precision = args[:precision] if args.key?(:precision)
          @precision_at1 = args[:precision_at1] if args.key?(:precision_at1)
          @recall = args[:recall] if args.key?(:recall)
          @recall_at1 = args[:recall_at1] if args.key?(:recall_at1)
          @true_negative_count = args[:true_negative_count] if args.key?(:true_negative_count)
          @true_positive_count = args[:true_positive_count] if args.key?(:true_positive_count)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaModelevaluationMetricsConfusionMatrix
        include Google::Apis::Core::Hashable
      
        # AnnotationSpecs used in the confusion matrix. For AutoML Text Extraction, a
        # special negative AnnotationSpec with empty `id` and `displayName` of "NULL"
        # will be added as the last element.
        # Corresponds to the JSON property `annotationSpecs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaModelevaluationMetricsConfusionMatrixAnnotationSpecRef>]
        attr_accessor :annotation_specs
      
        # Rows in the confusion matrix. The number of rows is equal to the size of `
        # annotationSpecs`. `rowsi` is the number of DataItems that have ground truth of
        # the `annotationSpecs[i]` and are predicted as `annotationSpecs[j]` by the
        # Model being evaluated. For Text Extraction, when `annotationSpecs[i]` is the
        # last element in `annotationSpecs`, i.e. the special negative AnnotationSpec, `
        # rowsi` is the number of predicted entities of `annoatationSpec[j]` that are
        # not labeled as any of the ground truth AnnotationSpec. When annotationSpecs[j]
        # is the special negative AnnotationSpec, `rowsi` is the number of entities have
        # ground truth of `annotationSpec[i]` that are not predicted as an entity by the
        # Model. The value of the last cell, i.e. `rowi` where i == j and `
        # annotationSpec[i]` is the special negative AnnotationSpec, is always 0.
        # Corresponds to the JSON property `rows`
        # @return [Array<Array<Object>>]
        attr_accessor :rows
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @annotation_specs = args[:annotation_specs] if args.key?(:annotation_specs)
          @rows = args[:rows] if args.key?(:rows)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaModelevaluationMetricsConfusionMatrixAnnotationSpecRef
        include Google::Apis::Core::Hashable
      
        # Display name of the AnnotationSpec.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # ID of the AnnotationSpec.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @display_name = args[:display_name] if args.key?(:display_name)
          @id = args[:id] if args.key?(:id)
        end
      end
      
      # Metrics for forecasting evaluation results.
      class GoogleCloudAiplatformV1SchemaModelevaluationMetricsForecastingEvaluationMetrics
        include Google::Apis::Core::Hashable
      
        # Mean Absolute Error (MAE).
        # Corresponds to the JSON property `meanAbsoluteError`
        # @return [Float]
        attr_accessor :mean_absolute_error
      
        # Mean absolute percentage error. Infinity when there are zeros in the ground
        # truth.
        # Corresponds to the JSON property `meanAbsolutePercentageError`
        # @return [Float]
        attr_accessor :mean_absolute_percentage_error
      
        # The quantile metrics entries for each quantile.
        # Corresponds to the JSON property `quantileMetrics`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaModelevaluationMetricsForecastingEvaluationMetricsQuantileMetricsEntry>]
        attr_accessor :quantile_metrics
      
        # Coefficient of determination as Pearson correlation coefficient. Undefined
        # when ground truth or predictions are constant or near constant.
        # Corresponds to the JSON property `rSquared`
        # @return [Float]
        attr_accessor :r_squared
      
        # Root Mean Squared Error (RMSE).
        # Corresponds to the JSON property `rootMeanSquaredError`
        # @return [Float]
        attr_accessor :root_mean_squared_error
      
        # Root mean squared log error. Undefined when there are negative ground truth
        # values or predictions.
        # Corresponds to the JSON property `rootMeanSquaredLogError`
        # @return [Float]
        attr_accessor :root_mean_squared_log_error
      
        # Root Mean Square Percentage Error. Square root of MSPE. Undefined/imaginary
        # when MSPE is negative.
        # Corresponds to the JSON property `rootMeanSquaredPercentageError`
        # @return [Float]
        attr_accessor :root_mean_squared_percentage_error
      
        # Weighted Absolute Percentage Error. Does not use weights, this is just what
        # the metric is called. Undefined if actual values sum to zero. Will be very
        # large if actual values sum to a very small number.
        # Corresponds to the JSON property `weightedAbsolutePercentageError`
        # @return [Float]
        attr_accessor :weighted_absolute_percentage_error
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @mean_absolute_error = args[:mean_absolute_error] if args.key?(:mean_absolute_error)
          @mean_absolute_percentage_error = args[:mean_absolute_percentage_error] if args.key?(:mean_absolute_percentage_error)
          @quantile_metrics = args[:quantile_metrics] if args.key?(:quantile_metrics)
          @r_squared = args[:r_squared] if args.key?(:r_squared)
          @root_mean_squared_error = args[:root_mean_squared_error] if args.key?(:root_mean_squared_error)
          @root_mean_squared_log_error = args[:root_mean_squared_log_error] if args.key?(:root_mean_squared_log_error)
          @root_mean_squared_percentage_error = args[:root_mean_squared_percentage_error] if args.key?(:root_mean_squared_percentage_error)
          @weighted_absolute_percentage_error = args[:weighted_absolute_percentage_error] if args.key?(:weighted_absolute_percentage_error)
        end
      end
      
      # Entry for the Quantiles loss type optimization objective.
      class GoogleCloudAiplatformV1SchemaModelevaluationMetricsForecastingEvaluationMetricsQuantileMetricsEntry
        include Google::Apis::Core::Hashable
      
        # This is a custom metric that calculates the percentage of true values that
        # were less than the predicted value for that quantile. Only populated when
        # optimization_objective is minimize-quantile-loss and each entry corresponds to
        # an entry in quantiles The percent value can be used to compare with the
        # quantile value, which is the target value.
        # Corresponds to the JSON property `observedQuantile`
        # @return [Float]
        attr_accessor :observed_quantile
      
        # The quantile for this entry.
        # Corresponds to the JSON property `quantile`
        # @return [Float]
        attr_accessor :quantile
      
        # The scaled pinball loss of this quantile.
        # Corresponds to the JSON property `scaledPinballLoss`
        # @return [Float]
        attr_accessor :scaled_pinball_loss
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @observed_quantile = args[:observed_quantile] if args.key?(:observed_quantile)
          @quantile = args[:quantile] if args.key?(:quantile)
          @scaled_pinball_loss = args[:scaled_pinball_loss] if args.key?(:scaled_pinball_loss)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaModelevaluationMetricsGeneralTextGenerationEvaluationMetrics
        include Google::Apis::Core::Hashable
      
        # BLEU (bilingual evaluation understudy) scores based on sacrebleu
        # implementation.
        # Corresponds to the JSON property `bleu`
        # @return [Float]
        attr_accessor :bleu
      
        # ROUGE-L (Longest Common Subsequence) scoring at summary level.
        # Corresponds to the JSON property `rougeLSum`
        # @return [Float]
        attr_accessor :rouge_l_sum
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @bleu = args[:bleu] if args.key?(:bleu)
          @rouge_l_sum = args[:rouge_l_sum] if args.key?(:rouge_l_sum)
        end
      end
      
      # Metrics for image object detection evaluation results.
      class GoogleCloudAiplatformV1SchemaModelevaluationMetricsImageObjectDetectionEvaluationMetrics
        include Google::Apis::Core::Hashable
      
        # The single metric for bounding boxes evaluation: the `meanAveragePrecision`
        # averaged over all `boundingBoxMetricsEntries`.
        # Corresponds to the JSON property `boundingBoxMeanAveragePrecision`
        # @return [Float]
        attr_accessor :bounding_box_mean_average_precision
      
        # The bounding boxes match metrics for each intersection-over-union threshold 0.
        # 05,0.10,...,0.95,0.96,0.97,0.98,0.99 and each label confidence threshold 0.05,
        # 0.10,...,0.95,0.96,0.97,0.98,0.99 pair.
        # Corresponds to the JSON property `boundingBoxMetrics`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaModelevaluationMetricsBoundingBoxMetrics>]
        attr_accessor :bounding_box_metrics
      
        # The total number of bounding boxes (i.e. summed over all images) the ground
        # truth used to create this evaluation had.
        # Corresponds to the JSON property `evaluatedBoundingBoxCount`
        # @return [Fixnum]
        attr_accessor :evaluated_bounding_box_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @bounding_box_mean_average_precision = args[:bounding_box_mean_average_precision] if args.key?(:bounding_box_mean_average_precision)
          @bounding_box_metrics = args[:bounding_box_metrics] if args.key?(:bounding_box_metrics)
          @evaluated_bounding_box_count = args[:evaluated_bounding_box_count] if args.key?(:evaluated_bounding_box_count)
        end
      end
      
      # Metrics for image segmentation evaluation results.
      class GoogleCloudAiplatformV1SchemaModelevaluationMetricsImageSegmentationEvaluationMetrics
        include Google::Apis::Core::Hashable
      
        # Metrics for each confidenceThreshold in 0.00,0.05,0.10,...,0.95,0.96,0.97,0.98,
        # 0.99 Precision-recall curve can be derived from it.
        # Corresponds to the JSON property `confidenceMetricsEntries`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaModelevaluationMetricsImageSegmentationEvaluationMetricsConfidenceMetricsEntry>]
        attr_accessor :confidence_metrics_entries
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence_metrics_entries = args[:confidence_metrics_entries] if args.key?(:confidence_metrics_entries)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaModelevaluationMetricsImageSegmentationEvaluationMetricsConfidenceMetricsEntry
        include Google::Apis::Core::Hashable
      
        # Metrics are computed with an assumption that the model never returns
        # predictions with score lower than this value.
        # Corresponds to the JSON property `confidenceThreshold`
        # @return [Float]
        attr_accessor :confidence_threshold
      
        # Confusion matrix for the given confidence threshold.
        # Corresponds to the JSON property `confusionMatrix`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaModelevaluationMetricsConfusionMatrix]
        attr_accessor :confusion_matrix
      
        # DSC or the F1 score, The harmonic mean of recall and precision.
        # Corresponds to the JSON property `diceScoreCoefficient`
        # @return [Float]
        attr_accessor :dice_score_coefficient
      
        # The intersection-over-union score. The measure of overlap of the annotation's
        # category mask with ground truth category mask on the DataItem.
        # Corresponds to the JSON property `iouScore`
        # @return [Float]
        attr_accessor :iou_score
      
        # Precision for the given confidence threshold.
        # Corresponds to the JSON property `precision`
        # @return [Float]
        attr_accessor :precision
      
        # Recall (True Positive Rate) for the given confidence threshold.
        # Corresponds to the JSON property `recall`
        # @return [Float]
        attr_accessor :recall
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence_threshold = args[:confidence_threshold] if args.key?(:confidence_threshold)
          @confusion_matrix = args[:confusion_matrix] if args.key?(:confusion_matrix)
          @dice_score_coefficient = args[:dice_score_coefficient] if args.key?(:dice_score_coefficient)
          @iou_score = args[:iou_score] if args.key?(:iou_score)
          @precision = args[:precision] if args.key?(:precision)
          @recall = args[:recall] if args.key?(:recall)
        end
      end
      
      # Metrics for general pairwise text generation evaluation results.
      class GoogleCloudAiplatformV1SchemaModelevaluationMetricsPairwiseTextGenerationEvaluationMetrics
        include Google::Apis::Core::Hashable
      
        # Fraction of cases where the autorater agreed with the human raters.
        # Corresponds to the JSON property `accuracy`
        # @return [Float]
        attr_accessor :accuracy
      
        # Percentage of time the autorater decided the baseline model had the better
        # response.
        # Corresponds to the JSON property `baselineModelWinRate`
        # @return [Float]
        attr_accessor :baseline_model_win_rate
      
        # A measurement of agreement between the autorater and human raters that takes
        # the likelihood of random agreement into account.
        # Corresponds to the JSON property `cohensKappa`
        # @return [Float]
        attr_accessor :cohens_kappa
      
        # Harmonic mean of precision and recall.
        # Corresponds to the JSON property `f1Score`
        # @return [Float]
        attr_accessor :f1_score
      
        # Number of examples where the autorater chose the baseline model, but humans
        # preferred the model.
        # Corresponds to the JSON property `falseNegativeCount`
        # @return [Fixnum]
        attr_accessor :false_negative_count
      
        # Number of examples where the autorater chose the model, but humans preferred
        # the baseline model.
        # Corresponds to the JSON property `falsePositiveCount`
        # @return [Fixnum]
        attr_accessor :false_positive_count
      
        # Percentage of time humans decided the baseline model had the better response.
        # Corresponds to the JSON property `humanPreferenceBaselineModelWinRate`
        # @return [Float]
        attr_accessor :human_preference_baseline_model_win_rate
      
        # Percentage of time humans decided the model had the better response.
        # Corresponds to the JSON property `humanPreferenceModelWinRate`
        # @return [Float]
        attr_accessor :human_preference_model_win_rate
      
        # Percentage of time the autorater decided the model had the better response.
        # Corresponds to the JSON property `modelWinRate`
        # @return [Float]
        attr_accessor :model_win_rate
      
        # Fraction of cases where the autorater and humans thought the model had a
        # better response out of all cases where the autorater thought the model had a
        # better response. True positive divided by all positive.
        # Corresponds to the JSON property `precision`
        # @return [Float]
        attr_accessor :precision
      
        # Fraction of cases where the autorater and humans thought the model had a
        # better response out of all cases where the humans thought the model had a
        # better response.
        # Corresponds to the JSON property `recall`
        # @return [Float]
        attr_accessor :recall
      
        # Number of examples where both the autorater and humans decided that the model
        # had the worse response.
        # Corresponds to the JSON property `trueNegativeCount`
        # @return [Fixnum]
        attr_accessor :true_negative_count
      
        # Number of examples where both the autorater and humans decided that the model
        # had the better response.
        # Corresponds to the JSON property `truePositiveCount`
        # @return [Fixnum]
        attr_accessor :true_positive_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @accuracy = args[:accuracy] if args.key?(:accuracy)
          @baseline_model_win_rate = args[:baseline_model_win_rate] if args.key?(:baseline_model_win_rate)
          @cohens_kappa = args[:cohens_kappa] if args.key?(:cohens_kappa)
          @f1_score = args[:f1_score] if args.key?(:f1_score)
          @false_negative_count = args[:false_negative_count] if args.key?(:false_negative_count)
          @false_positive_count = args[:false_positive_count] if args.key?(:false_positive_count)
          @human_preference_baseline_model_win_rate = args[:human_preference_baseline_model_win_rate] if args.key?(:human_preference_baseline_model_win_rate)
          @human_preference_model_win_rate = args[:human_preference_model_win_rate] if args.key?(:human_preference_model_win_rate)
          @model_win_rate = args[:model_win_rate] if args.key?(:model_win_rate)
          @precision = args[:precision] if args.key?(:precision)
          @recall = args[:recall] if args.key?(:recall)
          @true_negative_count = args[:true_negative_count] if args.key?(:true_negative_count)
          @true_positive_count = args[:true_positive_count] if args.key?(:true_positive_count)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaModelevaluationMetricsQuestionAnsweringEvaluationMetrics
        include Google::Apis::Core::Hashable
      
        # The rate at which the input predicted strings exactly match their references.
        # Corresponds to the JSON property `exactMatch`
        # @return [Float]
        attr_accessor :exact_match
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @exact_match = args[:exact_match] if args.key?(:exact_match)
        end
      end
      
      # Metrics for regression evaluation results.
      class GoogleCloudAiplatformV1SchemaModelevaluationMetricsRegressionEvaluationMetrics
        include Google::Apis::Core::Hashable
      
        # Mean Absolute Error (MAE).
        # Corresponds to the JSON property `meanAbsoluteError`
        # @return [Float]
        attr_accessor :mean_absolute_error
      
        # Mean absolute percentage error. Infinity when there are zeros in the ground
        # truth.
        # Corresponds to the JSON property `meanAbsolutePercentageError`
        # @return [Float]
        attr_accessor :mean_absolute_percentage_error
      
        # Coefficient of determination as Pearson correlation coefficient. Undefined
        # when ground truth or predictions are constant or near constant.
        # Corresponds to the JSON property `rSquared`
        # @return [Float]
        attr_accessor :r_squared
      
        # Root Mean Squared Error (RMSE).
        # Corresponds to the JSON property `rootMeanSquaredError`
        # @return [Float]
        attr_accessor :root_mean_squared_error
      
        # Root mean squared log error. Undefined when there are negative ground truth
        # values or predictions.
        # Corresponds to the JSON property `rootMeanSquaredLogError`
        # @return [Float]
        attr_accessor :root_mean_squared_log_error
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @mean_absolute_error = args[:mean_absolute_error] if args.key?(:mean_absolute_error)
          @mean_absolute_percentage_error = args[:mean_absolute_percentage_error] if args.key?(:mean_absolute_percentage_error)
          @r_squared = args[:r_squared] if args.key?(:r_squared)
          @root_mean_squared_error = args[:root_mean_squared_error] if args.key?(:root_mean_squared_error)
          @root_mean_squared_log_error = args[:root_mean_squared_log_error] if args.key?(:root_mean_squared_log_error)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaModelevaluationMetricsSummarizationEvaluationMetrics
        include Google::Apis::Core::Hashable
      
        # ROUGE-L (Longest Common Subsequence) scoring at summary level.
        # Corresponds to the JSON property `rougeLSum`
        # @return [Float]
        attr_accessor :rouge_l_sum
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @rouge_l_sum = args[:rouge_l_sum] if args.key?(:rouge_l_sum)
        end
      end
      
      # Metrics for text extraction evaluation results.
      class GoogleCloudAiplatformV1SchemaModelevaluationMetricsTextExtractionEvaluationMetrics
        include Google::Apis::Core::Hashable
      
        # Metrics that have confidence thresholds. Precision-recall curve can be derived
        # from them.
        # Corresponds to the JSON property `confidenceMetrics`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaModelevaluationMetricsTextExtractionEvaluationMetricsConfidenceMetrics>]
        attr_accessor :confidence_metrics
      
        # Confusion matrix of the evaluation. Only set for Models where number of
        # AnnotationSpecs is no more than 10. Only set for ModelEvaluations, not for
        # ModelEvaluationSlices.
        # Corresponds to the JSON property `confusionMatrix`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaModelevaluationMetricsConfusionMatrix]
        attr_accessor :confusion_matrix
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence_metrics = args[:confidence_metrics] if args.key?(:confidence_metrics)
          @confusion_matrix = args[:confusion_matrix] if args.key?(:confusion_matrix)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaModelevaluationMetricsTextExtractionEvaluationMetricsConfidenceMetrics
        include Google::Apis::Core::Hashable
      
        # Metrics are computed with an assumption that the Model never returns
        # predictions with score lower than this value.
        # Corresponds to the JSON property `confidenceThreshold`
        # @return [Float]
        attr_accessor :confidence_threshold
      
        # The harmonic mean of recall and precision.
        # Corresponds to the JSON property `f1Score`
        # @return [Float]
        attr_accessor :f1_score
      
        # Precision for the given confidence threshold.
        # Corresponds to the JSON property `precision`
        # @return [Float]
        attr_accessor :precision
      
        # Recall (True Positive Rate) for the given confidence threshold.
        # Corresponds to the JSON property `recall`
        # @return [Float]
        attr_accessor :recall
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence_threshold = args[:confidence_threshold] if args.key?(:confidence_threshold)
          @f1_score = args[:f1_score] if args.key?(:f1_score)
          @precision = args[:precision] if args.key?(:precision)
          @recall = args[:recall] if args.key?(:recall)
        end
      end
      
      # Model evaluation metrics for text sentiment problems.
      class GoogleCloudAiplatformV1SchemaModelevaluationMetricsTextSentimentEvaluationMetrics
        include Google::Apis::Core::Hashable
      
        # Confusion matrix of the evaluation. Only set for ModelEvaluations, not for
        # ModelEvaluationSlices.
        # Corresponds to the JSON property `confusionMatrix`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaModelevaluationMetricsConfusionMatrix]
        attr_accessor :confusion_matrix
      
        # The harmonic mean of recall and precision.
        # Corresponds to the JSON property `f1Score`
        # @return [Float]
        attr_accessor :f1_score
      
        # Linear weighted kappa. Only set for ModelEvaluations, not for
        # ModelEvaluationSlices.
        # Corresponds to the JSON property `linearKappa`
        # @return [Float]
        attr_accessor :linear_kappa
      
        # Mean absolute error. Only set for ModelEvaluations, not for
        # ModelEvaluationSlices.
        # Corresponds to the JSON property `meanAbsoluteError`
        # @return [Float]
        attr_accessor :mean_absolute_error
      
        # Mean squared error. Only set for ModelEvaluations, not for
        # ModelEvaluationSlices.
        # Corresponds to the JSON property `meanSquaredError`
        # @return [Float]
        attr_accessor :mean_squared_error
      
        # Precision.
        # Corresponds to the JSON property `precision`
        # @return [Float]
        attr_accessor :precision
      
        # Quadratic weighted kappa. Only set for ModelEvaluations, not for
        # ModelEvaluationSlices.
        # Corresponds to the JSON property `quadraticKappa`
        # @return [Float]
        attr_accessor :quadratic_kappa
      
        # Recall.
        # Corresponds to the JSON property `recall`
        # @return [Float]
        attr_accessor :recall
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confusion_matrix = args[:confusion_matrix] if args.key?(:confusion_matrix)
          @f1_score = args[:f1_score] if args.key?(:f1_score)
          @linear_kappa = args[:linear_kappa] if args.key?(:linear_kappa)
          @mean_absolute_error = args[:mean_absolute_error] if args.key?(:mean_absolute_error)
          @mean_squared_error = args[:mean_squared_error] if args.key?(:mean_squared_error)
          @precision = args[:precision] if args.key?(:precision)
          @quadratic_kappa = args[:quadratic_kappa] if args.key?(:quadratic_kappa)
          @recall = args[:recall] if args.key?(:recall)
        end
      end
      
      # UNIMPLEMENTED. Track matching model metrics for a single track match threshold
      # and multiple label match confidence thresholds.
      class GoogleCloudAiplatformV1SchemaModelevaluationMetricsTrackMetrics
        include Google::Apis::Core::Hashable
      
        # Metrics for each label-match `confidenceThreshold` from 0.05,0.10,...,0.95,0.
        # 96,0.97,0.98,0.99. Precision-recall curve is derived from them.
        # Corresponds to the JSON property `confidenceMetrics`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaModelevaluationMetricsTrackMetricsConfidenceMetrics>]
        attr_accessor :confidence_metrics
      
        # The intersection-over-union threshold value between bounding boxes across
        # frames used to compute this metric entry.
        # Corresponds to the JSON property `iouThreshold`
        # @return [Float]
        attr_accessor :iou_threshold
      
        # The mean bounding box iou over all confidence thresholds.
        # Corresponds to the JSON property `meanBoundingBoxIou`
        # @return [Float]
        attr_accessor :mean_bounding_box_iou
      
        # The mean mismatch rate over all confidence thresholds.
        # Corresponds to the JSON property `meanMismatchRate`
        # @return [Float]
        attr_accessor :mean_mismatch_rate
      
        # The mean average precision over all confidence thresholds.
        # Corresponds to the JSON property `meanTrackingAveragePrecision`
        # @return [Float]
        attr_accessor :mean_tracking_average_precision
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence_metrics = args[:confidence_metrics] if args.key?(:confidence_metrics)
          @iou_threshold = args[:iou_threshold] if args.key?(:iou_threshold)
          @mean_bounding_box_iou = args[:mean_bounding_box_iou] if args.key?(:mean_bounding_box_iou)
          @mean_mismatch_rate = args[:mean_mismatch_rate] if args.key?(:mean_mismatch_rate)
          @mean_tracking_average_precision = args[:mean_tracking_average_precision] if args.key?(:mean_tracking_average_precision)
        end
      end
      
      # Metrics for a single confidence threshold.
      class GoogleCloudAiplatformV1SchemaModelevaluationMetricsTrackMetricsConfidenceMetrics
        include Google::Apis::Core::Hashable
      
        # Bounding box intersection-over-union precision. Measures how well the bounding
        # boxes overlap between each other (e.g. complete overlap or just barely above
        # iou_threshold).
        # Corresponds to the JSON property `boundingBoxIou`
        # @return [Float]
        attr_accessor :bounding_box_iou
      
        # The confidence threshold value used to compute the metrics.
        # Corresponds to the JSON property `confidenceThreshold`
        # @return [Float]
        attr_accessor :confidence_threshold
      
        # Mismatch rate, which measures the tracking consistency, i.e. correctness of
        # instance ID continuity.
        # Corresponds to the JSON property `mismatchRate`
        # @return [Float]
        attr_accessor :mismatch_rate
      
        # Tracking precision.
        # Corresponds to the JSON property `trackingPrecision`
        # @return [Float]
        attr_accessor :tracking_precision
      
        # Tracking recall.
        # Corresponds to the JSON property `trackingRecall`
        # @return [Float]
        attr_accessor :tracking_recall
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @bounding_box_iou = args[:bounding_box_iou] if args.key?(:bounding_box_iou)
          @confidence_threshold = args[:confidence_threshold] if args.key?(:confidence_threshold)
          @mismatch_rate = args[:mismatch_rate] if args.key?(:mismatch_rate)
          @tracking_precision = args[:tracking_precision] if args.key?(:tracking_precision)
          @tracking_recall = args[:tracking_recall] if args.key?(:tracking_recall)
        end
      end
      
      # The Evaluation metrics given a specific precision_window_length.
      class GoogleCloudAiplatformV1SchemaModelevaluationMetricsVideoActionMetrics
        include Google::Apis::Core::Hashable
      
        # Metrics for each label-match confidence_threshold from 0.05,0.10,...,0.95,0.96,
        # 0.97,0.98,0.99.
        # Corresponds to the JSON property `confidenceMetrics`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaModelevaluationMetricsVideoActionMetricsConfidenceMetrics>]
        attr_accessor :confidence_metrics
      
        # The mean average precision.
        # Corresponds to the JSON property `meanAveragePrecision`
        # @return [Float]
        attr_accessor :mean_average_precision
      
        # This VideoActionMetrics is calculated based on this prediction window length.
        # If the predicted action's timestamp is inside the time window whose center is
        # the ground truth action's timestamp with this specific length, the prediction
        # result is treated as a true positive.
        # Corresponds to the JSON property `precisionWindowLength`
        # @return [String]
        attr_accessor :precision_window_length
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence_metrics = args[:confidence_metrics] if args.key?(:confidence_metrics)
          @mean_average_precision = args[:mean_average_precision] if args.key?(:mean_average_precision)
          @precision_window_length = args[:precision_window_length] if args.key?(:precision_window_length)
        end
      end
      
      # Metrics for a single confidence threshold.
      class GoogleCloudAiplatformV1SchemaModelevaluationMetricsVideoActionMetricsConfidenceMetrics
        include Google::Apis::Core::Hashable
      
        # Output only. The confidence threshold value used to compute the metrics.
        # Corresponds to the JSON property `confidenceThreshold`
        # @return [Float]
        attr_accessor :confidence_threshold
      
        # Output only. The harmonic mean of recall and precision.
        # Corresponds to the JSON property `f1Score`
        # @return [Float]
        attr_accessor :f1_score
      
        # Output only. Precision for the given confidence threshold.
        # Corresponds to the JSON property `precision`
        # @return [Float]
        attr_accessor :precision
      
        # Output only. Recall for the given confidence threshold.
        # Corresponds to the JSON property `recall`
        # @return [Float]
        attr_accessor :recall
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence_threshold = args[:confidence_threshold] if args.key?(:confidence_threshold)
          @f1_score = args[:f1_score] if args.key?(:f1_score)
          @precision = args[:precision] if args.key?(:precision)
          @recall = args[:recall] if args.key?(:recall)
        end
      end
      
      # Model evaluation metrics for video action recognition.
      class GoogleCloudAiplatformV1SchemaModelevaluationMetricsVideoActionRecognitionMetrics
        include Google::Apis::Core::Hashable
      
        # The number of ground truth actions used to create this evaluation.
        # Corresponds to the JSON property `evaluatedActionCount`
        # @return [Fixnum]
        attr_accessor :evaluated_action_count
      
        # The metric entries for precision window lengths: 1s,2s,3s.
        # Corresponds to the JSON property `videoActionMetrics`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaModelevaluationMetricsVideoActionMetrics>]
        attr_accessor :video_action_metrics
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @evaluated_action_count = args[:evaluated_action_count] if args.key?(:evaluated_action_count)
          @video_action_metrics = args[:video_action_metrics] if args.key?(:video_action_metrics)
        end
      end
      
      # Model evaluation metrics for video object tracking problems. Evaluates
      # prediction quality of both labeled bounding boxes and labeled tracks (i.e.
      # series of bounding boxes sharing same label and instance ID).
      class GoogleCloudAiplatformV1SchemaModelevaluationMetricsVideoObjectTrackingMetrics
        include Google::Apis::Core::Hashable
      
        # The single metric for bounding boxes evaluation: the `meanAveragePrecision`
        # averaged over all `boundingBoxMetrics`.
        # Corresponds to the JSON property `boundingBoxMeanAveragePrecision`
        # @return [Float]
        attr_accessor :bounding_box_mean_average_precision
      
        # The bounding boxes match metrics for each intersection-over-union threshold 0.
        # 05,0.10,...,0.95,0.96,0.97,0.98,0.99 and each label confidence threshold 0.05,
        # 0.10,...,0.95,0.96,0.97,0.98,0.99 pair.
        # Corresponds to the JSON property `boundingBoxMetrics`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaModelevaluationMetricsBoundingBoxMetrics>]
        attr_accessor :bounding_box_metrics
      
        # UNIMPLEMENTED. The total number of bounding boxes (i.e. summed over all frames)
        # the ground truth used to create this evaluation had.
        # Corresponds to the JSON property `evaluatedBoundingBoxCount`
        # @return [Fixnum]
        attr_accessor :evaluated_bounding_box_count
      
        # UNIMPLEMENTED. The number of video frames used to create this evaluation.
        # Corresponds to the JSON property `evaluatedFrameCount`
        # @return [Fixnum]
        attr_accessor :evaluated_frame_count
      
        # UNIMPLEMENTED. The total number of tracks (i.e. as seen across all frames) the
        # ground truth used to create this evaluation had.
        # Corresponds to the JSON property `evaluatedTrackCount`
        # @return [Fixnum]
        attr_accessor :evaluated_track_count
      
        # UNIMPLEMENTED. The single metric for tracks accuracy evaluation: the `
        # meanAveragePrecision` averaged over all `trackMetrics`.
        # Corresponds to the JSON property `trackMeanAveragePrecision`
        # @return [Float]
        attr_accessor :track_mean_average_precision
      
        # UNIMPLEMENTED. The single metric for tracks bounding box iou evaluation: the `
        # meanBoundingBoxIou` averaged over all `trackMetrics`.
        # Corresponds to the JSON property `trackMeanBoundingBoxIou`
        # @return [Float]
        attr_accessor :track_mean_bounding_box_iou
      
        # UNIMPLEMENTED. The single metric for tracking consistency evaluation: the `
        # meanMismatchRate` averaged over all `trackMetrics`.
        # Corresponds to the JSON property `trackMeanMismatchRate`
        # @return [Float]
        attr_accessor :track_mean_mismatch_rate
      
        # UNIMPLEMENTED. The tracks match metrics for each intersection-over-union
        # threshold 0.05,0.10,...,0.95,0.96,0.97,0.98,0.99 and each label confidence
        # threshold 0.05,0.10,...,0.95,0.96,0.97,0.98,0.99 pair.
        # Corresponds to the JSON property `trackMetrics`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaModelevaluationMetricsTrackMetrics>]
        attr_accessor :track_metrics
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @bounding_box_mean_average_precision = args[:bounding_box_mean_average_precision] if args.key?(:bounding_box_mean_average_precision)
          @bounding_box_metrics = args[:bounding_box_metrics] if args.key?(:bounding_box_metrics)
          @evaluated_bounding_box_count = args[:evaluated_bounding_box_count] if args.key?(:evaluated_bounding_box_count)
          @evaluated_frame_count = args[:evaluated_frame_count] if args.key?(:evaluated_frame_count)
          @evaluated_track_count = args[:evaluated_track_count] if args.key?(:evaluated_track_count)
          @track_mean_average_precision = args[:track_mean_average_precision] if args.key?(:track_mean_average_precision)
          @track_mean_bounding_box_iou = args[:track_mean_bounding_box_iou] if args.key?(:track_mean_bounding_box_iou)
          @track_mean_mismatch_rate = args[:track_mean_mismatch_rate] if args.key?(:track_mean_mismatch_rate)
          @track_metrics = args[:track_metrics] if args.key?(:track_metrics)
        end
      end
      
      # Prediction input format for Image Classification.
      class GoogleCloudAiplatformV1SchemaPredictInstanceImageClassificationPredictionInstance
        include Google::Apis::Core::Hashable
      
        # The image bytes or Cloud Storage URI to make the prediction on.
        # Corresponds to the JSON property `content`
        # @return [String]
        attr_accessor :content
      
        # The MIME type of the content of the image. Only the images in below listed
        # MIME types are supported. - image/jpeg - image/gif - image/png - image/webp -
        # image/bmp - image/tiff - image/vnd.microsoft.icon
        # Corresponds to the JSON property `mimeType`
        # @return [String]
        attr_accessor :mime_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content = args[:content] if args.key?(:content)
          @mime_type = args[:mime_type] if args.key?(:mime_type)
        end
      end
      
      # Prediction input format for Image Object Detection.
      class GoogleCloudAiplatformV1SchemaPredictInstanceImageObjectDetectionPredictionInstance
        include Google::Apis::Core::Hashable
      
        # The image bytes or Cloud Storage URI to make the prediction on.
        # Corresponds to the JSON property `content`
        # @return [String]
        attr_accessor :content
      
        # The MIME type of the content of the image. Only the images in below listed
        # MIME types are supported. - image/jpeg - image/gif - image/png - image/webp -
        # image/bmp - image/tiff - image/vnd.microsoft.icon
        # Corresponds to the JSON property `mimeType`
        # @return [String]
        attr_accessor :mime_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content = args[:content] if args.key?(:content)
          @mime_type = args[:mime_type] if args.key?(:mime_type)
        end
      end
      
      # Prediction input format for Image Segmentation.
      class GoogleCloudAiplatformV1SchemaPredictInstanceImageSegmentationPredictionInstance
        include Google::Apis::Core::Hashable
      
        # The image bytes to make the predictions on.
        # Corresponds to the JSON property `content`
        # @return [String]
        attr_accessor :content
      
        # The MIME type of the content of the image. Only the images in below listed
        # MIME types are supported. - image/jpeg - image/png
        # Corresponds to the JSON property `mimeType`
        # @return [String]
        attr_accessor :mime_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content = args[:content] if args.key?(:content)
          @mime_type = args[:mime_type] if args.key?(:mime_type)
        end
      end
      
      # Prediction input format for Text Classification.
      class GoogleCloudAiplatformV1SchemaPredictInstanceTextClassificationPredictionInstance
        include Google::Apis::Core::Hashable
      
        # The text snippet to make the predictions on.
        # Corresponds to the JSON property `content`
        # @return [String]
        attr_accessor :content
      
        # The MIME type of the text snippet. The supported MIME types are listed below. -
        # text/plain
        # Corresponds to the JSON property `mimeType`
        # @return [String]
        attr_accessor :mime_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content = args[:content] if args.key?(:content)
          @mime_type = args[:mime_type] if args.key?(:mime_type)
        end
      end
      
      # Prediction input format for Text Extraction.
      class GoogleCloudAiplatformV1SchemaPredictInstanceTextExtractionPredictionInstance
        include Google::Apis::Core::Hashable
      
        # The text snippet to make the predictions on.
        # Corresponds to the JSON property `content`
        # @return [String]
        attr_accessor :content
      
        # This field is only used for batch prediction. If a key is provided, the batch
        # prediction result will by mapped to this key. If omitted, then the batch
        # prediction result will contain the entire input instance. Vertex AI will not
        # check if keys in the request are duplicates, so it is up to the caller to
        # ensure the keys are unique.
        # Corresponds to the JSON property `key`
        # @return [String]
        attr_accessor :key
      
        # The MIME type of the text snippet. The supported MIME types are listed below. -
        # text/plain
        # Corresponds to the JSON property `mimeType`
        # @return [String]
        attr_accessor :mime_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content = args[:content] if args.key?(:content)
          @key = args[:key] if args.key?(:key)
          @mime_type = args[:mime_type] if args.key?(:mime_type)
        end
      end
      
      # Prediction input format for Text Sentiment.
      class GoogleCloudAiplatformV1SchemaPredictInstanceTextSentimentPredictionInstance
        include Google::Apis::Core::Hashable
      
        # The text snippet to make the predictions on.
        # Corresponds to the JSON property `content`
        # @return [String]
        attr_accessor :content
      
        # The MIME type of the text snippet. The supported MIME types are listed below. -
        # text/plain
        # Corresponds to the JSON property `mimeType`
        # @return [String]
        attr_accessor :mime_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content = args[:content] if args.key?(:content)
          @mime_type = args[:mime_type] if args.key?(:mime_type)
        end
      end
      
      # Prediction input format for Video Action Recognition.
      class GoogleCloudAiplatformV1SchemaPredictInstanceVideoActionRecognitionPredictionInstance
        include Google::Apis::Core::Hashable
      
        # The Google Cloud Storage location of the video on which to perform the
        # prediction.
        # Corresponds to the JSON property `content`
        # @return [String]
        attr_accessor :content
      
        # The MIME type of the content of the video. Only the following are supported:
        # video/mp4 video/avi video/quicktime
        # Corresponds to the JSON property `mimeType`
        # @return [String]
        attr_accessor :mime_type
      
        # The end, exclusive, of the video's time segment on which to perform the
        # prediction. Expressed as a number of seconds as measured from the start of the
        # video, with "s" appended at the end. Fractions are allowed, up to a
        # microsecond precision, and "inf" or "Infinity" is allowed, which means the end
        # of the video.
        # Corresponds to the JSON property `timeSegmentEnd`
        # @return [String]
        attr_accessor :time_segment_end
      
        # The beginning, inclusive, of the video's time segment on which to perform the
        # prediction. Expressed as a number of seconds as measured from the start of the
        # video, with "s" appended at the end. Fractions are allowed, up to a
        # microsecond precision.
        # Corresponds to the JSON property `timeSegmentStart`
        # @return [String]
        attr_accessor :time_segment_start
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content = args[:content] if args.key?(:content)
          @mime_type = args[:mime_type] if args.key?(:mime_type)
          @time_segment_end = args[:time_segment_end] if args.key?(:time_segment_end)
          @time_segment_start = args[:time_segment_start] if args.key?(:time_segment_start)
        end
      end
      
      # Prediction input format for Video Classification.
      class GoogleCloudAiplatformV1SchemaPredictInstanceVideoClassificationPredictionInstance
        include Google::Apis::Core::Hashable
      
        # The Google Cloud Storage location of the video on which to perform the
        # prediction.
        # Corresponds to the JSON property `content`
        # @return [String]
        attr_accessor :content
      
        # The MIME type of the content of the video. Only the following are supported:
        # video/mp4 video/avi video/quicktime
        # Corresponds to the JSON property `mimeType`
        # @return [String]
        attr_accessor :mime_type
      
        # The end, exclusive, of the video's time segment on which to perform the
        # prediction. Expressed as a number of seconds as measured from the start of the
        # video, with "s" appended at the end. Fractions are allowed, up to a
        # microsecond precision, and "inf" or "Infinity" is allowed, which means the end
        # of the video.
        # Corresponds to the JSON property `timeSegmentEnd`
        # @return [String]
        attr_accessor :time_segment_end
      
        # The beginning, inclusive, of the video's time segment on which to perform the
        # prediction. Expressed as a number of seconds as measured from the start of the
        # video, with "s" appended at the end. Fractions are allowed, up to a
        # microsecond precision.
        # Corresponds to the JSON property `timeSegmentStart`
        # @return [String]
        attr_accessor :time_segment_start
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content = args[:content] if args.key?(:content)
          @mime_type = args[:mime_type] if args.key?(:mime_type)
          @time_segment_end = args[:time_segment_end] if args.key?(:time_segment_end)
          @time_segment_start = args[:time_segment_start] if args.key?(:time_segment_start)
        end
      end
      
      # Prediction input format for Video Object Tracking.
      class GoogleCloudAiplatformV1SchemaPredictInstanceVideoObjectTrackingPredictionInstance
        include Google::Apis::Core::Hashable
      
        # The Google Cloud Storage location of the video on which to perform the
        # prediction.
        # Corresponds to the JSON property `content`
        # @return [String]
        attr_accessor :content
      
        # The MIME type of the content of the video. Only the following are supported:
        # video/mp4 video/avi video/quicktime
        # Corresponds to the JSON property `mimeType`
        # @return [String]
        attr_accessor :mime_type
      
        # The end, exclusive, of the video's time segment on which to perform the
        # prediction. Expressed as a number of seconds as measured from the start of the
        # video, with "s" appended at the end. Fractions are allowed, up to a
        # microsecond precision, and "inf" or "Infinity" is allowed, which means the end
        # of the video.
        # Corresponds to the JSON property `timeSegmentEnd`
        # @return [String]
        attr_accessor :time_segment_end
      
        # The beginning, inclusive, of the video's time segment on which to perform the
        # prediction. Expressed as a number of seconds as measured from the start of the
        # video, with "s" appended at the end. Fractions are allowed, up to a
        # microsecond precision.
        # Corresponds to the JSON property `timeSegmentStart`
        # @return [String]
        attr_accessor :time_segment_start
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content = args[:content] if args.key?(:content)
          @mime_type = args[:mime_type] if args.key?(:mime_type)
          @time_segment_end = args[:time_segment_end] if args.key?(:time_segment_end)
          @time_segment_start = args[:time_segment_start] if args.key?(:time_segment_start)
        end
      end
      
      # The configuration for grounding checking.
      class GoogleCloudAiplatformV1SchemaPredictParamsGroundingConfig
        include Google::Apis::Core::Hashable
      
        # If set, skip finding claim attributions (i.e not generate grounding citation).
        # Corresponds to the JSON property `disableAttribution`
        # @return [Boolean]
        attr_accessor :disable_attribution
        alias_method :disable_attribution?, :disable_attribution
      
        # The sources for the grounding checking.
        # Corresponds to the JSON property `sources`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaPredictParamsGroundingConfigSourceEntry>]
        attr_accessor :sources
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @disable_attribution = args[:disable_attribution] if args.key?(:disable_attribution)
          @sources = args[:sources] if args.key?(:sources)
        end
      end
      
      # Single source entry for the grounding checking.
      class GoogleCloudAiplatformV1SchemaPredictParamsGroundingConfigSourceEntry
        include Google::Apis::Core::Hashable
      
        # The uri of the Vertex AI Search data source. Deprecated. Use
        # vertex_ai_search_datastore instead.
        # Corresponds to the JSON property `enterpriseDatastore`
        # @return [String]
        attr_accessor :enterprise_datastore
      
        # The grounding text passed inline with the Predict API. It can support up to 1
        # million bytes.
        # Corresponds to the JSON property `inlineContext`
        # @return [String]
        attr_accessor :inline_context
      
        # The type of the grounding checking source.
        # Corresponds to the JSON property `type`
        # @return [String]
        attr_accessor :type
      
        # The uri of the Vertex AI Search data source.
        # Corresponds to the JSON property `vertexAiSearchDatastore`
        # @return [String]
        attr_accessor :vertex_ai_search_datastore
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @enterprise_datastore = args[:enterprise_datastore] if args.key?(:enterprise_datastore)
          @inline_context = args[:inline_context] if args.key?(:inline_context)
          @type = args[:type] if args.key?(:type)
          @vertex_ai_search_datastore = args[:vertex_ai_search_datastore] if args.key?(:vertex_ai_search_datastore)
        end
      end
      
      # Prediction model parameters for Image Classification.
      class GoogleCloudAiplatformV1SchemaPredictParamsImageClassificationPredictionParams
        include Google::Apis::Core::Hashable
      
        # The Model only returns predictions with at least this confidence score.
        # Default value is 0.0
        # Corresponds to the JSON property `confidenceThreshold`
        # @return [Float]
        attr_accessor :confidence_threshold
      
        # The Model only returns up to that many top, by confidence score, predictions
        # per instance. If this number is very high, the Model may return fewer
        # predictions. Default value is 10.
        # Corresponds to the JSON property `maxPredictions`
        # @return [Fixnum]
        attr_accessor :max_predictions
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence_threshold = args[:confidence_threshold] if args.key?(:confidence_threshold)
          @max_predictions = args[:max_predictions] if args.key?(:max_predictions)
        end
      end
      
      # Prediction model parameters for Image Object Detection.
      class GoogleCloudAiplatformV1SchemaPredictParamsImageObjectDetectionPredictionParams
        include Google::Apis::Core::Hashable
      
        # The Model only returns predictions with at least this confidence score.
        # Default value is 0.0
        # Corresponds to the JSON property `confidenceThreshold`
        # @return [Float]
        attr_accessor :confidence_threshold
      
        # The Model only returns up to that many top, by confidence score, predictions
        # per instance. Note that number of returned predictions is also limited by
        # metadata's predictionsLimit. Default value is 10.
        # Corresponds to the JSON property `maxPredictions`
        # @return [Fixnum]
        attr_accessor :max_predictions
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence_threshold = args[:confidence_threshold] if args.key?(:confidence_threshold)
          @max_predictions = args[:max_predictions] if args.key?(:max_predictions)
        end
      end
      
      # Prediction model parameters for Image Segmentation.
      class GoogleCloudAiplatformV1SchemaPredictParamsImageSegmentationPredictionParams
        include Google::Apis::Core::Hashable
      
        # When the model predicts category of pixels of the image, it will only provide
        # predictions for pixels that it is at least this much confident about. All
        # other pixels will be classified as background. Default value is 0.5.
        # Corresponds to the JSON property `confidenceThreshold`
        # @return [Float]
        attr_accessor :confidence_threshold
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence_threshold = args[:confidence_threshold] if args.key?(:confidence_threshold)
        end
      end
      
      # Prediction model parameters for Video Action Recognition.
      class GoogleCloudAiplatformV1SchemaPredictParamsVideoActionRecognitionPredictionParams
        include Google::Apis::Core::Hashable
      
        # The Model only returns predictions with at least this confidence score.
        # Default value is 0.0
        # Corresponds to the JSON property `confidenceThreshold`
        # @return [Float]
        attr_accessor :confidence_threshold
      
        # The model only returns up to that many top, by confidence score, predictions
        # per frame of the video. If this number is very high, the Model may return
        # fewer predictions per frame. Default value is 50.
        # Corresponds to the JSON property `maxPredictions`
        # @return [Fixnum]
        attr_accessor :max_predictions
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence_threshold = args[:confidence_threshold] if args.key?(:confidence_threshold)
          @max_predictions = args[:max_predictions] if args.key?(:max_predictions)
        end
      end
      
      # Prediction model parameters for Video Classification.
      class GoogleCloudAiplatformV1SchemaPredictParamsVideoClassificationPredictionParams
        include Google::Apis::Core::Hashable
      
        # The Model only returns predictions with at least this confidence score.
        # Default value is 0.0
        # Corresponds to the JSON property `confidenceThreshold`
        # @return [Float]
        attr_accessor :confidence_threshold
      
        # The Model only returns up to that many top, by confidence score, predictions
        # per instance. If this number is very high, the Model may return fewer
        # predictions. Default value is 10,000.
        # Corresponds to the JSON property `maxPredictions`
        # @return [Fixnum]
        attr_accessor :max_predictions
      
        # Set to true to request classification for a video at one-second intervals.
        # Vertex AI returns labels and their confidence scores for each second of the
        # entire time segment of the video that user specified in the input WARNING:
        # Model evaluation is not done for this classification type, the quality of it
        # depends on the training data, but there are no metrics provided to describe
        # that quality. Default value is false
        # Corresponds to the JSON property `oneSecIntervalClassification`
        # @return [Boolean]
        attr_accessor :one_sec_interval_classification
        alias_method :one_sec_interval_classification?, :one_sec_interval_classification
      
        # Set to true to request segment-level classification. Vertex AI returns labels
        # and their confidence scores for the entire time segment of the video that user
        # specified in the input instance. Default value is true
        # Corresponds to the JSON property `segmentClassification`
        # @return [Boolean]
        attr_accessor :segment_classification
        alias_method :segment_classification?, :segment_classification
      
        # Set to true to request shot-level classification. Vertex AI determines the
        # boundaries for each camera shot in the entire time segment of the video that
        # user specified in the input instance. Vertex AI then returns labels and their
        # confidence scores for each detected shot, along with the start and end time of
        # the shot. WARNING: Model evaluation is not done for this classification type,
        # the quality of it depends on the training data, but there are no metrics
        # provided to describe that quality. Default value is false
        # Corresponds to the JSON property `shotClassification`
        # @return [Boolean]
        attr_accessor :shot_classification
        alias_method :shot_classification?, :shot_classification
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence_threshold = args[:confidence_threshold] if args.key?(:confidence_threshold)
          @max_predictions = args[:max_predictions] if args.key?(:max_predictions)
          @one_sec_interval_classification = args[:one_sec_interval_classification] if args.key?(:one_sec_interval_classification)
          @segment_classification = args[:segment_classification] if args.key?(:segment_classification)
          @shot_classification = args[:shot_classification] if args.key?(:shot_classification)
        end
      end
      
      # Prediction model parameters for Video Object Tracking.
      class GoogleCloudAiplatformV1SchemaPredictParamsVideoObjectTrackingPredictionParams
        include Google::Apis::Core::Hashable
      
        # The Model only returns predictions with at least this confidence score.
        # Default value is 0.0
        # Corresponds to the JSON property `confidenceThreshold`
        # @return [Float]
        attr_accessor :confidence_threshold
      
        # The model only returns up to that many top, by confidence score, predictions
        # per frame of the video. If this number is very high, the Model may return
        # fewer predictions per frame. Default value is 50.
        # Corresponds to the JSON property `maxPredictions`
        # @return [Fixnum]
        attr_accessor :max_predictions
      
        # Only bounding boxes with shortest edge at least that long as a relative value
        # of video frame size are returned. Default value is 0.0.
        # Corresponds to the JSON property `minBoundingBoxSize`
        # @return [Float]
        attr_accessor :min_bounding_box_size
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence_threshold = args[:confidence_threshold] if args.key?(:confidence_threshold)
          @max_predictions = args[:max_predictions] if args.key?(:max_predictions)
          @min_bounding_box_size = args[:min_bounding_box_size] if args.key?(:min_bounding_box_size)
        end
      end
      
      # Prediction output format for Image and Text Classification.
      class GoogleCloudAiplatformV1SchemaPredictPredictionClassificationPredictionResult
        include Google::Apis::Core::Hashable
      
        # The Model's confidences in correctness of the predicted IDs, higher value
        # means higher confidence. Order matches the Ids.
        # Corresponds to the JSON property `confidences`
        # @return [Array<Float>]
        attr_accessor :confidences
      
        # The display names of the AnnotationSpecs that had been identified, order
        # matches the IDs.
        # Corresponds to the JSON property `displayNames`
        # @return [Array<String>]
        attr_accessor :display_names
      
        # The resource IDs of the AnnotationSpecs that had been identified.
        # Corresponds to the JSON property `ids`
        # @return [Array<Fixnum>]
        attr_accessor :ids
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidences = args[:confidences] if args.key?(:confidences)
          @display_names = args[:display_names] if args.key?(:display_names)
          @ids = args[:ids] if args.key?(:ids)
        end
      end
      
      # Prediction output format for Image Object Detection.
      class GoogleCloudAiplatformV1SchemaPredictPredictionImageObjectDetectionPredictionResult
        include Google::Apis::Core::Hashable
      
        # Bounding boxes, i.e. the rectangles over the image, that pinpoint the found
        # AnnotationSpecs. Given in order that matches the IDs. Each bounding box is an
        # array of 4 numbers `xMin`, `xMax`, `yMin`, and `yMax`, which represent the
        # extremal coordinates of the box. They are relative to the image size, and the
        # point 0,0 is in the top left of the image.
        # Corresponds to the JSON property `bboxes`
        # @return [Array<Array<Object>>]
        attr_accessor :bboxes
      
        # The Model's confidences in correctness of the predicted IDs, higher value
        # means higher confidence. Order matches the Ids.
        # Corresponds to the JSON property `confidences`
        # @return [Array<Float>]
        attr_accessor :confidences
      
        # The display names of the AnnotationSpecs that had been identified, order
        # matches the IDs.
        # Corresponds to the JSON property `displayNames`
        # @return [Array<String>]
        attr_accessor :display_names
      
        # The resource IDs of the AnnotationSpecs that had been identified, ordered by
        # the confidence score descendingly.
        # Corresponds to the JSON property `ids`
        # @return [Array<Fixnum>]
        attr_accessor :ids
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @bboxes = args[:bboxes] if args.key?(:bboxes)
          @confidences = args[:confidences] if args.key?(:confidences)
          @display_names = args[:display_names] if args.key?(:display_names)
          @ids = args[:ids] if args.key?(:ids)
        end
      end
      
      # Prediction output format for Image Segmentation.
      class GoogleCloudAiplatformV1SchemaPredictPredictionImageSegmentationPredictionResult
        include Google::Apis::Core::Hashable
      
        # A PNG image where each pixel in the mask represents the category in which the
        # pixel in the original image was predicted to belong to. The size of this image
        # will be the same as the original image. The mapping between the AnntoationSpec
        # and the color can be found in model's metadata. The model will choose the most
        # likely category and if none of the categories reach the confidence threshold,
        # the pixel will be marked as background.
        # Corresponds to the JSON property `categoryMask`
        # @return [String]
        attr_accessor :category_mask
      
        # A one channel image which is encoded as an 8bit lossless PNG. The size of the
        # image will be the same as the original image. For a specific pixel, darker
        # color means less confidence in correctness of the cateogry in the categoryMask
        # for the corresponding pixel. Black means no confidence and white means
        # complete confidence.
        # Corresponds to the JSON property `confidenceMask`
        # @return [String]
        attr_accessor :confidence_mask
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @category_mask = args[:category_mask] if args.key?(:category_mask)
          @confidence_mask = args[:confidence_mask] if args.key?(:confidence_mask)
        end
      end
      
      # Prediction output format for Tabular Classification.
      class GoogleCloudAiplatformV1SchemaPredictPredictionTabularClassificationPredictionResult
        include Google::Apis::Core::Hashable
      
        # The name of the classes being classified, contains all possible values of the
        # target column.
        # Corresponds to the JSON property `classes`
        # @return [Array<String>]
        attr_accessor :classes
      
        # The model's confidence in each class being correct, higher value means higher
        # confidence. The N-th score corresponds to the N-th class in classes.
        # Corresponds to the JSON property `scores`
        # @return [Array<Float>]
        attr_accessor :scores
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @classes = args[:classes] if args.key?(:classes)
          @scores = args[:scores] if args.key?(:scores)
        end
      end
      
      # Prediction output format for Tabular Regression.
      class GoogleCloudAiplatformV1SchemaPredictPredictionTabularRegressionPredictionResult
        include Google::Apis::Core::Hashable
      
        # The lower bound of the prediction interval.
        # Corresponds to the JSON property `lowerBound`
        # @return [Float]
        attr_accessor :lower_bound
      
        # Quantile predictions, in 1-1 correspondence with quantile_values.
        # Corresponds to the JSON property `quantilePredictions`
        # @return [Array<Float>]
        attr_accessor :quantile_predictions
      
        # Quantile values.
        # Corresponds to the JSON property `quantileValues`
        # @return [Array<Float>]
        attr_accessor :quantile_values
      
        # The upper bound of the prediction interval.
        # Corresponds to the JSON property `upperBound`
        # @return [Float]
        attr_accessor :upper_bound
      
        # The regression value.
        # Corresponds to the JSON property `value`
        # @return [Float]
        attr_accessor :value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @lower_bound = args[:lower_bound] if args.key?(:lower_bound)
          @quantile_predictions = args[:quantile_predictions] if args.key?(:quantile_predictions)
          @quantile_values = args[:quantile_values] if args.key?(:quantile_values)
          @upper_bound = args[:upper_bound] if args.key?(:upper_bound)
          @value = args[:value] if args.key?(:value)
        end
      end
      
      # Prediction output format for Text Extraction.
      class GoogleCloudAiplatformV1SchemaPredictPredictionTextExtractionPredictionResult
        include Google::Apis::Core::Hashable
      
        # The Model's confidences in correctness of the predicted IDs, higher value
        # means higher confidence. Order matches the Ids.
        # Corresponds to the JSON property `confidences`
        # @return [Array<Float>]
        attr_accessor :confidences
      
        # The display names of the AnnotationSpecs that had been identified, order
        # matches the IDs.
        # Corresponds to the JSON property `displayNames`
        # @return [Array<String>]
        attr_accessor :display_names
      
        # The resource IDs of the AnnotationSpecs that had been identified, ordered by
        # the confidence score descendingly.
        # Corresponds to the JSON property `ids`
        # @return [Array<Fixnum>]
        attr_accessor :ids
      
        # The end offsets, inclusive, of the text segment in which the AnnotationSpec
        # has been identified. Expressed as a zero-based number of characters as
        # measured from the start of the text snippet.
        # Corresponds to the JSON property `textSegmentEndOffsets`
        # @return [Array<Fixnum>]
        attr_accessor :text_segment_end_offsets
      
        # The start offsets, inclusive, of the text segment in which the AnnotationSpec
        # has been identified. Expressed as a zero-based number of characters as
        # measured from the start of the text snippet.
        # Corresponds to the JSON property `textSegmentStartOffsets`
        # @return [Array<Fixnum>]
        attr_accessor :text_segment_start_offsets
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidences = args[:confidences] if args.key?(:confidences)
          @display_names = args[:display_names] if args.key?(:display_names)
          @ids = args[:ids] if args.key?(:ids)
          @text_segment_end_offsets = args[:text_segment_end_offsets] if args.key?(:text_segment_end_offsets)
          @text_segment_start_offsets = args[:text_segment_start_offsets] if args.key?(:text_segment_start_offsets)
        end
      end
      
      # Prediction output format for Text Sentiment
      class GoogleCloudAiplatformV1SchemaPredictPredictionTextSentimentPredictionResult
        include Google::Apis::Core::Hashable
      
        # The integer sentiment labels between 0 (inclusive) and sentimentMax label (
        # inclusive), while 0 maps to the least positive sentiment and sentimentMax maps
        # to the most positive one. The higher the score is, the more positive the
        # sentiment in the text snippet is. Note: sentimentMax is an integer value
        # between 1 (inclusive) and 10 (inclusive).
        # Corresponds to the JSON property `sentiment`
        # @return [Fixnum]
        attr_accessor :sentiment
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @sentiment = args[:sentiment] if args.key?(:sentiment)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaPredictPredictionTftFeatureImportance
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `attributeColumns`
        # @return [Array<String>]
        attr_accessor :attribute_columns
      
        # 
        # Corresponds to the JSON property `attributeWeights`
        # @return [Array<Float>]
        attr_accessor :attribute_weights
      
        # 
        # Corresponds to the JSON property `contextColumns`
        # @return [Array<String>]
        attr_accessor :context_columns
      
        # TFT feature importance values. Each pair for `context/horizon/attribute`
        # should have the same shape since the weight corresponds to the column names.
        # Corresponds to the JSON property `contextWeights`
        # @return [Array<Float>]
        attr_accessor :context_weights
      
        # 
        # Corresponds to the JSON property `horizonColumns`
        # @return [Array<String>]
        attr_accessor :horizon_columns
      
        # 
        # Corresponds to the JSON property `horizonWeights`
        # @return [Array<Float>]
        attr_accessor :horizon_weights
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @attribute_columns = args[:attribute_columns] if args.key?(:attribute_columns)
          @attribute_weights = args[:attribute_weights] if args.key?(:attribute_weights)
          @context_columns = args[:context_columns] if args.key?(:context_columns)
          @context_weights = args[:context_weights] if args.key?(:context_weights)
          @horizon_columns = args[:horizon_columns] if args.key?(:horizon_columns)
          @horizon_weights = args[:horizon_weights] if args.key?(:horizon_weights)
        end
      end
      
      # Prediction output format for Time Series Forecasting.
      class GoogleCloudAiplatformV1SchemaPredictPredictionTimeSeriesForecastingPredictionResult
        include Google::Apis::Core::Hashable
      
        # Quantile predictions, in 1-1 correspondence with quantile_values.
        # Corresponds to the JSON property `quantilePredictions`
        # @return [Array<Float>]
        attr_accessor :quantile_predictions
      
        # Quantile values.
        # Corresponds to the JSON property `quantileValues`
        # @return [Array<Float>]
        attr_accessor :quantile_values
      
        # Only use these if TFt is enabled.
        # Corresponds to the JSON property `tftFeatureImportance`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaPredictPredictionTftFeatureImportance]
        attr_accessor :tft_feature_importance
      
        # The regression value.
        # Corresponds to the JSON property `value`
        # @return [Float]
        attr_accessor :value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @quantile_predictions = args[:quantile_predictions] if args.key?(:quantile_predictions)
          @quantile_values = args[:quantile_values] if args.key?(:quantile_values)
          @tft_feature_importance = args[:tft_feature_importance] if args.key?(:tft_feature_importance)
          @value = args[:value] if args.key?(:value)
        end
      end
      
      # Prediction output format for Video Action Recognition.
      class GoogleCloudAiplatformV1SchemaPredictPredictionVideoActionRecognitionPredictionResult
        include Google::Apis::Core::Hashable
      
        # The Model's confidence in correction of this prediction, higher value means
        # higher confidence.
        # Corresponds to the JSON property `confidence`
        # @return [Float]
        attr_accessor :confidence
      
        # The display name of the AnnotationSpec that had been identified.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # The resource ID of the AnnotationSpec that had been identified.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        # The end, exclusive, of the video's time segment in which the AnnotationSpec
        # has been identified. Expressed as a number of seconds as measured from the
        # start of the video, with fractions up to a microsecond precision, and with "s"
        # appended at the end.
        # Corresponds to the JSON property `timeSegmentEnd`
        # @return [String]
        attr_accessor :time_segment_end
      
        # The beginning, inclusive, of the video's time segment in which the
        # AnnotationSpec has been identified. Expressed as a number of seconds as
        # measured from the start of the video, with fractions up to a microsecond
        # precision, and with "s" appended at the end.
        # Corresponds to the JSON property `timeSegmentStart`
        # @return [String]
        attr_accessor :time_segment_start
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence = args[:confidence] if args.key?(:confidence)
          @display_name = args[:display_name] if args.key?(:display_name)
          @id = args[:id] if args.key?(:id)
          @time_segment_end = args[:time_segment_end] if args.key?(:time_segment_end)
          @time_segment_start = args[:time_segment_start] if args.key?(:time_segment_start)
        end
      end
      
      # Prediction output format for Video Classification.
      class GoogleCloudAiplatformV1SchemaPredictPredictionVideoClassificationPredictionResult
        include Google::Apis::Core::Hashable
      
        # The Model's confidence in correction of this prediction, higher value means
        # higher confidence.
        # Corresponds to the JSON property `confidence`
        # @return [Float]
        attr_accessor :confidence
      
        # The display name of the AnnotationSpec that had been identified.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # The resource ID of the AnnotationSpec that had been identified.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        # The end, exclusive, of the video's time segment in which the AnnotationSpec
        # has been identified. Expressed as a number of seconds as measured from the
        # start of the video, with fractions up to a microsecond precision, and with "s"
        # appended at the end. Note that for 'segment-classification' prediction type,
        # this equals the original 'timeSegmentEnd' from the input instance, for other
        # types it is the end of a shot or a 1 second interval respectively.
        # Corresponds to the JSON property `timeSegmentEnd`
        # @return [String]
        attr_accessor :time_segment_end
      
        # The beginning, inclusive, of the video's time segment in which the
        # AnnotationSpec has been identified. Expressed as a number of seconds as
        # measured from the start of the video, with fractions up to a microsecond
        # precision, and with "s" appended at the end. Note that for 'segment-
        # classification' prediction type, this equals the original 'timeSegmentStart'
        # from the input instance, for other types it is the start of a shot or a 1
        # second interval respectively.
        # Corresponds to the JSON property `timeSegmentStart`
        # @return [String]
        attr_accessor :time_segment_start
      
        # The type of the prediction. The requested types can be configured via
        # parameters. This will be one of - segment-classification - shot-classification
        # - one-sec-interval-classification
        # Corresponds to the JSON property `type`
        # @return [String]
        attr_accessor :type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence = args[:confidence] if args.key?(:confidence)
          @display_name = args[:display_name] if args.key?(:display_name)
          @id = args[:id] if args.key?(:id)
          @time_segment_end = args[:time_segment_end] if args.key?(:time_segment_end)
          @time_segment_start = args[:time_segment_start] if args.key?(:time_segment_start)
          @type = args[:type] if args.key?(:type)
        end
      end
      
      # Prediction output format for Video Object Tracking.
      class GoogleCloudAiplatformV1SchemaPredictPredictionVideoObjectTrackingPredictionResult
        include Google::Apis::Core::Hashable
      
        # The Model's confidence in correction of this prediction, higher value means
        # higher confidence.
        # Corresponds to the JSON property `confidence`
        # @return [Float]
        attr_accessor :confidence
      
        # The display name of the AnnotationSpec that had been identified.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # All of the frames of the video in which a single object instance has been
        # detected. The bounding boxes in the frames identify the same object.
        # Corresponds to the JSON property `frames`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaPredictPredictionVideoObjectTrackingPredictionResultFrame>]
        attr_accessor :frames
      
        # The resource ID of the AnnotationSpec that had been identified.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        # The end, inclusive, of the video's time segment in which the object instance
        # has been detected. Expressed as a number of seconds as measured from the start
        # of the video, with fractions up to a microsecond precision, and with "s"
        # appended at the end.
        # Corresponds to the JSON property `timeSegmentEnd`
        # @return [String]
        attr_accessor :time_segment_end
      
        # The beginning, inclusive, of the video's time segment in which the object
        # instance has been detected. Expressed as a number of seconds as measured from
        # the start of the video, with fractions up to a microsecond precision, and with
        # "s" appended at the end.
        # Corresponds to the JSON property `timeSegmentStart`
        # @return [String]
        attr_accessor :time_segment_start
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence = args[:confidence] if args.key?(:confidence)
          @display_name = args[:display_name] if args.key?(:display_name)
          @frames = args[:frames] if args.key?(:frames)
          @id = args[:id] if args.key?(:id)
          @time_segment_end = args[:time_segment_end] if args.key?(:time_segment_end)
          @time_segment_start = args[:time_segment_start] if args.key?(:time_segment_start)
        end
      end
      
      # The fields `xMin`, `xMax`, `yMin`, and `yMax` refer to a bounding box, i.e.
      # the rectangle over the video frame pinpointing the found AnnotationSpec. The
      # coordinates are relative to the frame size, and the point 0,0 is in the top
      # left of the frame.
      class GoogleCloudAiplatformV1SchemaPredictPredictionVideoObjectTrackingPredictionResultFrame
        include Google::Apis::Core::Hashable
      
        # A time (frame) of a video in which the object has been detected. Expressed as
        # a number of seconds as measured from the start of the video, with fractions up
        # to a microsecond precision, and with "s" appended at the end.
        # Corresponds to the JSON property `timeOffset`
        # @return [String]
        attr_accessor :time_offset
      
        # The rightmost coordinate of the bounding box.
        # Corresponds to the JSON property `xMax`
        # @return [Float]
        attr_accessor :x_max
      
        # The leftmost coordinate of the bounding box.
        # Corresponds to the JSON property `xMin`
        # @return [Float]
        attr_accessor :x_min
      
        # The bottommost coordinate of the bounding box.
        # Corresponds to the JSON property `yMax`
        # @return [Float]
        attr_accessor :y_max
      
        # The topmost coordinate of the bounding box.
        # Corresponds to the JSON property `yMin`
        # @return [Float]
        attr_accessor :y_min
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @time_offset = args[:time_offset] if args.key?(:time_offset)
          @x_max = args[:x_max] if args.key?(:x_max)
          @x_min = args[:x_min] if args.key?(:x_min)
          @y_max = args[:y_max] if args.key?(:y_max)
          @y_min = args[:y_min] if args.key?(:y_min)
        end
      end
      
      # Represents a line of JSONL in the batch prediction output file.
      class GoogleCloudAiplatformV1SchemaPredictionResult
        include Google::Apis::Core::Hashable
      
        # The error result. Do not set prediction if this is set.
        # Corresponds to the JSON property `error`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaPredictionResultError]
        attr_accessor :error
      
        # User's input instance. Struct is used here instead of Any so that JsonFormat
        # does not append an extra "@type" field when we convert the proto to JSON.
        # Corresponds to the JSON property `instance`
        # @return [Hash<String,Object>]
        attr_accessor :instance
      
        # Optional user-provided key from the input instance.
        # Corresponds to the JSON property `key`
        # @return [String]
        attr_accessor :key
      
        # The prediction result. Value is used here instead of Any so that JsonFormat
        # does not append an extra "@type" field when we convert the proto to JSON and
        # so we can represent array of objects. Do not set error if this is set.
        # Corresponds to the JSON property `prediction`
        # @return [Object]
        attr_accessor :prediction
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @error = args[:error] if args.key?(:error)
          @instance = args[:instance] if args.key?(:instance)
          @key = args[:key] if args.key?(:key)
          @prediction = args[:prediction] if args.key?(:prediction)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaPredictionResultError
        include Google::Apis::Core::Hashable
      
        # Error message with additional details.
        # Corresponds to the JSON property `message`
        # @return [String]
        attr_accessor :message
      
        # Error status. This will be serialized into the enum name e.g. "NOT_FOUND".
        # Corresponds to the JSON property `status`
        # @return [String]
        attr_accessor :status
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @message = args[:message] if args.key?(:message)
          @status = args[:status] if args.key?(:status)
        end
      end
      
      # The A2 schema of a prompt.
      class GoogleCloudAiplatformV1SchemaPromptApiSchema
        include Google::Apis::Core::Hashable
      
        # The Schema version that represents changes to the API behavior.
        # Corresponds to the JSON property `apiSchemaVersion`
        # @return [String]
        attr_accessor :api_schema_version
      
        # A list of execution instances for constructing a ready-to-use prompt.
        # Corresponds to the JSON property `executions`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaPromptInstancePromptExecution>]
        attr_accessor :executions
      
        # Prompt variation that embeds preambles to prompt string.
        # Corresponds to the JSON property `multimodalPrompt`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaPromptSpecMultimodalPrompt]
        attr_accessor :multimodal_prompt
      
        # Prompt variation that stores preambles in separate fields.
        # Corresponds to the JSON property `structuredPrompt`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaPromptSpecStructuredPrompt]
        attr_accessor :structured_prompt
      
        # Prompt variation for Translation use case.
        # Corresponds to the JSON property `translationPrompt`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaPromptSpecTranslationPrompt]
        attr_accessor :translation_prompt
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @api_schema_version = args[:api_schema_version] if args.key?(:api_schema_version)
          @executions = args[:executions] if args.key?(:executions)
          @multimodal_prompt = args[:multimodal_prompt] if args.key?(:multimodal_prompt)
          @structured_prompt = args[:structured_prompt] if args.key?(:structured_prompt)
          @translation_prompt = args[:translation_prompt] if args.key?(:translation_prompt)
        end
      end
      
      # A prompt instance's parameters set that contains a set of variable values.
      class GoogleCloudAiplatformV1SchemaPromptInstancePromptExecution
        include Google::Apis::Core::Hashable
      
        # Maps variable names to their value.
        # Corresponds to the JSON property `arguments`
        # @return [Hash<String,Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaPromptInstanceVariableValue>]
        attr_accessor :arguments
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @arguments = args[:arguments] if args.key?(:arguments)
        end
      end
      
      # The value of a variable in prompt.
      class GoogleCloudAiplatformV1SchemaPromptInstanceVariableValue
        include Google::Apis::Core::Hashable
      
        # A list of elements and information that make up a portion of prompt.
        # Corresponds to the JSON property `partList`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaPromptSpecPartList]
        attr_accessor :part_list
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @part_list = args[:part_list] if args.key?(:part_list)
        end
      end
      
      # Prompt variation that embeds preambles to prompt string.
      class GoogleCloudAiplatformV1SchemaPromptSpecMultimodalPrompt
        include Google::Apis::Core::Hashable
      
        # The prompt message that aligns with the prompt message in google.cloud.
        # aiplatform.master.GenerateContentRequest.
        # Corresponds to the JSON property `promptMessage`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaPromptSpecPromptMessage]
        attr_accessor :prompt_message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @prompt_message = args[:prompt_message] if args.key?(:prompt_message)
        end
      end
      
      # A list of elements and information that make up a portion of prompt.
      class GoogleCloudAiplatformV1SchemaPromptSpecPartList
        include Google::Apis::Core::Hashable
      
        # A list of elements that can be part of a prompt.
        # Corresponds to the JSON property `parts`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Part>]
        attr_accessor :parts
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @parts = args[:parts] if args.key?(:parts)
        end
      end
      
      # The prompt message that aligns with the prompt message in google.cloud.
      # aiplatform.master.GenerateContentRequest.
      class GoogleCloudAiplatformV1SchemaPromptSpecPromptMessage
        include Google::Apis::Core::Hashable
      
        # The content of the current conversation with the model. For single-turn
        # queries, this is a single instance. For multi-turn queries, this is a repeated
        # field that contains conversation history + latest request.
        # Corresponds to the JSON property `contents`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Content>]
        attr_accessor :contents
      
        # Generation config.
        # Corresponds to the JSON property `generationConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenerationConfig]
        attr_accessor :generation_config
      
        # The model name.
        # Corresponds to the JSON property `model`
        # @return [String]
        attr_accessor :model
      
        # Per request settings for blocking unsafe content. Enforced on
        # GenerateContentResponse.candidates.
        # Corresponds to the JSON property `safetySettings`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SafetySetting>]
        attr_accessor :safety_settings
      
        # The base structured datatype containing multi-part content of a message. A `
        # Content` includes a `role` field designating the producer of the `Content` and
        # a `parts` field containing multi-part data that contains the content of the
        # message turn.
        # Corresponds to the JSON property `systemInstruction`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Content]
        attr_accessor :system_instruction
      
        # Tool config. This config is shared for all tools provided in the request.
        # Corresponds to the JSON property `toolConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ToolConfig]
        attr_accessor :tool_config
      
        # A list of `Tools` the model may use to generate the next response. A `Tool` is
        # a piece of code that enables the system to interact with external systems to
        # perform an action, or set of actions, outside of knowledge and scope of the
        # model.
        # Corresponds to the JSON property `tools`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Tool>]
        attr_accessor :tools
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @contents = args[:contents] if args.key?(:contents)
          @generation_config = args[:generation_config] if args.key?(:generation_config)
          @model = args[:model] if args.key?(:model)
          @safety_settings = args[:safety_settings] if args.key?(:safety_settings)
          @system_instruction = args[:system_instruction] if args.key?(:system_instruction)
          @tool_config = args[:tool_config] if args.key?(:tool_config)
          @tools = args[:tools] if args.key?(:tools)
        end
      end
      
      # A pair of sentences used as reference in source and target languages.
      class GoogleCloudAiplatformV1SchemaPromptSpecReferenceSentencePair
        include Google::Apis::Core::Hashable
      
        # Source sentence in the sentence pair.
        # Corresponds to the JSON property `sourceSentence`
        # @return [String]
        attr_accessor :source_sentence
      
        # Target sentence in the sentence pair.
        # Corresponds to the JSON property `targetSentence`
        # @return [String]
        attr_accessor :target_sentence
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @source_sentence = args[:source_sentence] if args.key?(:source_sentence)
          @target_sentence = args[:target_sentence] if args.key?(:target_sentence)
        end
      end
      
      # A list of reference sentence pairs.
      class GoogleCloudAiplatformV1SchemaPromptSpecReferenceSentencePairList
        include Google::Apis::Core::Hashable
      
        # Reference sentence pairs.
        # Corresponds to the JSON property `referenceSentencePairs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaPromptSpecReferenceSentencePair>]
        attr_accessor :reference_sentence_pairs
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @reference_sentence_pairs = args[:reference_sentence_pairs] if args.key?(:reference_sentence_pairs)
        end
      end
      
      # Prompt variation that stores preambles in separate fields.
      class GoogleCloudAiplatformV1SchemaPromptSpecStructuredPrompt
        include Google::Apis::Core::Hashable
      
        # The base structured datatype containing multi-part content of a message. A `
        # Content` includes a `role` field designating the producer of the `Content` and
        # a `parts` field containing multi-part data that contains the content of the
        # message turn.
        # Corresponds to the JSON property `context`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Content]
        attr_accessor :context
      
        # Preamble: A set of examples for expected model response.
        # Corresponds to the JSON property `examples`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaPromptSpecPartList>]
        attr_accessor :examples
      
        # Preamble: For infill prompt, the prefix before expected model response.
        # Corresponds to the JSON property `infillPrefix`
        # @return [String]
        attr_accessor :infill_prefix
      
        # Preamble: For infill prompt, the suffix after expected model response.
        # Corresponds to the JSON property `infillSuffix`
        # @return [String]
        attr_accessor :infill_suffix
      
        # Preamble: The input prefixes before each example input.
        # Corresponds to the JSON property `inputPrefixes`
        # @return [Array<String>]
        attr_accessor :input_prefixes
      
        # Preamble: The output prefixes before each example output.
        # Corresponds to the JSON property `outputPrefixes`
        # @return [Array<String>]
        attr_accessor :output_prefixes
      
        # Preamble: The input test data for prediction. Each PartList in this field
        # represents one text-only input set for a single model request.
        # Corresponds to the JSON property `predictionInputs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaPromptSpecPartList>]
        attr_accessor :prediction_inputs
      
        # The prompt message that aligns with the prompt message in google.cloud.
        # aiplatform.master.GenerateContentRequest.
        # Corresponds to the JSON property `promptMessage`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaPromptSpecPromptMessage]
        attr_accessor :prompt_message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @context = args[:context] if args.key?(:context)
          @examples = args[:examples] if args.key?(:examples)
          @infill_prefix = args[:infill_prefix] if args.key?(:infill_prefix)
          @infill_suffix = args[:infill_suffix] if args.key?(:infill_suffix)
          @input_prefixes = args[:input_prefixes] if args.key?(:input_prefixes)
          @output_prefixes = args[:output_prefixes] if args.key?(:output_prefixes)
          @prediction_inputs = args[:prediction_inputs] if args.key?(:prediction_inputs)
          @prompt_message = args[:prompt_message] if args.key?(:prompt_message)
        end
      end
      
      # The translation example that contains reference sentences from various sources.
      class GoogleCloudAiplatformV1SchemaPromptSpecTranslationExample
        include Google::Apis::Core::Hashable
      
        # The reference sentences from inline text.
        # Corresponds to the JSON property `referenceSentencePairLists`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaPromptSpecReferenceSentencePairList>]
        attr_accessor :reference_sentence_pair_lists
      
        # The reference sentences from file.
        # Corresponds to the JSON property `referenceSentencesFileInputs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaPromptSpecTranslationSentenceFileInput>]
        attr_accessor :reference_sentences_file_inputs
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @reference_sentence_pair_lists = args[:reference_sentence_pair_lists] if args.key?(:reference_sentence_pair_lists)
          @reference_sentences_file_inputs = args[:reference_sentences_file_inputs] if args.key?(:reference_sentences_file_inputs)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaPromptSpecTranslationFileInputSource
        include Google::Apis::Core::Hashable
      
        # The file's contents.
        # Corresponds to the JSON property `content`
        # @return [String]
        attr_accessor :content
      
        # The file's display name.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # The file's mime type.
        # Corresponds to the JSON property `mimeType`
        # @return [String]
        attr_accessor :mime_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content = args[:content] if args.key?(:content)
          @display_name = args[:display_name] if args.key?(:display_name)
          @mime_type = args[:mime_type] if args.key?(:mime_type)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaPromptSpecTranslationGcsInputSource
        include Google::Apis::Core::Hashable
      
        # Source data URI. For example, `gs://my_bucket/my_object`.
        # Corresponds to the JSON property `inputUri`
        # @return [String]
        attr_accessor :input_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @input_uri = args[:input_uri] if args.key?(:input_uri)
        end
      end
      
      # Optional settings for translation prompt.
      class GoogleCloudAiplatformV1SchemaPromptSpecTranslationOption
        include Google::Apis::Core::Hashable
      
        # How many shots to use.
        # Corresponds to the JSON property `numberOfShots`
        # @return [Fixnum]
        attr_accessor :number_of_shots
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @number_of_shots = args[:number_of_shots] if args.key?(:number_of_shots)
        end
      end
      
      # Prompt variation for Translation use case.
      class GoogleCloudAiplatformV1SchemaPromptSpecTranslationPrompt
        include Google::Apis::Core::Hashable
      
        # The translation example that contains reference sentences from various sources.
        # Corresponds to the JSON property `example`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaPromptSpecTranslationExample]
        attr_accessor :example
      
        # Optional settings for translation prompt.
        # Corresponds to the JSON property `option`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaPromptSpecTranslationOption]
        attr_accessor :option
      
        # The prompt message that aligns with the prompt message in google.cloud.
        # aiplatform.master.GenerateContentRequest.
        # Corresponds to the JSON property `promptMessage`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaPromptSpecPromptMessage]
        attr_accessor :prompt_message
      
        # The source language code.
        # Corresponds to the JSON property `sourceLanguageCode`
        # @return [String]
        attr_accessor :source_language_code
      
        # The target language code.
        # Corresponds to the JSON property `targetLanguageCode`
        # @return [String]
        attr_accessor :target_language_code
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @example = args[:example] if args.key?(:example)
          @option = args[:option] if args.key?(:option)
          @prompt_message = args[:prompt_message] if args.key?(:prompt_message)
          @source_language_code = args[:source_language_code] if args.key?(:source_language_code)
          @target_language_code = args[:target_language_code] if args.key?(:target_language_code)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaPromptSpecTranslationSentenceFileInput
        include Google::Apis::Core::Hashable
      
        # Inlined file source.
        # Corresponds to the JSON property `fileInputSource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaPromptSpecTranslationFileInputSource]
        attr_accessor :file_input_source
      
        # Cloud Storage file source.
        # Corresponds to the JSON property `gcsInputSource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaPromptSpecTranslationGcsInputSource]
        attr_accessor :gcs_input_source
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @file_input_source = args[:file_input_source] if args.key?(:file_input_source)
          @gcs_input_source = args[:gcs_input_source] if args.key?(:gcs_input_source)
        end
      end
      
      # The metadata of Datasets that contain tables data.
      class GoogleCloudAiplatformV1SchemaTablesDatasetMetadata
        include Google::Apis::Core::Hashable
      
        # The tables Dataset's data source. The Dataset doesn't store the data directly,
        # but only pointer(s) to its data.
        # Corresponds to the JSON property `inputConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTablesDatasetMetadataInputConfig]
        attr_accessor :input_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @input_config = args[:input_config] if args.key?(:input_config)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaTablesDatasetMetadataBigQuerySource
        include Google::Apis::Core::Hashable
      
        # The URI of a BigQuery table. e.g. bq://projectId.bqDatasetId.bqTableId
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaTablesDatasetMetadataGcsSource
        include Google::Apis::Core::Hashable
      
        # Cloud Storage URI of one or more files. Only CSV files are supported. The
        # first line of the CSV file is used as the header. If there are multiple files,
        # the header is the first line of the lexicographically first file, the other
        # files must either contain the exact same header or omit the header.
        # Corresponds to the JSON property `uri`
        # @return [Array<String>]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # The tables Dataset's data source. The Dataset doesn't store the data directly,
      # but only pointer(s) to its data.
      class GoogleCloudAiplatformV1SchemaTablesDatasetMetadataInputConfig
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `bigquerySource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTablesDatasetMetadataBigQuerySource]
        attr_accessor :bigquery_source
      
        # 
        # Corresponds to the JSON property `gcsSource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTablesDatasetMetadataGcsSource]
        attr_accessor :gcs_source
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @bigquery_source = args[:bigquery_source] if args.key?(:bigquery_source)
          @gcs_source = args[:gcs_source] if args.key?(:gcs_source)
        end
      end
      
      # Annotation details specific to text classification.
      class GoogleCloudAiplatformV1SchemaTextClassificationAnnotation
        include Google::Apis::Core::Hashable
      
        # The resource Id of the AnnotationSpec that this Annotation pertains to.
        # Corresponds to the JSON property `annotationSpecId`
        # @return [String]
        attr_accessor :annotation_spec_id
      
        # The display name of the AnnotationSpec that this Annotation pertains to.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @annotation_spec_id = args[:annotation_spec_id] if args.key?(:annotation_spec_id)
          @display_name = args[:display_name] if args.key?(:display_name)
        end
      end
      
      # Payload of Text DataItem.
      class GoogleCloudAiplatformV1SchemaTextDataItem
        include Google::Apis::Core::Hashable
      
        # Output only. Google Cloud Storage URI points to a copy of the original text in
        # the Vertex-managed bucket in the user's project. The text file is up to 10MB
        # in size.
        # Corresponds to the JSON property `gcsUri`
        # @return [String]
        attr_accessor :gcs_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @gcs_uri = args[:gcs_uri] if args.key?(:gcs_uri)
        end
      end
      
      # The metadata of Datasets that contain Text DataItems.
      class GoogleCloudAiplatformV1SchemaTextDatasetMetadata
        include Google::Apis::Core::Hashable
      
        # Points to a YAML file stored on Google Cloud Storage describing payload of the
        # Text DataItems that belong to this Dataset.
        # Corresponds to the JSON property `dataItemSchemaUri`
        # @return [String]
        attr_accessor :data_item_schema_uri
      
        # Google Cloud Storage Bucket name that contains the blob data of this Dataset.
        # Corresponds to the JSON property `gcsBucket`
        # @return [String]
        attr_accessor :gcs_bucket
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @data_item_schema_uri = args[:data_item_schema_uri] if args.key?(:data_item_schema_uri)
          @gcs_bucket = args[:gcs_bucket] if args.key?(:gcs_bucket)
        end
      end
      
      # Annotation details specific to text extraction.
      class GoogleCloudAiplatformV1SchemaTextExtractionAnnotation
        include Google::Apis::Core::Hashable
      
        # The resource Id of the AnnotationSpec that this Annotation pertains to.
        # Corresponds to the JSON property `annotationSpecId`
        # @return [String]
        attr_accessor :annotation_spec_id
      
        # The display name of the AnnotationSpec that this Annotation pertains to.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # The text segment inside of DataItem.
        # Corresponds to the JSON property `textSegment`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTextSegment]
        attr_accessor :text_segment
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @annotation_spec_id = args[:annotation_spec_id] if args.key?(:annotation_spec_id)
          @display_name = args[:display_name] if args.key?(:display_name)
          @text_segment = args[:text_segment] if args.key?(:text_segment)
        end
      end
      
      # The metadata of Datasets that contain Text Prompt data.
      class GoogleCloudAiplatformV1SchemaTextPromptDatasetMetadata
        include Google::Apis::Core::Hashable
      
        # Number of candidates.
        # Corresponds to the JSON property `candidateCount`
        # @return [Fixnum]
        attr_accessor :candidate_count
      
        # The Google Cloud Storage URI that stores the prompt data.
        # Corresponds to the JSON property `gcsUri`
        # @return [String]
        attr_accessor :gcs_uri
      
        # The configuration for grounding checking.
        # Corresponds to the JSON property `groundingConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaPredictParamsGroundingConfig]
        attr_accessor :grounding_config
      
        # Whether the prompt dataset has prompt variable.
        # Corresponds to the JSON property `hasPromptVariable`
        # @return [Boolean]
        attr_accessor :has_prompt_variable
        alias_method :has_prompt_variable?, :has_prompt_variable
      
        # Whether or not the user has enabled logit probabilities in the model
        # parameters.
        # Corresponds to the JSON property `logprobs`
        # @return [Boolean]
        attr_accessor :logprobs
        alias_method :logprobs?, :logprobs
      
        # Value of the maximum number of tokens generated set when the dataset was saved.
        # Corresponds to the JSON property `maxOutputTokens`
        # @return [Fixnum]
        attr_accessor :max_output_tokens
      
        # User-created prompt note. Note size limit is 2KB.
        # Corresponds to the JSON property `note`
        # @return [String]
        attr_accessor :note
      
        # The A2 schema of a prompt.
        # Corresponds to the JSON property `promptApiSchema`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaPromptApiSchema]
        attr_accessor :prompt_api_schema
      
        # Type of the prompt dataset.
        # Corresponds to the JSON property `promptType`
        # @return [String]
        attr_accessor :prompt_type
      
        # Seeding enables model to return a deterministic response on a best effort
        # basis. Determinism isn't guaranteed. This field determines whether or not
        # seeding is enabled.
        # Corresponds to the JSON property `seedEnabled`
        # @return [Boolean]
        attr_accessor :seed_enabled
        alias_method :seed_enabled?, :seed_enabled
      
        # The actual value of the seed.
        # Corresponds to the JSON property `seedValue`
        # @return [Fixnum]
        attr_accessor :seed_value
      
        # Customized stop sequences.
        # Corresponds to the JSON property `stopSequences`
        # @return [Array<String>]
        attr_accessor :stop_sequences
      
        # The content of the prompt dataset system instruction.
        # Corresponds to the JSON property `systemInstruction`
        # @return [String]
        attr_accessor :system_instruction
      
        # The Google Cloud Storage URI that stores the system instruction, starting with
        # gs://.
        # Corresponds to the JSON property `systemInstructionGcsUri`
        # @return [String]
        attr_accessor :system_instruction_gcs_uri
      
        # Temperature value used for sampling set when the dataset was saved. This value
        # is used to tune the degree of randomness.
        # Corresponds to the JSON property `temperature`
        # @return [Float]
        attr_accessor :temperature
      
        # The content of the prompt dataset.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        # Top K value set when the dataset was saved. This value determines how many
        # candidates with highest probability from the vocab would be selected for each
        # decoding step.
        # Corresponds to the JSON property `topK`
        # @return [Fixnum]
        attr_accessor :top_k
      
        # Top P value set when the dataset was saved. Given topK tokens for decoding,
        # top candidates will be selected until the sum of their probabilities is topP.
        # Corresponds to the JSON property `topP`
        # @return [Float]
        attr_accessor :top_p
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @candidate_count = args[:candidate_count] if args.key?(:candidate_count)
          @gcs_uri = args[:gcs_uri] if args.key?(:gcs_uri)
          @grounding_config = args[:grounding_config] if args.key?(:grounding_config)
          @has_prompt_variable = args[:has_prompt_variable] if args.key?(:has_prompt_variable)
          @logprobs = args[:logprobs] if args.key?(:logprobs)
          @max_output_tokens = args[:max_output_tokens] if args.key?(:max_output_tokens)
          @note = args[:note] if args.key?(:note)
          @prompt_api_schema = args[:prompt_api_schema] if args.key?(:prompt_api_schema)
          @prompt_type = args[:prompt_type] if args.key?(:prompt_type)
          @seed_enabled = args[:seed_enabled] if args.key?(:seed_enabled)
          @seed_value = args[:seed_value] if args.key?(:seed_value)
          @stop_sequences = args[:stop_sequences] if args.key?(:stop_sequences)
          @system_instruction = args[:system_instruction] if args.key?(:system_instruction)
          @system_instruction_gcs_uri = args[:system_instruction_gcs_uri] if args.key?(:system_instruction_gcs_uri)
          @temperature = args[:temperature] if args.key?(:temperature)
          @text = args[:text] if args.key?(:text)
          @top_k = args[:top_k] if args.key?(:top_k)
          @top_p = args[:top_p] if args.key?(:top_p)
        end
      end
      
      # The text segment inside of DataItem.
      class GoogleCloudAiplatformV1SchemaTextSegment
        include Google::Apis::Core::Hashable
      
        # The text content in the segment for output only.
        # Corresponds to the JSON property `content`
        # @return [String]
        attr_accessor :content
      
        # Zero-based character index of the first character past the end of the text
        # segment (counting character from the beginning of the text). The character at
        # the end_offset is NOT included in the text segment.
        # Corresponds to the JSON property `endOffset`
        # @return [Fixnum]
        attr_accessor :end_offset
      
        # Zero-based character index of the first character of the text segment (
        # counting characters from the beginning of the text).
        # Corresponds to the JSON property `startOffset`
        # @return [Fixnum]
        attr_accessor :start_offset
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content = args[:content] if args.key?(:content)
          @end_offset = args[:end_offset] if args.key?(:end_offset)
          @start_offset = args[:start_offset] if args.key?(:start_offset)
        end
      end
      
      # Annotation details specific to text sentiment.
      class GoogleCloudAiplatformV1SchemaTextSentimentAnnotation
        include Google::Apis::Core::Hashable
      
        # The resource Id of the AnnotationSpec that this Annotation pertains to.
        # Corresponds to the JSON property `annotationSpecId`
        # @return [String]
        attr_accessor :annotation_spec_id
      
        # The display name of the AnnotationSpec that this Annotation pertains to.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # The sentiment score for text.
        # Corresponds to the JSON property `sentiment`
        # @return [Fixnum]
        attr_accessor :sentiment
      
        # The sentiment max score for text.
        # Corresponds to the JSON property `sentimentMax`
        # @return [Fixnum]
        attr_accessor :sentiment_max
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @annotation_spec_id = args[:annotation_spec_id] if args.key?(:annotation_spec_id)
          @display_name = args[:display_name] if args.key?(:display_name)
          @sentiment = args[:sentiment] if args.key?(:sentiment)
          @sentiment_max = args[:sentiment_max] if args.key?(:sentiment_max)
        end
      end
      
      # The metadata of SavedQuery contains TextSentiment Annotations.
      class GoogleCloudAiplatformV1SchemaTextSentimentSavedQueryMetadata
        include Google::Apis::Core::Hashable
      
        # The maximum sentiment of sentiment Anntoation in this SavedQuery.
        # Corresponds to the JSON property `sentimentMax`
        # @return [Fixnum]
        attr_accessor :sentiment_max
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @sentiment_max = args[:sentiment_max] if args.key?(:sentiment_max)
        end
      end
      
      # A time period inside of a DataItem that has a time dimension (e.g. video).
      class GoogleCloudAiplatformV1SchemaTimeSegment
        include Google::Apis::Core::Hashable
      
        # End of the time segment (exclusive), represented as the duration since the
        # start of the DataItem.
        # Corresponds to the JSON property `endTimeOffset`
        # @return [String]
        attr_accessor :end_time_offset
      
        # Start of the time segment (inclusive), represented as the duration since the
        # start of the DataItem.
        # Corresponds to the JSON property `startTimeOffset`
        # @return [String]
        attr_accessor :start_time_offset
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @end_time_offset = args[:end_time_offset] if args.key?(:end_time_offset)
          @start_time_offset = args[:start_time_offset] if args.key?(:start_time_offset)
        end
      end
      
      # The metadata of Datasets that contain time series data.
      class GoogleCloudAiplatformV1SchemaTimeSeriesDatasetMetadata
        include Google::Apis::Core::Hashable
      
        # The time series Dataset's data source. The Dataset doesn't store the data
        # directly, but only pointer(s) to its data.
        # Corresponds to the JSON property `inputConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTimeSeriesDatasetMetadataInputConfig]
        attr_accessor :input_config
      
        # The column name of the time column that identifies time order in the time
        # series.
        # Corresponds to the JSON property `timeColumn`
        # @return [String]
        attr_accessor :time_column
      
        # The column name of the time series identifier column that identifies the time
        # series.
        # Corresponds to the JSON property `timeSeriesIdentifierColumn`
        # @return [String]
        attr_accessor :time_series_identifier_column
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @input_config = args[:input_config] if args.key?(:input_config)
          @time_column = args[:time_column] if args.key?(:time_column)
          @time_series_identifier_column = args[:time_series_identifier_column] if args.key?(:time_series_identifier_column)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaTimeSeriesDatasetMetadataBigQuerySource
        include Google::Apis::Core::Hashable
      
        # The URI of a BigQuery table.
        # Corresponds to the JSON property `uri`
        # @return [String]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaTimeSeriesDatasetMetadataGcsSource
        include Google::Apis::Core::Hashable
      
        # Cloud Storage URI of one or more files. Only CSV files are supported. The
        # first line of the CSV file is used as the header. If there are multiple files,
        # the header is the first line of the lexicographically first file, the other
        # files must either contain the exact same header or omit the header.
        # Corresponds to the JSON property `uri`
        # @return [Array<String>]
        attr_accessor :uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @uri = args[:uri] if args.key?(:uri)
        end
      end
      
      # The time series Dataset's data source. The Dataset doesn't store the data
      # directly, but only pointer(s) to its data.
      class GoogleCloudAiplatformV1SchemaTimeSeriesDatasetMetadataInputConfig
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `bigquerySource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTimeSeriesDatasetMetadataBigQuerySource]
        attr_accessor :bigquery_source
      
        # 
        # Corresponds to the JSON property `gcsSource`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTimeSeriesDatasetMetadataGcsSource]
        attr_accessor :gcs_source
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @bigquery_source = args[:bigquery_source] if args.key?(:bigquery_source)
          @gcs_source = args[:gcs_source] if args.key?(:gcs_source)
        end
      end
      
      # A TrainingJob that trains and uploads an AutoML Forecasting Model.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlForecasting
        include Google::Apis::Core::Hashable
      
        # The input parameters of this TrainingJob.
        # Corresponds to the JSON property `inputs`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlForecastingInputs]
        attr_accessor :inputs
      
        # Model metadata specific to AutoML Forecasting.
        # Corresponds to the JSON property `metadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlForecastingMetadata]
        attr_accessor :metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @inputs = args[:inputs] if args.key?(:inputs)
          @metadata = args[:metadata] if args.key?(:metadata)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlForecastingInputs
        include Google::Apis::Core::Hashable
      
        # Additional experiment flags for the time series forcasting training.
        # Corresponds to the JSON property `additionalExperiments`
        # @return [Array<String>]
        attr_accessor :additional_experiments
      
        # Names of columns that are available and provided when a forecast is requested.
        # These columns contain information for the given entity (identified by the
        # time_series_identifier_column column) that is known at forecast. For example,
        # predicted weather for a specific day.
        # Corresponds to the JSON property `availableAtForecastColumns`
        # @return [Array<String>]
        attr_accessor :available_at_forecast_columns
      
        # The amount of time into the past training and prediction data is used for
        # model training and prediction respectively. Expressed in number of units
        # defined by the `data_granularity` field.
        # Corresponds to the JSON property `contextWindow`
        # @return [Fixnum]
        attr_accessor :context_window
      
        # A duration of time expressed in time granularity units.
        # Corresponds to the JSON property `dataGranularity`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlForecastingInputsGranularity]
        attr_accessor :data_granularity
      
        # If probabilistic inference is enabled, the model will fit a distribution that
        # captures the uncertainty of a prediction. At inference time, the predictive
        # distribution is used to make a point prediction that minimizes the
        # optimization objective. For example, the mean of a predictive distribution is
        # the point prediction that minimizes RMSE loss. If quantiles are specified,
        # then the quantiles of the distribution are also returned. The optimization
        # objective cannot be minimize-quantile-loss.
        # Corresponds to the JSON property `enableProbabilisticInference`
        # @return [Boolean]
        attr_accessor :enable_probabilistic_inference
        alias_method :enable_probabilistic_inference?, :enable_probabilistic_inference
      
        # Configuration for exporting test set predictions to a BigQuery table.
        # Corresponds to the JSON property `exportEvaluatedDataItemsConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionExportEvaluatedDataItemsConfig]
        attr_accessor :export_evaluated_data_items_config
      
        # The amount of time into the future for which forecasted values for the target
        # are returned. Expressed in number of units defined by the `data_granularity`
        # field.
        # Corresponds to the JSON property `forecastHorizon`
        # @return [Fixnum]
        attr_accessor :forecast_horizon
      
        # Configuration that defines the hierarchical relationship of time series and
        # parameters for hierarchical forecasting strategies.
        # Corresponds to the JSON property `hierarchyConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionHierarchyConfig]
        attr_accessor :hierarchy_config
      
        # The geographical region based on which the holiday effect is applied in
        # modeling by adding holiday categorical array feature that include all holidays
        # matching the date. This option only allowed when data_granularity is day. By
        # default, holiday effect modeling is disabled. To turn it on, specify the
        # holiday region using this option.
        # Corresponds to the JSON property `holidayRegions`
        # @return [Array<String>]
        attr_accessor :holiday_regions
      
        # Objective function the model is optimizing towards. The training process
        # creates a model that optimizes the value of the objective function over the
        # validation set. The supported optimization objectives: * "minimize-rmse" (
        # default) - Minimize root-mean-squared error (RMSE). * "minimize-mae" -
        # Minimize mean-absolute error (MAE). * "minimize-rmsle" - Minimize root-mean-
        # squared log error (RMSLE). * "minimize-rmspe" - Minimize root-mean-squared
        # percentage error (RMSPE). * "minimize-wape-mae" - Minimize the combination of
        # weighted absolute percentage error (WAPE) and mean-absolute-error (MAE). * "
        # minimize-quantile-loss" - Minimize the quantile loss at the quantiles defined
        # in `quantiles`. * "minimize-mape" - Minimize the mean absolute percentage
        # error.
        # Corresponds to the JSON property `optimizationObjective`
        # @return [String]
        attr_accessor :optimization_objective
      
        # Quantiles to use for minimize-quantile-loss `optimization_objective`, or for
        # probabilistic inference. Up to 5 quantiles are allowed of values between 0 and
        # 1, exclusive. Required if the value of optimization_objective is minimize-
        # quantile-loss. Represents the percent quantiles to use for that objective.
        # Quantiles must be unique.
        # Corresponds to the JSON property `quantiles`
        # @return [Array<Float>]
        attr_accessor :quantiles
      
        # The name of the column that the Model is to predict values for. This column
        # must be unavailable at forecast.
        # Corresponds to the JSON property `targetColumn`
        # @return [String]
        attr_accessor :target_column
      
        # The name of the column that identifies time order in the time series. This
        # column must be available at forecast.
        # Corresponds to the JSON property `timeColumn`
        # @return [String]
        attr_accessor :time_column
      
        # Column names that should be used as attribute columns. The value of these
        # columns does not vary as a function of time. For example, store ID or item
        # color.
        # Corresponds to the JSON property `timeSeriesAttributeColumns`
        # @return [Array<String>]
        attr_accessor :time_series_attribute_columns
      
        # The name of the column that identifies the time series.
        # Corresponds to the JSON property `timeSeriesIdentifierColumn`
        # @return [String]
        attr_accessor :time_series_identifier_column
      
        # Required. The train budget of creating this model, expressed in milli node
        # hours i.e. 1,000 value in this field means 1 node hour. The training cost of
        # the model will not exceed this budget. The final cost will be attempted to be
        # close to the budget, though may end up being (even) noticeably smaller - at
        # the backend's discretion. This especially may happen when further model
        # training ceases to provide any improvements. If the budget is set to a value
        # known to be insufficient to train a model for the given dataset, the training
        # won't be attempted and will error. The train budget must be between 1,000 and
        # 72,000 milli node hours, inclusive.
        # Corresponds to the JSON property `trainBudgetMilliNodeHours`
        # @return [Fixnum]
        attr_accessor :train_budget_milli_node_hours
      
        # Each transformation will apply transform function to given input column. And
        # the result will be used for training. When creating transformation for
        # BigQuery Struct column, the column should be flattened using "." as the
        # delimiter.
        # Corresponds to the JSON property `transformations`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlForecastingInputsTransformation>]
        attr_accessor :transformations
      
        # Names of columns that are unavailable when a forecast is requested. This
        # column contains information for the given entity (identified by the
        # time_series_identifier_column) that is unknown before the forecast For example,
        # actual weather on a given day.
        # Corresponds to the JSON property `unavailableAtForecastColumns`
        # @return [Array<String>]
        attr_accessor :unavailable_at_forecast_columns
      
        # Validation options for the data validation component. The available options
        # are: * "fail-pipeline" - default, will validate against the validation and
        # fail the pipeline if it fails. * "ignore-validation" - ignore the results of
        # the validation and continue
        # Corresponds to the JSON property `validationOptions`
        # @return [String]
        attr_accessor :validation_options
      
        # Column name that should be used as the weight column. Higher values in this
        # column give more importance to the row during model training. The column must
        # have numeric values between 0 and 10000 inclusively; 0 means the row is
        # ignored for training. If weight column field is not set, then all rows are
        # assumed to have equal weight of 1.
        # Corresponds to the JSON property `weightColumn`
        # @return [String]
        attr_accessor :weight_column
      
        # Config that contains the strategy used to generate sliding windows in time
        # series training. A window is a series of rows that comprise the context up to
        # the time of prediction, and the horizon following. The corresponding row for
        # each window marks the start of the forecast horizon. Each window is used as an
        # input example for training/evaluation.
        # Corresponds to the JSON property `windowConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionWindowConfig]
        attr_accessor :window_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @additional_experiments = args[:additional_experiments] if args.key?(:additional_experiments)
          @available_at_forecast_columns = args[:available_at_forecast_columns] if args.key?(:available_at_forecast_columns)
          @context_window = args[:context_window] if args.key?(:context_window)
          @data_granularity = args[:data_granularity] if args.key?(:data_granularity)
          @enable_probabilistic_inference = args[:enable_probabilistic_inference] if args.key?(:enable_probabilistic_inference)
          @export_evaluated_data_items_config = args[:export_evaluated_data_items_config] if args.key?(:export_evaluated_data_items_config)
          @forecast_horizon = args[:forecast_horizon] if args.key?(:forecast_horizon)
          @hierarchy_config = args[:hierarchy_config] if args.key?(:hierarchy_config)
          @holiday_regions = args[:holiday_regions] if args.key?(:holiday_regions)
          @optimization_objective = args[:optimization_objective] if args.key?(:optimization_objective)
          @quantiles = args[:quantiles] if args.key?(:quantiles)
          @target_column = args[:target_column] if args.key?(:target_column)
          @time_column = args[:time_column] if args.key?(:time_column)
          @time_series_attribute_columns = args[:time_series_attribute_columns] if args.key?(:time_series_attribute_columns)
          @time_series_identifier_column = args[:time_series_identifier_column] if args.key?(:time_series_identifier_column)
          @train_budget_milli_node_hours = args[:train_budget_milli_node_hours] if args.key?(:train_budget_milli_node_hours)
          @transformations = args[:transformations] if args.key?(:transformations)
          @unavailable_at_forecast_columns = args[:unavailable_at_forecast_columns] if args.key?(:unavailable_at_forecast_columns)
          @validation_options = args[:validation_options] if args.key?(:validation_options)
          @weight_column = args[:weight_column] if args.key?(:weight_column)
          @window_config = args[:window_config] if args.key?(:window_config)
        end
      end
      
      # A duration of time expressed in time granularity units.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlForecastingInputsGranularity
        include Google::Apis::Core::Hashable
      
        # The number of granularity_units between data points in the training data. If `
        # granularity_unit` is `minute`, can be 1, 5, 10, 15, or 30. For all other
        # values of `granularity_unit`, must be 1.
        # Corresponds to the JSON property `quantity`
        # @return [Fixnum]
        attr_accessor :quantity
      
        # The time granularity unit of this time period. The supported units are: * "
        # minute" * "hour" * "day" * "week" * "month" * "year"
        # Corresponds to the JSON property `unit`
        # @return [String]
        attr_accessor :unit
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @quantity = args[:quantity] if args.key?(:quantity)
          @unit = args[:unit] if args.key?(:unit)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlForecastingInputsTransformation
        include Google::Apis::Core::Hashable
      
        # Training pipeline will infer the proper transformation based on the statistic
        # of dataset.
        # Corresponds to the JSON property `auto`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlForecastingInputsTransformationAutoTransformation]
        attr_accessor :auto
      
        # Training pipeline will perform following transformation functions. * The
        # categorical string as is--no change to case, punctuation, spelling, tense, and
        # so on. * Convert the category name to a dictionary lookup index and generate
        # an embedding for each index. * Categories that appear less than 5 times in the
        # training dataset are treated as the "unknown" category. The "unknown" category
        # gets its own special lookup index and resulting embedding.
        # Corresponds to the JSON property `categorical`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlForecastingInputsTransformationCategoricalTransformation]
        attr_accessor :categorical
      
        # Training pipeline will perform following transformation functions. * The value
        # converted to float32. * The z_score of the value. * log(value+1) when the
        # value is greater than or equal to 0. Otherwise, this transformation is not
        # applied and the value is considered a missing value. * z_score of log(value+1)
        # when the value is greater than or equal to 0. Otherwise, this transformation
        # is not applied and the value is considered a missing value. * A boolean value
        # that indicates whether the value is valid.
        # Corresponds to the JSON property `numeric`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlForecastingInputsTransformationNumericTransformation]
        attr_accessor :numeric
      
        # Training pipeline will perform following transformation functions. * The text
        # as is--no change to case, punctuation, spelling, tense, and so on. * Convert
        # the category name to a dictionary lookup index and generate an embedding for
        # each index.
        # Corresponds to the JSON property `text`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlForecastingInputsTransformationTextTransformation]
        attr_accessor :text
      
        # Training pipeline will perform following transformation functions. * Apply the
        # transformation functions for Numerical columns. * Determine the year, month,
        # day,and weekday. Treat each value from the timestamp as a Categorical column. *
        # Invalid numerical values (for example, values that fall outside of a typical
        # timestamp range, or are extreme values) receive no special treatment and are
        # not removed.
        # Corresponds to the JSON property `timestamp`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlForecastingInputsTransformationTimestampTransformation]
        attr_accessor :timestamp
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @auto = args[:auto] if args.key?(:auto)
          @categorical = args[:categorical] if args.key?(:categorical)
          @numeric = args[:numeric] if args.key?(:numeric)
          @text = args[:text] if args.key?(:text)
          @timestamp = args[:timestamp] if args.key?(:timestamp)
        end
      end
      
      # Training pipeline will infer the proper transformation based on the statistic
      # of dataset.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlForecastingInputsTransformationAutoTransformation
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `columnName`
        # @return [String]
        attr_accessor :column_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @column_name = args[:column_name] if args.key?(:column_name)
        end
      end
      
      # Training pipeline will perform following transformation functions. * The
      # categorical string as is--no change to case, punctuation, spelling, tense, and
      # so on. * Convert the category name to a dictionary lookup index and generate
      # an embedding for each index. * Categories that appear less than 5 times in the
      # training dataset are treated as the "unknown" category. The "unknown" category
      # gets its own special lookup index and resulting embedding.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlForecastingInputsTransformationCategoricalTransformation
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `columnName`
        # @return [String]
        attr_accessor :column_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @column_name = args[:column_name] if args.key?(:column_name)
        end
      end
      
      # Training pipeline will perform following transformation functions. * The value
      # converted to float32. * The z_score of the value. * log(value+1) when the
      # value is greater than or equal to 0. Otherwise, this transformation is not
      # applied and the value is considered a missing value. * z_score of log(value+1)
      # when the value is greater than or equal to 0. Otherwise, this transformation
      # is not applied and the value is considered a missing value. * A boolean value
      # that indicates whether the value is valid.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlForecastingInputsTransformationNumericTransformation
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `columnName`
        # @return [String]
        attr_accessor :column_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @column_name = args[:column_name] if args.key?(:column_name)
        end
      end
      
      # Training pipeline will perform following transformation functions. * The text
      # as is--no change to case, punctuation, spelling, tense, and so on. * Convert
      # the category name to a dictionary lookup index and generate an embedding for
      # each index.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlForecastingInputsTransformationTextTransformation
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `columnName`
        # @return [String]
        attr_accessor :column_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @column_name = args[:column_name] if args.key?(:column_name)
        end
      end
      
      # Training pipeline will perform following transformation functions. * Apply the
      # transformation functions for Numerical columns. * Determine the year, month,
      # day,and weekday. Treat each value from the timestamp as a Categorical column. *
      # Invalid numerical values (for example, values that fall outside of a typical
      # timestamp range, or are extreme values) receive no special treatment and are
      # not removed.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlForecastingInputsTransformationTimestampTransformation
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `columnName`
        # @return [String]
        attr_accessor :column_name
      
        # The format in which that time field is expressed. The time_format must either
        # be one of: * `unix-seconds` * `unix-milliseconds` * `unix-microseconds` * `
        # unix-nanoseconds` (for respectively number of seconds, milliseconds,
        # microseconds and nanoseconds since start of the Unix epoch); or be written in `
        # strftime` syntax. If time_format is not set, then the default format is RFC
        # 3339 `date-time` format, where `time-offset` = `"Z"` (e.g. 1985-04-12T23:20:50.
        # 52Z)
        # Corresponds to the JSON property `timeFormat`
        # @return [String]
        attr_accessor :time_format
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @column_name = args[:column_name] if args.key?(:column_name)
          @time_format = args[:time_format] if args.key?(:time_format)
        end
      end
      
      # Model metadata specific to AutoML Forecasting.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlForecastingMetadata
        include Google::Apis::Core::Hashable
      
        # BigQuery destination uri for exported evaluated examples.
        # Corresponds to the JSON property `evaluatedDataItemsBigqueryUri`
        # @return [String]
        attr_accessor :evaluated_data_items_bigquery_uri
      
        # Output only. The actual training cost of the model, expressed in milli node
        # hours, i.e. 1,000 value in this field means 1 node hour. Guaranteed to not
        # exceed the train budget.
        # Corresponds to the JSON property `trainCostMilliNodeHours`
        # @return [Fixnum]
        attr_accessor :train_cost_milli_node_hours
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @evaluated_data_items_bigquery_uri = args[:evaluated_data_items_bigquery_uri] if args.key?(:evaluated_data_items_bigquery_uri)
          @train_cost_milli_node_hours = args[:train_cost_milli_node_hours] if args.key?(:train_cost_milli_node_hours)
        end
      end
      
      # A TrainingJob that trains and uploads an AutoML Image Classification Model.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlImageClassification
        include Google::Apis::Core::Hashable
      
        # The input parameters of this TrainingJob.
        # Corresponds to the JSON property `inputs`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlImageClassificationInputs]
        attr_accessor :inputs
      
        # The metadata information.
        # Corresponds to the JSON property `metadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlImageClassificationMetadata]
        attr_accessor :metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @inputs = args[:inputs] if args.key?(:inputs)
          @metadata = args[:metadata] if args.key?(:metadata)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlImageClassificationInputs
        include Google::Apis::Core::Hashable
      
        # The ID of the `base` model. If it is specified, the new model will be trained
        # based on the `base` model. Otherwise, the new model will be trained from
        # scratch. The `base` model must be in the same Project and Location as the new
        # Model to train, and have the same modelType.
        # Corresponds to the JSON property `baseModelId`
        # @return [String]
        attr_accessor :base_model_id
      
        # The training budget of creating this model, expressed in milli node hours i.e.
        # 1,000 value in this field means 1 node hour. The actual metadata.
        # costMilliNodeHours will be equal or less than this value. If further model
        # training ceases to provide any improvements, it will stop without using the
        # full budget and the metadata.successfulStopReason will be `model-converged`.
        # Note, node_hour = actual_hour * number_of_nodes_involved. For modelType `cloud`
        # (default), the budget must be between 8,000 and 800,000 milli node hours,
        # inclusive. The default value is 192,000 which represents one day in wall time,
        # considering 8 nodes are used. For model types `mobile-tf-low-latency-1`, `
        # mobile-tf-versatile-1`, `mobile-tf-high-accuracy-1`, the training budget must
        # be between 1,000 and 100,000 milli node hours, inclusive. The default value is
        # 24,000 which represents one day in wall time on a single node that is used.
        # Corresponds to the JSON property `budgetMilliNodeHours`
        # @return [Fixnum]
        attr_accessor :budget_milli_node_hours
      
        # Use the entire training budget. This disables the early stopping feature. When
        # false the early stopping feature is enabled, which means that AutoML Image
        # Classification might stop training before the entire training budget has been
        # used.
        # Corresponds to the JSON property `disableEarlyStopping`
        # @return [Boolean]
        attr_accessor :disable_early_stopping
        alias_method :disable_early_stopping?, :disable_early_stopping
      
        # 
        # Corresponds to the JSON property `modelType`
        # @return [String]
        attr_accessor :model_type
      
        # If false, a single-label (multi-class) Model will be trained (i.e. assuming
        # that for each image just up to one annotation may be applicable). If true, a
        # multi-label Model will be trained (i.e. assuming that for each image multiple
        # annotations may be applicable).
        # Corresponds to the JSON property `multiLabel`
        # @return [Boolean]
        attr_accessor :multi_label
        alias_method :multi_label?, :multi_label
      
        # A wrapper class which contains the tunable parameters in an AutoML Image
        # training job.
        # Corresponds to the JSON property `tunableParameter`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutomlImageTrainingTunableParameter]
        attr_accessor :tunable_parameter
      
        # The ID of `base` model for upTraining. If it is specified, the new model will
        # be upTrained based on the `base` model for upTraining. Otherwise, the new
        # model will be trained from scratch. The `base` model for upTraining must be in
        # the same Project and Location as the new Model to train, and have the same
        # modelType.
        # Corresponds to the JSON property `uptrainBaseModelId`
        # @return [String]
        attr_accessor :uptrain_base_model_id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @base_model_id = args[:base_model_id] if args.key?(:base_model_id)
          @budget_milli_node_hours = args[:budget_milli_node_hours] if args.key?(:budget_milli_node_hours)
          @disable_early_stopping = args[:disable_early_stopping] if args.key?(:disable_early_stopping)
          @model_type = args[:model_type] if args.key?(:model_type)
          @multi_label = args[:multi_label] if args.key?(:multi_label)
          @tunable_parameter = args[:tunable_parameter] if args.key?(:tunable_parameter)
          @uptrain_base_model_id = args[:uptrain_base_model_id] if args.key?(:uptrain_base_model_id)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlImageClassificationMetadata
        include Google::Apis::Core::Hashable
      
        # The actual training cost of creating this model, expressed in milli node hours,
        # i.e. 1,000 value in this field means 1 node hour. Guaranteed to not exceed
        # inputs.budgetMilliNodeHours.
        # Corresponds to the JSON property `costMilliNodeHours`
        # @return [Fixnum]
        attr_accessor :cost_milli_node_hours
      
        # For successful job completions, this is the reason why the job has finished.
        # Corresponds to the JSON property `successfulStopReason`
        # @return [String]
        attr_accessor :successful_stop_reason
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @cost_milli_node_hours = args[:cost_milli_node_hours] if args.key?(:cost_milli_node_hours)
          @successful_stop_reason = args[:successful_stop_reason] if args.key?(:successful_stop_reason)
        end
      end
      
      # A TrainingJob that trains and uploads an AutoML Image Object Detection Model.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlImageObjectDetection
        include Google::Apis::Core::Hashable
      
        # The input parameters of this TrainingJob.
        # Corresponds to the JSON property `inputs`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlImageObjectDetectionInputs]
        attr_accessor :inputs
      
        # The metadata information
        # Corresponds to the JSON property `metadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlImageObjectDetectionMetadata]
        attr_accessor :metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @inputs = args[:inputs] if args.key?(:inputs)
          @metadata = args[:metadata] if args.key?(:metadata)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlImageObjectDetectionInputs
        include Google::Apis::Core::Hashable
      
        # The training budget of creating this model, expressed in milli node hours i.e.
        # 1,000 value in this field means 1 node hour. The actual metadata.
        # costMilliNodeHours will be equal or less than this value. If further model
        # training ceases to provide any improvements, it will stop without using the
        # full budget and the metadata.successfulStopReason will be `model-converged`.
        # Note, node_hour = actual_hour * number_of_nodes_involved. For modelType `cloud`
        # (default), the budget must be between 20,000 and 900,000 milli node hours,
        # inclusive. The default value is 216,000 which represents one day in wall time,
        # considering 9 nodes are used. For model types `mobile-tf-low-latency-1`, `
        # mobile-tf-versatile-1`, `mobile-tf-high-accuracy-1` the training budget must
        # be between 1,000 and 100,000 milli node hours, inclusive. The default value is
        # 24,000 which represents one day in wall time on a single node that is used.
        # Corresponds to the JSON property `budgetMilliNodeHours`
        # @return [Fixnum]
        attr_accessor :budget_milli_node_hours
      
        # Use the entire training budget. This disables the early stopping feature. When
        # false the early stopping feature is enabled, which means that AutoML Image
        # Object Detection might stop training before the entire training budget has
        # been used.
        # Corresponds to the JSON property `disableEarlyStopping`
        # @return [Boolean]
        attr_accessor :disable_early_stopping
        alias_method :disable_early_stopping?, :disable_early_stopping
      
        # 
        # Corresponds to the JSON property `modelType`
        # @return [String]
        attr_accessor :model_type
      
        # A wrapper class which contains the tunable parameters in an AutoML Image
        # training job.
        # Corresponds to the JSON property `tunableParameter`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutomlImageTrainingTunableParameter]
        attr_accessor :tunable_parameter
      
        # The ID of `base` model for upTraining. If it is specified, the new model will
        # be upTrained based on the `base` model for upTraining. Otherwise, the new
        # model will be trained from scratch. The `base` model for upTraining must be in
        # the same Project and Location as the new Model to train, and have the same
        # modelType.
        # Corresponds to the JSON property `uptrainBaseModelId`
        # @return [String]
        attr_accessor :uptrain_base_model_id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @budget_milli_node_hours = args[:budget_milli_node_hours] if args.key?(:budget_milli_node_hours)
          @disable_early_stopping = args[:disable_early_stopping] if args.key?(:disable_early_stopping)
          @model_type = args[:model_type] if args.key?(:model_type)
          @tunable_parameter = args[:tunable_parameter] if args.key?(:tunable_parameter)
          @uptrain_base_model_id = args[:uptrain_base_model_id] if args.key?(:uptrain_base_model_id)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlImageObjectDetectionMetadata
        include Google::Apis::Core::Hashable
      
        # The actual training cost of creating this model, expressed in milli node hours,
        # i.e. 1,000 value in this field means 1 node hour. Guaranteed to not exceed
        # inputs.budgetMilliNodeHours.
        # Corresponds to the JSON property `costMilliNodeHours`
        # @return [Fixnum]
        attr_accessor :cost_milli_node_hours
      
        # For successful job completions, this is the reason why the job has finished.
        # Corresponds to the JSON property `successfulStopReason`
        # @return [String]
        attr_accessor :successful_stop_reason
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @cost_milli_node_hours = args[:cost_milli_node_hours] if args.key?(:cost_milli_node_hours)
          @successful_stop_reason = args[:successful_stop_reason] if args.key?(:successful_stop_reason)
        end
      end
      
      # A TrainingJob that trains and uploads an AutoML Image Segmentation Model.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlImageSegmentation
        include Google::Apis::Core::Hashable
      
        # The input parameters of this TrainingJob.
        # Corresponds to the JSON property `inputs`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlImageSegmentationInputs]
        attr_accessor :inputs
      
        # The metadata information.
        # Corresponds to the JSON property `metadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlImageSegmentationMetadata]
        attr_accessor :metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @inputs = args[:inputs] if args.key?(:inputs)
          @metadata = args[:metadata] if args.key?(:metadata)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlImageSegmentationInputs
        include Google::Apis::Core::Hashable
      
        # The ID of the `base` model. If it is specified, the new model will be trained
        # based on the `base` model. Otherwise, the new model will be trained from
        # scratch. The `base` model must be in the same Project and Location as the new
        # Model to train, and have the same modelType.
        # Corresponds to the JSON property `baseModelId`
        # @return [String]
        attr_accessor :base_model_id
      
        # The training budget of creating this model, expressed in milli node hours i.e.
        # 1,000 value in this field means 1 node hour. The actual metadata.
        # costMilliNodeHours will be equal or less than this value. If further model
        # training ceases to provide any improvements, it will stop without using the
        # full budget and the metadata.successfulStopReason will be `model-converged`.
        # Note, node_hour = actual_hour * number_of_nodes_involved. Or
        # actual_wall_clock_hours = train_budget_milli_node_hours / (
        # number_of_nodes_involved * 1000) For modelType `cloud-high-accuracy-1`(default)
        # , the budget must be between 20,000 and 2,000,000 milli node hours, inclusive.
        # The default value is 192,000 which represents one day in wall time (1000 milli
        # * 24 hours * 8 nodes).
        # Corresponds to the JSON property `budgetMilliNodeHours`
        # @return [Fixnum]
        attr_accessor :budget_milli_node_hours
      
        # 
        # Corresponds to the JSON property `modelType`
        # @return [String]
        attr_accessor :model_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @base_model_id = args[:base_model_id] if args.key?(:base_model_id)
          @budget_milli_node_hours = args[:budget_milli_node_hours] if args.key?(:budget_milli_node_hours)
          @model_type = args[:model_type] if args.key?(:model_type)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlImageSegmentationMetadata
        include Google::Apis::Core::Hashable
      
        # The actual training cost of creating this model, expressed in milli node hours,
        # i.e. 1,000 value in this field means 1 node hour. Guaranteed to not exceed
        # inputs.budgetMilliNodeHours.
        # Corresponds to the JSON property `costMilliNodeHours`
        # @return [Fixnum]
        attr_accessor :cost_milli_node_hours
      
        # For successful job completions, this is the reason why the job has finished.
        # Corresponds to the JSON property `successfulStopReason`
        # @return [String]
        attr_accessor :successful_stop_reason
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @cost_milli_node_hours = args[:cost_milli_node_hours] if args.key?(:cost_milli_node_hours)
          @successful_stop_reason = args[:successful_stop_reason] if args.key?(:successful_stop_reason)
        end
      end
      
      # A TrainingJob that trains and uploads an AutoML Tables Model.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlTables
        include Google::Apis::Core::Hashable
      
        # The input parameters of this TrainingJob.
        # Corresponds to the JSON property `inputs`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlTablesInputs]
        attr_accessor :inputs
      
        # Model metadata specific to AutoML Tables.
        # Corresponds to the JSON property `metadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlTablesMetadata]
        attr_accessor :metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @inputs = args[:inputs] if args.key?(:inputs)
          @metadata = args[:metadata] if args.key?(:metadata)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlTablesInputs
        include Google::Apis::Core::Hashable
      
        # Additional experiment flags for the Tables training pipeline.
        # Corresponds to the JSON property `additionalExperiments`
        # @return [Array<String>]
        attr_accessor :additional_experiments
      
        # Use the entire training budget. This disables the early stopping feature. By
        # default, the early stopping feature is enabled, which means that AutoML Tables
        # might stop training before the entire training budget has been used.
        # Corresponds to the JSON property `disableEarlyStopping`
        # @return [Boolean]
        attr_accessor :disable_early_stopping
        alias_method :disable_early_stopping?, :disable_early_stopping
      
        # Configuration for exporting test set predictions to a BigQuery table.
        # Corresponds to the JSON property `exportEvaluatedDataItemsConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionExportEvaluatedDataItemsConfig]
        attr_accessor :export_evaluated_data_items_config
      
        # Objective function the model is optimizing towards. The training process
        # creates a model that maximizes/minimizes the value of the objective function
        # over the validation set. The supported optimization objectives depend on the
        # prediction type. If the field is not set, a default objective function is used.
        # classification (binary): "maximize-au-roc" (default) - Maximize the area
        # under the receiver operating characteristic (ROC) curve. "minimize-log-loss" -
        # Minimize log loss. "maximize-au-prc" - Maximize the area under the precision-
        # recall curve. "maximize-precision-at-recall" - Maximize precision for a
        # specified recall value. "maximize-recall-at-precision" - Maximize recall for a
        # specified precision value. classification (multi-class): "minimize-log-loss" (
        # default) - Minimize log loss. regression: "minimize-rmse" (default) - Minimize
        # root-mean-squared error (RMSE). "minimize-mae" - Minimize mean-absolute error (
        # MAE). "minimize-rmsle" - Minimize root-mean-squared log error (RMSLE).
        # Corresponds to the JSON property `optimizationObjective`
        # @return [String]
        attr_accessor :optimization_objective
      
        # Required when optimization_objective is "maximize-recall-at-precision". Must
        # be between 0 and 1, inclusive.
        # Corresponds to the JSON property `optimizationObjectivePrecisionValue`
        # @return [Float]
        attr_accessor :optimization_objective_precision_value
      
        # Required when optimization_objective is "maximize-precision-at-recall". Must
        # be between 0 and 1, inclusive.
        # Corresponds to the JSON property `optimizationObjectiveRecallValue`
        # @return [Float]
        attr_accessor :optimization_objective_recall_value
      
        # The type of prediction the Model is to produce. "classification" - Predict one
        # out of multiple target values is picked for each row. "regression" - Predict a
        # value based on its relation to other values. This type is available only to
        # columns that contain semantically numeric values, i.e. integers or floating
        # point number, even if stored as e.g. strings.
        # Corresponds to the JSON property `predictionType`
        # @return [String]
        attr_accessor :prediction_type
      
        # The column name of the target column that the model is to predict.
        # Corresponds to the JSON property `targetColumn`
        # @return [String]
        attr_accessor :target_column
      
        # Required. The train budget of creating this model, expressed in milli node
        # hours i.e. 1,000 value in this field means 1 node hour. The training cost of
        # the model will not exceed this budget. The final cost will be attempted to be
        # close to the budget, though may end up being (even) noticeably smaller - at
        # the backend's discretion. This especially may happen when further model
        # training ceases to provide any improvements. If the budget is set to a value
        # known to be insufficient to train a model for the given dataset, the training
        # won't be attempted and will error. The train budget must be between 1,000 and
        # 72,000 milli node hours, inclusive.
        # Corresponds to the JSON property `trainBudgetMilliNodeHours`
        # @return [Fixnum]
        attr_accessor :train_budget_milli_node_hours
      
        # Each transformation will apply transform function to given input column. And
        # the result will be used for training. When creating transformation for
        # BigQuery Struct column, the column should be flattened using "." as the
        # delimiter.
        # Corresponds to the JSON property `transformations`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlTablesInputsTransformation>]
        attr_accessor :transformations
      
        # Column name that should be used as the weight column. Higher values in this
        # column give more importance to the row during model training. The column must
        # have numeric values between 0 and 10000 inclusively; 0 means the row is
        # ignored for training. If weight column field is not set, then all rows are
        # assumed to have equal weight of 1.
        # Corresponds to the JSON property `weightColumnName`
        # @return [String]
        attr_accessor :weight_column_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @additional_experiments = args[:additional_experiments] if args.key?(:additional_experiments)
          @disable_early_stopping = args[:disable_early_stopping] if args.key?(:disable_early_stopping)
          @export_evaluated_data_items_config = args[:export_evaluated_data_items_config] if args.key?(:export_evaluated_data_items_config)
          @optimization_objective = args[:optimization_objective] if args.key?(:optimization_objective)
          @optimization_objective_precision_value = args[:optimization_objective_precision_value] if args.key?(:optimization_objective_precision_value)
          @optimization_objective_recall_value = args[:optimization_objective_recall_value] if args.key?(:optimization_objective_recall_value)
          @prediction_type = args[:prediction_type] if args.key?(:prediction_type)
          @target_column = args[:target_column] if args.key?(:target_column)
          @train_budget_milli_node_hours = args[:train_budget_milli_node_hours] if args.key?(:train_budget_milli_node_hours)
          @transformations = args[:transformations] if args.key?(:transformations)
          @weight_column_name = args[:weight_column_name] if args.key?(:weight_column_name)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlTablesInputsTransformation
        include Google::Apis::Core::Hashable
      
        # Training pipeline will infer the proper transformation based on the statistic
        # of dataset.
        # Corresponds to the JSON property `auto`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlTablesInputsTransformationAutoTransformation]
        attr_accessor :auto
      
        # Training pipeline will perform following transformation functions. * The
        # categorical string as is--no change to case, punctuation, spelling, tense, and
        # so on. * Convert the category name to a dictionary lookup index and generate
        # an embedding for each index. * Categories that appear less than 5 times in the
        # training dataset are treated as the "unknown" category. The "unknown" category
        # gets its own special lookup index and resulting embedding.
        # Corresponds to the JSON property `categorical`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlTablesInputsTransformationCategoricalTransformation]
        attr_accessor :categorical
      
        # Training pipeline will perform following transformation functions. * The value
        # converted to float32. * The z_score of the value. * log(value+1) when the
        # value is greater than or equal to 0. Otherwise, this transformation is not
        # applied and the value is considered a missing value. * z_score of log(value+1)
        # when the value is greater than or equal to 0. Otherwise, this transformation
        # is not applied and the value is considered a missing value. * A boolean value
        # that indicates whether the value is valid.
        # Corresponds to the JSON property `numeric`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlTablesInputsTransformationNumericTransformation]
        attr_accessor :numeric
      
        # Treats the column as categorical array and performs following transformation
        # functions. * For each element in the array, convert the category name to a
        # dictionary lookup index and generate an embedding for each index. Combine the
        # embedding of all elements into a single embedding using the mean. * Empty
        # arrays treated as an embedding of zeroes.
        # Corresponds to the JSON property `repeatedCategorical`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlTablesInputsTransformationCategoricalArrayTransformation]
        attr_accessor :repeated_categorical
      
        # Treats the column as numerical array and performs following transformation
        # functions. * All transformations for Numerical types applied to the average of
        # the all elements. * The average of empty arrays is treated as zero.
        # Corresponds to the JSON property `repeatedNumeric`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlTablesInputsTransformationNumericArrayTransformation]
        attr_accessor :repeated_numeric
      
        # Treats the column as text array and performs following transformation
        # functions. * Concatenate all text values in the array into a single text value
        # using a space (" ") as a delimiter, and then treat the result as a single text
        # value. Apply the transformations for Text columns. * Empty arrays treated as
        # an empty text.
        # Corresponds to the JSON property `repeatedText`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlTablesInputsTransformationTextArrayTransformation]
        attr_accessor :repeated_text
      
        # Training pipeline will perform following transformation functions. * The text
        # as is--no change to case, punctuation, spelling, tense, and so on. * Tokenize
        # text to words. Convert each words to a dictionary lookup index and generate an
        # embedding for each index. Combine the embedding of all elements into a single
        # embedding using the mean. * Tokenization is based on unicode script boundaries.
        # * Missing values get their own lookup index and resulting embedding. * Stop-
        # words receive no special treatment and are not removed.
        # Corresponds to the JSON property `text`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlTablesInputsTransformationTextTransformation]
        attr_accessor :text
      
        # Training pipeline will perform following transformation functions. * Apply the
        # transformation functions for Numerical columns. * Determine the year, month,
        # day,and weekday. Treat each value from the * timestamp as a Categorical column.
        # * Invalid numerical values (for example, values that fall outside of a
        # typical timestamp range, or are extreme values) receive no special treatment
        # and are not removed.
        # Corresponds to the JSON property `timestamp`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlTablesInputsTransformationTimestampTransformation]
        attr_accessor :timestamp
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @auto = args[:auto] if args.key?(:auto)
          @categorical = args[:categorical] if args.key?(:categorical)
          @numeric = args[:numeric] if args.key?(:numeric)
          @repeated_categorical = args[:repeated_categorical] if args.key?(:repeated_categorical)
          @repeated_numeric = args[:repeated_numeric] if args.key?(:repeated_numeric)
          @repeated_text = args[:repeated_text] if args.key?(:repeated_text)
          @text = args[:text] if args.key?(:text)
          @timestamp = args[:timestamp] if args.key?(:timestamp)
        end
      end
      
      # Training pipeline will infer the proper transformation based on the statistic
      # of dataset.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlTablesInputsTransformationAutoTransformation
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `columnName`
        # @return [String]
        attr_accessor :column_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @column_name = args[:column_name] if args.key?(:column_name)
        end
      end
      
      # Treats the column as categorical array and performs following transformation
      # functions. * For each element in the array, convert the category name to a
      # dictionary lookup index and generate an embedding for each index. Combine the
      # embedding of all elements into a single embedding using the mean. * Empty
      # arrays treated as an embedding of zeroes.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlTablesInputsTransformationCategoricalArrayTransformation
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `columnName`
        # @return [String]
        attr_accessor :column_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @column_name = args[:column_name] if args.key?(:column_name)
        end
      end
      
      # Training pipeline will perform following transformation functions. * The
      # categorical string as is--no change to case, punctuation, spelling, tense, and
      # so on. * Convert the category name to a dictionary lookup index and generate
      # an embedding for each index. * Categories that appear less than 5 times in the
      # training dataset are treated as the "unknown" category. The "unknown" category
      # gets its own special lookup index and resulting embedding.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlTablesInputsTransformationCategoricalTransformation
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `columnName`
        # @return [String]
        attr_accessor :column_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @column_name = args[:column_name] if args.key?(:column_name)
        end
      end
      
      # Treats the column as numerical array and performs following transformation
      # functions. * All transformations for Numerical types applied to the average of
      # the all elements. * The average of empty arrays is treated as zero.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlTablesInputsTransformationNumericArrayTransformation
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `columnName`
        # @return [String]
        attr_accessor :column_name
      
        # If invalid values is allowed, the training pipeline will create a boolean
        # feature that indicated whether the value is valid. Otherwise, the training
        # pipeline will discard the input row from trainining data.
        # Corresponds to the JSON property `invalidValuesAllowed`
        # @return [Boolean]
        attr_accessor :invalid_values_allowed
        alias_method :invalid_values_allowed?, :invalid_values_allowed
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @column_name = args[:column_name] if args.key?(:column_name)
          @invalid_values_allowed = args[:invalid_values_allowed] if args.key?(:invalid_values_allowed)
        end
      end
      
      # Training pipeline will perform following transformation functions. * The value
      # converted to float32. * The z_score of the value. * log(value+1) when the
      # value is greater than or equal to 0. Otherwise, this transformation is not
      # applied and the value is considered a missing value. * z_score of log(value+1)
      # when the value is greater than or equal to 0. Otherwise, this transformation
      # is not applied and the value is considered a missing value. * A boolean value
      # that indicates whether the value is valid.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlTablesInputsTransformationNumericTransformation
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `columnName`
        # @return [String]
        attr_accessor :column_name
      
        # If invalid values is allowed, the training pipeline will create a boolean
        # feature that indicated whether the value is valid. Otherwise, the training
        # pipeline will discard the input row from trainining data.
        # Corresponds to the JSON property `invalidValuesAllowed`
        # @return [Boolean]
        attr_accessor :invalid_values_allowed
        alias_method :invalid_values_allowed?, :invalid_values_allowed
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @column_name = args[:column_name] if args.key?(:column_name)
          @invalid_values_allowed = args[:invalid_values_allowed] if args.key?(:invalid_values_allowed)
        end
      end
      
      # Treats the column as text array and performs following transformation
      # functions. * Concatenate all text values in the array into a single text value
      # using a space (" ") as a delimiter, and then treat the result as a single text
      # value. Apply the transformations for Text columns. * Empty arrays treated as
      # an empty text.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlTablesInputsTransformationTextArrayTransformation
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `columnName`
        # @return [String]
        attr_accessor :column_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @column_name = args[:column_name] if args.key?(:column_name)
        end
      end
      
      # Training pipeline will perform following transformation functions. * The text
      # as is--no change to case, punctuation, spelling, tense, and so on. * Tokenize
      # text to words. Convert each words to a dictionary lookup index and generate an
      # embedding for each index. Combine the embedding of all elements into a single
      # embedding using the mean. * Tokenization is based on unicode script boundaries.
      # * Missing values get their own lookup index and resulting embedding. * Stop-
      # words receive no special treatment and are not removed.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlTablesInputsTransformationTextTransformation
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `columnName`
        # @return [String]
        attr_accessor :column_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @column_name = args[:column_name] if args.key?(:column_name)
        end
      end
      
      # Training pipeline will perform following transformation functions. * Apply the
      # transformation functions for Numerical columns. * Determine the year, month,
      # day,and weekday. Treat each value from the * timestamp as a Categorical column.
      # * Invalid numerical values (for example, values that fall outside of a
      # typical timestamp range, or are extreme values) receive no special treatment
      # and are not removed.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlTablesInputsTransformationTimestampTransformation
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `columnName`
        # @return [String]
        attr_accessor :column_name
      
        # If invalid values is allowed, the training pipeline will create a boolean
        # feature that indicated whether the value is valid. Otherwise, the training
        # pipeline will discard the input row from trainining data.
        # Corresponds to the JSON property `invalidValuesAllowed`
        # @return [Boolean]
        attr_accessor :invalid_values_allowed
        alias_method :invalid_values_allowed?, :invalid_values_allowed
      
        # The format in which that time field is expressed. The time_format must either
        # be one of: * `unix-seconds` * `unix-milliseconds` * `unix-microseconds` * `
        # unix-nanoseconds` (for respectively number of seconds, milliseconds,
        # microseconds and nanoseconds since start of the Unix epoch); or be written in `
        # strftime` syntax. If time_format is not set, then the default format is RFC
        # 3339 `date-time` format, where `time-offset` = `"Z"` (e.g. 1985-04-12T23:20:50.
        # 52Z)
        # Corresponds to the JSON property `timeFormat`
        # @return [String]
        attr_accessor :time_format
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @column_name = args[:column_name] if args.key?(:column_name)
          @invalid_values_allowed = args[:invalid_values_allowed] if args.key?(:invalid_values_allowed)
          @time_format = args[:time_format] if args.key?(:time_format)
        end
      end
      
      # Model metadata specific to AutoML Tables.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlTablesMetadata
        include Google::Apis::Core::Hashable
      
        # BigQuery destination uri for exported evaluated examples.
        # Corresponds to the JSON property `evaluatedDataItemsBigqueryUri`
        # @return [String]
        attr_accessor :evaluated_data_items_bigquery_uri
      
        # Output only. The actual training cost of the model, expressed in milli node
        # hours, i.e. 1,000 value in this field means 1 node hour. Guaranteed to not
        # exceed the train budget.
        # Corresponds to the JSON property `trainCostMilliNodeHours`
        # @return [Fixnum]
        attr_accessor :train_cost_milli_node_hours
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @evaluated_data_items_bigquery_uri = args[:evaluated_data_items_bigquery_uri] if args.key?(:evaluated_data_items_bigquery_uri)
          @train_cost_milli_node_hours = args[:train_cost_milli_node_hours] if args.key?(:train_cost_milli_node_hours)
        end
      end
      
      # A TrainingJob that trains and uploads an AutoML Text Classification Model.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlTextClassification
        include Google::Apis::Core::Hashable
      
        # The input parameters of this TrainingJob.
        # Corresponds to the JSON property `inputs`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlTextClassificationInputs]
        attr_accessor :inputs
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @inputs = args[:inputs] if args.key?(:inputs)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlTextClassificationInputs
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `multiLabel`
        # @return [Boolean]
        attr_accessor :multi_label
        alias_method :multi_label?, :multi_label
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @multi_label = args[:multi_label] if args.key?(:multi_label)
        end
      end
      
      # A TrainingJob that trains and uploads an AutoML Text Extraction Model.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlTextExtraction
        include Google::Apis::Core::Hashable
      
        # The input parameters of this TrainingJob.
        # Corresponds to the JSON property `inputs`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlTextExtractionInputs]
        attr_accessor :inputs
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @inputs = args[:inputs] if args.key?(:inputs)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlTextExtractionInputs
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # A TrainingJob that trains and uploads an AutoML Text Sentiment Model.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlTextSentiment
        include Google::Apis::Core::Hashable
      
        # The input parameters of this TrainingJob.
        # Corresponds to the JSON property `inputs`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlTextSentimentInputs]
        attr_accessor :inputs
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @inputs = args[:inputs] if args.key?(:inputs)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlTextSentimentInputs
        include Google::Apis::Core::Hashable
      
        # A sentiment is expressed as an integer ordinal, where higher value means a
        # more positive sentiment. The range of sentiments that will be used is between
        # 0 and sentimentMax (inclusive on both ends), and all the values in the range
        # must be represented in the dataset before a model can be created. Only the
        # Annotations with this sentimentMax will be used for training. sentimentMax
        # value must be between 1 and 10 (inclusive).
        # Corresponds to the JSON property `sentimentMax`
        # @return [Fixnum]
        attr_accessor :sentiment_max
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @sentiment_max = args[:sentiment_max] if args.key?(:sentiment_max)
        end
      end
      
      # A TrainingJob that trains and uploads an AutoML Video Action Recognition Model.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlVideoActionRecognition
        include Google::Apis::Core::Hashable
      
        # The input parameters of this TrainingJob.
        # Corresponds to the JSON property `inputs`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlVideoActionRecognitionInputs]
        attr_accessor :inputs
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @inputs = args[:inputs] if args.key?(:inputs)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlVideoActionRecognitionInputs
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `modelType`
        # @return [String]
        attr_accessor :model_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @model_type = args[:model_type] if args.key?(:model_type)
        end
      end
      
      # A TrainingJob that trains and uploads an AutoML Video Classification Model.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlVideoClassification
        include Google::Apis::Core::Hashable
      
        # The input parameters of this TrainingJob.
        # Corresponds to the JSON property `inputs`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlVideoClassificationInputs]
        attr_accessor :inputs
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @inputs = args[:inputs] if args.key?(:inputs)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlVideoClassificationInputs
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `modelType`
        # @return [String]
        attr_accessor :model_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @model_type = args[:model_type] if args.key?(:model_type)
        end
      end
      
      # A TrainingJob that trains and uploads an AutoML Video ObjectTracking Model.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlVideoObjectTracking
        include Google::Apis::Core::Hashable
      
        # The input parameters of this TrainingJob.
        # Corresponds to the JSON property `inputs`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlVideoObjectTrackingInputs]
        attr_accessor :inputs
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @inputs = args[:inputs] if args.key?(:inputs)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutoMlVideoObjectTrackingInputs
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `modelType`
        # @return [String]
        attr_accessor :model_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @model_type = args[:model_type] if args.key?(:model_type)
        end
      end
      
      # A wrapper class which contains the tunable parameters in an AutoML Image
      # training job.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionAutomlImageTrainingTunableParameter
        include Google::Apis::Core::Hashable
      
        # Optional. An unique name of pretrained model checkpoint provided in model
        # garden, it will be mapped to a GCS location internally.
        # Corresponds to the JSON property `checkpointName`
        # @return [String]
        attr_accessor :checkpoint_name
      
        # Customizable dataset settings, used in the `model_garden_trainer`.
        # Corresponds to the JSON property `datasetConfig`
        # @return [Hash<String,String>]
        attr_accessor :dataset_config
      
        # Represents specification of a Study.
        # Corresponds to the JSON property `studySpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1StudySpec]
        attr_accessor :study_spec
      
        # Customizable trainer settings, used in the `model_garden_trainer`.
        # Corresponds to the JSON property `trainerConfig`
        # @return [Hash<String,String>]
        attr_accessor :trainer_config
      
        # 
        # Corresponds to the JSON property `trainerType`
        # @return [String]
        attr_accessor :trainer_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @checkpoint_name = args[:checkpoint_name] if args.key?(:checkpoint_name)
          @dataset_config = args[:dataset_config] if args.key?(:dataset_config)
          @study_spec = args[:study_spec] if args.key?(:study_spec)
          @trainer_config = args[:trainer_config] if args.key?(:trainer_config)
          @trainer_type = args[:trainer_type] if args.key?(:trainer_type)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionCustomJobMetadata
        include Google::Apis::Core::Hashable
      
        # The resource name of the CustomJob that has been created to carry out this
        # custom task.
        # Corresponds to the JSON property `backingCustomJob`
        # @return [String]
        attr_accessor :backing_custom_job
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @backing_custom_job = args[:backing_custom_job] if args.key?(:backing_custom_job)
        end
      end
      
      # A TrainingJob that trains a custom code Model.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionCustomTask
        include Google::Apis::Core::Hashable
      
        # Represents the spec of a CustomJob.
        # Corresponds to the JSON property `inputs`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CustomJobSpec]
        attr_accessor :inputs
      
        # The metadata information.
        # Corresponds to the JSON property `metadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionCustomJobMetadata]
        attr_accessor :metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @inputs = args[:inputs] if args.key?(:inputs)
          @metadata = args[:metadata] if args.key?(:metadata)
        end
      end
      
      # Configuration for exporting test set predictions to a BigQuery table.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionExportEvaluatedDataItemsConfig
        include Google::Apis::Core::Hashable
      
        # URI of desired destination BigQuery table. Expected format: `bq://`project_id`:
        # `dataset_id`:`table`` If not specified, then results are exported to the
        # following auto-created BigQuery table: ``project_id`:
        # export_evaluated_examples_`model_name`_`yyyy_MM_dd'T'HH_mm_ss_SSS'Z'`.
        # evaluated_examples`
        # Corresponds to the JSON property `destinationBigqueryUri`
        # @return [String]
        attr_accessor :destination_bigquery_uri
      
        # If true and an export destination is specified, then the contents of the
        # destination are overwritten. Otherwise, if the export destination already
        # exists, then the export operation fails.
        # Corresponds to the JSON property `overrideExistingTable`
        # @return [Boolean]
        attr_accessor :override_existing_table
        alias_method :override_existing_table?, :override_existing_table
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @destination_bigquery_uri = args[:destination_bigquery_uri] if args.key?(:destination_bigquery_uri)
          @override_existing_table = args[:override_existing_table] if args.key?(:override_existing_table)
        end
      end
      
      # Configuration that defines the hierarchical relationship of time series and
      # parameters for hierarchical forecasting strategies.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionHierarchyConfig
        include Google::Apis::Core::Hashable
      
        # A list of time series attribute column names that define the time series
        # hierarchy. Only one level of hierarchy is supported, ex. 'region' for a
        # hierarchy of stores or 'department' for a hierarchy of products. If multiple
        # columns are specified, time series will be grouped by their combined values,
        # ex. ('blue', 'large') for 'color' and 'size', up to 5 columns are accepted. If
        # no group columns are specified, all time series are considered to be part of
        # the same group.
        # Corresponds to the JSON property `groupColumns`
        # @return [Array<String>]
        attr_accessor :group_columns
      
        # The weight of the loss for predictions aggregated over both the horizon and
        # time series in the same hierarchy group.
        # Corresponds to the JSON property `groupTemporalTotalWeight`
        # @return [Float]
        attr_accessor :group_temporal_total_weight
      
        # The weight of the loss for predictions aggregated over time series in the same
        # group.
        # Corresponds to the JSON property `groupTotalWeight`
        # @return [Float]
        attr_accessor :group_total_weight
      
        # The weight of the loss for predictions aggregated over the horizon for a
        # single time series.
        # Corresponds to the JSON property `temporalTotalWeight`
        # @return [Float]
        attr_accessor :temporal_total_weight
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @group_columns = args[:group_columns] if args.key?(:group_columns)
          @group_temporal_total_weight = args[:group_temporal_total_weight] if args.key?(:group_temporal_total_weight)
          @group_total_weight = args[:group_total_weight] if args.key?(:group_total_weight)
          @temporal_total_weight = args[:temporal_total_weight] if args.key?(:temporal_total_weight)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionHyperparameterTuningJobMetadata
        include Google::Apis::Core::Hashable
      
        # The resource name of the HyperparameterTuningJob that has been created to
        # carry out this HyperparameterTuning task.
        # Corresponds to the JSON property `backingHyperparameterTuningJob`
        # @return [String]
        attr_accessor :backing_hyperparameter_tuning_job
      
        # The resource name of the CustomJob that has been created to run the best Trial
        # of this HyperparameterTuning task.
        # Corresponds to the JSON property `bestTrialBackingCustomJob`
        # @return [String]
        attr_accessor :best_trial_backing_custom_job
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @backing_hyperparameter_tuning_job = args[:backing_hyperparameter_tuning_job] if args.key?(:backing_hyperparameter_tuning_job)
          @best_trial_backing_custom_job = args[:best_trial_backing_custom_job] if args.key?(:best_trial_backing_custom_job)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionHyperparameterTuningJobSpec
        include Google::Apis::Core::Hashable
      
        # The number of failed Trials that need to be seen before failing the
        # HyperparameterTuningJob. If set to 0, Vertex AI decides how many Trials must
        # fail before the whole job fails.
        # Corresponds to the JSON property `maxFailedTrialCount`
        # @return [Fixnum]
        attr_accessor :max_failed_trial_count
      
        # The desired total number of Trials.
        # Corresponds to the JSON property `maxTrialCount`
        # @return [Fixnum]
        attr_accessor :max_trial_count
      
        # The desired number of Trials to run in parallel.
        # Corresponds to the JSON property `parallelTrialCount`
        # @return [Fixnum]
        attr_accessor :parallel_trial_count
      
        # Represents specification of a Study.
        # Corresponds to the JSON property `studySpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1StudySpec]
        attr_accessor :study_spec
      
        # Represents the spec of a CustomJob.
        # Corresponds to the JSON property `trialJobSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1CustomJobSpec]
        attr_accessor :trial_job_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @max_failed_trial_count = args[:max_failed_trial_count] if args.key?(:max_failed_trial_count)
          @max_trial_count = args[:max_trial_count] if args.key?(:max_trial_count)
          @parallel_trial_count = args[:parallel_trial_count] if args.key?(:parallel_trial_count)
          @study_spec = args[:study_spec] if args.key?(:study_spec)
          @trial_job_spec = args[:trial_job_spec] if args.key?(:trial_job_spec)
        end
      end
      
      # A TrainingJob that tunes Hypererparameters of a custom code Model.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionHyperparameterTuningTask
        include Google::Apis::Core::Hashable
      
        # The input parameters of this HyperparameterTuningTask.
        # Corresponds to the JSON property `inputs`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionHyperparameterTuningJobSpec]
        attr_accessor :inputs
      
        # The metadata information.
        # Corresponds to the JSON property `metadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionHyperparameterTuningJobMetadata]
        attr_accessor :metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @inputs = args[:inputs] if args.key?(:inputs)
          @metadata = args[:metadata] if args.key?(:metadata)
        end
      end
      
      # A TrainingJob that trains and uploads an AutoML Forecasting Model.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionSeq2SeqPlusForecasting
        include Google::Apis::Core::Hashable
      
        # The input parameters of this TrainingJob.
        # Corresponds to the JSON property `inputs`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionSeq2SeqPlusForecastingInputs]
        attr_accessor :inputs
      
        # Model metadata specific to Seq2Seq Plus Forecasting.
        # Corresponds to the JSON property `metadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionSeq2SeqPlusForecastingMetadata]
        attr_accessor :metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @inputs = args[:inputs] if args.key?(:inputs)
          @metadata = args[:metadata] if args.key?(:metadata)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionSeq2SeqPlusForecastingInputs
        include Google::Apis::Core::Hashable
      
        # Additional experiment flags for the time series forcasting training.
        # Corresponds to the JSON property `additionalExperiments`
        # @return [Array<String>]
        attr_accessor :additional_experiments
      
        # Names of columns that are available and provided when a forecast is requested.
        # These columns contain information for the given entity (identified by the
        # time_series_identifier_column column) that is known at forecast. For example,
        # predicted weather for a specific day.
        # Corresponds to the JSON property `availableAtForecastColumns`
        # @return [Array<String>]
        attr_accessor :available_at_forecast_columns
      
        # The amount of time into the past training and prediction data is used for
        # model training and prediction respectively. Expressed in number of units
        # defined by the `data_granularity` field.
        # Corresponds to the JSON property `contextWindow`
        # @return [Fixnum]
        attr_accessor :context_window
      
        # A duration of time expressed in time granularity units.
        # Corresponds to the JSON property `dataGranularity`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionSeq2SeqPlusForecastingInputsGranularity]
        attr_accessor :data_granularity
      
        # Configuration for exporting test set predictions to a BigQuery table.
        # Corresponds to the JSON property `exportEvaluatedDataItemsConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionExportEvaluatedDataItemsConfig]
        attr_accessor :export_evaluated_data_items_config
      
        # The amount of time into the future for which forecasted values for the target
        # are returned. Expressed in number of units defined by the `data_granularity`
        # field.
        # Corresponds to the JSON property `forecastHorizon`
        # @return [Fixnum]
        attr_accessor :forecast_horizon
      
        # Configuration that defines the hierarchical relationship of time series and
        # parameters for hierarchical forecasting strategies.
        # Corresponds to the JSON property `hierarchyConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionHierarchyConfig]
        attr_accessor :hierarchy_config
      
        # The geographical region based on which the holiday effect is applied in
        # modeling by adding holiday categorical array feature that include all holidays
        # matching the date. This option only allowed when data_granularity is day. By
        # default, holiday effect modeling is disabled. To turn it on, specify the
        # holiday region using this option.
        # Corresponds to the JSON property `holidayRegions`
        # @return [Array<String>]
        attr_accessor :holiday_regions
      
        # Objective function the model is optimizing towards. The training process
        # creates a model that optimizes the value of the objective function over the
        # validation set. The supported optimization objectives: * "minimize-rmse" (
        # default) - Minimize root-mean-squared error (RMSE). * "minimize-mae" -
        # Minimize mean-absolute error (MAE). * "minimize-rmsle" - Minimize root-mean-
        # squared log error (RMSLE). * "minimize-rmspe" - Minimize root-mean-squared
        # percentage error (RMSPE). * "minimize-wape-mae" - Minimize the combination of
        # weighted absolute percentage error (WAPE) and mean-absolute-error (MAE). * "
        # minimize-quantile-loss" - Minimize the quantile loss at the quantiles defined
        # in `quantiles`. * "minimize-mape" - Minimize the mean absolute percentage
        # error.
        # Corresponds to the JSON property `optimizationObjective`
        # @return [String]
        attr_accessor :optimization_objective
      
        # Quantiles to use for minimize-quantile-loss `optimization_objective`. Up to 5
        # quantiles are allowed of values between 0 and 1, exclusive. Required if the
        # value of optimization_objective is minimize-quantile-loss. Represents the
        # percent quantiles to use for that objective. Quantiles must be unique.
        # Corresponds to the JSON property `quantiles`
        # @return [Array<Float>]
        attr_accessor :quantiles
      
        # The name of the column that the Model is to predict values for. This column
        # must be unavailable at forecast.
        # Corresponds to the JSON property `targetColumn`
        # @return [String]
        attr_accessor :target_column
      
        # The name of the column that identifies time order in the time series. This
        # column must be available at forecast.
        # Corresponds to the JSON property `timeColumn`
        # @return [String]
        attr_accessor :time_column
      
        # Column names that should be used as attribute columns. The value of these
        # columns does not vary as a function of time. For example, store ID or item
        # color.
        # Corresponds to the JSON property `timeSeriesAttributeColumns`
        # @return [Array<String>]
        attr_accessor :time_series_attribute_columns
      
        # The name of the column that identifies the time series.
        # Corresponds to the JSON property `timeSeriesIdentifierColumn`
        # @return [String]
        attr_accessor :time_series_identifier_column
      
        # Required. The train budget of creating this model, expressed in milli node
        # hours i.e. 1,000 value in this field means 1 node hour. The training cost of
        # the model will not exceed this budget. The final cost will be attempted to be
        # close to the budget, though may end up being (even) noticeably smaller - at
        # the backend's discretion. This especially may happen when further model
        # training ceases to provide any improvements. If the budget is set to a value
        # known to be insufficient to train a model for the given dataset, the training
        # won't be attempted and will error. The train budget must be between 1,000 and
        # 72,000 milli node hours, inclusive.
        # Corresponds to the JSON property `trainBudgetMilliNodeHours`
        # @return [Fixnum]
        attr_accessor :train_budget_milli_node_hours
      
        # Each transformation will apply transform function to given input column. And
        # the result will be used for training. When creating transformation for
        # BigQuery Struct column, the column should be flattened using "." as the
        # delimiter.
        # Corresponds to the JSON property `transformations`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionSeq2SeqPlusForecastingInputsTransformation>]
        attr_accessor :transformations
      
        # Names of columns that are unavailable when a forecast is requested. This
        # column contains information for the given entity (identified by the
        # time_series_identifier_column) that is unknown before the forecast For example,
        # actual weather on a given day.
        # Corresponds to the JSON property `unavailableAtForecastColumns`
        # @return [Array<String>]
        attr_accessor :unavailable_at_forecast_columns
      
        # Validation options for the data validation component. The available options
        # are: * "fail-pipeline" - default, will validate against the validation and
        # fail the pipeline if it fails. * "ignore-validation" - ignore the results of
        # the validation and continue
        # Corresponds to the JSON property `validationOptions`
        # @return [String]
        attr_accessor :validation_options
      
        # Column name that should be used as the weight column. Higher values in this
        # column give more importance to the row during model training. The column must
        # have numeric values between 0 and 10000 inclusively; 0 means the row is
        # ignored for training. If weight column field is not set, then all rows are
        # assumed to have equal weight of 1. This column must be available at forecast.
        # Corresponds to the JSON property `weightColumn`
        # @return [String]
        attr_accessor :weight_column
      
        # Config that contains the strategy used to generate sliding windows in time
        # series training. A window is a series of rows that comprise the context up to
        # the time of prediction, and the horizon following. The corresponding row for
        # each window marks the start of the forecast horizon. Each window is used as an
        # input example for training/evaluation.
        # Corresponds to the JSON property `windowConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionWindowConfig]
        attr_accessor :window_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @additional_experiments = args[:additional_experiments] if args.key?(:additional_experiments)
          @available_at_forecast_columns = args[:available_at_forecast_columns] if args.key?(:available_at_forecast_columns)
          @context_window = args[:context_window] if args.key?(:context_window)
          @data_granularity = args[:data_granularity] if args.key?(:data_granularity)
          @export_evaluated_data_items_config = args[:export_evaluated_data_items_config] if args.key?(:export_evaluated_data_items_config)
          @forecast_horizon = args[:forecast_horizon] if args.key?(:forecast_horizon)
          @hierarchy_config = args[:hierarchy_config] if args.key?(:hierarchy_config)
          @holiday_regions = args[:holiday_regions] if args.key?(:holiday_regions)
          @optimization_objective = args[:optimization_objective] if args.key?(:optimization_objective)
          @quantiles = args[:quantiles] if args.key?(:quantiles)
          @target_column = args[:target_column] if args.key?(:target_column)
          @time_column = args[:time_column] if args.key?(:time_column)
          @time_series_attribute_columns = args[:time_series_attribute_columns] if args.key?(:time_series_attribute_columns)
          @time_series_identifier_column = args[:time_series_identifier_column] if args.key?(:time_series_identifier_column)
          @train_budget_milli_node_hours = args[:train_budget_milli_node_hours] if args.key?(:train_budget_milli_node_hours)
          @transformations = args[:transformations] if args.key?(:transformations)
          @unavailable_at_forecast_columns = args[:unavailable_at_forecast_columns] if args.key?(:unavailable_at_forecast_columns)
          @validation_options = args[:validation_options] if args.key?(:validation_options)
          @weight_column = args[:weight_column] if args.key?(:weight_column)
          @window_config = args[:window_config] if args.key?(:window_config)
        end
      end
      
      # A duration of time expressed in time granularity units.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionSeq2SeqPlusForecastingInputsGranularity
        include Google::Apis::Core::Hashable
      
        # The number of granularity_units between data points in the training data. If `
        # granularity_unit` is `minute`, can be 1, 5, 10, 15, or 30. For all other
        # values of `granularity_unit`, must be 1.
        # Corresponds to the JSON property `quantity`
        # @return [Fixnum]
        attr_accessor :quantity
      
        # The time granularity unit of this time period. The supported units are: * "
        # minute" * "hour" * "day" * "week" * "month" * "year"
        # Corresponds to the JSON property `unit`
        # @return [String]
        attr_accessor :unit
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @quantity = args[:quantity] if args.key?(:quantity)
          @unit = args[:unit] if args.key?(:unit)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionSeq2SeqPlusForecastingInputsTransformation
        include Google::Apis::Core::Hashable
      
        # Training pipeline will infer the proper transformation based on the statistic
        # of dataset.
        # Corresponds to the JSON property `auto`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionSeq2SeqPlusForecastingInputsTransformationAutoTransformation]
        attr_accessor :auto
      
        # Training pipeline will perform following transformation functions. * The
        # categorical string as is--no change to case, punctuation, spelling, tense, and
        # so on. * Convert the category name to a dictionary lookup index and generate
        # an embedding for each index. * Categories that appear less than 5 times in the
        # training dataset are treated as the "unknown" category. The "unknown" category
        # gets its own special lookup index and resulting embedding.
        # Corresponds to the JSON property `categorical`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionSeq2SeqPlusForecastingInputsTransformationCategoricalTransformation]
        attr_accessor :categorical
      
        # Training pipeline will perform following transformation functions. * The value
        # converted to float32. * The z_score of the value. * log(value+1) when the
        # value is greater than or equal to 0. Otherwise, this transformation is not
        # applied and the value is considered a missing value. * z_score of log(value+1)
        # when the value is greater than or equal to 0. Otherwise, this transformation
        # is not applied and the value is considered a missing value.
        # Corresponds to the JSON property `numeric`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionSeq2SeqPlusForecastingInputsTransformationNumericTransformation]
        attr_accessor :numeric
      
        # Training pipeline will perform following transformation functions. * The text
        # as is--no change to case, punctuation, spelling, tense, and so on. * Convert
        # the category name to a dictionary lookup index and generate an embedding for
        # each index.
        # Corresponds to the JSON property `text`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionSeq2SeqPlusForecastingInputsTransformationTextTransformation]
        attr_accessor :text
      
        # Training pipeline will perform following transformation functions. * Apply the
        # transformation functions for Numerical columns. * Determine the year, month,
        # day,and weekday. Treat each value from the timestamp as a Categorical column. *
        # Invalid numerical values (for example, values that fall outside of a typical
        # timestamp range, or are extreme values) receive no special treatment and are
        # not removed.
        # Corresponds to the JSON property `timestamp`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionSeq2SeqPlusForecastingInputsTransformationTimestampTransformation]
        attr_accessor :timestamp
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @auto = args[:auto] if args.key?(:auto)
          @categorical = args[:categorical] if args.key?(:categorical)
          @numeric = args[:numeric] if args.key?(:numeric)
          @text = args[:text] if args.key?(:text)
          @timestamp = args[:timestamp] if args.key?(:timestamp)
        end
      end
      
      # Training pipeline will infer the proper transformation based on the statistic
      # of dataset.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionSeq2SeqPlusForecastingInputsTransformationAutoTransformation
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `columnName`
        # @return [String]
        attr_accessor :column_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @column_name = args[:column_name] if args.key?(:column_name)
        end
      end
      
      # Training pipeline will perform following transformation functions. * The
      # categorical string as is--no change to case, punctuation, spelling, tense, and
      # so on. * Convert the category name to a dictionary lookup index and generate
      # an embedding for each index. * Categories that appear less than 5 times in the
      # training dataset are treated as the "unknown" category. The "unknown" category
      # gets its own special lookup index and resulting embedding.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionSeq2SeqPlusForecastingInputsTransformationCategoricalTransformation
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `columnName`
        # @return [String]
        attr_accessor :column_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @column_name = args[:column_name] if args.key?(:column_name)
        end
      end
      
      # Training pipeline will perform following transformation functions. * The value
      # converted to float32. * The z_score of the value. * log(value+1) when the
      # value is greater than or equal to 0. Otherwise, this transformation is not
      # applied and the value is considered a missing value. * z_score of log(value+1)
      # when the value is greater than or equal to 0. Otherwise, this transformation
      # is not applied and the value is considered a missing value.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionSeq2SeqPlusForecastingInputsTransformationNumericTransformation
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `columnName`
        # @return [String]
        attr_accessor :column_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @column_name = args[:column_name] if args.key?(:column_name)
        end
      end
      
      # Training pipeline will perform following transformation functions. * The text
      # as is--no change to case, punctuation, spelling, tense, and so on. * Convert
      # the category name to a dictionary lookup index and generate an embedding for
      # each index.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionSeq2SeqPlusForecastingInputsTransformationTextTransformation
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `columnName`
        # @return [String]
        attr_accessor :column_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @column_name = args[:column_name] if args.key?(:column_name)
        end
      end
      
      # Training pipeline will perform following transformation functions. * Apply the
      # transformation functions for Numerical columns. * Determine the year, month,
      # day,and weekday. Treat each value from the timestamp as a Categorical column. *
      # Invalid numerical values (for example, values that fall outside of a typical
      # timestamp range, or are extreme values) receive no special treatment and are
      # not removed.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionSeq2SeqPlusForecastingInputsTransformationTimestampTransformation
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `columnName`
        # @return [String]
        attr_accessor :column_name
      
        # The format in which that time field is expressed. The time_format must either
        # be one of: * `unix-seconds` * `unix-milliseconds` * `unix-microseconds` * `
        # unix-nanoseconds` (for respectively number of seconds, milliseconds,
        # microseconds and nanoseconds since start of the Unix epoch); or be written in `
        # strftime` syntax. If time_format is not set, then the default format is RFC
        # 3339 `date-time` format, where `time-offset` = `"Z"` (e.g. 1985-04-12T23:20:50.
        # 52Z)
        # Corresponds to the JSON property `timeFormat`
        # @return [String]
        attr_accessor :time_format
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @column_name = args[:column_name] if args.key?(:column_name)
          @time_format = args[:time_format] if args.key?(:time_format)
        end
      end
      
      # Model metadata specific to Seq2Seq Plus Forecasting.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionSeq2SeqPlusForecastingMetadata
        include Google::Apis::Core::Hashable
      
        # BigQuery destination uri for exported evaluated examples.
        # Corresponds to the JSON property `evaluatedDataItemsBigqueryUri`
        # @return [String]
        attr_accessor :evaluated_data_items_bigquery_uri
      
        # Output only. The actual training cost of the model, expressed in milli node
        # hours, i.e. 1,000 value in this field means 1 node hour. Guaranteed to not
        # exceed the train budget.
        # Corresponds to the JSON property `trainCostMilliNodeHours`
        # @return [Fixnum]
        attr_accessor :train_cost_milli_node_hours
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @evaluated_data_items_bigquery_uri = args[:evaluated_data_items_bigquery_uri] if args.key?(:evaluated_data_items_bigquery_uri)
          @train_cost_milli_node_hours = args[:train_cost_milli_node_hours] if args.key?(:train_cost_milli_node_hours)
        end
      end
      
      # A TrainingJob that trains and uploads an AutoML Forecasting Model.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionTftForecasting
        include Google::Apis::Core::Hashable
      
        # The input parameters of this TrainingJob.
        # Corresponds to the JSON property `inputs`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionTftForecastingInputs]
        attr_accessor :inputs
      
        # Model metadata specific to TFT Forecasting.
        # Corresponds to the JSON property `metadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionTftForecastingMetadata]
        attr_accessor :metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @inputs = args[:inputs] if args.key?(:inputs)
          @metadata = args[:metadata] if args.key?(:metadata)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionTftForecastingInputs
        include Google::Apis::Core::Hashable
      
        # Additional experiment flags for the time series forcasting training.
        # Corresponds to the JSON property `additionalExperiments`
        # @return [Array<String>]
        attr_accessor :additional_experiments
      
        # Names of columns that are available and provided when a forecast is requested.
        # These columns contain information for the given entity (identified by the
        # time_series_identifier_column column) that is known at forecast. For example,
        # predicted weather for a specific day.
        # Corresponds to the JSON property `availableAtForecastColumns`
        # @return [Array<String>]
        attr_accessor :available_at_forecast_columns
      
        # The amount of time into the past training and prediction data is used for
        # model training and prediction respectively. Expressed in number of units
        # defined by the `data_granularity` field.
        # Corresponds to the JSON property `contextWindow`
        # @return [Fixnum]
        attr_accessor :context_window
      
        # A duration of time expressed in time granularity units.
        # Corresponds to the JSON property `dataGranularity`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionTftForecastingInputsGranularity]
        attr_accessor :data_granularity
      
        # Configuration for exporting test set predictions to a BigQuery table.
        # Corresponds to the JSON property `exportEvaluatedDataItemsConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionExportEvaluatedDataItemsConfig]
        attr_accessor :export_evaluated_data_items_config
      
        # The amount of time into the future for which forecasted values for the target
        # are returned. Expressed in number of units defined by the `data_granularity`
        # field.
        # Corresponds to the JSON property `forecastHorizon`
        # @return [Fixnum]
        attr_accessor :forecast_horizon
      
        # Configuration that defines the hierarchical relationship of time series and
        # parameters for hierarchical forecasting strategies.
        # Corresponds to the JSON property `hierarchyConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionHierarchyConfig]
        attr_accessor :hierarchy_config
      
        # The geographical region based on which the holiday effect is applied in
        # modeling by adding holiday categorical array feature that include all holidays
        # matching the date. This option only allowed when data_granularity is day. By
        # default, holiday effect modeling is disabled. To turn it on, specify the
        # holiday region using this option.
        # Corresponds to the JSON property `holidayRegions`
        # @return [Array<String>]
        attr_accessor :holiday_regions
      
        # Objective function the model is optimizing towards. The training process
        # creates a model that optimizes the value of the objective function over the
        # validation set. The supported optimization objectives: * "minimize-rmse" (
        # default) - Minimize root-mean-squared error (RMSE). * "minimize-mae" -
        # Minimize mean-absolute error (MAE). * "minimize-rmsle" - Minimize root-mean-
        # squared log error (RMSLE). * "minimize-rmspe" - Minimize root-mean-squared
        # percentage error (RMSPE). * "minimize-wape-mae" - Minimize the combination of
        # weighted absolute percentage error (WAPE) and mean-absolute-error (MAE). * "
        # minimize-quantile-loss" - Minimize the quantile loss at the quantiles defined
        # in `quantiles`. * "minimize-mape" - Minimize the mean absolute percentage
        # error.
        # Corresponds to the JSON property `optimizationObjective`
        # @return [String]
        attr_accessor :optimization_objective
      
        # Quantiles to use for minimize-quantile-loss `optimization_objective`. Up to 5
        # quantiles are allowed of values between 0 and 1, exclusive. Required if the
        # value of optimization_objective is minimize-quantile-loss. Represents the
        # percent quantiles to use for that objective. Quantiles must be unique.
        # Corresponds to the JSON property `quantiles`
        # @return [Array<Float>]
        attr_accessor :quantiles
      
        # The name of the column that the Model is to predict values for. This column
        # must be unavailable at forecast.
        # Corresponds to the JSON property `targetColumn`
        # @return [String]
        attr_accessor :target_column
      
        # The name of the column that identifies time order in the time series. This
        # column must be available at forecast.
        # Corresponds to the JSON property `timeColumn`
        # @return [String]
        attr_accessor :time_column
      
        # Column names that should be used as attribute columns. The value of these
        # columns does not vary as a function of time. For example, store ID or item
        # color.
        # Corresponds to the JSON property `timeSeriesAttributeColumns`
        # @return [Array<String>]
        attr_accessor :time_series_attribute_columns
      
        # The name of the column that identifies the time series.
        # Corresponds to the JSON property `timeSeriesIdentifierColumn`
        # @return [String]
        attr_accessor :time_series_identifier_column
      
        # Required. The train budget of creating this model, expressed in milli node
        # hours i.e. 1,000 value in this field means 1 node hour. The training cost of
        # the model will not exceed this budget. The final cost will be attempted to be
        # close to the budget, though may end up being (even) noticeably smaller - at
        # the backend's discretion. This especially may happen when further model
        # training ceases to provide any improvements. If the budget is set to a value
        # known to be insufficient to train a model for the given dataset, the training
        # won't be attempted and will error. The train budget must be between 1,000 and
        # 72,000 milli node hours, inclusive.
        # Corresponds to the JSON property `trainBudgetMilliNodeHours`
        # @return [Fixnum]
        attr_accessor :train_budget_milli_node_hours
      
        # Each transformation will apply transform function to given input column. And
        # the result will be used for training. When creating transformation for
        # BigQuery Struct column, the column should be flattened using "." as the
        # delimiter.
        # Corresponds to the JSON property `transformations`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionTftForecastingInputsTransformation>]
        attr_accessor :transformations
      
        # Names of columns that are unavailable when a forecast is requested. This
        # column contains information for the given entity (identified by the
        # time_series_identifier_column) that is unknown before the forecast For example,
        # actual weather on a given day.
        # Corresponds to the JSON property `unavailableAtForecastColumns`
        # @return [Array<String>]
        attr_accessor :unavailable_at_forecast_columns
      
        # Validation options for the data validation component. The available options
        # are: * "fail-pipeline" - default, will validate against the validation and
        # fail the pipeline if it fails. * "ignore-validation" - ignore the results of
        # the validation and continue
        # Corresponds to the JSON property `validationOptions`
        # @return [String]
        attr_accessor :validation_options
      
        # Column name that should be used as the weight column. Higher values in this
        # column give more importance to the row during model training. The column must
        # have numeric values between 0 and 10000 inclusively; 0 means the row is
        # ignored for training. If weight column field is not set, then all rows are
        # assumed to have equal weight of 1. This column must be available at forecast.
        # Corresponds to the JSON property `weightColumn`
        # @return [String]
        attr_accessor :weight_column
      
        # Config that contains the strategy used to generate sliding windows in time
        # series training. A window is a series of rows that comprise the context up to
        # the time of prediction, and the horizon following. The corresponding row for
        # each window marks the start of the forecast horizon. Each window is used as an
        # input example for training/evaluation.
        # Corresponds to the JSON property `windowConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionWindowConfig]
        attr_accessor :window_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @additional_experiments = args[:additional_experiments] if args.key?(:additional_experiments)
          @available_at_forecast_columns = args[:available_at_forecast_columns] if args.key?(:available_at_forecast_columns)
          @context_window = args[:context_window] if args.key?(:context_window)
          @data_granularity = args[:data_granularity] if args.key?(:data_granularity)
          @export_evaluated_data_items_config = args[:export_evaluated_data_items_config] if args.key?(:export_evaluated_data_items_config)
          @forecast_horizon = args[:forecast_horizon] if args.key?(:forecast_horizon)
          @hierarchy_config = args[:hierarchy_config] if args.key?(:hierarchy_config)
          @holiday_regions = args[:holiday_regions] if args.key?(:holiday_regions)
          @optimization_objective = args[:optimization_objective] if args.key?(:optimization_objective)
          @quantiles = args[:quantiles] if args.key?(:quantiles)
          @target_column = args[:target_column] if args.key?(:target_column)
          @time_column = args[:time_column] if args.key?(:time_column)
          @time_series_attribute_columns = args[:time_series_attribute_columns] if args.key?(:time_series_attribute_columns)
          @time_series_identifier_column = args[:time_series_identifier_column] if args.key?(:time_series_identifier_column)
          @train_budget_milli_node_hours = args[:train_budget_milli_node_hours] if args.key?(:train_budget_milli_node_hours)
          @transformations = args[:transformations] if args.key?(:transformations)
          @unavailable_at_forecast_columns = args[:unavailable_at_forecast_columns] if args.key?(:unavailable_at_forecast_columns)
          @validation_options = args[:validation_options] if args.key?(:validation_options)
          @weight_column = args[:weight_column] if args.key?(:weight_column)
          @window_config = args[:window_config] if args.key?(:window_config)
        end
      end
      
      # A duration of time expressed in time granularity units.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionTftForecastingInputsGranularity
        include Google::Apis::Core::Hashable
      
        # The number of granularity_units between data points in the training data. If `
        # granularity_unit` is `minute`, can be 1, 5, 10, 15, or 30. For all other
        # values of `granularity_unit`, must be 1.
        # Corresponds to the JSON property `quantity`
        # @return [Fixnum]
        attr_accessor :quantity
      
        # The time granularity unit of this time period. The supported units are: * "
        # minute" * "hour" * "day" * "week" * "month" * "year"
        # Corresponds to the JSON property `unit`
        # @return [String]
        attr_accessor :unit
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @quantity = args[:quantity] if args.key?(:quantity)
          @unit = args[:unit] if args.key?(:unit)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionTftForecastingInputsTransformation
        include Google::Apis::Core::Hashable
      
        # Training pipeline will infer the proper transformation based on the statistic
        # of dataset.
        # Corresponds to the JSON property `auto`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionTftForecastingInputsTransformationAutoTransformation]
        attr_accessor :auto
      
        # Training pipeline will perform following transformation functions. * The
        # categorical string as is--no change to case, punctuation, spelling, tense, and
        # so on. * Convert the category name to a dictionary lookup index and generate
        # an embedding for each index. * Categories that appear less than 5 times in the
        # training dataset are treated as the "unknown" category. The "unknown" category
        # gets its own special lookup index and resulting embedding.
        # Corresponds to the JSON property `categorical`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionTftForecastingInputsTransformationCategoricalTransformation]
        attr_accessor :categorical
      
        # Training pipeline will perform following transformation functions. * The value
        # converted to float32. * The z_score of the value. * log(value+1) when the
        # value is greater than or equal to 0. Otherwise, this transformation is not
        # applied and the value is considered a missing value. * z_score of log(value+1)
        # when the value is greater than or equal to 0. Otherwise, this transformation
        # is not applied and the value is considered a missing value.
        # Corresponds to the JSON property `numeric`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionTftForecastingInputsTransformationNumericTransformation]
        attr_accessor :numeric
      
        # Training pipeline will perform following transformation functions. * The text
        # as is--no change to case, punctuation, spelling, tense, and so on. * Convert
        # the category name to a dictionary lookup index and generate an embedding for
        # each index.
        # Corresponds to the JSON property `text`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionTftForecastingInputsTransformationTextTransformation]
        attr_accessor :text
      
        # Training pipeline will perform following transformation functions. * Apply the
        # transformation functions for Numerical columns. * Determine the year, month,
        # day,and weekday. Treat each value from the timestamp as a Categorical column. *
        # Invalid numerical values (for example, values that fall outside of a typical
        # timestamp range, or are extreme values) receive no special treatment and are
        # not removed.
        # Corresponds to the JSON property `timestamp`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTrainingjobDefinitionTftForecastingInputsTransformationTimestampTransformation]
        attr_accessor :timestamp
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @auto = args[:auto] if args.key?(:auto)
          @categorical = args[:categorical] if args.key?(:categorical)
          @numeric = args[:numeric] if args.key?(:numeric)
          @text = args[:text] if args.key?(:text)
          @timestamp = args[:timestamp] if args.key?(:timestamp)
        end
      end
      
      # Training pipeline will infer the proper transformation based on the statistic
      # of dataset.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionTftForecastingInputsTransformationAutoTransformation
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `columnName`
        # @return [String]
        attr_accessor :column_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @column_name = args[:column_name] if args.key?(:column_name)
        end
      end
      
      # Training pipeline will perform following transformation functions. * The
      # categorical string as is--no change to case, punctuation, spelling, tense, and
      # so on. * Convert the category name to a dictionary lookup index and generate
      # an embedding for each index. * Categories that appear less than 5 times in the
      # training dataset are treated as the "unknown" category. The "unknown" category
      # gets its own special lookup index and resulting embedding.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionTftForecastingInputsTransformationCategoricalTransformation
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `columnName`
        # @return [String]
        attr_accessor :column_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @column_name = args[:column_name] if args.key?(:column_name)
        end
      end
      
      # Training pipeline will perform following transformation functions. * The value
      # converted to float32. * The z_score of the value. * log(value+1) when the
      # value is greater than or equal to 0. Otherwise, this transformation is not
      # applied and the value is considered a missing value. * z_score of log(value+1)
      # when the value is greater than or equal to 0. Otherwise, this transformation
      # is not applied and the value is considered a missing value.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionTftForecastingInputsTransformationNumericTransformation
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `columnName`
        # @return [String]
        attr_accessor :column_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @column_name = args[:column_name] if args.key?(:column_name)
        end
      end
      
      # Training pipeline will perform following transformation functions. * The text
      # as is--no change to case, punctuation, spelling, tense, and so on. * Convert
      # the category name to a dictionary lookup index and generate an embedding for
      # each index.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionTftForecastingInputsTransformationTextTransformation
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `columnName`
        # @return [String]
        attr_accessor :column_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @column_name = args[:column_name] if args.key?(:column_name)
        end
      end
      
      # Training pipeline will perform following transformation functions. * Apply the
      # transformation functions for Numerical columns. * Determine the year, month,
      # day,and weekday. Treat each value from the timestamp as a Categorical column. *
      # Invalid numerical values (for example, values that fall outside of a typical
      # timestamp range, or are extreme values) receive no special treatment and are
      # not removed.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionTftForecastingInputsTransformationTimestampTransformation
        include Google::Apis::Core::Hashable
      
        # 
        # Corresponds to the JSON property `columnName`
        # @return [String]
        attr_accessor :column_name
      
        # The format in which that time field is expressed. The time_format must either
        # be one of: * `unix-seconds` * `unix-milliseconds` * `unix-microseconds` * `
        # unix-nanoseconds` (for respectively number of seconds, milliseconds,
        # microseconds and nanoseconds since start of the Unix epoch); or be written in `
        # strftime` syntax. If time_format is not set, then the default format is RFC
        # 3339 `date-time` format, where `time-offset` = `"Z"` (e.g. 1985-04-12T23:20:50.
        # 52Z)
        # Corresponds to the JSON property `timeFormat`
        # @return [String]
        attr_accessor :time_format
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @column_name = args[:column_name] if args.key?(:column_name)
          @time_format = args[:time_format] if args.key?(:time_format)
        end
      end
      
      # Model metadata specific to TFT Forecasting.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionTftForecastingMetadata
        include Google::Apis::Core::Hashable
      
        # BigQuery destination uri for exported evaluated examples.
        # Corresponds to the JSON property `evaluatedDataItemsBigqueryUri`
        # @return [String]
        attr_accessor :evaluated_data_items_bigquery_uri
      
        # Output only. The actual training cost of the model, expressed in milli node
        # hours, i.e. 1,000 value in this field means 1 node hour. Guaranteed to not
        # exceed the train budget.
        # Corresponds to the JSON property `trainCostMilliNodeHours`
        # @return [Fixnum]
        attr_accessor :train_cost_milli_node_hours
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @evaluated_data_items_bigquery_uri = args[:evaluated_data_items_bigquery_uri] if args.key?(:evaluated_data_items_bigquery_uri)
          @train_cost_milli_node_hours = args[:train_cost_milli_node_hours] if args.key?(:train_cost_milli_node_hours)
        end
      end
      
      # Config that contains the strategy used to generate sliding windows in time
      # series training. A window is a series of rows that comprise the context up to
      # the time of prediction, and the horizon following. The corresponding row for
      # each window marks the start of the forecast horizon. Each window is used as an
      # input example for training/evaluation.
      class GoogleCloudAiplatformV1SchemaTrainingjobDefinitionWindowConfig
        include Google::Apis::Core::Hashable
      
        # Name of the column that should be used to generate sliding windows. The column
        # should contain either booleans or string booleans; if the value of the row is
        # True, generate a sliding window with the horizon starting at that row. The
        # column will not be used as a feature in training.
        # Corresponds to the JSON property `column`
        # @return [String]
        attr_accessor :column
      
        # Maximum number of windows that should be generated across all time series.
        # Corresponds to the JSON property `maxCount`
        # @return [Fixnum]
        attr_accessor :max_count
      
        # Stride length used to generate input examples. Within one time series, every `$
        # STRIDE_LENGTH` rows will be used to generate a sliding window.
        # Corresponds to the JSON property `strideLength`
        # @return [Fixnum]
        attr_accessor :stride_length
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @column = args[:column] if args.key?(:column)
          @max_count = args[:max_count] if args.key?(:max_count)
          @stride_length = args[:stride_length] if args.key?(:stride_length)
        end
      end
      
      # A vertex represents a 2D point in the image. NOTE: the normalized vertex
      # coordinates are relative to the original image and range from 0 to 1.
      class GoogleCloudAiplatformV1SchemaVertex
        include Google::Apis::Core::Hashable
      
        # X coordinate.
        # Corresponds to the JSON property `x`
        # @return [Float]
        attr_accessor :x
      
        # Y coordinate.
        # Corresponds to the JSON property `y`
        # @return [Float]
        attr_accessor :y
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @x = args[:x] if args.key?(:x)
          @y = args[:y] if args.key?(:y)
        end
      end
      
      # Annotation details specific to video action recognition.
      class GoogleCloudAiplatformV1SchemaVideoActionRecognitionAnnotation
        include Google::Apis::Core::Hashable
      
        # The resource Id of the AnnotationSpec that this Annotation pertains to.
        # Corresponds to the JSON property `annotationSpecId`
        # @return [String]
        attr_accessor :annotation_spec_id
      
        # The display name of the AnnotationSpec that this Annotation pertains to.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # A time period inside of a DataItem that has a time dimension (e.g. video).
        # Corresponds to the JSON property `timeSegment`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTimeSegment]
        attr_accessor :time_segment
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @annotation_spec_id = args[:annotation_spec_id] if args.key?(:annotation_spec_id)
          @display_name = args[:display_name] if args.key?(:display_name)
          @time_segment = args[:time_segment] if args.key?(:time_segment)
        end
      end
      
      # Annotation details specific to video classification.
      class GoogleCloudAiplatformV1SchemaVideoClassificationAnnotation
        include Google::Apis::Core::Hashable
      
        # The resource Id of the AnnotationSpec that this Annotation pertains to.
        # Corresponds to the JSON property `annotationSpecId`
        # @return [String]
        attr_accessor :annotation_spec_id
      
        # The display name of the AnnotationSpec that this Annotation pertains to.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # A time period inside of a DataItem that has a time dimension (e.g. video).
        # Corresponds to the JSON property `timeSegment`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SchemaTimeSegment]
        attr_accessor :time_segment
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @annotation_spec_id = args[:annotation_spec_id] if args.key?(:annotation_spec_id)
          @display_name = args[:display_name] if args.key?(:display_name)
          @time_segment = args[:time_segment] if args.key?(:time_segment)
        end
      end
      
      # Payload of Video DataItem.
      class GoogleCloudAiplatformV1SchemaVideoDataItem
        include Google::Apis::Core::Hashable
      
        # Required. Google Cloud Storage URI points to the original video in user's
        # bucket. The video is up to 50 GB in size and up to 3 hour in duration.
        # Corresponds to the JSON property `gcsUri`
        # @return [String]
        attr_accessor :gcs_uri
      
        # Output only. The mime type of the content of the video. Only the videos in
        # below listed mime types are supported. Supported mime_type: - video/mp4 -
        # video/avi - video/quicktime
        # Corresponds to the JSON property `mimeType`
        # @return [String]
        attr_accessor :mime_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @gcs_uri = args[:gcs_uri] if args.key?(:gcs_uri)
          @mime_type = args[:mime_type] if args.key?(:mime_type)
        end
      end
      
      # The metadata of Datasets that contain Video DataItems.
      class GoogleCloudAiplatformV1SchemaVideoDatasetMetadata
        include Google::Apis::Core::Hashable
      
        # Points to a YAML file stored on Google Cloud Storage describing payload of the
        # Video DataItems that belong to this Dataset.
        # Corresponds to the JSON property `dataItemSchemaUri`
        # @return [String]
        attr_accessor :data_item_schema_uri
      
        # Google Cloud Storage Bucket name that contains the blob data of this Dataset.
        # Corresponds to the JSON property `gcsBucket`
        # @return [String]
        attr_accessor :gcs_bucket
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @data_item_schema_uri = args[:data_item_schema_uri] if args.key?(:data_item_schema_uri)
          @gcs_bucket = args[:gcs_bucket] if args.key?(:gcs_bucket)
        end
      end
      
      # Annotation details specific to video object tracking.
      class GoogleCloudAiplatformV1SchemaVideoObjectTrackingAnnotation
        include Google::Apis::Core::Hashable
      
        # The resource Id of the AnnotationSpec that this Annotation pertains to.
        # Corresponds to the JSON property `annotationSpecId`
        # @return [String]
        attr_accessor :annotation_spec_id
      
        # The display name of the AnnotationSpec that this Annotation pertains to.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # The instance of the object, expressed as a positive integer. Used to track the
        # same object across different frames.
        # Corresponds to the JSON property `instanceId`
        # @return [Fixnum]
        attr_accessor :instance_id
      
        # A time (frame) of a video to which this annotation pertains. Represented as
        # the duration since the video's start.
        # Corresponds to the JSON property `timeOffset`
        # @return [String]
        attr_accessor :time_offset
      
        # The rightmost coordinate of the bounding box.
        # Corresponds to the JSON property `xMax`
        # @return [Float]
        attr_accessor :x_max
      
        # The leftmost coordinate of the bounding box.
        # Corresponds to the JSON property `xMin`
        # @return [Float]
        attr_accessor :x_min
      
        # The bottommost coordinate of the bounding box.
        # Corresponds to the JSON property `yMax`
        # @return [Float]
        attr_accessor :y_max
      
        # The topmost coordinate of the bounding box.
        # Corresponds to the JSON property `yMin`
        # @return [Float]
        attr_accessor :y_min
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @annotation_spec_id = args[:annotation_spec_id] if args.key?(:annotation_spec_id)
          @display_name = args[:display_name] if args.key?(:display_name)
          @instance_id = args[:instance_id] if args.key?(:instance_id)
          @time_offset = args[:time_offset] if args.key?(:time_offset)
          @x_max = args[:x_max] if args.key?(:x_max)
          @x_min = args[:x_min] if args.key?(:x_min)
          @y_max = args[:y_max] if args.key?(:y_max)
          @y_min = args[:y_min] if args.key?(:y_min)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaVisualInspectionClassificationLabelSavedQueryMetadata
        include Google::Apis::Core::Hashable
      
        # Whether or not the classification label is multi_label.
        # Corresponds to the JSON property `multiLabel`
        # @return [Boolean]
        attr_accessor :multi_label
        alias_method :multi_label?, :multi_label
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @multi_label = args[:multi_label] if args.key?(:multi_label)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1SchemaVisualInspectionMaskSavedQueryMetadata
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Response message for DatasetService.SearchDataItems.
      class GoogleCloudAiplatformV1SearchDataItemsResponse
        include Google::Apis::Core::Hashable
      
        # The DataItemViews read.
        # Corresponds to the JSON property `dataItemViews`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DataItemView>]
        attr_accessor :data_item_views
      
        # A token to retrieve next page of results. Pass to SearchDataItemsRequest.
        # page_token to obtain that page.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @data_item_views = args[:data_item_views] if args.key?(:data_item_views)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Google search entry point.
      class GoogleCloudAiplatformV1SearchEntryPoint
        include Google::Apis::Core::Hashable
      
        # Optional. Web content snippet that can be embedded in a web page or an app
        # webview.
        # Corresponds to the JSON property `renderedContent`
        # @return [String]
        attr_accessor :rendered_content
      
        # Optional. Base64 encoded JSON representing array of tuple.
        # Corresponds to the JSON property `sdkBlob`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :sdk_blob
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @rendered_content = args[:rendered_content] if args.key?(:rendered_content)
          @sdk_blob = args[:sdk_blob] if args.key?(:sdk_blob)
        end
      end
      
      # Response message for FeaturestoreService.SearchFeatures.
      class GoogleCloudAiplatformV1SearchFeaturesResponse
        include Google::Apis::Core::Hashable
      
        # The Features matching the request. Fields returned: * `name` * `description` *
        # `labels` * `create_time` * `update_time`
        # Corresponds to the JSON property `features`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Feature>]
        attr_accessor :features
      
        # A token, which can be sent as SearchFeaturesRequest.page_token to retrieve the
        # next page. If this field is omitted, there are no subsequent pages.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @features = args[:features] if args.key?(:features)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Request message for MigrationService.SearchMigratableResources.
      class GoogleCloudAiplatformV1SearchMigratableResourcesRequest
        include Google::Apis::Core::Hashable
      
        # A filter for your search. You can use the following types of filters: *
        # Resource type filters. The following strings filter for a specific type of
        # MigratableResource: * `ml_engine_model_version:*` * `automl_model:*` * `
        # automl_dataset:*` * `data_labeling_dataset:*` * "Migrated or not" filters. The
        # following strings filter for resources that either have or have not already
        # been migrated: * `last_migrate_time:*` filters for migrated resources. * `NOT
        # last_migrate_time:*` filters for not yet migrated resources.
        # Corresponds to the JSON property `filter`
        # @return [String]
        attr_accessor :filter
      
        # The standard page size. The default and maximum value is 100.
        # Corresponds to the JSON property `pageSize`
        # @return [Fixnum]
        attr_accessor :page_size
      
        # The standard page token.
        # Corresponds to the JSON property `pageToken`
        # @return [String]
        attr_accessor :page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @filter = args[:filter] if args.key?(:filter)
          @page_size = args[:page_size] if args.key?(:page_size)
          @page_token = args[:page_token] if args.key?(:page_token)
        end
      end
      
      # Response message for MigrationService.SearchMigratableResources.
      class GoogleCloudAiplatformV1SearchMigratableResourcesResponse
        include Google::Apis::Core::Hashable
      
        # All migratable resources that can be migrated to the location specified in the
        # request.
        # Corresponds to the JSON property `migratableResources`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1MigratableResource>]
        attr_accessor :migratable_resources
      
        # The standard next-page token. The migratable_resources may not fill page_size
        # in SearchMigratableResourcesRequest even when there are subsequent pages.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @migratable_resources = args[:migratable_resources] if args.key?(:migratable_resources)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # Request message for JobService.SearchModelDeploymentMonitoringStatsAnomalies.
      class GoogleCloudAiplatformV1SearchModelDeploymentMonitoringStatsAnomaliesRequest
        include Google::Apis::Core::Hashable
      
        # Required. The DeployedModel ID of the [
        # ModelDeploymentMonitoringObjectiveConfig.deployed_model_id].
        # Corresponds to the JSON property `deployedModelId`
        # @return [String]
        attr_accessor :deployed_model_id
      
        # The latest timestamp of stats being generated. If not set, indicates feching
        # stats till the latest possible one.
        # Corresponds to the JSON property `endTime`
        # @return [String]
        attr_accessor :end_time
      
        # The feature display name. If specified, only return the stats belonging to
        # this feature. Format: ModelMonitoringStatsAnomalies.
        # FeatureHistoricStatsAnomalies.feature_display_name, example: "user_destination"
        # .
        # Corresponds to the JSON property `featureDisplayName`
        # @return [String]
        attr_accessor :feature_display_name
      
        # Required. Objectives of the stats to retrieve.
        # Corresponds to the JSON property `objectives`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SearchModelDeploymentMonitoringStatsAnomaliesRequestStatsAnomaliesObjective>]
        attr_accessor :objectives
      
        # The standard list page size.
        # Corresponds to the JSON property `pageSize`
        # @return [Fixnum]
        attr_accessor :page_size
      
        # A page token received from a previous JobService.
        # SearchModelDeploymentMonitoringStatsAnomalies call.
        # Corresponds to the JSON property `pageToken`
        # @return [String]
        attr_accessor :page_token
      
        # The earliest timestamp of stats being generated. If not set, indicates
        # fetching stats till the earliest possible one.
        # Corresponds to the JSON property `startTime`
        # @return [String]
        attr_accessor :start_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @deployed_model_id = args[:deployed_model_id] if args.key?(:deployed_model_id)
          @end_time = args[:end_time] if args.key?(:end_time)
          @feature_display_name = args[:feature_display_name] if args.key?(:feature_display_name)
          @objectives = args[:objectives] if args.key?(:objectives)
          @page_size = args[:page_size] if args.key?(:page_size)
          @page_token = args[:page_token] if args.key?(:page_token)
          @start_time = args[:start_time] if args.key?(:start_time)
        end
      end
      
      # Stats requested for specific objective.
      class GoogleCloudAiplatformV1SearchModelDeploymentMonitoringStatsAnomaliesRequestStatsAnomaliesObjective
        include Google::Apis::Core::Hashable
      
        # If set, all attribution scores between
        # SearchModelDeploymentMonitoringStatsAnomaliesRequest.start_time and
        # SearchModelDeploymentMonitoringStatsAnomaliesRequest.end_time are fetched, and
        # page token doesn't take effect in this case. Only used to retrieve attribution
        # score for the top Features which has the highest attribution score in the
        # latest monitoring run.
        # Corresponds to the JSON property `topFeatureCount`
        # @return [Fixnum]
        attr_accessor :top_feature_count
      
        # 
        # Corresponds to the JSON property `type`
        # @return [String]
        attr_accessor :type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @top_feature_count = args[:top_feature_count] if args.key?(:top_feature_count)
          @type = args[:type] if args.key?(:type)
        end
      end
      
      # Response message for JobService.SearchModelDeploymentMonitoringStatsAnomalies.
      class GoogleCloudAiplatformV1SearchModelDeploymentMonitoringStatsAnomaliesResponse
        include Google::Apis::Core::Hashable
      
        # Stats retrieved for requested objectives. There are at most 1000
        # ModelMonitoringStatsAnomalies.FeatureHistoricStatsAnomalies.prediction_stats
        # in the response.
        # Corresponds to the JSON property `monitoringStats`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelMonitoringStatsAnomalies>]
        attr_accessor :monitoring_stats
      
        # The page token that can be used by the next JobService.
        # SearchModelDeploymentMonitoringStatsAnomalies call.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @monitoring_stats = args[:monitoring_stats] if args.key?(:monitoring_stats)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # The request message for FeatureOnlineStoreService.SearchNearestEntities.
      class GoogleCloudAiplatformV1SearchNearestEntitiesRequest
        include Google::Apis::Core::Hashable
      
        # A query to find a number of similar entities.
        # Corresponds to the JSON property `query`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NearestNeighborQuery]
        attr_accessor :query
      
        # Optional. If set to true, the full entities (including all vector values and
        # metadata) of the nearest neighbors are returned; otherwise only entity id of
        # the nearest neighbors will be returned. Note that returning full entities will
        # significantly increase the latency and cost of the query.
        # Corresponds to the JSON property `returnFullEntity`
        # @return [Boolean]
        attr_accessor :return_full_entity
        alias_method :return_full_entity?, :return_full_entity
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @query = args[:query] if args.key?(:query)
          @return_full_entity = args[:return_full_entity] if args.key?(:return_full_entity)
        end
      end
      
      # Response message for FeatureOnlineStoreService.SearchNearestEntities
      class GoogleCloudAiplatformV1SearchNearestEntitiesResponse
        include Google::Apis::Core::Hashable
      
        # Nearest neighbors for one query.
        # Corresponds to the JSON property `nearestNeighbors`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NearestNeighbors]
        attr_accessor :nearest_neighbors
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @nearest_neighbors = args[:nearest_neighbors] if args.key?(:nearest_neighbors)
        end
      end
      
      # Represents an environment variable where the value is a secret in Cloud Secret
      # Manager.
      class GoogleCloudAiplatformV1SecretEnvVar
        include Google::Apis::Core::Hashable
      
        # Required. Name of the secret environment variable.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Reference to a secret stored in the Cloud Secret Manager that will provide the
        # value for this environment variable.
        # Corresponds to the JSON property `secretRef`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SecretRef]
        attr_accessor :secret_ref
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @name = args[:name] if args.key?(:name)
          @secret_ref = args[:secret_ref] if args.key?(:secret_ref)
        end
      end
      
      # Reference to a secret stored in the Cloud Secret Manager that will provide the
      # value for this environment variable.
      class GoogleCloudAiplatformV1SecretRef
        include Google::Apis::Core::Hashable
      
        # Required. The name of the secret in Cloud Secret Manager. Format: `secret_name`
        # .
        # Corresponds to the JSON property `secret`
        # @return [String]
        attr_accessor :secret
      
        # The Cloud Secret Manager secret version. Can be 'latest' for the latest
        # version, an integer for a specific version, or a version alias.
        # Corresponds to the JSON property `version`
        # @return [String]
        attr_accessor :version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @secret = args[:secret] if args.key?(:secret)
          @version = args[:version] if args.key?(:version)
        end
      end
      
      # Segment of the content.
      class GoogleCloudAiplatformV1Segment
        include Google::Apis::Core::Hashable
      
        # Output only. End index in the given Part, measured in bytes. Offset from the
        # start of the Part, exclusive, starting at zero.
        # Corresponds to the JSON property `endIndex`
        # @return [Fixnum]
        attr_accessor :end_index
      
        # Output only. The index of a Part object within its parent Content object.
        # Corresponds to the JSON property `partIndex`
        # @return [Fixnum]
        attr_accessor :part_index
      
        # Output only. Start index in the given Part, measured in bytes. Offset from the
        # start of the Part, inclusive, starting at zero.
        # Corresponds to the JSON property `startIndex`
        # @return [Fixnum]
        attr_accessor :start_index
      
        # Output only. The text corresponding to the segment from the response.
        # Corresponds to the JSON property `text`
        # @return [String]
        attr_accessor :text
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @end_index = args[:end_index] if args.key?(:end_index)
          @part_index = args[:part_index] if args.key?(:part_index)
          @start_index = args[:start_index] if args.key?(:start_index)
          @text = args[:text] if args.key?(:text)
        end
      end
      
      # Configuration for the use of custom service account to run the workloads.
      class GoogleCloudAiplatformV1ServiceAccountSpec
        include Google::Apis::Core::Hashable
      
        # Required. If true, custom user-managed service account is enforced to run any
        # workloads (for example, Vertex Jobs) on the resource. Otherwise, uses the [
        # Vertex AI Custom Code Service Agent](https://cloud.google.com/vertex-ai/docs/
        # general/access-control#service-agents).
        # Corresponds to the JSON property `enableCustomServiceAccount`
        # @return [Boolean]
        attr_accessor :enable_custom_service_account
        alias_method :enable_custom_service_account?, :enable_custom_service_account
      
        # Optional. Required when all below conditions are met * `
        # enable_custom_service_account` is true; * any runtime is specified via `
        # ResourceRuntimeSpec` on creation time, for example, Ray The users must have `
        # iam.serviceAccounts.actAs` permission on this service account and then the
        # specified runtime containers will run as it. Do not set this field if you want
        # to submit jobs using custom service account to this PersistentResource after
        # creation, but only specify the `service_account` inside the job.
        # Corresponds to the JSON property `serviceAccount`
        # @return [String]
        attr_accessor :service_account
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @enable_custom_service_account = args[:enable_custom_service_account] if args.key?(:enable_custom_service_account)
          @service_account = args[:service_account] if args.key?(:service_account)
        end
      end
      
      # The SharePointSources to pass to ImportRagFiles.
      class GoogleCloudAiplatformV1SharePointSources
        include Google::Apis::Core::Hashable
      
        # The SharePoint sources.
        # Corresponds to the JSON property `sharePointSources`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SharePointSourcesSharePointSource>]
        attr_accessor :share_point_sources
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @share_point_sources = args[:share_point_sources] if args.key?(:share_point_sources)
        end
      end
      
      # An individual SharePointSource.
      class GoogleCloudAiplatformV1SharePointSourcesSharePointSource
        include Google::Apis::Core::Hashable
      
        # The Application ID for the app registered in Microsoft Azure Portal. The
        # application must also be configured with MS Graph permissions "Files.ReadAll",
        # "Sites.ReadAll" and BrowserSiteLists.Read.All.
        # Corresponds to the JSON property `clientId`
        # @return [String]
        attr_accessor :client_id
      
        # The API secret.
        # Corresponds to the JSON property `clientSecret`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ApiAuthApiKeyConfig]
        attr_accessor :client_secret
      
        # The ID of the drive to download from.
        # Corresponds to the JSON property `driveId`
        # @return [String]
        attr_accessor :drive_id
      
        # The name of the drive to download from.
        # Corresponds to the JSON property `driveName`
        # @return [String]
        attr_accessor :drive_name
      
        # Output only. The SharePoint file id. Output only.
        # Corresponds to the JSON property `fileId`
        # @return [String]
        attr_accessor :file_id
      
        # The ID of the SharePoint folder to download from.
        # Corresponds to the JSON property `sharepointFolderId`
        # @return [String]
        attr_accessor :sharepoint_folder_id
      
        # The path of the SharePoint folder to download from.
        # Corresponds to the JSON property `sharepointFolderPath`
        # @return [String]
        attr_accessor :sharepoint_folder_path
      
        # The name of the SharePoint site to download from. This can be the site name or
        # the site id.
        # Corresponds to the JSON property `sharepointSiteName`
        # @return [String]
        attr_accessor :sharepoint_site_name
      
        # Unique identifier of the Azure Active Directory Instance.
        # Corresponds to the JSON property `tenantId`
        # @return [String]
        attr_accessor :tenant_id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @client_id = args[:client_id] if args.key?(:client_id)
          @client_secret = args[:client_secret] if args.key?(:client_secret)
          @drive_id = args[:drive_id] if args.key?(:drive_id)
          @drive_name = args[:drive_name] if args.key?(:drive_name)
          @file_id = args[:file_id] if args.key?(:file_id)
          @sharepoint_folder_id = args[:sharepoint_folder_id] if args.key?(:sharepoint_folder_id)
          @sharepoint_folder_path = args[:sharepoint_folder_path] if args.key?(:sharepoint_folder_path)
          @sharepoint_site_name = args[:sharepoint_site_name] if args.key?(:sharepoint_site_name)
          @tenant_id = args[:tenant_id] if args.key?(:tenant_id)
        end
      end
      
      # A set of Shielded Instance options. See [Images using supported Shielded VM
      # features](https://cloud.google.com/compute/docs/instances/modifying-shielded-
      # vm).
      class GoogleCloudAiplatformV1ShieldedVmConfig
        include Google::Apis::Core::Hashable
      
        # Defines whether the instance has [Secure Boot](https://cloud.google.com/
        # compute/shielded-vm/docs/shielded-vm#secure-boot) enabled. Secure Boot helps
        # ensure that the system only runs authentic software by verifying the digital
        # signature of all boot components, and halting the boot process if signature
        # verification fails.
        # Corresponds to the JSON property `enableSecureBoot`
        # @return [Boolean]
        attr_accessor :enable_secure_boot
        alias_method :enable_secure_boot?, :enable_secure_boot
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @enable_secure_boot = args[:enable_secure_boot] if args.key?(:enable_secure_boot)
        end
      end
      
      # The Slack source for the ImportRagFilesRequest.
      class GoogleCloudAiplatformV1SlackSource
        include Google::Apis::Core::Hashable
      
        # Required. The Slack channels.
        # Corresponds to the JSON property `channels`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SlackSourceSlackChannels>]
        attr_accessor :channels
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @channels = args[:channels] if args.key?(:channels)
        end
      end
      
      # SlackChannels contains the Slack channels and corresponding access token.
      class GoogleCloudAiplatformV1SlackSourceSlackChannels
        include Google::Apis::Core::Hashable
      
        # The API secret.
        # Corresponds to the JSON property `apiKeyConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ApiAuthApiKeyConfig]
        attr_accessor :api_key_config
      
        # Required. The Slack channel IDs.
        # Corresponds to the JSON property `channels`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SlackSourceSlackChannelsSlackChannel>]
        attr_accessor :channels
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @api_key_config = args[:api_key_config] if args.key?(:api_key_config)
          @channels = args[:channels] if args.key?(:channels)
        end
      end
      
      # SlackChannel contains the Slack channel ID and the time range to import.
      class GoogleCloudAiplatformV1SlackSourceSlackChannelsSlackChannel
        include Google::Apis::Core::Hashable
      
        # Required. The Slack channel ID.
        # Corresponds to the JSON property `channelId`
        # @return [String]
        attr_accessor :channel_id
      
        # Optional. The ending timestamp for messages to import.
        # Corresponds to the JSON property `endTime`
        # @return [String]
        attr_accessor :end_time
      
        # Optional. The starting timestamp for messages to import.
        # Corresponds to the JSON property `startTime`
        # @return [String]
        attr_accessor :start_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @channel_id = args[:channel_id] if args.key?(:channel_id)
          @end_time = args[:end_time] if args.key?(:end_time)
          @start_time = args[:start_time] if args.key?(:start_time)
        end
      end
      
      # Config for SmoothGrad approximation of gradients. When enabled, the gradients
      # are approximated by averaging the gradients from noisy samples in the vicinity
      # of the inputs. Adding noise can help improve the computed gradients. Refer to
      # this paper for more details: https://arxiv.org/pdf/1706.03825.pdf
      class GoogleCloudAiplatformV1SmoothGradConfig
        include Google::Apis::Core::Hashable
      
        # Noise sigma by features. Noise sigma represents the standard deviation of the
        # gaussian kernel that will be used to add noise to interpolated inputs prior to
        # computing gradients.
        # Corresponds to the JSON property `featureNoiseSigma`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureNoiseSigma]
        attr_accessor :feature_noise_sigma
      
        # This is a single float value and will be used to add noise to all the features.
        # Use this field when all features are normalized to have the same distribution:
        # scale to range [0, 1], [-1, 1] or z-scoring, where features are normalized to
        # have 0-mean and 1-variance. Learn more about [normalization](https://
        # developers.google.com/machine-learning/data-prep/transform/normalization). For
        # best results the recommended value is about 10% - 20% of the standard
        # deviation of the input feature. Refer to section 3.2 of the SmoothGrad paper:
        # https://arxiv.org/pdf/1706.03825.pdf. Defaults to 0.1. If the distribution is
        # different per feature, set feature_noise_sigma instead for each feature.
        # Corresponds to the JSON property `noiseSigma`
        # @return [Float]
        attr_accessor :noise_sigma
      
        # The number of gradient samples to use for approximation. The higher this
        # number, the more accurate the gradient is, but the runtime complexity
        # increases by this factor as well. Valid range of its value is [1, 50].
        # Defaults to 3.
        # Corresponds to the JSON property `noisySampleCount`
        # @return [Fixnum]
        attr_accessor :noisy_sample_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @feature_noise_sigma = args[:feature_noise_sigma] if args.key?(:feature_noise_sigma)
          @noise_sigma = args[:noise_sigma] if args.key?(:noise_sigma)
          @noisy_sample_count = args[:noisy_sample_count] if args.key?(:noisy_sample_count)
        end
      end
      
      # SpecialistPool represents customers' own workforce to work on their data
      # labeling jobs. It includes a group of specialist managers and workers.
      # Managers are responsible for managing the workers in this pool as well as
      # customers' data labeling jobs associated with this pool. Customers create
      # specialist pool as well as start data labeling jobs on Cloud, managers and
      # workers handle the jobs using CrowdCompute console.
      class GoogleCloudAiplatformV1SpecialistPool
        include Google::Apis::Core::Hashable
      
        # Required. The user-defined name of the SpecialistPool. The name can be up to
        # 128 characters long and can consist of any UTF-8 characters. This field should
        # be unique on project-level.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Required. The resource name of the SpecialistPool.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Output only. The resource name of the pending data labeling jobs.
        # Corresponds to the JSON property `pendingDataLabelingJobs`
        # @return [Array<String>]
        attr_accessor :pending_data_labeling_jobs
      
        # The email addresses of the managers in the SpecialistPool.
        # Corresponds to the JSON property `specialistManagerEmails`
        # @return [Array<String>]
        attr_accessor :specialist_manager_emails
      
        # Output only. The number of managers in this SpecialistPool.
        # Corresponds to the JSON property `specialistManagersCount`
        # @return [Fixnum]
        attr_accessor :specialist_managers_count
      
        # The email addresses of workers in the SpecialistPool.
        # Corresponds to the JSON property `specialistWorkerEmails`
        # @return [Array<String>]
        attr_accessor :specialist_worker_emails
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @display_name = args[:display_name] if args.key?(:display_name)
          @name = args[:name] if args.key?(:name)
          @pending_data_labeling_jobs = args[:pending_data_labeling_jobs] if args.key?(:pending_data_labeling_jobs)
          @specialist_manager_emails = args[:specialist_manager_emails] if args.key?(:specialist_manager_emails)
          @specialist_managers_count = args[:specialist_managers_count] if args.key?(:specialist_managers_count)
          @specialist_worker_emails = args[:specialist_worker_emails] if args.key?(:specialist_worker_emails)
        end
      end
      
      # Configuration for Speculative Decoding.
      class GoogleCloudAiplatformV1SpeculativeDecodingSpec
        include Google::Apis::Core::Hashable
      
        # Draft model speculation works by using the smaller model to generate candidate
        # tokens for speculative decoding.
        # Corresponds to the JSON property `draftModelSpeculation`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SpeculativeDecodingSpecDraftModelSpeculation]
        attr_accessor :draft_model_speculation
      
        # N-Gram speculation works by trying to find matching tokens in the previous
        # prompt sequence and use those as speculation for generating new tokens.
        # Corresponds to the JSON property `ngramSpeculation`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SpeculativeDecodingSpecNgramSpeculation]
        attr_accessor :ngram_speculation
      
        # The number of speculative tokens to generate at each step.
        # Corresponds to the JSON property `speculativeTokenCount`
        # @return [Fixnum]
        attr_accessor :speculative_token_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @draft_model_speculation = args[:draft_model_speculation] if args.key?(:draft_model_speculation)
          @ngram_speculation = args[:ngram_speculation] if args.key?(:ngram_speculation)
          @speculative_token_count = args[:speculative_token_count] if args.key?(:speculative_token_count)
        end
      end
      
      # Draft model speculation works by using the smaller model to generate candidate
      # tokens for speculative decoding.
      class GoogleCloudAiplatformV1SpeculativeDecodingSpecDraftModelSpeculation
        include Google::Apis::Core::Hashable
      
        # Required. The resource name of the draft model.
        # Corresponds to the JSON property `draftModel`
        # @return [String]
        attr_accessor :draft_model
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @draft_model = args[:draft_model] if args.key?(:draft_model)
        end
      end
      
      # N-Gram speculation works by trying to find matching tokens in the previous
      # prompt sequence and use those as speculation for generating new tokens.
      class GoogleCloudAiplatformV1SpeculativeDecodingSpecNgramSpeculation
        include Google::Apis::Core::Hashable
      
        # The number of last N input tokens used as ngram to search/match against the
        # previous prompt sequence. This is equal to the N in N-Gram. The default value
        # is 3 if not specified.
        # Corresponds to the JSON property `ngramSize`
        # @return [Fixnum]
        attr_accessor :ngram_size
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @ngram_size = args[:ngram_size] if args.key?(:ngram_size)
        end
      end
      
      # The speech generation config.
      class GoogleCloudAiplatformV1SpeechConfig
        include Google::Apis::Core::Hashable
      
        # Optional. Language code (ISO 639. e.g. en-US) for the speech synthesization.
        # Corresponds to the JSON property `languageCode`
        # @return [String]
        attr_accessor :language_code
      
        # The configuration for the voice to use.
        # Corresponds to the JSON property `voiceConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1VoiceConfig]
        attr_accessor :voice_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @language_code = args[:language_code] if args.key?(:language_code)
          @voice_config = args[:voice_config] if args.key?(:voice_config)
        end
      end
      
      # Metadata information for NotebookService.StartNotebookRuntime.
      class GoogleCloudAiplatformV1StartNotebookRuntimeOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        # A human-readable message that shows the intermediate progress details of
        # NotebookRuntime.
        # Corresponds to the JSON property `progressMessage`
        # @return [String]
        attr_accessor :progress_message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
          @progress_message = args[:progress_message] if args.key?(:progress_message)
        end
      end
      
      # Request message for NotebookService.StartNotebookRuntime.
      class GoogleCloudAiplatformV1StartNotebookRuntimeRequest
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Request message for NotebookService.StopNotebookRuntime.
      class GoogleCloudAiplatformV1StopNotebookRuntimeRequest
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Request message for VizierService.StopTrial.
      class GoogleCloudAiplatformV1StopTrialRequest
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Assigns input data to the training, validation, and test sets so that the
      # distribution of values found in the categorical column (as specified by the `
      # key` field) is mirrored within each split. The fraction values determine the
      # relative sizes of the splits. For example, if the specified column has three
      # values, with 50% of the rows having value "A", 25% value "B", and 25% value "C"
      # , and the split fractions are specified as 80/10/10, then the training set
      # will constitute 80% of the training data, with about 50% of the training set
      # rows having the value "A" for the specified column, about 25% having the value
      # "B", and about 25% having the value "C". Only the top 500 occurring values are
      # used; any values not in the top 500 values are randomly assigned to a split.
      # If less than three rows contain a specific value, those rows are randomly
      # assigned. Supported only for tabular Datasets.
      class GoogleCloudAiplatformV1StratifiedSplit
        include Google::Apis::Core::Hashable
      
        # Required. The key is a name of one of the Dataset's data columns. The key
        # provided must be for a categorical column.
        # Corresponds to the JSON property `key`
        # @return [String]
        attr_accessor :key
      
        # The fraction of the input data that is to be used to evaluate the Model.
        # Corresponds to the JSON property `testFraction`
        # @return [Float]
        attr_accessor :test_fraction
      
        # The fraction of the input data that is to be used to train the Model.
        # Corresponds to the JSON property `trainingFraction`
        # @return [Float]
        attr_accessor :training_fraction
      
        # The fraction of the input data that is to be used to validate the Model.
        # Corresponds to the JSON property `validationFraction`
        # @return [Float]
        attr_accessor :validation_fraction
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @key = args[:key] if args.key?(:key)
          @test_fraction = args[:test_fraction] if args.key?(:test_fraction)
          @training_fraction = args[:training_fraction] if args.key?(:training_fraction)
          @validation_fraction = args[:validation_fraction] if args.key?(:validation_fraction)
        end
      end
      
      # Request message for ReasoningEngineExecutionService.StreamQuery.
      class GoogleCloudAiplatformV1StreamQueryReasoningEngineRequest
        include Google::Apis::Core::Hashable
      
        # Optional. Class method to be used for the stream query. It is optional and
        # defaults to "stream_query" if unspecified.
        # Corresponds to the JSON property `classMethod`
        # @return [String]
        attr_accessor :class_method
      
        # Optional. Input content provided by users in JSON object format. Examples
        # include text query, function calling parameters, media bytes, etc.
        # Corresponds to the JSON property `input`
        # @return [Hash<String,Object>]
        attr_accessor :input
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @class_method = args[:class_method] if args.key?(:class_method)
          @input = args[:input] if args.key?(:input)
        end
      end
      
      # Request message for PredictionService.StreamRawPredict.
      class GoogleCloudAiplatformV1StreamRawPredictRequest
        include Google::Apis::Core::Hashable
      
        # Message that represents an arbitrary HTTP body. It should only be used for
        # payload formats that can't be represented as JSON, such as raw binary or an
        # HTML page. This message can be used both in streaming and non-streaming API
        # methods in the request as well as the response. It can be used as a top-level
        # request field, which is convenient if one wants to extract parameters from
        # either the URL or HTTP template into the request fields and also want access
        # to the raw HTTP body. Example: message GetResourceRequest ` // A unique
        # request id. string request_id = 1; // The raw HTTP body is bound to this field.
        # google.api.HttpBody http_body = 2; ` service ResourceService ` rpc
        # GetResource(GetResourceRequest) returns (google.api.HttpBody); rpc
        # UpdateResource(google.api.HttpBody) returns (google.protobuf.Empty); ` Example
        # with streaming methods: service CaldavService ` rpc GetCalendar(stream google.
        # api.HttpBody) returns (stream google.api.HttpBody); rpc UpdateCalendar(stream
        # google.api.HttpBody) returns (stream google.api.HttpBody); ` Use of this type
        # only changes how the request and response bodies are handled, all other
        # features will continue to work unchanged.
        # Corresponds to the JSON property `httpBody`
        # @return [Google::Apis::AiplatformV1::GoogleApiHttpBody]
        attr_accessor :http_body
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @http_body = args[:http_body] if args.key?(:http_body)
        end
      end
      
      # Request message for PredictionService.StreamingPredict. The first message must
      # contain endpoint field and optionally input. The subsequent messages must
      # contain input.
      class GoogleCloudAiplatformV1StreamingPredictRequest
        include Google::Apis::Core::Hashable
      
        # The prediction input.
        # Corresponds to the JSON property `inputs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Tensor>]
        attr_accessor :inputs
      
        # A tensor value type.
        # Corresponds to the JSON property `parameters`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Tensor]
        attr_accessor :parameters
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @inputs = args[:inputs] if args.key?(:inputs)
          @parameters = args[:parameters] if args.key?(:parameters)
        end
      end
      
      # Response message for PredictionService.StreamingPredict.
      class GoogleCloudAiplatformV1StreamingPredictResponse
        include Google::Apis::Core::Hashable
      
        # The prediction output.
        # Corresponds to the JSON property `outputs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Tensor>]
        attr_accessor :outputs
      
        # A tensor value type.
        # Corresponds to the JSON property `parameters`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Tensor]
        attr_accessor :parameters
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @outputs = args[:outputs] if args.key?(:outputs)
          @parameters = args[:parameters] if args.key?(:parameters)
        end
      end
      
      # Request message for FeaturestoreOnlineServingService.
      # StreamingReadFeatureValues.
      class GoogleCloudAiplatformV1StreamingReadFeatureValuesRequest
        include Google::Apis::Core::Hashable
      
        # Required. IDs of entities to read Feature values of. The maximum number of IDs
        # is 100. For example, for a machine learning model predicting user clicks on a
        # website, an entity ID could be `user_123`.
        # Corresponds to the JSON property `entityIds`
        # @return [Array<String>]
        attr_accessor :entity_ids
      
        # Selector for Features of an EntityType.
        # Corresponds to the JSON property `featureSelector`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureSelector]
        attr_accessor :feature_selector
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entity_ids = args[:entity_ids] if args.key?(:entity_ids)
          @feature_selector = args[:feature_selector] if args.key?(:feature_selector)
        end
      end
      
      # A list of string values.
      class GoogleCloudAiplatformV1StringArray
        include Google::Apis::Core::Hashable
      
        # A list of string values.
        # Corresponds to the JSON property `values`
        # @return [Array<String>]
        attr_accessor :values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @values = args[:values] if args.key?(:values)
        end
      end
      
      # One field of a Struct (or object) type feature value.
      class GoogleCloudAiplatformV1StructFieldValue
        include Google::Apis::Core::Hashable
      
        # Name of the field in the struct feature.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Value for a feature.
        # Corresponds to the JSON property `value`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureValue]
        attr_accessor :value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @name = args[:name] if args.key?(:name)
          @value = args[:value] if args.key?(:value)
        end
      end
      
      # Struct (or object) type feature value.
      class GoogleCloudAiplatformV1StructValue
        include Google::Apis::Core::Hashable
      
        # A list of field values.
        # Corresponds to the JSON property `values`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1StructFieldValue>]
        attr_accessor :values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @values = args[:values] if args.key?(:values)
        end
      end
      
      # A message representing a Study.
      class GoogleCloudAiplatformV1Study
        include Google::Apis::Core::Hashable
      
        # Output only. Time at which the study was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Required. Describes the Study, default value is empty string.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Output only. A human readable reason why the Study is inactive. This should be
        # empty if a study is ACTIVE or COMPLETED.
        # Corresponds to the JSON property `inactiveReason`
        # @return [String]
        attr_accessor :inactive_reason
      
        # Output only. The name of a study. The study's globally unique identifier.
        # Format: `projects/`project`/locations/`location`/studies/`study``
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Output only. The detailed state of a Study.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        # Represents specification of a Study.
        # Corresponds to the JSON property `studySpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1StudySpec]
        attr_accessor :study_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @display_name = args[:display_name] if args.key?(:display_name)
          @inactive_reason = args[:inactive_reason] if args.key?(:inactive_reason)
          @name = args[:name] if args.key?(:name)
          @state = args[:state] if args.key?(:state)
          @study_spec = args[:study_spec] if args.key?(:study_spec)
        end
      end
      
      # Represents specification of a Study.
      class GoogleCloudAiplatformV1StudySpec
        include Google::Apis::Core::Hashable
      
        # The search algorithm specified for the Study.
        # Corresponds to the JSON property `algorithm`
        # @return [String]
        attr_accessor :algorithm
      
        # Configuration for ConvexAutomatedStoppingSpec. When there are enough completed
        # trials (configured by min_measurement_count), for pending trials with enough
        # measurements and steps, the policy first computes an overestimate of the
        # objective value at max_num_steps according to the slope of the incomplete
        # objective value curve. No prediction can be made if the curve is completely
        # flat. If the overestimation is worse than the best objective value of the
        # completed trials, this pending trial will be early-stopped, but a last
        # measurement will be added to the pending trial with max_num_steps and
        # predicted objective value from the autoregression model.
        # Corresponds to the JSON property `convexAutomatedStoppingSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1StudySpecConvexAutomatedStoppingSpec]
        attr_accessor :convex_automated_stopping_spec
      
        # The decay curve automated stopping rule builds a Gaussian Process Regressor to
        # predict the final objective value of a Trial based on the already completed
        # Trials and the intermediate measurements of the current Trial. Early stopping
        # is requested for the current Trial if there is very low probability to exceed
        # the optimal value found so far.
        # Corresponds to the JSON property `decayCurveStoppingSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1StudySpecDecayCurveAutomatedStoppingSpec]
        attr_accessor :decay_curve_stopping_spec
      
        # Describe which measurement selection type will be used
        # Corresponds to the JSON property `measurementSelectionType`
        # @return [String]
        attr_accessor :measurement_selection_type
      
        # The median automated stopping rule stops a pending Trial if the Trial's best
        # objective_value is strictly below the median 'performance' of all completed
        # Trials reported up to the Trial's last measurement. Currently, 'performance'
        # refers to the running average of the objective values reported by the Trial in
        # each measurement.
        # Corresponds to the JSON property `medianAutomatedStoppingSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1StudySpecMedianAutomatedStoppingSpec]
        attr_accessor :median_automated_stopping_spec
      
        # Required. Metric specs for the Study.
        # Corresponds to the JSON property `metrics`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1StudySpecMetricSpec>]
        attr_accessor :metrics
      
        # The observation noise level of the study. Currently only supported by the
        # Vertex AI Vizier service. Not supported by HyperparameterTuningJob or
        # TrainingPipeline.
        # Corresponds to the JSON property `observationNoise`
        # @return [String]
        attr_accessor :observation_noise
      
        # Required. The set of parameters to tune.
        # Corresponds to the JSON property `parameters`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1StudySpecParameterSpec>]
        attr_accessor :parameters
      
        # The configuration (stopping conditions) for automated stopping of a Study.
        # Conditions include trial budgets, time budgets, and convergence detection.
        # Corresponds to the JSON property `studyStoppingConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1StudySpecStudyStoppingConfig]
        attr_accessor :study_stopping_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @algorithm = args[:algorithm] if args.key?(:algorithm)
          @convex_automated_stopping_spec = args[:convex_automated_stopping_spec] if args.key?(:convex_automated_stopping_spec)
          @decay_curve_stopping_spec = args[:decay_curve_stopping_spec] if args.key?(:decay_curve_stopping_spec)
          @measurement_selection_type = args[:measurement_selection_type] if args.key?(:measurement_selection_type)
          @median_automated_stopping_spec = args[:median_automated_stopping_spec] if args.key?(:median_automated_stopping_spec)
          @metrics = args[:metrics] if args.key?(:metrics)
          @observation_noise = args[:observation_noise] if args.key?(:observation_noise)
          @parameters = args[:parameters] if args.key?(:parameters)
          @study_stopping_config = args[:study_stopping_config] if args.key?(:study_stopping_config)
        end
      end
      
      # Configuration for ConvexAutomatedStoppingSpec. When there are enough completed
      # trials (configured by min_measurement_count), for pending trials with enough
      # measurements and steps, the policy first computes an overestimate of the
      # objective value at max_num_steps according to the slope of the incomplete
      # objective value curve. No prediction can be made if the curve is completely
      # flat. If the overestimation is worse than the best objective value of the
      # completed trials, this pending trial will be early-stopped, but a last
      # measurement will be added to the pending trial with max_num_steps and
      # predicted objective value from the autoregression model.
      class GoogleCloudAiplatformV1StudySpecConvexAutomatedStoppingSpec
        include Google::Apis::Core::Hashable
      
        # The hyper-parameter name used in the tuning job that stands for learning rate.
        # Leave it blank if learning rate is not in a parameter in tuning. The
        # learning_rate is used to estimate the objective value of the ongoing trial.
        # Corresponds to the JSON property `learningRateParameterName`
        # @return [String]
        attr_accessor :learning_rate_parameter_name
      
        # Steps used in predicting the final objective for early stopped trials. In
        # general, it's set to be the same as the defined steps in training / tuning. If
        # not defined, it will learn it from the completed trials. When use_steps is
        # false, this field is set to the maximum elapsed seconds.
        # Corresponds to the JSON property `maxStepCount`
        # @return [Fixnum]
        attr_accessor :max_step_count
      
        # The minimal number of measurements in a Trial. Early-stopping checks will not
        # trigger if less than min_measurement_count+1 completed trials or pending
        # trials with less than min_measurement_count measurements. If not defined, the
        # default value is 5.
        # Corresponds to the JSON property `minMeasurementCount`
        # @return [Fixnum]
        attr_accessor :min_measurement_count
      
        # Minimum number of steps for a trial to complete. Trials which do not have a
        # measurement with step_count > min_step_count won't be considered for early
        # stopping. It's ok to set it to 0, and a trial can be early stopped at any
        # stage. By default, min_step_count is set to be one-tenth of the max_step_count.
        # When use_elapsed_duration is true, this field is set to the minimum elapsed
        # seconds.
        # Corresponds to the JSON property `minStepCount`
        # @return [Fixnum]
        attr_accessor :min_step_count
      
        # ConvexAutomatedStoppingSpec by default only updates the trials that needs to
        # be early stopped using a newly trained auto-regressive model. When this flag
        # is set to True, all stopped trials from the beginning are potentially updated
        # in terms of their `final_measurement`. Also, note that the training logic of
        # autoregressive models is different in this case. Enabling this option has
        # shown better results and this may be the default option in the future.
        # Corresponds to the JSON property `updateAllStoppedTrials`
        # @return [Boolean]
        attr_accessor :update_all_stopped_trials
        alias_method :update_all_stopped_trials?, :update_all_stopped_trials
      
        # This bool determines whether or not the rule is applied based on elapsed_secs
        # or steps. If use_elapsed_duration==false, the early stopping decision is made
        # according to the predicted objective values according to the target steps. If
        # use_elapsed_duration==true, elapsed_secs is used instead of steps. Also, in
        # this case, the parameters max_num_steps and min_num_steps are overloaded to
        # contain max_elapsed_seconds and min_elapsed_seconds.
        # Corresponds to the JSON property `useElapsedDuration`
        # @return [Boolean]
        attr_accessor :use_elapsed_duration
        alias_method :use_elapsed_duration?, :use_elapsed_duration
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @learning_rate_parameter_name = args[:learning_rate_parameter_name] if args.key?(:learning_rate_parameter_name)
          @max_step_count = args[:max_step_count] if args.key?(:max_step_count)
          @min_measurement_count = args[:min_measurement_count] if args.key?(:min_measurement_count)
          @min_step_count = args[:min_step_count] if args.key?(:min_step_count)
          @update_all_stopped_trials = args[:update_all_stopped_trials] if args.key?(:update_all_stopped_trials)
          @use_elapsed_duration = args[:use_elapsed_duration] if args.key?(:use_elapsed_duration)
        end
      end
      
      # The decay curve automated stopping rule builds a Gaussian Process Regressor to
      # predict the final objective value of a Trial based on the already completed
      # Trials and the intermediate measurements of the current Trial. Early stopping
      # is requested for the current Trial if there is very low probability to exceed
      # the optimal value found so far.
      class GoogleCloudAiplatformV1StudySpecDecayCurveAutomatedStoppingSpec
        include Google::Apis::Core::Hashable
      
        # True if Measurement.elapsed_duration is used as the x-axis of each Trials
        # Decay Curve. Otherwise, Measurement.step_count will be used as the x-axis.
        # Corresponds to the JSON property `useElapsedDuration`
        # @return [Boolean]
        attr_accessor :use_elapsed_duration
        alias_method :use_elapsed_duration?, :use_elapsed_duration
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @use_elapsed_duration = args[:use_elapsed_duration] if args.key?(:use_elapsed_duration)
        end
      end
      
      # The median automated stopping rule stops a pending Trial if the Trial's best
      # objective_value is strictly below the median 'performance' of all completed
      # Trials reported up to the Trial's last measurement. Currently, 'performance'
      # refers to the running average of the objective values reported by the Trial in
      # each measurement.
      class GoogleCloudAiplatformV1StudySpecMedianAutomatedStoppingSpec
        include Google::Apis::Core::Hashable
      
        # True if median automated stopping rule applies on Measurement.elapsed_duration.
        # It means that elapsed_duration field of latest measurement of current Trial
        # is used to compute median objective value for each completed Trials.
        # Corresponds to the JSON property `useElapsedDuration`
        # @return [Boolean]
        attr_accessor :use_elapsed_duration
        alias_method :use_elapsed_duration?, :use_elapsed_duration
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @use_elapsed_duration = args[:use_elapsed_duration] if args.key?(:use_elapsed_duration)
        end
      end
      
      # Represents a metric to optimize.
      class GoogleCloudAiplatformV1StudySpecMetricSpec
        include Google::Apis::Core::Hashable
      
        # Required. The optimization goal of the metric.
        # Corresponds to the JSON property `goal`
        # @return [String]
        attr_accessor :goal
      
        # Required. The ID of the metric. Must not contain whitespaces and must be
        # unique amongst all MetricSpecs.
        # Corresponds to the JSON property `metricId`
        # @return [String]
        attr_accessor :metric_id
      
        # Used in safe optimization to specify threshold levels and risk tolerance.
        # Corresponds to the JSON property `safetyConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1StudySpecMetricSpecSafetyMetricConfig]
        attr_accessor :safety_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @goal = args[:goal] if args.key?(:goal)
          @metric_id = args[:metric_id] if args.key?(:metric_id)
          @safety_config = args[:safety_config] if args.key?(:safety_config)
        end
      end
      
      # Used in safe optimization to specify threshold levels and risk tolerance.
      class GoogleCloudAiplatformV1StudySpecMetricSpecSafetyMetricConfig
        include Google::Apis::Core::Hashable
      
        # Desired minimum fraction of safe trials (over total number of trials) that
        # should be targeted by the algorithm at any time during the study (best effort).
        # This should be between 0.0 and 1.0 and a value of 0.0 means that there is no
        # minimum and an algorithm proceeds without targeting any specific fraction. A
        # value of 1.0 means that the algorithm attempts to only Suggest safe Trials.
        # Corresponds to the JSON property `desiredMinSafeTrialsFraction`
        # @return [Float]
        attr_accessor :desired_min_safe_trials_fraction
      
        # Safety threshold (boundary value between safe and unsafe). NOTE that if you
        # leave SafetyMetricConfig unset, a default value of 0 will be used.
        # Corresponds to the JSON property `safetyThreshold`
        # @return [Float]
        attr_accessor :safety_threshold
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @desired_min_safe_trials_fraction = args[:desired_min_safe_trials_fraction] if args.key?(:desired_min_safe_trials_fraction)
          @safety_threshold = args[:safety_threshold] if args.key?(:safety_threshold)
        end
      end
      
      # Represents a single parameter to optimize.
      class GoogleCloudAiplatformV1StudySpecParameterSpec
        include Google::Apis::Core::Hashable
      
        # Value specification for a parameter in `CATEGORICAL` type.
        # Corresponds to the JSON property `categoricalValueSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1StudySpecParameterSpecCategoricalValueSpec]
        attr_accessor :categorical_value_spec
      
        # A conditional parameter node is active if the parameter's value matches the
        # conditional node's parent_value_condition. If two items in
        # conditional_parameter_specs have the same name, they must have disjoint
        # parent_value_condition.
        # Corresponds to the JSON property `conditionalParameterSpecs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1StudySpecParameterSpecConditionalParameterSpec>]
        attr_accessor :conditional_parameter_specs
      
        # Value specification for a parameter in `DISCRETE` type.
        # Corresponds to the JSON property `discreteValueSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1StudySpecParameterSpecDiscreteValueSpec]
        attr_accessor :discrete_value_spec
      
        # Value specification for a parameter in `DOUBLE` type.
        # Corresponds to the JSON property `doubleValueSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1StudySpecParameterSpecDoubleValueSpec]
        attr_accessor :double_value_spec
      
        # Value specification for a parameter in `INTEGER` type.
        # Corresponds to the JSON property `integerValueSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1StudySpecParameterSpecIntegerValueSpec]
        attr_accessor :integer_value_spec
      
        # Required. The ID of the parameter. Must not contain whitespaces and must be
        # unique amongst all ParameterSpecs.
        # Corresponds to the JSON property `parameterId`
        # @return [String]
        attr_accessor :parameter_id
      
        # How the parameter should be scaled. Leave unset for `CATEGORICAL` parameters.
        # Corresponds to the JSON property `scaleType`
        # @return [String]
        attr_accessor :scale_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @categorical_value_spec = args[:categorical_value_spec] if args.key?(:categorical_value_spec)
          @conditional_parameter_specs = args[:conditional_parameter_specs] if args.key?(:conditional_parameter_specs)
          @discrete_value_spec = args[:discrete_value_spec] if args.key?(:discrete_value_spec)
          @double_value_spec = args[:double_value_spec] if args.key?(:double_value_spec)
          @integer_value_spec = args[:integer_value_spec] if args.key?(:integer_value_spec)
          @parameter_id = args[:parameter_id] if args.key?(:parameter_id)
          @scale_type = args[:scale_type] if args.key?(:scale_type)
        end
      end
      
      # Value specification for a parameter in `CATEGORICAL` type.
      class GoogleCloudAiplatformV1StudySpecParameterSpecCategoricalValueSpec
        include Google::Apis::Core::Hashable
      
        # A default value for a `CATEGORICAL` parameter that is assumed to be a
        # relatively good starting point. Unset value signals that there is no offered
        # starting point. Currently only supported by the Vertex AI Vizier service. Not
        # supported by HyperparameterTuningJob or TrainingPipeline.
        # Corresponds to the JSON property `defaultValue`
        # @return [String]
        attr_accessor :default_value
      
        # Required. The list of possible categories.
        # Corresponds to the JSON property `values`
        # @return [Array<String>]
        attr_accessor :values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @default_value = args[:default_value] if args.key?(:default_value)
          @values = args[:values] if args.key?(:values)
        end
      end
      
      # Represents a parameter spec with condition from its parent parameter.
      class GoogleCloudAiplatformV1StudySpecParameterSpecConditionalParameterSpec
        include Google::Apis::Core::Hashable
      
        # Represents a single parameter to optimize.
        # Corresponds to the JSON property `parameterSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1StudySpecParameterSpec]
        attr_accessor :parameter_spec
      
        # Represents the spec to match categorical values from parent parameter.
        # Corresponds to the JSON property `parentCategoricalValues`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1StudySpecParameterSpecConditionalParameterSpecCategoricalValueCondition]
        attr_accessor :parent_categorical_values
      
        # Represents the spec to match discrete values from parent parameter.
        # Corresponds to the JSON property `parentDiscreteValues`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1StudySpecParameterSpecConditionalParameterSpecDiscreteValueCondition]
        attr_accessor :parent_discrete_values
      
        # Represents the spec to match integer values from parent parameter.
        # Corresponds to the JSON property `parentIntValues`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1StudySpecParameterSpecConditionalParameterSpecIntValueCondition]
        attr_accessor :parent_int_values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @parameter_spec = args[:parameter_spec] if args.key?(:parameter_spec)
          @parent_categorical_values = args[:parent_categorical_values] if args.key?(:parent_categorical_values)
          @parent_discrete_values = args[:parent_discrete_values] if args.key?(:parent_discrete_values)
          @parent_int_values = args[:parent_int_values] if args.key?(:parent_int_values)
        end
      end
      
      # Represents the spec to match categorical values from parent parameter.
      class GoogleCloudAiplatformV1StudySpecParameterSpecConditionalParameterSpecCategoricalValueCondition
        include Google::Apis::Core::Hashable
      
        # Required. Matches values of the parent parameter of 'CATEGORICAL' type. All
        # values must exist in `categorical_value_spec` of parent parameter.
        # Corresponds to the JSON property `values`
        # @return [Array<String>]
        attr_accessor :values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @values = args[:values] if args.key?(:values)
        end
      end
      
      # Represents the spec to match discrete values from parent parameter.
      class GoogleCloudAiplatformV1StudySpecParameterSpecConditionalParameterSpecDiscreteValueCondition
        include Google::Apis::Core::Hashable
      
        # Required. Matches values of the parent parameter of 'DISCRETE' type. All
        # values must exist in `discrete_value_spec` of parent parameter. The Epsilon of
        # the value matching is 1e-10.
        # Corresponds to the JSON property `values`
        # @return [Array<Float>]
        attr_accessor :values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @values = args[:values] if args.key?(:values)
        end
      end
      
      # Represents the spec to match integer values from parent parameter.
      class GoogleCloudAiplatformV1StudySpecParameterSpecConditionalParameterSpecIntValueCondition
        include Google::Apis::Core::Hashable
      
        # Required. Matches values of the parent parameter of 'INTEGER' type. All values
        # must lie in `integer_value_spec` of parent parameter.
        # Corresponds to the JSON property `values`
        # @return [Array<Fixnum>]
        attr_accessor :values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @values = args[:values] if args.key?(:values)
        end
      end
      
      # Value specification for a parameter in `DISCRETE` type.
      class GoogleCloudAiplatformV1StudySpecParameterSpecDiscreteValueSpec
        include Google::Apis::Core::Hashable
      
        # A default value for a `DISCRETE` parameter that is assumed to be a relatively
        # good starting point. Unset value signals that there is no offered starting
        # point. It automatically rounds to the nearest feasible discrete point.
        # Currently only supported by the Vertex AI Vizier service. Not supported by
        # HyperparameterTuningJob or TrainingPipeline.
        # Corresponds to the JSON property `defaultValue`
        # @return [Float]
        attr_accessor :default_value
      
        # Required. A list of possible values. The list should be in increasing order
        # and at least 1e-10 apart. For instance, this parameter might have possible
        # settings of 1.5, 2.5, and 4.0. This list should not contain more than 1,000
        # values.
        # Corresponds to the JSON property `values`
        # @return [Array<Float>]
        attr_accessor :values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @default_value = args[:default_value] if args.key?(:default_value)
          @values = args[:values] if args.key?(:values)
        end
      end
      
      # Value specification for a parameter in `DOUBLE` type.
      class GoogleCloudAiplatformV1StudySpecParameterSpecDoubleValueSpec
        include Google::Apis::Core::Hashable
      
        # A default value for a `DOUBLE` parameter that is assumed to be a relatively
        # good starting point. Unset value signals that there is no offered starting
        # point. Currently only supported by the Vertex AI Vizier service. Not supported
        # by HyperparameterTuningJob or TrainingPipeline.
        # Corresponds to the JSON property `defaultValue`
        # @return [Float]
        attr_accessor :default_value
      
        # Required. Inclusive maximum value of the parameter.
        # Corresponds to the JSON property `maxValue`
        # @return [Float]
        attr_accessor :max_value
      
        # Required. Inclusive minimum value of the parameter.
        # Corresponds to the JSON property `minValue`
        # @return [Float]
        attr_accessor :min_value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @default_value = args[:default_value] if args.key?(:default_value)
          @max_value = args[:max_value] if args.key?(:max_value)
          @min_value = args[:min_value] if args.key?(:min_value)
        end
      end
      
      # Value specification for a parameter in `INTEGER` type.
      class GoogleCloudAiplatformV1StudySpecParameterSpecIntegerValueSpec
        include Google::Apis::Core::Hashable
      
        # A default value for an `INTEGER` parameter that is assumed to be a relatively
        # good starting point. Unset value signals that there is no offered starting
        # point. Currently only supported by the Vertex AI Vizier service. Not supported
        # by HyperparameterTuningJob or TrainingPipeline.
        # Corresponds to the JSON property `defaultValue`
        # @return [Fixnum]
        attr_accessor :default_value
      
        # Required. Inclusive maximum value of the parameter.
        # Corresponds to the JSON property `maxValue`
        # @return [Fixnum]
        attr_accessor :max_value
      
        # Required. Inclusive minimum value of the parameter.
        # Corresponds to the JSON property `minValue`
        # @return [Fixnum]
        attr_accessor :min_value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @default_value = args[:default_value] if args.key?(:default_value)
          @max_value = args[:max_value] if args.key?(:max_value)
          @min_value = args[:min_value] if args.key?(:min_value)
        end
      end
      
      # The configuration (stopping conditions) for automated stopping of a Study.
      # Conditions include trial budgets, time budgets, and convergence detection.
      class GoogleCloudAiplatformV1StudySpecStudyStoppingConfig
        include Google::Apis::Core::Hashable
      
        # If the objective value has not improved for this much time, stop the study.
        # WARNING: Effective only for single-objective studies.
        # Corresponds to the JSON property `maxDurationNoProgress`
        # @return [String]
        attr_accessor :max_duration_no_progress
      
        # If there are more than this many trials, stop the study.
        # Corresponds to the JSON property `maxNumTrials`
        # @return [Fixnum]
        attr_accessor :max_num_trials
      
        # If the objective value has not improved for this many consecutive trials, stop
        # the study. WARNING: Effective only for single-objective studies.
        # Corresponds to the JSON property `maxNumTrialsNoProgress`
        # @return [Fixnum]
        attr_accessor :max_num_trials_no_progress
      
        # Time-based Constraint for Study
        # Corresponds to the JSON property `maximumRuntimeConstraint`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1StudyTimeConstraint]
        attr_accessor :maximum_runtime_constraint
      
        # If there are fewer than this many COMPLETED trials, do not stop the study.
        # Corresponds to the JSON property `minNumTrials`
        # @return [Fixnum]
        attr_accessor :min_num_trials
      
        # Time-based Constraint for Study
        # Corresponds to the JSON property `minimumRuntimeConstraint`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1StudyTimeConstraint]
        attr_accessor :minimum_runtime_constraint
      
        # If true, a Study enters STOPPING_ASAP whenever it would normally enters
        # STOPPING state. The bottom line is: set to true if you want to interrupt on-
        # going evaluations of Trials as soon as the study stopping condition is met. (
        # Please see Study.State documentation for the source of truth).
        # Corresponds to the JSON property `shouldStopAsap`
        # @return [Boolean]
        attr_accessor :should_stop_asap
        alias_method :should_stop_asap?, :should_stop_asap
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @max_duration_no_progress = args[:max_duration_no_progress] if args.key?(:max_duration_no_progress)
          @max_num_trials = args[:max_num_trials] if args.key?(:max_num_trials)
          @max_num_trials_no_progress = args[:max_num_trials_no_progress] if args.key?(:max_num_trials_no_progress)
          @maximum_runtime_constraint = args[:maximum_runtime_constraint] if args.key?(:maximum_runtime_constraint)
          @min_num_trials = args[:min_num_trials] if args.key?(:min_num_trials)
          @minimum_runtime_constraint = args[:minimum_runtime_constraint] if args.key?(:minimum_runtime_constraint)
          @should_stop_asap = args[:should_stop_asap] if args.key?(:should_stop_asap)
        end
      end
      
      # Time-based Constraint for Study
      class GoogleCloudAiplatformV1StudyTimeConstraint
        include Google::Apis::Core::Hashable
      
        # Compares the wallclock time to this time. Must use UTC timezone.
        # Corresponds to the JSON property `endTime`
        # @return [String]
        attr_accessor :end_time
      
        # Counts the wallclock time passed since the creation of this Study.
        # Corresponds to the JSON property `maxDuration`
        # @return [String]
        attr_accessor :max_duration
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @end_time = args[:end_time] if args.key?(:end_time)
          @max_duration = args[:max_duration] if args.key?(:max_duration)
        end
      end
      
      # Details of operations that perform Trials suggestion.
      class GoogleCloudAiplatformV1SuggestTrialsMetadata
        include Google::Apis::Core::Hashable
      
        # The identifier of the client that is requesting the suggestion. If multiple
        # SuggestTrialsRequests have the same `client_id`, the service will return the
        # identical suggested Trial if the Trial is pending, and provide a new Trial if
        # the last suggested Trial was completed.
        # Corresponds to the JSON property `clientId`
        # @return [String]
        attr_accessor :client_id
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @client_id = args[:client_id] if args.key?(:client_id)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Request message for VizierService.SuggestTrials.
      class GoogleCloudAiplatformV1SuggestTrialsRequest
        include Google::Apis::Core::Hashable
      
        # Required. The identifier of the client that is requesting the suggestion. If
        # multiple SuggestTrialsRequests have the same `client_id`, the service will
        # return the identical suggested Trial if the Trial is pending, and provide a
        # new Trial if the last suggested Trial was completed.
        # Corresponds to the JSON property `clientId`
        # @return [String]
        attr_accessor :client_id
      
        # Optional. This allows you to specify the "context" for a Trial; a context is a
        # slice (a subspace) of the search space. Typical uses for contexts: 1) You are
        # using Vizier to tune a server for best performance, but there's a strong
        # weekly cycle. The context specifies the day-of-week. This allows Tuesday to
        # generalize from Wednesday without assuming that everything is identical. 2)
        # Imagine you're optimizing some medical treatment for people. As they walk in
        # the door, you know certain facts about them (e.g. sex, weight, height, blood-
        # pressure). Put that information in the context, and Vizier will adapt its
        # suggestions to the patient. 3) You want to do a fair A/B test efficiently.
        # Specify the "A" and "B" conditions as contexts, and Vizier will generalize
        # between "A" and "B" conditions. If they are similar, this will allow Vizier to
        # converge to the optimum faster than if "A" and "B" were separate Studies. NOTE:
        # You can also enter contexts as REQUESTED Trials, e.g. via the CreateTrial()
        # RPC; that's the asynchronous option where you don't need a close association
        # between contexts and suggestions. NOTE: All the Parameters you set in a
        # context MUST be defined in the Study. NOTE: You must supply 0 or $
        # suggestion_count contexts. If you don't supply any contexts, Vizier will make
        # suggestions from the full search space specified in the StudySpec; if you
        # supply a full set of context, each suggestion will match the corresponding
        # context. NOTE: A Context with no features set matches anything, and allows
        # suggestions from the full search space. NOTE: Contexts MUST lie within the
        # search space specified in the StudySpec. It's an error if they don't. NOTE:
        # Contexts preferentially match ACTIVE then REQUESTED trials before new
        # suggestions are generated. NOTE: Generation of suggestions involves a match
        # between a Context and (optionally) a REQUESTED trial; if that match is not
        # fully specified, a suggestion will be geneated in the merged subspace.
        # Corresponds to the JSON property `contexts`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrialContext>]
        attr_accessor :contexts
      
        # Required. The number of suggestions requested. It must be positive.
        # Corresponds to the JSON property `suggestionCount`
        # @return [Fixnum]
        attr_accessor :suggestion_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @client_id = args[:client_id] if args.key?(:client_id)
          @contexts = args[:contexts] if args.key?(:contexts)
          @suggestion_count = args[:suggestion_count] if args.key?(:suggestion_count)
        end
      end
      
      # Response message for VizierService.SuggestTrials.
      class GoogleCloudAiplatformV1SuggestTrialsResponse
        include Google::Apis::Core::Hashable
      
        # The time at which operation processing completed.
        # Corresponds to the JSON property `endTime`
        # @return [String]
        attr_accessor :end_time
      
        # The time at which the operation was started.
        # Corresponds to the JSON property `startTime`
        # @return [String]
        attr_accessor :start_time
      
        # The state of the Study.
        # Corresponds to the JSON property `studyState`
        # @return [String]
        attr_accessor :study_state
      
        # A list of Trials.
        # Corresponds to the JSON property `trials`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Trial>]
        attr_accessor :trials
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @end_time = args[:end_time] if args.key?(:end_time)
          @start_time = args[:start_time] if args.key?(:start_time)
          @study_state = args[:study_state] if args.key?(:study_state)
          @trials = args[:trials] if args.key?(:trials)
        end
      end
      
      # Input for summarization helpfulness metric.
      class GoogleCloudAiplatformV1SummarizationHelpfulnessInput
        include Google::Apis::Core::Hashable
      
        # Spec for summarization helpfulness instance.
        # Corresponds to the JSON property `instance`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SummarizationHelpfulnessInstance]
        attr_accessor :instance
      
        # Spec for summarization helpfulness score metric.
        # Corresponds to the JSON property `metricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SummarizationHelpfulnessSpec]
        attr_accessor :metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instance = args[:instance] if args.key?(:instance)
          @metric_spec = args[:metric_spec] if args.key?(:metric_spec)
        end
      end
      
      # Spec for summarization helpfulness instance.
      class GoogleCloudAiplatformV1SummarizationHelpfulnessInstance
        include Google::Apis::Core::Hashable
      
        # Required. Text to be summarized.
        # Corresponds to the JSON property `context`
        # @return [String]
        attr_accessor :context
      
        # Optional. Summarization prompt for LLM.
        # Corresponds to the JSON property `instruction`
        # @return [String]
        attr_accessor :instruction
      
        # Required. Output of the evaluated model.
        # Corresponds to the JSON property `prediction`
        # @return [String]
        attr_accessor :prediction
      
        # Optional. Ground truth used to compare against the prediction.
        # Corresponds to the JSON property `reference`
        # @return [String]
        attr_accessor :reference
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @context = args[:context] if args.key?(:context)
          @instruction = args[:instruction] if args.key?(:instruction)
          @prediction = args[:prediction] if args.key?(:prediction)
          @reference = args[:reference] if args.key?(:reference)
        end
      end
      
      # Spec for summarization helpfulness result.
      class GoogleCloudAiplatformV1SummarizationHelpfulnessResult
        include Google::Apis::Core::Hashable
      
        # Output only. Confidence for summarization helpfulness score.
        # Corresponds to the JSON property `confidence`
        # @return [Float]
        attr_accessor :confidence
      
        # Output only. Explanation for summarization helpfulness score.
        # Corresponds to the JSON property `explanation`
        # @return [String]
        attr_accessor :explanation
      
        # Output only. Summarization Helpfulness score.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence = args[:confidence] if args.key?(:confidence)
          @explanation = args[:explanation] if args.key?(:explanation)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # Spec for summarization helpfulness score metric.
      class GoogleCloudAiplatformV1SummarizationHelpfulnessSpec
        include Google::Apis::Core::Hashable
      
        # Optional. Whether to use instance.reference to compute summarization
        # helpfulness.
        # Corresponds to the JSON property `useReference`
        # @return [Boolean]
        attr_accessor :use_reference
        alias_method :use_reference?, :use_reference
      
        # Optional. Which version to use for evaluation.
        # Corresponds to the JSON property `version`
        # @return [Fixnum]
        attr_accessor :version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @use_reference = args[:use_reference] if args.key?(:use_reference)
          @version = args[:version] if args.key?(:version)
        end
      end
      
      # Input for summarization quality metric.
      class GoogleCloudAiplatformV1SummarizationQualityInput
        include Google::Apis::Core::Hashable
      
        # Spec for summarization quality instance.
        # Corresponds to the JSON property `instance`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SummarizationQualityInstance]
        attr_accessor :instance
      
        # Spec for summarization quality score metric.
        # Corresponds to the JSON property `metricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SummarizationQualitySpec]
        attr_accessor :metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instance = args[:instance] if args.key?(:instance)
          @metric_spec = args[:metric_spec] if args.key?(:metric_spec)
        end
      end
      
      # Spec for summarization quality instance.
      class GoogleCloudAiplatformV1SummarizationQualityInstance
        include Google::Apis::Core::Hashable
      
        # Required. Text to be summarized.
        # Corresponds to the JSON property `context`
        # @return [String]
        attr_accessor :context
      
        # Required. Summarization prompt for LLM.
        # Corresponds to the JSON property `instruction`
        # @return [String]
        attr_accessor :instruction
      
        # Required. Output of the evaluated model.
        # Corresponds to the JSON property `prediction`
        # @return [String]
        attr_accessor :prediction
      
        # Optional. Ground truth used to compare against the prediction.
        # Corresponds to the JSON property `reference`
        # @return [String]
        attr_accessor :reference
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @context = args[:context] if args.key?(:context)
          @instruction = args[:instruction] if args.key?(:instruction)
          @prediction = args[:prediction] if args.key?(:prediction)
          @reference = args[:reference] if args.key?(:reference)
        end
      end
      
      # Spec for summarization quality result.
      class GoogleCloudAiplatformV1SummarizationQualityResult
        include Google::Apis::Core::Hashable
      
        # Output only. Confidence for summarization quality score.
        # Corresponds to the JSON property `confidence`
        # @return [Float]
        attr_accessor :confidence
      
        # Output only. Explanation for summarization quality score.
        # Corresponds to the JSON property `explanation`
        # @return [String]
        attr_accessor :explanation
      
        # Output only. Summarization Quality score.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence = args[:confidence] if args.key?(:confidence)
          @explanation = args[:explanation] if args.key?(:explanation)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # Spec for summarization quality score metric.
      class GoogleCloudAiplatformV1SummarizationQualitySpec
        include Google::Apis::Core::Hashable
      
        # Optional. Whether to use instance.reference to compute summarization quality.
        # Corresponds to the JSON property `useReference`
        # @return [Boolean]
        attr_accessor :use_reference
        alias_method :use_reference?, :use_reference
      
        # Optional. Which version to use for evaluation.
        # Corresponds to the JSON property `version`
        # @return [Fixnum]
        attr_accessor :version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @use_reference = args[:use_reference] if args.key?(:use_reference)
          @version = args[:version] if args.key?(:version)
        end
      end
      
      # Input for summarization verbosity metric.
      class GoogleCloudAiplatformV1SummarizationVerbosityInput
        include Google::Apis::Core::Hashable
      
        # Spec for summarization verbosity instance.
        # Corresponds to the JSON property `instance`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SummarizationVerbosityInstance]
        attr_accessor :instance
      
        # Spec for summarization verbosity score metric.
        # Corresponds to the JSON property `metricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SummarizationVerbositySpec]
        attr_accessor :metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instance = args[:instance] if args.key?(:instance)
          @metric_spec = args[:metric_spec] if args.key?(:metric_spec)
        end
      end
      
      # Spec for summarization verbosity instance.
      class GoogleCloudAiplatformV1SummarizationVerbosityInstance
        include Google::Apis::Core::Hashable
      
        # Required. Text to be summarized.
        # Corresponds to the JSON property `context`
        # @return [String]
        attr_accessor :context
      
        # Optional. Summarization prompt for LLM.
        # Corresponds to the JSON property `instruction`
        # @return [String]
        attr_accessor :instruction
      
        # Required. Output of the evaluated model.
        # Corresponds to the JSON property `prediction`
        # @return [String]
        attr_accessor :prediction
      
        # Optional. Ground truth used to compare against the prediction.
        # Corresponds to the JSON property `reference`
        # @return [String]
        attr_accessor :reference
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @context = args[:context] if args.key?(:context)
          @instruction = args[:instruction] if args.key?(:instruction)
          @prediction = args[:prediction] if args.key?(:prediction)
          @reference = args[:reference] if args.key?(:reference)
        end
      end
      
      # Spec for summarization verbosity result.
      class GoogleCloudAiplatformV1SummarizationVerbosityResult
        include Google::Apis::Core::Hashable
      
        # Output only. Confidence for summarization verbosity score.
        # Corresponds to the JSON property `confidence`
        # @return [Float]
        attr_accessor :confidence
      
        # Output only. Explanation for summarization verbosity score.
        # Corresponds to the JSON property `explanation`
        # @return [String]
        attr_accessor :explanation
      
        # Output only. Summarization Verbosity score.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @confidence = args[:confidence] if args.key?(:confidence)
          @explanation = args[:explanation] if args.key?(:explanation)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # Spec for summarization verbosity score metric.
      class GoogleCloudAiplatformV1SummarizationVerbositySpec
        include Google::Apis::Core::Hashable
      
        # Optional. Whether to use instance.reference to compute summarization verbosity.
        # Corresponds to the JSON property `useReference`
        # @return [Boolean]
        attr_accessor :use_reference
        alias_method :use_reference?, :use_reference
      
        # Optional. Which version to use for evaluation.
        # Corresponds to the JSON property `version`
        # @return [Fixnum]
        attr_accessor :version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @use_reference = args[:use_reference] if args.key?(:use_reference)
          @version = args[:version] if args.key?(:version)
        end
      end
      
      # The summary metrics for the evaluation run.
      class GoogleCloudAiplatformV1SummaryMetrics
        include Google::Apis::Core::Hashable
      
        # Optional. The number of items that failed to be evaluated.
        # Corresponds to the JSON property `failedItems`
        # @return [Fixnum]
        attr_accessor :failed_items
      
        # Optional. Map of metric name to metric value.
        # Corresponds to the JSON property `metrics`
        # @return [Hash<String,Object>]
        attr_accessor :metrics
      
        # Optional. The total number of items that were evaluated.
        # Corresponds to the JSON property `totalItems`
        # @return [Fixnum]
        attr_accessor :total_items
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @failed_items = args[:failed_items] if args.key?(:failed_items)
          @metrics = args[:metrics] if args.key?(:metrics)
          @total_items = args[:total_items] if args.key?(:total_items)
        end
      end
      
      # Hyperparameters for SFT.
      class GoogleCloudAiplatformV1SupervisedHyperParameters
        include Google::Apis::Core::Hashable
      
        # Optional. Adapter size for tuning.
        # Corresponds to the JSON property `adapterSize`
        # @return [String]
        attr_accessor :adapter_size
      
        # Optional. Number of complete passes the model makes over the entire training
        # dataset during training.
        # Corresponds to the JSON property `epochCount`
        # @return [Fixnum]
        attr_accessor :epoch_count
      
        # Optional. Multiplier for adjusting the default learning rate. Mutually
        # exclusive with `learning_rate`. This feature is only available for 1P models.
        # Corresponds to the JSON property `learningRateMultiplier`
        # @return [Float]
        attr_accessor :learning_rate_multiplier
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @adapter_size = args[:adapter_size] if args.key?(:adapter_size)
          @epoch_count = args[:epoch_count] if args.key?(:epoch_count)
          @learning_rate_multiplier = args[:learning_rate_multiplier] if args.key?(:learning_rate_multiplier)
        end
      end
      
      # Tuning data statistics for Supervised Tuning.
      class GoogleCloudAiplatformV1SupervisedTuningDataStats
        include Google::Apis::Core::Hashable
      
        # Output only. For each index in `truncated_example_indices`, the user-facing
        # reason why the example was dropped.
        # Corresponds to the JSON property `droppedExampleReasons`
        # @return [Array<String>]
        attr_accessor :dropped_example_reasons
      
        # Output only. Number of billable characters in the tuning dataset.
        # Corresponds to the JSON property `totalBillableCharacterCount`
        # @return [Fixnum]
        attr_accessor :total_billable_character_count
      
        # Output only. Number of billable tokens in the tuning dataset.
        # Corresponds to the JSON property `totalBillableTokenCount`
        # @return [Fixnum]
        attr_accessor :total_billable_token_count
      
        # Output only. The number of examples in the dataset that have been dropped. An
        # example can be dropped for reasons including: too many tokens, contains an
        # invalid image, contains too many images, etc.
        # Corresponds to the JSON property `totalTruncatedExampleCount`
        # @return [Fixnum]
        attr_accessor :total_truncated_example_count
      
        # Output only. Number of tuning characters in the tuning dataset.
        # Corresponds to the JSON property `totalTuningCharacterCount`
        # @return [Fixnum]
        attr_accessor :total_tuning_character_count
      
        # Output only. A partial sample of the indices (starting from 1) of the dropped
        # examples.
        # Corresponds to the JSON property `truncatedExampleIndices`
        # @return [Array<Fixnum>]
        attr_accessor :truncated_example_indices
      
        # Output only. Number of examples in the tuning dataset.
        # Corresponds to the JSON property `tuningDatasetExampleCount`
        # @return [Fixnum]
        attr_accessor :tuning_dataset_example_count
      
        # Output only. Number of tuning steps for this Tuning Job.
        # Corresponds to the JSON property `tuningStepCount`
        # @return [Fixnum]
        attr_accessor :tuning_step_count
      
        # Output only. Sample user messages in the training dataset uri.
        # Corresponds to the JSON property `userDatasetExamples`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Content>]
        attr_accessor :user_dataset_examples
      
        # Dataset distribution for Supervised Tuning.
        # Corresponds to the JSON property `userInputTokenDistribution`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SupervisedTuningDatasetDistribution]
        attr_accessor :user_input_token_distribution
      
        # Dataset distribution for Supervised Tuning.
        # Corresponds to the JSON property `userMessagePerExampleDistribution`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SupervisedTuningDatasetDistribution]
        attr_accessor :user_message_per_example_distribution
      
        # Dataset distribution for Supervised Tuning.
        # Corresponds to the JSON property `userOutputTokenDistribution`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SupervisedTuningDatasetDistribution]
        attr_accessor :user_output_token_distribution
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @dropped_example_reasons = args[:dropped_example_reasons] if args.key?(:dropped_example_reasons)
          @total_billable_character_count = args[:total_billable_character_count] if args.key?(:total_billable_character_count)
          @total_billable_token_count = args[:total_billable_token_count] if args.key?(:total_billable_token_count)
          @total_truncated_example_count = args[:total_truncated_example_count] if args.key?(:total_truncated_example_count)
          @total_tuning_character_count = args[:total_tuning_character_count] if args.key?(:total_tuning_character_count)
          @truncated_example_indices = args[:truncated_example_indices] if args.key?(:truncated_example_indices)
          @tuning_dataset_example_count = args[:tuning_dataset_example_count] if args.key?(:tuning_dataset_example_count)
          @tuning_step_count = args[:tuning_step_count] if args.key?(:tuning_step_count)
          @user_dataset_examples = args[:user_dataset_examples] if args.key?(:user_dataset_examples)
          @user_input_token_distribution = args[:user_input_token_distribution] if args.key?(:user_input_token_distribution)
          @user_message_per_example_distribution = args[:user_message_per_example_distribution] if args.key?(:user_message_per_example_distribution)
          @user_output_token_distribution = args[:user_output_token_distribution] if args.key?(:user_output_token_distribution)
        end
      end
      
      # Dataset distribution for Supervised Tuning.
      class GoogleCloudAiplatformV1SupervisedTuningDatasetDistribution
        include Google::Apis::Core::Hashable
      
        # Output only. Sum of a given population of values that are billable.
        # Corresponds to the JSON property `billableSum`
        # @return [Fixnum]
        attr_accessor :billable_sum
      
        # Output only. Defines the histogram bucket.
        # Corresponds to the JSON property `buckets`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SupervisedTuningDatasetDistributionDatasetBucket>]
        attr_accessor :buckets
      
        # Output only. The maximum of the population values.
        # Corresponds to the JSON property `max`
        # @return [Float]
        attr_accessor :max
      
        # Output only. The arithmetic mean of the values in the population.
        # Corresponds to the JSON property `mean`
        # @return [Float]
        attr_accessor :mean
      
        # Output only. The median of the values in the population.
        # Corresponds to the JSON property `median`
        # @return [Float]
        attr_accessor :median
      
        # Output only. The minimum of the population values.
        # Corresponds to the JSON property `min`
        # @return [Float]
        attr_accessor :min
      
        # Output only. The 5th percentile of the values in the population.
        # Corresponds to the JSON property `p5`
        # @return [Float]
        attr_accessor :p5
      
        # Output only. The 95th percentile of the values in the population.
        # Corresponds to the JSON property `p95`
        # @return [Float]
        attr_accessor :p95
      
        # Output only. Sum of a given population of values.
        # Corresponds to the JSON property `sum`
        # @return [Fixnum]
        attr_accessor :sum
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @billable_sum = args[:billable_sum] if args.key?(:billable_sum)
          @buckets = args[:buckets] if args.key?(:buckets)
          @max = args[:max] if args.key?(:max)
          @mean = args[:mean] if args.key?(:mean)
          @median = args[:median] if args.key?(:median)
          @min = args[:min] if args.key?(:min)
          @p5 = args[:p5] if args.key?(:p5)
          @p95 = args[:p95] if args.key?(:p95)
          @sum = args[:sum] if args.key?(:sum)
        end
      end
      
      # Dataset bucket used to create a histogram for the distribution given a
      # population of values.
      class GoogleCloudAiplatformV1SupervisedTuningDatasetDistributionDatasetBucket
        include Google::Apis::Core::Hashable
      
        # Output only. Number of values in the bucket.
        # Corresponds to the JSON property `count`
        # @return [Float]
        attr_accessor :count
      
        # Output only. Left bound of the bucket.
        # Corresponds to the JSON property `left`
        # @return [Float]
        attr_accessor :left
      
        # Output only. Right bound of the bucket.
        # Corresponds to the JSON property `right`
        # @return [Float]
        attr_accessor :right
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @count = args[:count] if args.key?(:count)
          @left = args[:left] if args.key?(:left)
          @right = args[:right] if args.key?(:right)
        end
      end
      
      # Tuning Spec for Supervised Tuning for first party models.
      class GoogleCloudAiplatformV1SupervisedTuningSpec
        include Google::Apis::Core::Hashable
      
        # Optional. If set to true, disable intermediate checkpoints for SFT and only
        # the last checkpoint will be exported. Otherwise, enable intermediate
        # checkpoints for SFT. Default is false.
        # Corresponds to the JSON property `exportLastCheckpointOnly`
        # @return [Boolean]
        attr_accessor :export_last_checkpoint_only
        alias_method :export_last_checkpoint_only?, :export_last_checkpoint_only
      
        # Hyperparameters for SFT.
        # Corresponds to the JSON property `hyperParameters`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SupervisedHyperParameters]
        attr_accessor :hyper_parameters
      
        # Required. Training dataset used for tuning. The dataset can be specified as
        # either a Cloud Storage path to a JSONL file or as the resource name of a
        # Vertex Multimodal Dataset.
        # Corresponds to the JSON property `trainingDatasetUri`
        # @return [String]
        attr_accessor :training_dataset_uri
      
        # Optional. Validation dataset used for tuning. The dataset can be specified as
        # either a Cloud Storage path to a JSONL file or as the resource name of a
        # Vertex Multimodal Dataset.
        # Corresponds to the JSON property `validationDatasetUri`
        # @return [String]
        attr_accessor :validation_dataset_uri
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @export_last_checkpoint_only = args[:export_last_checkpoint_only] if args.key?(:export_last_checkpoint_only)
          @hyper_parameters = args[:hyper_parameters] if args.key?(:hyper_parameters)
          @training_dataset_uri = args[:training_dataset_uri] if args.key?(:training_dataset_uri)
          @validation_dataset_uri = args[:validation_dataset_uri] if args.key?(:validation_dataset_uri)
        end
      end
      
      # Request message for FeatureOnlineStoreAdminService.SyncFeatureView.
      class GoogleCloudAiplatformV1SyncFeatureViewRequest
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Response message for FeatureOnlineStoreAdminService.SyncFeatureView.
      class GoogleCloudAiplatformV1SyncFeatureViewResponse
        include Google::Apis::Core::Hashable
      
        # Format: `projects/`project`/locations/`location`/featureOnlineStores/`
        # feature_online_store`/featureViews/`feature_view`/featureViewSyncs/`
        # feature_view_sync``
        # Corresponds to the JSON property `featureViewSync`
        # @return [String]
        attr_accessor :feature_view_sync
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @feature_view_sync = args[:feature_view_sync] if args.key?(:feature_view_sync)
        end
      end
      
      # Represents a single synthetic example, composed of multiple fields. Used for
      # providing few-shot examples in the request and for returning generated
      # examples in the response.
      class GoogleCloudAiplatformV1SyntheticExample
        include Google::Apis::Core::Hashable
      
        # Required. A list of fields that constitute an example.
        # Corresponds to the JSON property `fields`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SyntheticField>]
        attr_accessor :fields
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @fields = args[:fields] if args.key?(:fields)
        end
      end
      
      # Represents a single named field within a SyntheticExample.
      class GoogleCloudAiplatformV1SyntheticField
        include Google::Apis::Core::Hashable
      
        # The base structured datatype containing multi-part content of a message. A `
        # Content` includes a `role` field designating the producer of the `Content` and
        # a `parts` field containing multi-part data that contains the content of the
        # message turn.
        # Corresponds to the JSON property `content`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Content]
        attr_accessor :content
      
        # Optional. The name of the field.
        # Corresponds to the JSON property `fieldName`
        # @return [String]
        attr_accessor :field_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @content = args[:content] if args.key?(:content)
          @field_name = args[:field_name] if args.key?(:field_name)
        end
      end
      
      # The storage details for TFRecord output content.
      class GoogleCloudAiplatformV1TfRecordDestination
        include Google::Apis::Core::Hashable
      
        # The Google Cloud Storage location where the output is to be written to.
        # Corresponds to the JSON property `gcsDestination`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GcsDestination]
        attr_accessor :gcs_destination
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @gcs_destination = args[:gcs_destination] if args.key?(:gcs_destination)
        end
      end
      
      # Defines a generation strategy based on a high-level task description.
      class GoogleCloudAiplatformV1TaskDescriptionStrategy
        include Google::Apis::Core::Hashable
      
        # Required. A high-level description of the synthetic data to be generated.
        # Corresponds to the JSON property `taskDescription`
        # @return [String]
        attr_accessor :task_description
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @task_description = args[:task_description] if args.key?(:task_description)
        end
      end
      
      # A tensor value type.
      class GoogleCloudAiplatformV1Tensor
        include Google::Apis::Core::Hashable
      
        # Type specific representations that make it easy to create tensor protos in all
        # languages. Only the representation corresponding to "dtype" can be set. The
        # values hold the flattened representation of the tensor in row major order.
        # BOOL
        # Corresponds to the JSON property `boolVal`
        # @return [Array<Boolean>]
        attr_accessor :bool_val
      
        # STRING
        # Corresponds to the JSON property `bytesVal`
        # @return [Array<String>]
        attr_accessor :bytes_val
      
        # DOUBLE
        # Corresponds to the JSON property `doubleVal`
        # @return [Array<Float>]
        attr_accessor :double_val
      
        # The data type of tensor.
        # Corresponds to the JSON property `dtype`
        # @return [String]
        attr_accessor :dtype
      
        # FLOAT
        # Corresponds to the JSON property `floatVal`
        # @return [Array<Float>]
        attr_accessor :float_val
      
        # INT64
        # Corresponds to the JSON property `int64Val`
        # @return [Array<Fixnum>]
        attr_accessor :int64_val
      
        # INT_8 INT_16 INT_32
        # Corresponds to the JSON property `intVal`
        # @return [Array<Fixnum>]
        attr_accessor :int_val
      
        # A list of tensor values.
        # Corresponds to the JSON property `listVal`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Tensor>]
        attr_accessor :list_val
      
        # Shape of the tensor.
        # Corresponds to the JSON property `shape`
        # @return [Array<Fixnum>]
        attr_accessor :shape
      
        # STRING
        # Corresponds to the JSON property `stringVal`
        # @return [Array<String>]
        attr_accessor :string_val
      
        # A map of string to tensor.
        # Corresponds to the JSON property `structVal`
        # @return [Hash<String,Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Tensor>]
        attr_accessor :struct_val
      
        # Serialized raw tensor content.
        # Corresponds to the JSON property `tensorVal`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :tensor_val
      
        # UINT64
        # Corresponds to the JSON property `uint64Val`
        # @return [Array<Fixnum>]
        attr_accessor :uint64_val
      
        # UINT8 UINT16 UINT32
        # Corresponds to the JSON property `uintVal`
        # @return [Array<Fixnum>]
        attr_accessor :uint_val
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @bool_val = args[:bool_val] if args.key?(:bool_val)
          @bytes_val = args[:bytes_val] if args.key?(:bytes_val)
          @double_val = args[:double_val] if args.key?(:double_val)
          @dtype = args[:dtype] if args.key?(:dtype)
          @float_val = args[:float_val] if args.key?(:float_val)
          @int64_val = args[:int64_val] if args.key?(:int64_val)
          @int_val = args[:int_val] if args.key?(:int_val)
          @list_val = args[:list_val] if args.key?(:list_val)
          @shape = args[:shape] if args.key?(:shape)
          @string_val = args[:string_val] if args.key?(:string_val)
          @struct_val = args[:struct_val] if args.key?(:struct_val)
          @tensor_val = args[:tensor_val] if args.key?(:tensor_val)
          @uint64_val = args[:uint64_val] if args.key?(:uint64_val)
          @uint_val = args[:uint_val] if args.key?(:uint_val)
        end
      end
      
      # Tensorboard is a physical database that stores users' training metrics. A
      # default Tensorboard is provided in each region of a Google Cloud project. If
      # needed users can also create extra Tensorboards in their projects.
      class GoogleCloudAiplatformV1Tensorboard
        include Google::Apis::Core::Hashable
      
        # Output only. Consumer project Cloud Storage path prefix used to store blob
        # data, which can either be a bucket or directory. Does not end with a '/'.
        # Corresponds to the JSON property `blobStoragePathPrefix`
        # @return [String]
        attr_accessor :blob_storage_path_prefix
      
        # Output only. Timestamp when this Tensorboard was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Description of this Tensorboard.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Required. User provided name of this Tensorboard.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Represents a customer-managed encryption key spec that can be applied to a top-
        # level resource.
        # Corresponds to the JSON property `encryptionSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EncryptionSpec]
        attr_accessor :encryption_spec
      
        # Used to perform a consistent read-modify-write updates. If not set, a blind "
        # overwrite" update happens.
        # Corresponds to the JSON property `etag`
        # @return [String]
        attr_accessor :etag
      
        # Used to indicate if the TensorBoard instance is the default one. Each project &
        # region can have at most one default TensorBoard instance. Creation of a
        # default TensorBoard instance and updating an existing TensorBoard instance to
        # be default will mark all other TensorBoard instances (if any) as non default.
        # Corresponds to the JSON property `isDefault`
        # @return [Boolean]
        attr_accessor :is_default
        alias_method :is_default?, :is_default
      
        # The labels with user-defined metadata to organize your Tensorboards. Label
        # keys and values can be no longer than 64 characters (Unicode codepoints), can
        # only contain lowercase letters, numeric characters, underscores and dashes.
        # International characters are allowed. No more than 64 user labels can be
        # associated with one Tensorboard (System labels are excluded). See https://goo.
        # gl/xmQnxf for more information and examples of labels. System reserved label
        # keys are prefixed with "aiplatform.googleapis.com/" and are immutable.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Output only. Name of the Tensorboard. Format: `projects/`project`/locations/`
        # location`/tensorboards/`tensorboard``
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Output only. The number of Runs stored in this Tensorboard.
        # Corresponds to the JSON property `runCount`
        # @return [Fixnum]
        attr_accessor :run_count
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzi`
        # @return [Boolean]
        attr_accessor :satisfies_pzi
        alias_method :satisfies_pzi?, :satisfies_pzi
      
        # Output only. Reserved for future use.
        # Corresponds to the JSON property `satisfiesPzs`
        # @return [Boolean]
        attr_accessor :satisfies_pzs
        alias_method :satisfies_pzs?, :satisfies_pzs
      
        # Output only. Timestamp when this Tensorboard was last updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @blob_storage_path_prefix = args[:blob_storage_path_prefix] if args.key?(:blob_storage_path_prefix)
          @create_time = args[:create_time] if args.key?(:create_time)
          @description = args[:description] if args.key?(:description)
          @display_name = args[:display_name] if args.key?(:display_name)
          @encryption_spec = args[:encryption_spec] if args.key?(:encryption_spec)
          @etag = args[:etag] if args.key?(:etag)
          @is_default = args[:is_default] if args.key?(:is_default)
          @labels = args[:labels] if args.key?(:labels)
          @name = args[:name] if args.key?(:name)
          @run_count = args[:run_count] if args.key?(:run_count)
          @satisfies_pzi = args[:satisfies_pzi] if args.key?(:satisfies_pzi)
          @satisfies_pzs = args[:satisfies_pzs] if args.key?(:satisfies_pzs)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # One blob (e.g, image, graph) viewable on a blob metric plot.
      class GoogleCloudAiplatformV1TensorboardBlob
        include Google::Apis::Core::Hashable
      
        # Optional. The bytes of the blob is not present unless it's returned by the
        # ReadTensorboardBlobData endpoint.
        # Corresponds to the JSON property `data`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :data
      
        # Output only. A URI safe key uniquely identifying a blob. Can be used to locate
        # the blob stored in the Cloud Storage bucket of the consumer project.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @data = args[:data] if args.key?(:data)
          @id = args[:id] if args.key?(:id)
        end
      end
      
      # One point viewable on a blob metric plot, but mostly just a wrapper message to
      # work around repeated fields can't be used directly within `oneof` fields.
      class GoogleCloudAiplatformV1TensorboardBlobSequence
        include Google::Apis::Core::Hashable
      
        # List of blobs contained within the sequence.
        # Corresponds to the JSON property `values`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TensorboardBlob>]
        attr_accessor :values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @values = args[:values] if args.key?(:values)
        end
      end
      
      # A TensorboardExperiment is a group of TensorboardRuns, that are typically the
      # results of a training job run, in a Tensorboard.
      class GoogleCloudAiplatformV1TensorboardExperiment
        include Google::Apis::Core::Hashable
      
        # Output only. Timestamp when this TensorboardExperiment was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Description of this TensorboardExperiment.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # User provided name of this TensorboardExperiment.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Used to perform consistent read-modify-write updates. If not set, a blind "
        # overwrite" update happens.
        # Corresponds to the JSON property `etag`
        # @return [String]
        attr_accessor :etag
      
        # The labels with user-defined metadata to organize your TensorboardExperiment.
        # Label keys and values cannot be longer than 64 characters (Unicode codepoints),
        # can only contain lowercase letters, numeric characters, underscores and
        # dashes. International characters are allowed. No more than 64 user labels can
        # be associated with one Dataset (System labels are excluded). See https://goo.
        # gl/xmQnxf for more information and examples of labels. System reserved label
        # keys are prefixed with `aiplatform.googleapis.com/` and are immutable. The
        # following system labels exist for each Dataset: * `aiplatform.googleapis.com/
        # dataset_metadata_schema`: output only. Its value is the metadata_schema's
        # title.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Output only. Name of the TensorboardExperiment. Format: `projects/`project`/
        # locations/`location`/tensorboards/`tensorboard`/experiments/`experiment``
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Immutable. Source of the TensorboardExperiment. Example: a custom training job.
        # Corresponds to the JSON property `source`
        # @return [String]
        attr_accessor :source
      
        # Output only. Timestamp when this TensorboardExperiment was last updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @description = args[:description] if args.key?(:description)
          @display_name = args[:display_name] if args.key?(:display_name)
          @etag = args[:etag] if args.key?(:etag)
          @labels = args[:labels] if args.key?(:labels)
          @name = args[:name] if args.key?(:name)
          @source = args[:source] if args.key?(:source)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # TensorboardRun maps to a specific execution of a training job with a given set
      # of hyperparameter values, model definition, dataset, etc
      class GoogleCloudAiplatformV1TensorboardRun
        include Google::Apis::Core::Hashable
      
        # Output only. Timestamp when this TensorboardRun was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Description of this TensorboardRun.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Required. User provided name of this TensorboardRun. This value must be unique
        # among all TensorboardRuns belonging to the same parent TensorboardExperiment.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Used to perform a consistent read-modify-write updates. If not set, a blind "
        # overwrite" update happens.
        # Corresponds to the JSON property `etag`
        # @return [String]
        attr_accessor :etag
      
        # The labels with user-defined metadata to organize your TensorboardRuns. This
        # field will be used to filter and visualize Runs in the Tensorboard UI. For
        # example, a Vertex AI training job can set a label aiplatform.googleapis.com/
        # training_job_id=xxxxx to all the runs created within that job. An end user can
        # set a label experiment_id=xxxxx for all the runs produced in a Jupyter
        # notebook. These runs can be grouped by a label value and visualized together
        # in the Tensorboard UI. Label keys and values can be no longer than 64
        # characters (Unicode codepoints), can only contain lowercase letters, numeric
        # characters, underscores and dashes. International characters are allowed. No
        # more than 64 user labels can be associated with one TensorboardRun (System
        # labels are excluded). See https://goo.gl/xmQnxf for more information and
        # examples of labels. System reserved label keys are prefixed with "aiplatform.
        # googleapis.com/" and are immutable.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Output only. Name of the TensorboardRun. Format: `projects/`project`/locations/
        # `location`/tensorboards/`tensorboard`/experiments/`experiment`/runs/`run``
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Output only. Timestamp when this TensorboardRun was last updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @description = args[:description] if args.key?(:description)
          @display_name = args[:display_name] if args.key?(:display_name)
          @etag = args[:etag] if args.key?(:etag)
          @labels = args[:labels] if args.key?(:labels)
          @name = args[:name] if args.key?(:name)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # One point viewable on a tensor metric plot.
      class GoogleCloudAiplatformV1TensorboardTensor
        include Google::Apis::Core::Hashable
      
        # Required. Serialized form of https://github.com/tensorflow/tensorflow/blob/
        # master/tensorflow/core/framework/tensor.proto
        # Corresponds to the JSON property `value`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :value
      
        # Optional. Version number of TensorProto used to serialize value.
        # Corresponds to the JSON property `versionNumber`
        # @return [Fixnum]
        attr_accessor :version_number
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @value = args[:value] if args.key?(:value)
          @version_number = args[:version_number] if args.key?(:version_number)
        end
      end
      
      # TensorboardTimeSeries maps to times series produced in training runs
      class GoogleCloudAiplatformV1TensorboardTimeSeries
        include Google::Apis::Core::Hashable
      
        # Output only. Timestamp when this TensorboardTimeSeries was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Description of this TensorboardTimeSeries.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Required. User provided name of this TensorboardTimeSeries. This value should
        # be unique among all TensorboardTimeSeries resources belonging to the same
        # TensorboardRun resource (parent resource).
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Used to perform a consistent read-modify-write updates. If not set, a blind "
        # overwrite" update happens.
        # Corresponds to the JSON property `etag`
        # @return [String]
        attr_accessor :etag
      
        # Describes metadata for a TensorboardTimeSeries.
        # Corresponds to the JSON property `metadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TensorboardTimeSeriesMetadata]
        attr_accessor :metadata
      
        # Output only. Name of the TensorboardTimeSeries.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Data of the current plugin, with the size limited to 65KB.
        # Corresponds to the JSON property `pluginData`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :plugin_data
      
        # Immutable. Name of the plugin this time series pertain to. Such as Scalar,
        # Tensor, Blob
        # Corresponds to the JSON property `pluginName`
        # @return [String]
        attr_accessor :plugin_name
      
        # Output only. Timestamp when this TensorboardTimeSeries was last updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        # Required. Immutable. Type of TensorboardTimeSeries value.
        # Corresponds to the JSON property `valueType`
        # @return [String]
        attr_accessor :value_type
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @description = args[:description] if args.key?(:description)
          @display_name = args[:display_name] if args.key?(:display_name)
          @etag = args[:etag] if args.key?(:etag)
          @metadata = args[:metadata] if args.key?(:metadata)
          @name = args[:name] if args.key?(:name)
          @plugin_data = args[:plugin_data] if args.key?(:plugin_data)
          @plugin_name = args[:plugin_name] if args.key?(:plugin_name)
          @update_time = args[:update_time] if args.key?(:update_time)
          @value_type = args[:value_type] if args.key?(:value_type)
        end
      end
      
      # Describes metadata for a TensorboardTimeSeries.
      class GoogleCloudAiplatformV1TensorboardTimeSeriesMetadata
        include Google::Apis::Core::Hashable
      
        # Output only. The largest blob sequence length (number of blobs) of all data
        # points in this time series, if its ValueType is BLOB_SEQUENCE.
        # Corresponds to the JSON property `maxBlobSequenceLength`
        # @return [Fixnum]
        attr_accessor :max_blob_sequence_length
      
        # Output only. Max step index of all data points within a TensorboardTimeSeries.
        # Corresponds to the JSON property `maxStep`
        # @return [Fixnum]
        attr_accessor :max_step
      
        # Output only. Max wall clock timestamp of all data points within a
        # TensorboardTimeSeries.
        # Corresponds to the JSON property `maxWallTime`
        # @return [String]
        attr_accessor :max_wall_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @max_blob_sequence_length = args[:max_blob_sequence_length] if args.key?(:max_blob_sequence_length)
          @max_step = args[:max_step] if args.key?(:max_step)
          @max_wall_time = args[:max_wall_time] if args.key?(:max_wall_time)
        end
      end
      
      # The config for feature monitoring threshold.
      class GoogleCloudAiplatformV1ThresholdConfig
        include Google::Apis::Core::Hashable
      
        # Specify a threshold value that can trigger the alert. If this threshold config
        # is for feature distribution distance: 1. For categorical feature, the
        # distribution distance is calculated by L-inifinity norm. 2. For numerical
        # feature, the distribution distance is calculated by Jensen–Shannon divergence.
        # Each feature must have a non-zero threshold if they need to be monitored.
        # Otherwise no alert will be triggered for that feature.
        # Corresponds to the JSON property `value`
        # @return [Float]
        attr_accessor :value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @value = args[:value] if args.key?(:value)
        end
      end
      
      # All the data stored in a TensorboardTimeSeries.
      class GoogleCloudAiplatformV1TimeSeriesData
        include Google::Apis::Core::Hashable
      
        # Required. The ID of the TensorboardTimeSeries, which will become the final
        # component of the TensorboardTimeSeries' resource name
        # Corresponds to the JSON property `tensorboardTimeSeriesId`
        # @return [String]
        attr_accessor :tensorboard_time_series_id
      
        # Required. Immutable. The value type of this time series. All the values in
        # this time series data must match this value type.
        # Corresponds to the JSON property `valueType`
        # @return [String]
        attr_accessor :value_type
      
        # Required. Data points in this time series.
        # Corresponds to the JSON property `values`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TimeSeriesDataPoint>]
        attr_accessor :values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @tensorboard_time_series_id = args[:tensorboard_time_series_id] if args.key?(:tensorboard_time_series_id)
          @value_type = args[:value_type] if args.key?(:value_type)
          @values = args[:values] if args.key?(:values)
        end
      end
      
      # A TensorboardTimeSeries data point.
      class GoogleCloudAiplatformV1TimeSeriesDataPoint
        include Google::Apis::Core::Hashable
      
        # One point viewable on a blob metric plot, but mostly just a wrapper message to
        # work around repeated fields can't be used directly within `oneof` fields.
        # Corresponds to the JSON property `blobs`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TensorboardBlobSequence]
        attr_accessor :blobs
      
        # One point viewable on a scalar metric plot.
        # Corresponds to the JSON property `scalar`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Scalar]
        attr_accessor :scalar
      
        # Step index of this data point within the run.
        # Corresponds to the JSON property `step`
        # @return [Fixnum]
        attr_accessor :step
      
        # One point viewable on a tensor metric plot.
        # Corresponds to the JSON property `tensor`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TensorboardTensor]
        attr_accessor :tensor
      
        # Wall clock timestamp when this data point is generated by the end user.
        # Corresponds to the JSON property `wallTime`
        # @return [String]
        attr_accessor :wall_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @blobs = args[:blobs] if args.key?(:blobs)
          @scalar = args[:scalar] if args.key?(:scalar)
          @step = args[:step] if args.key?(:step)
          @tensor = args[:tensor] if args.key?(:tensor)
          @wall_time = args[:wall_time] if args.key?(:wall_time)
        end
      end
      
      # Assigns input data to training, validation, and test sets based on a provided
      # timestamps. The youngest data pieces are assigned to training set, next to
      # validation set, and the oldest to the test set. Supported only for tabular
      # Datasets.
      class GoogleCloudAiplatformV1TimestampSplit
        include Google::Apis::Core::Hashable
      
        # Required. The key is a name of one of the Dataset's data columns. The values
        # of the key (the values in the column) must be in RFC 3339 `date-time` format,
        # where `time-offset` = `"Z"` (e.g. 1985-04-12T23:20:50.52Z). If for a piece of
        # data the key is not present or has an invalid value, that piece is ignored by
        # the pipeline.
        # Corresponds to the JSON property `key`
        # @return [String]
        attr_accessor :key
      
        # The fraction of the input data that is to be used to evaluate the Model.
        # Corresponds to the JSON property `testFraction`
        # @return [Float]
        attr_accessor :test_fraction
      
        # The fraction of the input data that is to be used to train the Model.
        # Corresponds to the JSON property `trainingFraction`
        # @return [Float]
        attr_accessor :training_fraction
      
        # The fraction of the input data that is to be used to validate the Model.
        # Corresponds to the JSON property `validationFraction`
        # @return [Float]
        attr_accessor :validation_fraction
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @key = args[:key] if args.key?(:key)
          @test_fraction = args[:test_fraction] if args.key?(:test_fraction)
          @training_fraction = args[:training_fraction] if args.key?(:training_fraction)
          @validation_fraction = args[:validation_fraction] if args.key?(:validation_fraction)
        end
      end
      
      # Tokens info with a list of tokens and the corresponding list of token ids.
      class GoogleCloudAiplatformV1TokensInfo
        include Google::Apis::Core::Hashable
      
        # Optional. Optional fields for the role from the corresponding Content.
        # Corresponds to the JSON property `role`
        # @return [String]
        attr_accessor :role
      
        # A list of token ids from the input.
        # Corresponds to the JSON property `tokenIds`
        # @return [Array<Fixnum>]
        attr_accessor :token_ids
      
        # A list of tokens from the input.
        # Corresponds to the JSON property `tokens`
        # @return [Array<String>]
        attr_accessor :tokens
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @role = args[:role] if args.key?(:role)
          @token_ids = args[:token_ids] if args.key?(:token_ids)
          @tokens = args[:tokens] if args.key?(:tokens)
        end
      end
      
      # Tool details that the model may use to generate response. A `Tool` is a piece
      # of code that enables the system to interact with external systems to perform
      # an action, or set of actions, outside of knowledge and scope of the model. A
      # Tool object should contain exactly one type of Tool (e.g FunctionDeclaration,
      # Retrieval or GoogleSearchRetrieval).
      class GoogleCloudAiplatformV1Tool
        include Google::Apis::Core::Hashable
      
        # Tool that executes code generated by the model, and automatically returns the
        # result to the model. See also [ExecutableCode]and [CodeExecutionResult] which
        # are input and output to this tool.
        # Corresponds to the JSON property `codeExecution`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ToolCodeExecution]
        attr_accessor :code_execution
      
        # Tool to search public web data, powered by Vertex AI Search and Sec4
        # compliance.
        # Corresponds to the JSON property `enterpriseWebSearch`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EnterpriseWebSearch]
        attr_accessor :enterprise_web_search
      
        # Optional. Function tool type. One or more function declarations to be passed
        # to the model along with the current user query. Model may decide to call a
        # subset of these functions by populating FunctionCall in the response. User
        # should provide a FunctionResponse for each function call in the next turn.
        # Based on the function responses, Model will generate the final response back
        # to the user. Maximum 512 function declarations can be provided.
        # Corresponds to the JSON property `functionDeclarations`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FunctionDeclaration>]
        attr_accessor :function_declarations
      
        # Tool to retrieve public maps data for grounding, powered by Google.
        # Corresponds to the JSON property `googleMaps`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GoogleMaps]
        attr_accessor :google_maps
      
        # GoogleSearch tool type. Tool to support Google Search in Model. Powered by
        # Google.
        # Corresponds to the JSON property `googleSearch`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ToolGoogleSearch]
        attr_accessor :google_search
      
        # Tool to retrieve public web data for grounding, powered by Google.
        # Corresponds to the JSON property `googleSearchRetrieval`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GoogleSearchRetrieval]
        attr_accessor :google_search_retrieval
      
        # Defines a retrieval tool that model can call to access external knowledge.
        # Corresponds to the JSON property `retrieval`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Retrieval]
        attr_accessor :retrieval
      
        # Tool to support URL context.
        # Corresponds to the JSON property `urlContext`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1UrlContext]
        attr_accessor :url_context
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @code_execution = args[:code_execution] if args.key?(:code_execution)
          @enterprise_web_search = args[:enterprise_web_search] if args.key?(:enterprise_web_search)
          @function_declarations = args[:function_declarations] if args.key?(:function_declarations)
          @google_maps = args[:google_maps] if args.key?(:google_maps)
          @google_search = args[:google_search] if args.key?(:google_search)
          @google_search_retrieval = args[:google_search_retrieval] if args.key?(:google_search_retrieval)
          @retrieval = args[:retrieval] if args.key?(:retrieval)
          @url_context = args[:url_context] if args.key?(:url_context)
        end
      end
      
      # Spec for tool call.
      class GoogleCloudAiplatformV1ToolCall
        include Google::Apis::Core::Hashable
      
        # Optional. Spec for tool input
        # Corresponds to the JSON property `toolInput`
        # @return [String]
        attr_accessor :tool_input
      
        # Required. Spec for tool name
        # Corresponds to the JSON property `toolName`
        # @return [String]
        attr_accessor :tool_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @tool_input = args[:tool_input] if args.key?(:tool_input)
          @tool_name = args[:tool_name] if args.key?(:tool_name)
        end
      end
      
      # Input for tool call valid metric.
      class GoogleCloudAiplatformV1ToolCallValidInput
        include Google::Apis::Core::Hashable
      
        # Required. Repeated tool call valid instances.
        # Corresponds to the JSON property `instances`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ToolCallValidInstance>]
        attr_accessor :instances
      
        # Spec for tool call valid metric.
        # Corresponds to the JSON property `metricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ToolCallValidSpec]
        attr_accessor :metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instances = args[:instances] if args.key?(:instances)
          @metric_spec = args[:metric_spec] if args.key?(:metric_spec)
        end
      end
      
      # Spec for tool call valid instance.
      class GoogleCloudAiplatformV1ToolCallValidInstance
        include Google::Apis::Core::Hashable
      
        # Required. Output of the evaluated model.
        # Corresponds to the JSON property `prediction`
        # @return [String]
        attr_accessor :prediction
      
        # Required. Ground truth used to compare against the prediction.
        # Corresponds to the JSON property `reference`
        # @return [String]
        attr_accessor :reference
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @prediction = args[:prediction] if args.key?(:prediction)
          @reference = args[:reference] if args.key?(:reference)
        end
      end
      
      # Tool call valid metric value for an instance.
      class GoogleCloudAiplatformV1ToolCallValidMetricValue
        include Google::Apis::Core::Hashable
      
        # Output only. Tool call valid score.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # Results for tool call valid metric.
      class GoogleCloudAiplatformV1ToolCallValidResults
        include Google::Apis::Core::Hashable
      
        # Output only. Tool call valid metric values.
        # Corresponds to the JSON property `toolCallValidMetricValues`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ToolCallValidMetricValue>]
        attr_accessor :tool_call_valid_metric_values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @tool_call_valid_metric_values = args[:tool_call_valid_metric_values] if args.key?(:tool_call_valid_metric_values)
        end
      end
      
      # Spec for tool call valid metric.
      class GoogleCloudAiplatformV1ToolCallValidSpec
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Tool that executes code generated by the model, and automatically returns the
      # result to the model. See also [ExecutableCode]and [CodeExecutionResult] which
      # are input and output to this tool.
      class GoogleCloudAiplatformV1ToolCodeExecution
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Tool config. This config is shared for all tools provided in the request.
      class GoogleCloudAiplatformV1ToolConfig
        include Google::Apis::Core::Hashable
      
        # Function calling config.
        # Corresponds to the JSON property `functionCallingConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FunctionCallingConfig]
        attr_accessor :function_calling_config
      
        # Retrieval config.
        # Corresponds to the JSON property `retrievalConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RetrievalConfig]
        attr_accessor :retrieval_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @function_calling_config = args[:function_calling_config] if args.key?(:function_calling_config)
          @retrieval_config = args[:retrieval_config] if args.key?(:retrieval_config)
        end
      end
      
      # GoogleSearch tool type. Tool to support Google Search in Model. Powered by
      # Google.
      class GoogleCloudAiplatformV1ToolGoogleSearch
        include Google::Apis::Core::Hashable
      
        # Optional. List of domains to be excluded from the search results. The default
        # limit is 2000 domains. Example: ["amazon.com", "facebook.com"].
        # Corresponds to the JSON property `excludeDomains`
        # @return [Array<String>]
        attr_accessor :exclude_domains
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @exclude_domains = args[:exclude_domains] if args.key?(:exclude_domains)
        end
      end
      
      # Input for tool name match metric.
      class GoogleCloudAiplatformV1ToolNameMatchInput
        include Google::Apis::Core::Hashable
      
        # Required. Repeated tool name match instances.
        # Corresponds to the JSON property `instances`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ToolNameMatchInstance>]
        attr_accessor :instances
      
        # Spec for tool name match metric.
        # Corresponds to the JSON property `metricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ToolNameMatchSpec]
        attr_accessor :metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instances = args[:instances] if args.key?(:instances)
          @metric_spec = args[:metric_spec] if args.key?(:metric_spec)
        end
      end
      
      # Spec for tool name match instance.
      class GoogleCloudAiplatformV1ToolNameMatchInstance
        include Google::Apis::Core::Hashable
      
        # Required. Output of the evaluated model.
        # Corresponds to the JSON property `prediction`
        # @return [String]
        attr_accessor :prediction
      
        # Required. Ground truth used to compare against the prediction.
        # Corresponds to the JSON property `reference`
        # @return [String]
        attr_accessor :reference
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @prediction = args[:prediction] if args.key?(:prediction)
          @reference = args[:reference] if args.key?(:reference)
        end
      end
      
      # Tool name match metric value for an instance.
      class GoogleCloudAiplatformV1ToolNameMatchMetricValue
        include Google::Apis::Core::Hashable
      
        # Output only. Tool name match score.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # Results for tool name match metric.
      class GoogleCloudAiplatformV1ToolNameMatchResults
        include Google::Apis::Core::Hashable
      
        # Output only. Tool name match metric values.
        # Corresponds to the JSON property `toolNameMatchMetricValues`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ToolNameMatchMetricValue>]
        attr_accessor :tool_name_match_metric_values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @tool_name_match_metric_values = args[:tool_name_match_metric_values] if args.key?(:tool_name_match_metric_values)
        end
      end
      
      # Spec for tool name match metric.
      class GoogleCloudAiplatformV1ToolNameMatchSpec
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Input for tool parameter key value match metric.
      class GoogleCloudAiplatformV1ToolParameterKvMatchInput
        include Google::Apis::Core::Hashable
      
        # Required. Repeated tool parameter key value match instances.
        # Corresponds to the JSON property `instances`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ToolParameterKvMatchInstance>]
        attr_accessor :instances
      
        # Spec for tool parameter key value match metric.
        # Corresponds to the JSON property `metricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ToolParameterKvMatchSpec]
        attr_accessor :metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instances = args[:instances] if args.key?(:instances)
          @metric_spec = args[:metric_spec] if args.key?(:metric_spec)
        end
      end
      
      # Spec for tool parameter key value match instance.
      class GoogleCloudAiplatformV1ToolParameterKvMatchInstance
        include Google::Apis::Core::Hashable
      
        # Required. Output of the evaluated model.
        # Corresponds to the JSON property `prediction`
        # @return [String]
        attr_accessor :prediction
      
        # Required. Ground truth used to compare against the prediction.
        # Corresponds to the JSON property `reference`
        # @return [String]
        attr_accessor :reference
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @prediction = args[:prediction] if args.key?(:prediction)
          @reference = args[:reference] if args.key?(:reference)
        end
      end
      
      # Tool parameter key value match metric value for an instance.
      class GoogleCloudAiplatformV1ToolParameterKvMatchMetricValue
        include Google::Apis::Core::Hashable
      
        # Output only. Tool parameter key value match score.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # Results for tool parameter key value match metric.
      class GoogleCloudAiplatformV1ToolParameterKvMatchResults
        include Google::Apis::Core::Hashable
      
        # Output only. Tool parameter key value match metric values.
        # Corresponds to the JSON property `toolParameterKvMatchMetricValues`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ToolParameterKvMatchMetricValue>]
        attr_accessor :tool_parameter_kv_match_metric_values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @tool_parameter_kv_match_metric_values = args[:tool_parameter_kv_match_metric_values] if args.key?(:tool_parameter_kv_match_metric_values)
        end
      end
      
      # Spec for tool parameter key value match metric.
      class GoogleCloudAiplatformV1ToolParameterKvMatchSpec
        include Google::Apis::Core::Hashable
      
        # Optional. Whether to use STRICT string match on parameter values.
        # Corresponds to the JSON property `useStrictStringMatch`
        # @return [Boolean]
        attr_accessor :use_strict_string_match
        alias_method :use_strict_string_match?, :use_strict_string_match
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @use_strict_string_match = args[:use_strict_string_match] if args.key?(:use_strict_string_match)
        end
      end
      
      # Input for tool parameter key match metric.
      class GoogleCloudAiplatformV1ToolParameterKeyMatchInput
        include Google::Apis::Core::Hashable
      
        # Required. Repeated tool parameter key match instances.
        # Corresponds to the JSON property `instances`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ToolParameterKeyMatchInstance>]
        attr_accessor :instances
      
        # Spec for tool parameter key match metric.
        # Corresponds to the JSON property `metricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ToolParameterKeyMatchSpec]
        attr_accessor :metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instances = args[:instances] if args.key?(:instances)
          @metric_spec = args[:metric_spec] if args.key?(:metric_spec)
        end
      end
      
      # Spec for tool parameter key match instance.
      class GoogleCloudAiplatformV1ToolParameterKeyMatchInstance
        include Google::Apis::Core::Hashable
      
        # Required. Output of the evaluated model.
        # Corresponds to the JSON property `prediction`
        # @return [String]
        attr_accessor :prediction
      
        # Required. Ground truth used to compare against the prediction.
        # Corresponds to the JSON property `reference`
        # @return [String]
        attr_accessor :reference
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @prediction = args[:prediction] if args.key?(:prediction)
          @reference = args[:reference] if args.key?(:reference)
        end
      end
      
      # Tool parameter key match metric value for an instance.
      class GoogleCloudAiplatformV1ToolParameterKeyMatchMetricValue
        include Google::Apis::Core::Hashable
      
        # Output only. Tool parameter key match score.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # Results for tool parameter key match metric.
      class GoogleCloudAiplatformV1ToolParameterKeyMatchResults
        include Google::Apis::Core::Hashable
      
        # Output only. Tool parameter key match metric values.
        # Corresponds to the JSON property `toolParameterKeyMatchMetricValues`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ToolParameterKeyMatchMetricValue>]
        attr_accessor :tool_parameter_key_match_metric_values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @tool_parameter_key_match_metric_values = args[:tool_parameter_key_match_metric_values] if args.key?(:tool_parameter_key_match_metric_values)
        end
      end
      
      # Spec for tool parameter key match metric.
      class GoogleCloudAiplatformV1ToolParameterKeyMatchSpec
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # CMLE training config. For every active learning labeling iteration, system
      # will train a machine learning model on CMLE. The trained model will be used by
      # data sampling algorithm to select DataItems.
      class GoogleCloudAiplatformV1TrainingConfig
        include Google::Apis::Core::Hashable
      
        # The timeout hours for the CMLE training job, expressed in milli hours i.e. 1,
        # 000 value in this field means 1 hour.
        # Corresponds to the JSON property `timeoutTrainingMilliHours`
        # @return [Fixnum]
        attr_accessor :timeout_training_milli_hours
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @timeout_training_milli_hours = args[:timeout_training_milli_hours] if args.key?(:timeout_training_milli_hours)
        end
      end
      
      # The TrainingPipeline orchestrates tasks associated with training a Model. It
      # always executes the training task, and optionally may also export data from
      # Vertex AI's Dataset which becomes the training input, upload the Model to
      # Vertex AI, and evaluate the Model.
      class GoogleCloudAiplatformV1TrainingPipeline
        include Google::Apis::Core::Hashable
      
        # Output only. Time when the TrainingPipeline was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Required. The user-defined name of this TrainingPipeline.
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Represents a customer-managed encryption key spec that can be applied to a top-
        # level resource.
        # Corresponds to the JSON property `encryptionSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EncryptionSpec]
        attr_accessor :encryption_spec
      
        # Output only. Time when the TrainingPipeline entered any of the following
        # states: `PIPELINE_STATE_SUCCEEDED`, `PIPELINE_STATE_FAILED`, `
        # PIPELINE_STATE_CANCELLED`.
        # Corresponds to the JSON property `endTime`
        # @return [String]
        attr_accessor :end_time
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `error`
        # @return [Google::Apis::AiplatformV1::GoogleRpcStatus]
        attr_accessor :error
      
        # Specifies Vertex AI owned input data to be used for training, and possibly
        # evaluating, the Model.
        # Corresponds to the JSON property `inputDataConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1InputDataConfig]
        attr_accessor :input_data_config
      
        # The labels with user-defined metadata to organize TrainingPipelines. Label
        # keys and values can be no longer than 64 characters (Unicode codepoints), can
        # only contain lowercase letters, numeric characters, underscores and dashes.
        # International characters are allowed. See https://goo.gl/xmQnxf for more
        # information and examples of labels.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Optional. The ID to use for the uploaded Model, which will become the final
        # component of the model resource name. This value may be up to 63 characters,
        # and valid characters are `[a-z0-9_-]`. The first character cannot be a number
        # or hyphen.
        # Corresponds to the JSON property `modelId`
        # @return [String]
        attr_accessor :model_id
      
        # A trained machine learning Model.
        # Corresponds to the JSON property `modelToUpload`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Model]
        attr_accessor :model_to_upload
      
        # Output only. Resource name of the TrainingPipeline.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Optional. When specify this field, the `model_to_upload` will not be uploaded
        # as a new model, instead, it will become a new version of this `parent_model`.
        # Corresponds to the JSON property `parentModel`
        # @return [String]
        attr_accessor :parent_model
      
        # Output only. Time when the TrainingPipeline for the first time entered the `
        # PIPELINE_STATE_RUNNING` state.
        # Corresponds to the JSON property `startTime`
        # @return [String]
        attr_accessor :start_time
      
        # Output only. The detailed state of the pipeline.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        # Required. A Google Cloud Storage path to the YAML file that defines the
        # training task which is responsible for producing the model artifact, and may
        # also include additional auxiliary work. The definition files that can be used
        # here are found in gs://google-cloud-aiplatform/schema/trainingjob/definition/.
        # Note: The URI given on output will be immutable and probably different,
        # including the URI scheme, than the one given on input. The output URI will
        # point to a location where the user only has a read access.
        # Corresponds to the JSON property `trainingTaskDefinition`
        # @return [String]
        attr_accessor :training_task_definition
      
        # Required. The training task's parameter(s), as specified in the
        # training_task_definition's `inputs`.
        # Corresponds to the JSON property `trainingTaskInputs`
        # @return [Object]
        attr_accessor :training_task_inputs
      
        # Output only. The metadata information as specified in the
        # training_task_definition's `metadata`. This metadata is an auxiliary runtime
        # and final information about the training task. While the pipeline is running
        # this information is populated only at a best effort basis. Only present if the
        # pipeline's training_task_definition contains `metadata` object.
        # Corresponds to the JSON property `trainingTaskMetadata`
        # @return [Object]
        attr_accessor :training_task_metadata
      
        # Output only. Time when the TrainingPipeline was most recently updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @create_time = args[:create_time] if args.key?(:create_time)
          @display_name = args[:display_name] if args.key?(:display_name)
          @encryption_spec = args[:encryption_spec] if args.key?(:encryption_spec)
          @end_time = args[:end_time] if args.key?(:end_time)
          @error = args[:error] if args.key?(:error)
          @input_data_config = args[:input_data_config] if args.key?(:input_data_config)
          @labels = args[:labels] if args.key?(:labels)
          @model_id = args[:model_id] if args.key?(:model_id)
          @model_to_upload = args[:model_to_upload] if args.key?(:model_to_upload)
          @name = args[:name] if args.key?(:name)
          @parent_model = args[:parent_model] if args.key?(:parent_model)
          @start_time = args[:start_time] if args.key?(:start_time)
          @state = args[:state] if args.key?(:state)
          @training_task_definition = args[:training_task_definition] if args.key?(:training_task_definition)
          @training_task_inputs = args[:training_task_inputs] if args.key?(:training_task_inputs)
          @training_task_metadata = args[:training_task_metadata] if args.key?(:training_task_metadata)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # Spec for trajectory.
      class GoogleCloudAiplatformV1Trajectory
        include Google::Apis::Core::Hashable
      
        # Required. Tool calls in the trajectory.
        # Corresponds to the JSON property `toolCalls`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ToolCall>]
        attr_accessor :tool_calls
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @tool_calls = args[:tool_calls] if args.key?(:tool_calls)
        end
      end
      
      # Instances and metric spec for TrajectoryAnyOrderMatch metric.
      class GoogleCloudAiplatformV1TrajectoryAnyOrderMatchInput
        include Google::Apis::Core::Hashable
      
        # Required. Repeated TrajectoryAnyOrderMatch instance.
        # Corresponds to the JSON property `instances`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrajectoryAnyOrderMatchInstance>]
        attr_accessor :instances
      
        # Spec for TrajectoryAnyOrderMatch metric - returns 1 if all tool calls in the
        # reference trajectory appear in the predicted trajectory in any order, else 0.
        # Corresponds to the JSON property `metricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrajectoryAnyOrderMatchSpec]
        attr_accessor :metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instances = args[:instances] if args.key?(:instances)
          @metric_spec = args[:metric_spec] if args.key?(:metric_spec)
        end
      end
      
      # Spec for TrajectoryAnyOrderMatch instance.
      class GoogleCloudAiplatformV1TrajectoryAnyOrderMatchInstance
        include Google::Apis::Core::Hashable
      
        # Spec for trajectory.
        # Corresponds to the JSON property `predictedTrajectory`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Trajectory]
        attr_accessor :predicted_trajectory
      
        # Spec for trajectory.
        # Corresponds to the JSON property `referenceTrajectory`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Trajectory]
        attr_accessor :reference_trajectory
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @predicted_trajectory = args[:predicted_trajectory] if args.key?(:predicted_trajectory)
          @reference_trajectory = args[:reference_trajectory] if args.key?(:reference_trajectory)
        end
      end
      
      # TrajectoryAnyOrderMatch metric value for an instance.
      class GoogleCloudAiplatformV1TrajectoryAnyOrderMatchMetricValue
        include Google::Apis::Core::Hashable
      
        # Output only. TrajectoryAnyOrderMatch score.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # Results for TrajectoryAnyOrderMatch metric.
      class GoogleCloudAiplatformV1TrajectoryAnyOrderMatchResults
        include Google::Apis::Core::Hashable
      
        # Output only. TrajectoryAnyOrderMatch metric values.
        # Corresponds to the JSON property `trajectoryAnyOrderMatchMetricValues`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrajectoryAnyOrderMatchMetricValue>]
        attr_accessor :trajectory_any_order_match_metric_values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @trajectory_any_order_match_metric_values = args[:trajectory_any_order_match_metric_values] if args.key?(:trajectory_any_order_match_metric_values)
        end
      end
      
      # Spec for TrajectoryAnyOrderMatch metric - returns 1 if all tool calls in the
      # reference trajectory appear in the predicted trajectory in any order, else 0.
      class GoogleCloudAiplatformV1TrajectoryAnyOrderMatchSpec
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Instances and metric spec for TrajectoryExactMatch metric.
      class GoogleCloudAiplatformV1TrajectoryExactMatchInput
        include Google::Apis::Core::Hashable
      
        # Required. Repeated TrajectoryExactMatch instance.
        # Corresponds to the JSON property `instances`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrajectoryExactMatchInstance>]
        attr_accessor :instances
      
        # Spec for TrajectoryExactMatch metric - returns 1 if tool calls in the
        # reference trajectory exactly match the predicted trajectory, else 0.
        # Corresponds to the JSON property `metricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrajectoryExactMatchSpec]
        attr_accessor :metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instances = args[:instances] if args.key?(:instances)
          @metric_spec = args[:metric_spec] if args.key?(:metric_spec)
        end
      end
      
      # Spec for TrajectoryExactMatch instance.
      class GoogleCloudAiplatformV1TrajectoryExactMatchInstance
        include Google::Apis::Core::Hashable
      
        # Spec for trajectory.
        # Corresponds to the JSON property `predictedTrajectory`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Trajectory]
        attr_accessor :predicted_trajectory
      
        # Spec for trajectory.
        # Corresponds to the JSON property `referenceTrajectory`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Trajectory]
        attr_accessor :reference_trajectory
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @predicted_trajectory = args[:predicted_trajectory] if args.key?(:predicted_trajectory)
          @reference_trajectory = args[:reference_trajectory] if args.key?(:reference_trajectory)
        end
      end
      
      # TrajectoryExactMatch metric value for an instance.
      class GoogleCloudAiplatformV1TrajectoryExactMatchMetricValue
        include Google::Apis::Core::Hashable
      
        # Output only. TrajectoryExactMatch score.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # Results for TrajectoryExactMatch metric.
      class GoogleCloudAiplatformV1TrajectoryExactMatchResults
        include Google::Apis::Core::Hashable
      
        # Output only. TrajectoryExactMatch metric values.
        # Corresponds to the JSON property `trajectoryExactMatchMetricValues`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrajectoryExactMatchMetricValue>]
        attr_accessor :trajectory_exact_match_metric_values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @trajectory_exact_match_metric_values = args[:trajectory_exact_match_metric_values] if args.key?(:trajectory_exact_match_metric_values)
        end
      end
      
      # Spec for TrajectoryExactMatch metric - returns 1 if tool calls in the
      # reference trajectory exactly match the predicted trajectory, else 0.
      class GoogleCloudAiplatformV1TrajectoryExactMatchSpec
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Instances and metric spec for TrajectoryInOrderMatch metric.
      class GoogleCloudAiplatformV1TrajectoryInOrderMatchInput
        include Google::Apis::Core::Hashable
      
        # Required. Repeated TrajectoryInOrderMatch instance.
        # Corresponds to the JSON property `instances`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrajectoryInOrderMatchInstance>]
        attr_accessor :instances
      
        # Spec for TrajectoryInOrderMatch metric - returns 1 if tool calls in the
        # reference trajectory appear in the predicted trajectory in the same order,
        # else 0.
        # Corresponds to the JSON property `metricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrajectoryInOrderMatchSpec]
        attr_accessor :metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instances = args[:instances] if args.key?(:instances)
          @metric_spec = args[:metric_spec] if args.key?(:metric_spec)
        end
      end
      
      # Spec for TrajectoryInOrderMatch instance.
      class GoogleCloudAiplatformV1TrajectoryInOrderMatchInstance
        include Google::Apis::Core::Hashable
      
        # Spec for trajectory.
        # Corresponds to the JSON property `predictedTrajectory`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Trajectory]
        attr_accessor :predicted_trajectory
      
        # Spec for trajectory.
        # Corresponds to the JSON property `referenceTrajectory`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Trajectory]
        attr_accessor :reference_trajectory
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @predicted_trajectory = args[:predicted_trajectory] if args.key?(:predicted_trajectory)
          @reference_trajectory = args[:reference_trajectory] if args.key?(:reference_trajectory)
        end
      end
      
      # TrajectoryInOrderMatch metric value for an instance.
      class GoogleCloudAiplatformV1TrajectoryInOrderMatchMetricValue
        include Google::Apis::Core::Hashable
      
        # Output only. TrajectoryInOrderMatch score.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # Results for TrajectoryInOrderMatch metric.
      class GoogleCloudAiplatformV1TrajectoryInOrderMatchResults
        include Google::Apis::Core::Hashable
      
        # Output only. TrajectoryInOrderMatch metric values.
        # Corresponds to the JSON property `trajectoryInOrderMatchMetricValues`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrajectoryInOrderMatchMetricValue>]
        attr_accessor :trajectory_in_order_match_metric_values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @trajectory_in_order_match_metric_values = args[:trajectory_in_order_match_metric_values] if args.key?(:trajectory_in_order_match_metric_values)
        end
      end
      
      # Spec for TrajectoryInOrderMatch metric - returns 1 if tool calls in the
      # reference trajectory appear in the predicted trajectory in the same order,
      # else 0.
      class GoogleCloudAiplatformV1TrajectoryInOrderMatchSpec
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Instances and metric spec for TrajectoryPrecision metric.
      class GoogleCloudAiplatformV1TrajectoryPrecisionInput
        include Google::Apis::Core::Hashable
      
        # Required. Repeated TrajectoryPrecision instance.
        # Corresponds to the JSON property `instances`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrajectoryPrecisionInstance>]
        attr_accessor :instances
      
        # Spec for TrajectoryPrecision metric - returns a float score based on average
        # precision of individual tool calls.
        # Corresponds to the JSON property `metricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrajectoryPrecisionSpec]
        attr_accessor :metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instances = args[:instances] if args.key?(:instances)
          @metric_spec = args[:metric_spec] if args.key?(:metric_spec)
        end
      end
      
      # Spec for TrajectoryPrecision instance.
      class GoogleCloudAiplatformV1TrajectoryPrecisionInstance
        include Google::Apis::Core::Hashable
      
        # Spec for trajectory.
        # Corresponds to the JSON property `predictedTrajectory`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Trajectory]
        attr_accessor :predicted_trajectory
      
        # Spec for trajectory.
        # Corresponds to the JSON property `referenceTrajectory`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Trajectory]
        attr_accessor :reference_trajectory
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @predicted_trajectory = args[:predicted_trajectory] if args.key?(:predicted_trajectory)
          @reference_trajectory = args[:reference_trajectory] if args.key?(:reference_trajectory)
        end
      end
      
      # TrajectoryPrecision metric value for an instance.
      class GoogleCloudAiplatformV1TrajectoryPrecisionMetricValue
        include Google::Apis::Core::Hashable
      
        # Output only. TrajectoryPrecision score.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # Results for TrajectoryPrecision metric.
      class GoogleCloudAiplatformV1TrajectoryPrecisionResults
        include Google::Apis::Core::Hashable
      
        # Output only. TrajectoryPrecision metric values.
        # Corresponds to the JSON property `trajectoryPrecisionMetricValues`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrajectoryPrecisionMetricValue>]
        attr_accessor :trajectory_precision_metric_values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @trajectory_precision_metric_values = args[:trajectory_precision_metric_values] if args.key?(:trajectory_precision_metric_values)
        end
      end
      
      # Spec for TrajectoryPrecision metric - returns a float score based on average
      # precision of individual tool calls.
      class GoogleCloudAiplatformV1TrajectoryPrecisionSpec
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Instances and metric spec for TrajectoryRecall metric.
      class GoogleCloudAiplatformV1TrajectoryRecallInput
        include Google::Apis::Core::Hashable
      
        # Required. Repeated TrajectoryRecall instance.
        # Corresponds to the JSON property `instances`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrajectoryRecallInstance>]
        attr_accessor :instances
      
        # Spec for TrajectoryRecall metric - returns a float score based on average
        # recall of individual tool calls.
        # Corresponds to the JSON property `metricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrajectoryRecallSpec]
        attr_accessor :metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instances = args[:instances] if args.key?(:instances)
          @metric_spec = args[:metric_spec] if args.key?(:metric_spec)
        end
      end
      
      # Spec for TrajectoryRecall instance.
      class GoogleCloudAiplatformV1TrajectoryRecallInstance
        include Google::Apis::Core::Hashable
      
        # Spec for trajectory.
        # Corresponds to the JSON property `predictedTrajectory`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Trajectory]
        attr_accessor :predicted_trajectory
      
        # Spec for trajectory.
        # Corresponds to the JSON property `referenceTrajectory`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Trajectory]
        attr_accessor :reference_trajectory
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @predicted_trajectory = args[:predicted_trajectory] if args.key?(:predicted_trajectory)
          @reference_trajectory = args[:reference_trajectory] if args.key?(:reference_trajectory)
        end
      end
      
      # TrajectoryRecall metric value for an instance.
      class GoogleCloudAiplatformV1TrajectoryRecallMetricValue
        include Google::Apis::Core::Hashable
      
        # Output only. TrajectoryRecall score.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # Results for TrajectoryRecall metric.
      class GoogleCloudAiplatformV1TrajectoryRecallResults
        include Google::Apis::Core::Hashable
      
        # Output only. TrajectoryRecall metric values.
        # Corresponds to the JSON property `trajectoryRecallMetricValues`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrajectoryRecallMetricValue>]
        attr_accessor :trajectory_recall_metric_values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @trajectory_recall_metric_values = args[:trajectory_recall_metric_values] if args.key?(:trajectory_recall_metric_values)
        end
      end
      
      # Spec for TrajectoryRecall metric - returns a float score based on average
      # recall of individual tool calls.
      class GoogleCloudAiplatformV1TrajectoryRecallSpec
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Instances and metric spec for TrajectorySingleToolUse metric.
      class GoogleCloudAiplatformV1TrajectorySingleToolUseInput
        include Google::Apis::Core::Hashable
      
        # Required. Repeated TrajectorySingleToolUse instance.
        # Corresponds to the JSON property `instances`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrajectorySingleToolUseInstance>]
        attr_accessor :instances
      
        # Spec for TrajectorySingleToolUse metric - returns 1 if tool is present in the
        # predicted trajectory, else 0.
        # Corresponds to the JSON property `metricSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrajectorySingleToolUseSpec]
        attr_accessor :metric_spec
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @instances = args[:instances] if args.key?(:instances)
          @metric_spec = args[:metric_spec] if args.key?(:metric_spec)
        end
      end
      
      # Spec for TrajectorySingleToolUse instance.
      class GoogleCloudAiplatformV1TrajectorySingleToolUseInstance
        include Google::Apis::Core::Hashable
      
        # Spec for trajectory.
        # Corresponds to the JSON property `predictedTrajectory`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Trajectory]
        attr_accessor :predicted_trajectory
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @predicted_trajectory = args[:predicted_trajectory] if args.key?(:predicted_trajectory)
        end
      end
      
      # TrajectorySingleToolUse metric value for an instance.
      class GoogleCloudAiplatformV1TrajectorySingleToolUseMetricValue
        include Google::Apis::Core::Hashable
      
        # Output only. TrajectorySingleToolUse score.
        # Corresponds to the JSON property `score`
        # @return [Float]
        attr_accessor :score
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @score = args[:score] if args.key?(:score)
        end
      end
      
      # Results for TrajectorySingleToolUse metric.
      class GoogleCloudAiplatformV1TrajectorySingleToolUseResults
        include Google::Apis::Core::Hashable
      
        # Output only. TrajectorySingleToolUse metric values.
        # Corresponds to the JSON property `trajectorySingleToolUseMetricValues`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrajectorySingleToolUseMetricValue>]
        attr_accessor :trajectory_single_tool_use_metric_values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @trajectory_single_tool_use_metric_values = args[:trajectory_single_tool_use_metric_values] if args.key?(:trajectory_single_tool_use_metric_values)
        end
      end
      
      # Spec for TrajectorySingleToolUse metric - returns 1 if tool is present in the
      # predicted trajectory, else 0.
      class GoogleCloudAiplatformV1TrajectorySingleToolUseSpec
        include Google::Apis::Core::Hashable
      
        # Required. Spec for tool name to be checked for in the predicted trajectory.
        # Corresponds to the JSON property `toolName`
        # @return [String]
        attr_accessor :tool_name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @tool_name = args[:tool_name] if args.key?(:tool_name)
        end
      end
      
      # A message representing a Trial. A Trial contains a unique set of Parameters
      # that has been or will be evaluated, along with the objective metrics got by
      # running the Trial.
      class GoogleCloudAiplatformV1Trial
        include Google::Apis::Core::Hashable
      
        # Output only. The identifier of the client that originally requested this Trial.
        # Each client is identified by a unique client_id. When a client asks for a
        # suggestion, Vertex AI Vizier will assign it a Trial. The client should
        # evaluate the Trial, complete it, and report back to Vertex AI Vizier. If
        # suggestion is asked again by same client_id before the Trial is completed, the
        # same Trial will be returned. Multiple clients with different client_ids can
        # ask for suggestions simultaneously, each of them will get their own Trial.
        # Corresponds to the JSON property `clientId`
        # @return [String]
        attr_accessor :client_id
      
        # Output only. The CustomJob name linked to the Trial. It's set for a
        # HyperparameterTuningJob's Trial.
        # Corresponds to the JSON property `customJob`
        # @return [String]
        attr_accessor :custom_job
      
        # Output only. Time when the Trial's status changed to `SUCCEEDED` or `
        # INFEASIBLE`.
        # Corresponds to the JSON property `endTime`
        # @return [String]
        attr_accessor :end_time
      
        # A message representing a Measurement of a Trial. A Measurement contains the
        # Metrics got by executing a Trial using suggested hyperparameter values.
        # Corresponds to the JSON property `finalMeasurement`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Measurement]
        attr_accessor :final_measurement
      
        # Output only. The identifier of the Trial assigned by the service.
        # Corresponds to the JSON property `id`
        # @return [String]
        attr_accessor :id
      
        # Output only. A human readable string describing why the Trial is infeasible.
        # This is set only if Trial state is `INFEASIBLE`.
        # Corresponds to the JSON property `infeasibleReason`
        # @return [String]
        attr_accessor :infeasible_reason
      
        # Output only. A list of measurements that are strictly lexicographically
        # ordered by their induced tuples (steps, elapsed_duration). These are used for
        # early stopping computations.
        # Corresponds to the JSON property `measurements`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Measurement>]
        attr_accessor :measurements
      
        # Output only. Resource name of the Trial assigned by the service.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # Output only. The parameters of the Trial.
        # Corresponds to the JSON property `parameters`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrialParameter>]
        attr_accessor :parameters
      
        # Output only. Time when the Trial was started.
        # Corresponds to the JSON property `startTime`
        # @return [String]
        attr_accessor :start_time
      
        # Output only. The detailed state of the Trial.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        # Output only. URIs for accessing [interactive shells](https://cloud.google.com/
        # vertex-ai/docs/training/monitor-debug-interactive-shell) (one URI for each
        # training node). Only available if this trial is part of a
        # HyperparameterTuningJob and the job's trial_job_spec.enable_web_access field
        # is `true`. The keys are names of each node used for the trial; for example, `
        # workerpool0-0` for the primary node, `workerpool1-0` for the first node in the
        # second worker pool, and `workerpool1-1` for the second node in the second
        # worker pool. The values are the URIs for each node's interactive shell.
        # Corresponds to the JSON property `webAccessUris`
        # @return [Hash<String,String>]
        attr_accessor :web_access_uris
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @client_id = args[:client_id] if args.key?(:client_id)
          @custom_job = args[:custom_job] if args.key?(:custom_job)
          @end_time = args[:end_time] if args.key?(:end_time)
          @final_measurement = args[:final_measurement] if args.key?(:final_measurement)
          @id = args[:id] if args.key?(:id)
          @infeasible_reason = args[:infeasible_reason] if args.key?(:infeasible_reason)
          @measurements = args[:measurements] if args.key?(:measurements)
          @name = args[:name] if args.key?(:name)
          @parameters = args[:parameters] if args.key?(:parameters)
          @start_time = args[:start_time] if args.key?(:start_time)
          @state = args[:state] if args.key?(:state)
          @web_access_uris = args[:web_access_uris] if args.key?(:web_access_uris)
        end
      end
      
      # 
      class GoogleCloudAiplatformV1TrialContext
        include Google::Apis::Core::Hashable
      
        # A human-readable field which can store a description of this context. This
        # will become part of the resulting Trial's description field.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # If/when a Trial is generated or selected from this Context, its Parameters
        # will match any parameters specified here. (I.e. if this context specifies
        # parameter name:'a' int_value:3, then a resulting Trial will have int_value:3
        # for its parameter named 'a'.) Note that we first attempt to match existing
        # REQUESTED Trials with contexts, and if there are no matches, we generate
        # suggestions in the subspace defined by the parameters specified here. NOTE: a
        # Context without any Parameters matches the entire feasible search space.
        # Corresponds to the JSON property `parameters`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TrialParameter>]
        attr_accessor :parameters
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @description = args[:description] if args.key?(:description)
          @parameters = args[:parameters] if args.key?(:parameters)
        end
      end
      
      # A message representing a parameter to be tuned.
      class GoogleCloudAiplatformV1TrialParameter
        include Google::Apis::Core::Hashable
      
        # Output only. The ID of the parameter. The parameter should be defined in
        # StudySpec's Parameters.
        # Corresponds to the JSON property `parameterId`
        # @return [String]
        attr_accessor :parameter_id
      
        # Output only. The value of the parameter. `number_value` will be set if a
        # parameter defined in StudySpec is in type 'INTEGER', 'DOUBLE' or 'DISCRETE'. `
        # string_value` will be set if a parameter defined in StudySpec is in type '
        # CATEGORICAL'.
        # Corresponds to the JSON property `value`
        # @return [Object]
        attr_accessor :value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @parameter_id = args[:parameter_id] if args.key?(:parameter_id)
          @value = args[:value] if args.key?(:value)
        end
      end
      
      # The Model Registry Model and Online Prediction Endpoint associated with this
      # TuningJob.
      class GoogleCloudAiplatformV1TunedModel
        include Google::Apis::Core::Hashable
      
        # Output only. The checkpoints associated with this TunedModel. This field is
        # only populated for tuning jobs that enable intermediate checkpoints.
        # Corresponds to the JSON property `checkpoints`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TunedModelCheckpoint>]
        attr_accessor :checkpoints
      
        # Output only. A resource name of an Endpoint. Format: `projects/`project`/
        # locations/`location`/endpoints/`endpoint``.
        # Corresponds to the JSON property `endpoint`
        # @return [String]
        attr_accessor :endpoint
      
        # Output only. The resource name of the TunedModel. Format: `projects/`project`/
        # locations/`location`/models/`model`@`version_id`` When tuning from a base
        # model, the version_id will be 1. For continuous tuning, the version id will be
        # incremented by 1 from the last version id in the parent model. E.g., `projects/
        # `project`/locations/`location`/models/`model`@`last_version_id + 1``
        # Corresponds to the JSON property `model`
        # @return [String]
        attr_accessor :model
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @checkpoints = args[:checkpoints] if args.key?(:checkpoints)
          @endpoint = args[:endpoint] if args.key?(:endpoint)
          @model = args[:model] if args.key?(:model)
        end
      end
      
      # TunedModelCheckpoint for the Tuned Model of a Tuning Job.
      class GoogleCloudAiplatformV1TunedModelCheckpoint
        include Google::Apis::Core::Hashable
      
        # The ID of the checkpoint.
        # Corresponds to the JSON property `checkpointId`
        # @return [String]
        attr_accessor :checkpoint_id
      
        # The Endpoint resource name that the checkpoint is deployed to. Format: `
        # projects/`project`/locations/`location`/endpoints/`endpoint``.
        # Corresponds to the JSON property `endpoint`
        # @return [String]
        attr_accessor :endpoint
      
        # The epoch of the checkpoint.
        # Corresponds to the JSON property `epoch`
        # @return [Fixnum]
        attr_accessor :epoch
      
        # The step of the checkpoint.
        # Corresponds to the JSON property `step`
        # @return [Fixnum]
        attr_accessor :step
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @checkpoint_id = args[:checkpoint_id] if args.key?(:checkpoint_id)
          @endpoint = args[:endpoint] if args.key?(:endpoint)
          @epoch = args[:epoch] if args.key?(:epoch)
          @step = args[:step] if args.key?(:step)
        end
      end
      
      # TunedModel Reference for legacy model migration.
      class GoogleCloudAiplatformV1TunedModelRef
        include Google::Apis::Core::Hashable
      
        # Support migration from tuning job list page, from bison model to gemini model.
        # Corresponds to the JSON property `pipelineJob`
        # @return [String]
        attr_accessor :pipeline_job
      
        # Support migration from model registry.
        # Corresponds to the JSON property `tunedModel`
        # @return [String]
        attr_accessor :tuned_model
      
        # Support migration from tuning job list page, from gemini-1.0-pro-002 to 1.5
        # and above.
        # Corresponds to the JSON property `tuningJob`
        # @return [String]
        attr_accessor :tuning_job
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @pipeline_job = args[:pipeline_job] if args.key?(:pipeline_job)
          @tuned_model = args[:tuned_model] if args.key?(:tuned_model)
          @tuning_job = args[:tuning_job] if args.key?(:tuning_job)
        end
      end
      
      # The tuning data statistic values for TuningJob.
      class GoogleCloudAiplatformV1TuningDataStats
        include Google::Apis::Core::Hashable
      
        # Tuning data statistics for Supervised Tuning.
        # Corresponds to the JSON property `supervisedTuningDataStats`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SupervisedTuningDataStats]
        attr_accessor :supervised_tuning_data_stats
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @supervised_tuning_data_stats = args[:supervised_tuning_data_stats] if args.key?(:supervised_tuning_data_stats)
        end
      end
      
      # Represents a TuningJob that runs with Google owned models.
      class GoogleCloudAiplatformV1TuningJob
        include Google::Apis::Core::Hashable
      
        # The base model that is being tuned. See [Supported models](https://cloud.
        # google.com/vertex-ai/generative-ai/docs/model-reference/tuning#
        # supported_models).
        # Corresponds to the JSON property `baseModel`
        # @return [String]
        attr_accessor :base_model
      
        # Output only. Time when the TuningJob was created.
        # Corresponds to the JSON property `createTime`
        # @return [String]
        attr_accessor :create_time
      
        # Optional. The description of the TuningJob.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Represents a customer-managed encryption key spec that can be applied to a top-
        # level resource.
        # Corresponds to the JSON property `encryptionSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1EncryptionSpec]
        attr_accessor :encryption_spec
      
        # Output only. Time when the TuningJob entered any of the following JobStates: `
        # JOB_STATE_SUCCEEDED`, `JOB_STATE_FAILED`, `JOB_STATE_CANCELLED`, `
        # JOB_STATE_EXPIRED`.
        # Corresponds to the JSON property `endTime`
        # @return [String]
        attr_accessor :end_time
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `error`
        # @return [Google::Apis::AiplatformV1::GoogleRpcStatus]
        attr_accessor :error
      
        # Output only. The Experiment associated with this TuningJob.
        # Corresponds to the JSON property `experiment`
        # @return [String]
        attr_accessor :experiment
      
        # Optional. The labels with user-defined metadata to organize TuningJob and
        # generated resources such as Model and Endpoint. Label keys and values can be
        # no longer than 64 characters (Unicode codepoints), can only contain lowercase
        # letters, numeric characters, underscores and dashes. International characters
        # are allowed. See https://goo.gl/xmQnxf for more information and examples of
        # labels.
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # Output only. Identifier. Resource name of a TuningJob. Format: `projects/`
        # project`/locations/`location`/tuningJobs/`tuning_job``
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # The service account that the tuningJob workload runs as. If not specified, the
        # Vertex AI Secure Fine-Tuned Service Agent in the project will be used. See
        # https://cloud.google.com/iam/docs/service-agents#vertex-ai-secure-fine-tuning-
        # service-agent Users starting the pipeline must have the `iam.serviceAccounts.
        # actAs` permission on this service account.
        # Corresponds to the JSON property `serviceAccount`
        # @return [String]
        attr_accessor :service_account
      
        # Output only. Time when the TuningJob for the first time entered the `
        # JOB_STATE_RUNNING` state.
        # Corresponds to the JSON property `startTime`
        # @return [String]
        attr_accessor :start_time
      
        # Output only. The detailed state of the job.
        # Corresponds to the JSON property `state`
        # @return [String]
        attr_accessor :state
      
        # Tuning Spec for Supervised Tuning for first party models.
        # Corresponds to the JSON property `supervisedTuningSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SupervisedTuningSpec]
        attr_accessor :supervised_tuning_spec
      
        # The Model Registry Model and Online Prediction Endpoint associated with this
        # TuningJob.
        # Corresponds to the JSON property `tunedModel`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TunedModel]
        attr_accessor :tuned_model
      
        # Optional. The display name of the TunedModel. The name can be up to 128
        # characters long and can consist of any UTF-8 characters.
        # Corresponds to the JSON property `tunedModelDisplayName`
        # @return [String]
        attr_accessor :tuned_model_display_name
      
        # The tuning data statistic values for TuningJob.
        # Corresponds to the JSON property `tuningDataStats`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TuningDataStats]
        attr_accessor :tuning_data_stats
      
        # Output only. Time when the TuningJob was most recently updated.
        # Corresponds to the JSON property `updateTime`
        # @return [String]
        attr_accessor :update_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @base_model = args[:base_model] if args.key?(:base_model)
          @create_time = args[:create_time] if args.key?(:create_time)
          @description = args[:description] if args.key?(:description)
          @encryption_spec = args[:encryption_spec] if args.key?(:encryption_spec)
          @end_time = args[:end_time] if args.key?(:end_time)
          @error = args[:error] if args.key?(:error)
          @experiment = args[:experiment] if args.key?(:experiment)
          @labels = args[:labels] if args.key?(:labels)
          @name = args[:name] if args.key?(:name)
          @service_account = args[:service_account] if args.key?(:service_account)
          @start_time = args[:start_time] if args.key?(:start_time)
          @state = args[:state] if args.key?(:state)
          @supervised_tuning_spec = args[:supervised_tuning_spec] if args.key?(:supervised_tuning_spec)
          @tuned_model = args[:tuned_model] if args.key?(:tuned_model)
          @tuned_model_display_name = args[:tuned_model_display_name] if args.key?(:tuned_model_display_name)
          @tuning_data_stats = args[:tuning_data_stats] if args.key?(:tuning_data_stats)
          @update_time = args[:update_time] if args.key?(:update_time)
        end
      end
      
      # Runtime operation information for IndexEndpointService.UndeployIndex.
      class GoogleCloudAiplatformV1UndeployIndexOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Request message for IndexEndpointService.UndeployIndex.
      class GoogleCloudAiplatformV1UndeployIndexRequest
        include Google::Apis::Core::Hashable
      
        # Required. The ID of the DeployedIndex to be undeployed from the IndexEndpoint.
        # Corresponds to the JSON property `deployedIndexId`
        # @return [String]
        attr_accessor :deployed_index_id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @deployed_index_id = args[:deployed_index_id] if args.key?(:deployed_index_id)
        end
      end
      
      # Response message for IndexEndpointService.UndeployIndex.
      class GoogleCloudAiplatformV1UndeployIndexResponse
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Runtime operation information for EndpointService.UndeployModel.
      class GoogleCloudAiplatformV1UndeployModelOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Request message for EndpointService.UndeployModel.
      class GoogleCloudAiplatformV1UndeployModelRequest
        include Google::Apis::Core::Hashable
      
        # Required. The ID of the DeployedModel to be undeployed from the Endpoint.
        # Corresponds to the JSON property `deployedModelId`
        # @return [String]
        attr_accessor :deployed_model_id
      
        # If this field is provided, then the Endpoint's traffic_split will be
        # overwritten with it. If last DeployedModel is being undeployed from the
        # Endpoint, the [Endpoint.traffic_split] will always end up empty when this call
        # returns. A DeployedModel will be successfully undeployed only if it doesn't
        # have any traffic assigned to it when this method executes, or if this field
        # unassigns any traffic to it.
        # Corresponds to the JSON property `trafficSplit`
        # @return [Hash<String,Fixnum>]
        attr_accessor :traffic_split
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @deployed_model_id = args[:deployed_model_id] if args.key?(:deployed_model_id)
          @traffic_split = args[:traffic_split] if args.key?(:traffic_split)
        end
      end
      
      # Response message for EndpointService.UndeployModel.
      class GoogleCloudAiplatformV1UndeployModelResponse
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Contains model information necessary to perform batch prediction without
      # requiring a full model import.
      class GoogleCloudAiplatformV1UnmanagedContainerModel
        include Google::Apis::Core::Hashable
      
        # The path to the directory containing the Model artifact and any of its
        # supporting files.
        # Corresponds to the JSON property `artifactUri`
        # @return [String]
        attr_accessor :artifact_uri
      
        # Specification of a container for serving predictions. Some fields in this
        # message correspond to fields in the [Kubernetes Container v1 core
        # specification](https://kubernetes.io/docs/reference/generated/kubernetes-api/
        # v1.23/#container-v1-core).
        # Corresponds to the JSON property `containerSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ModelContainerSpec]
        attr_accessor :container_spec
      
        # Contains the schemata used in Model's predictions and explanations via
        # PredictionService.Predict, PredictionService.Explain and BatchPredictionJob.
        # Corresponds to the JSON property `predictSchemata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PredictSchemata]
        attr_accessor :predict_schemata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @artifact_uri = args[:artifact_uri] if args.key?(:artifact_uri)
          @container_spec = args[:container_spec] if args.key?(:container_spec)
          @predict_schemata = args[:predict_schemata] if args.key?(:predict_schemata)
        end
      end
      
      # Runtime operation information for UpdateDeploymentResourcePool method.
      class GoogleCloudAiplatformV1UpdateDeploymentResourcePoolOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Request message for EndpointService.UpdateEndpointLongRunning.
      class GoogleCloudAiplatformV1UpdateEndpointLongRunningRequest
        include Google::Apis::Core::Hashable
      
        # Models are deployed into it, and afterwards Endpoint is called to obtain
        # predictions and explanations.
        # Corresponds to the JSON property `endpoint`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Endpoint]
        attr_accessor :endpoint
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @endpoint = args[:endpoint] if args.key?(:endpoint)
        end
      end
      
      # Runtime operation information for ModelService.UpdateExplanationDataset.
      class GoogleCloudAiplatformV1UpdateExplanationDatasetOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Request message for ModelService.UpdateExplanationDataset.
      class GoogleCloudAiplatformV1UpdateExplanationDatasetRequest
        include Google::Apis::Core::Hashable
      
        # Example-based explainability that returns the nearest neighbors from the
        # provided dataset.
        # Corresponds to the JSON property `examples`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Examples]
        attr_accessor :examples
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @examples = args[:examples] if args.key?(:examples)
        end
      end
      
      # Response message of ModelService.UpdateExplanationDataset operation.
      class GoogleCloudAiplatformV1UpdateExplanationDatasetResponse
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Details of operations that perform update FeatureGroup.
      class GoogleCloudAiplatformV1UpdateFeatureGroupOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Details of operations that perform update FeatureOnlineStore.
      class GoogleCloudAiplatformV1UpdateFeatureOnlineStoreOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Details of operations that perform update Feature.
      class GoogleCloudAiplatformV1UpdateFeatureOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Details of operations that perform update FeatureView.
      class GoogleCloudAiplatformV1UpdateFeatureViewOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Details of operations that perform update Featurestore.
      class GoogleCloudAiplatformV1UpdateFeaturestoreOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Runtime operation information for IndexService.UpdateIndex.
      class GoogleCloudAiplatformV1UpdateIndexOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        # Runtime operation metadata with regard to Matching Engine Index.
        # Corresponds to the JSON property `nearestNeighborSearchOperationMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NearestNeighborSearchOperationMetadata]
        attr_accessor :nearest_neighbor_search_operation_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
          @nearest_neighbor_search_operation_metadata = args[:nearest_neighbor_search_operation_metadata] if args.key?(:nearest_neighbor_search_operation_metadata)
        end
      end
      
      # Runtime operation information for JobService.
      # UpdateModelDeploymentMonitoringJob.
      class GoogleCloudAiplatformV1UpdateModelDeploymentMonitoringJobOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Details of operations that perform update PersistentResource.
      class GoogleCloudAiplatformV1UpdatePersistentResourceOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        # Progress Message for Update LRO
        # Corresponds to the JSON property `progressMessage`
        # @return [String]
        attr_accessor :progress_message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
          @progress_message = args[:progress_message] if args.key?(:progress_message)
        end
      end
      
      # Runtime operation metadata for SpecialistPoolService.UpdateSpecialistPool.
      class GoogleCloudAiplatformV1UpdateSpecialistPoolOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        # Output only. The name of the SpecialistPool to which the specialists are being
        # added. Format: `projects/`project_id`/locations/`location_id`/specialistPools/`
        # specialist_pool``
        # Corresponds to the JSON property `specialistPool`
        # @return [String]
        attr_accessor :specialist_pool
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
          @specialist_pool = args[:specialist_pool] if args.key?(:specialist_pool)
        end
      end
      
      # Details of operations that perform update Tensorboard.
      class GoogleCloudAiplatformV1UpdateTensorboardOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Metadata information for NotebookService.UpgradeNotebookRuntime.
      class GoogleCloudAiplatformV1UpgradeNotebookRuntimeOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        # A human-readable message that shows the intermediate progress details of
        # NotebookRuntime.
        # Corresponds to the JSON property `progressMessage`
        # @return [String]
        attr_accessor :progress_message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
          @progress_message = args[:progress_message] if args.key?(:progress_message)
        end
      end
      
      # Request message for NotebookService.UpgradeNotebookRuntime.
      class GoogleCloudAiplatformV1UpgradeNotebookRuntimeRequest
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Details of ModelService.UploadModel operation.
      class GoogleCloudAiplatformV1UploadModelOperationMetadata
        include Google::Apis::Core::Hashable
      
        # Generic Metadata shared by all operations.
        # Corresponds to the JSON property `genericMetadata`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1GenericOperationMetadata]
        attr_accessor :generic_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @generic_metadata = args[:generic_metadata] if args.key?(:generic_metadata)
        end
      end
      
      # Request message for ModelService.UploadModel.
      class GoogleCloudAiplatformV1UploadModelRequest
        include Google::Apis::Core::Hashable
      
        # A trained machine learning Model.
        # Corresponds to the JSON property `model`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1Model]
        attr_accessor :model
      
        # Optional. The ID to use for the uploaded Model, which will become the final
        # component of the model resource name. This value may be up to 63 characters,
        # and valid characters are `[a-z0-9_-]`. The first character cannot be a number
        # or hyphen.
        # Corresponds to the JSON property `modelId`
        # @return [String]
        attr_accessor :model_id
      
        # Optional. The resource name of the model into which to upload the version.
        # Only specify this field when uploading a new version.
        # Corresponds to the JSON property `parentModel`
        # @return [String]
        attr_accessor :parent_model
      
        # Optional. The user-provided custom service account to use to do the model
        # upload. If empty, [Vertex AI Service Agent](https://cloud.google.com/vertex-ai/
        # docs/general/access-control#service-agents) will be used to access resources
        # needed to upload the model. This account must belong to the target project
        # where the model is uploaded to, i.e., the project specified in the `parent`
        # field of this request and have necessary read permissions (to Google Cloud
        # Storage, Artifact Registry, etc.).
        # Corresponds to the JSON property `serviceAccount`
        # @return [String]
        attr_accessor :service_account
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @model = args[:model] if args.key?(:model)
          @model_id = args[:model_id] if args.key?(:model_id)
          @parent_model = args[:parent_model] if args.key?(:parent_model)
          @service_account = args[:service_account] if args.key?(:service_account)
        end
      end
      
      # Response message of ModelService.UploadModel operation.
      class GoogleCloudAiplatformV1UploadModelResponse
        include Google::Apis::Core::Hashable
      
        # The name of the uploaded Model resource. Format: `projects/`project`/locations/
        # `location`/models/`model``
        # Corresponds to the JSON property `model`
        # @return [String]
        attr_accessor :model
      
        # Output only. The version ID of the model that is uploaded.
        # Corresponds to the JSON property `modelVersionId`
        # @return [String]
        attr_accessor :model_version_id
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @model = args[:model] if args.key?(:model)
          @model_version_id = args[:model_version_id] if args.key?(:model_version_id)
        end
      end
      
      # Config for uploading RagFile.
      class GoogleCloudAiplatformV1UploadRagFileConfig
        include Google::Apis::Core::Hashable
      
        # Specifies the transformation config for RagFiles.
        # Corresponds to the JSON property `ragFileTransformationConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagFileTransformationConfig]
        attr_accessor :rag_file_transformation_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @rag_file_transformation_config = args[:rag_file_transformation_config] if args.key?(:rag_file_transformation_config)
        end
      end
      
      # Request message for VertexRagDataService.UploadRagFile.
      class GoogleCloudAiplatformV1UploadRagFileRequest
        include Google::Apis::Core::Hashable
      
        # A RagFile contains user data for chunking, embedding and indexing.
        # Corresponds to the JSON property `ragFile`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagFile]
        attr_accessor :rag_file
      
        # Config for uploading RagFile.
        # Corresponds to the JSON property `uploadRagFileConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1UploadRagFileConfig]
        attr_accessor :upload_rag_file_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @rag_file = args[:rag_file] if args.key?(:rag_file)
          @upload_rag_file_config = args[:upload_rag_file_config] if args.key?(:upload_rag_file_config)
        end
      end
      
      # Response message for VertexRagDataService.UploadRagFile.
      class GoogleCloudAiplatformV1UploadRagFileResponse
        include Google::Apis::Core::Hashable
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `error`
        # @return [Google::Apis::AiplatformV1::GoogleRpcStatus]
        attr_accessor :error
      
        # A RagFile contains user data for chunking, embedding and indexing.
        # Corresponds to the JSON property `ragFile`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagFile]
        attr_accessor :rag_file
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @error = args[:error] if args.key?(:error)
          @rag_file = args[:rag_file] if args.key?(:rag_file)
        end
      end
      
      # Request message for IndexService.UpsertDatapoints
      class GoogleCloudAiplatformV1UpsertDatapointsRequest
        include Google::Apis::Core::Hashable
      
        # A list of datapoints to be created/updated.
        # Corresponds to the JSON property `datapoints`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1IndexDatapoint>]
        attr_accessor :datapoints
      
        # Optional. Update mask is used to specify the fields to be overwritten in the
        # datapoints by the update. The fields specified in the update_mask are relative
        # to each IndexDatapoint inside datapoints, not the full request. Updatable
        # fields: * Use `all_restricts` to update both restricts and numeric_restricts.
        # Corresponds to the JSON property `updateMask`
        # @return [String]
        attr_accessor :update_mask
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @datapoints = args[:datapoints] if args.key?(:datapoints)
          @update_mask = args[:update_mask] if args.key?(:update_mask)
        end
      end
      
      # Response message for IndexService.UpsertDatapoints
      class GoogleCloudAiplatformV1UpsertDatapointsResponse
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Tool to support URL context.
      class GoogleCloudAiplatformV1UrlContext
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Metadata related to url context retrieval tool.
      class GoogleCloudAiplatformV1UrlContextMetadata
        include Google::Apis::Core::Hashable
      
        # Output only. List of url context.
        # Corresponds to the JSON property `urlMetadata`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1UrlMetadata>]
        attr_accessor :url_metadata
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @url_metadata = args[:url_metadata] if args.key?(:url_metadata)
        end
      end
      
      # Context of the a single url retrieval.
      class GoogleCloudAiplatformV1UrlMetadata
        include Google::Apis::Core::Hashable
      
        # Retrieved url by the tool.
        # Corresponds to the JSON property `retrievedUrl`
        # @return [String]
        attr_accessor :retrieved_url
      
        # Status of the url retrieval.
        # Corresponds to the JSON property `urlRetrievalStatus`
        # @return [String]
        attr_accessor :url_retrieval_status
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @retrieved_url = args[:retrieved_url] if args.key?(:retrieved_url)
          @url_retrieval_status = args[:url_retrieval_status] if args.key?(:url_retrieval_status)
        end
      end
      
      # References an API call. It contains more information about long running
      # operation and Jobs that are triggered by the API call.
      class GoogleCloudAiplatformV1UserActionReference
        include Google::Apis::Core::Hashable
      
        # For API calls that start a LabelingJob. Resource name of the LabelingJob.
        # Format: `projects/`project`/locations/`location`/dataLabelingJobs/`
        # data_labeling_job``
        # Corresponds to the JSON property `dataLabelingJob`
        # @return [String]
        attr_accessor :data_labeling_job
      
        # The method name of the API RPC call. For example, "/google.cloud.aiplatform.`
        # apiVersion`.DatasetService.CreateDataset"
        # Corresponds to the JSON property `method`
        # @return [String]
        attr_accessor :method_prop
      
        # For API calls that return a long running operation. Resource name of the long
        # running operation. Format: `projects/`project`/locations/`location`/operations/
        # `operation``
        # Corresponds to the JSON property `operation`
        # @return [String]
        attr_accessor :operation
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @data_labeling_job = args[:data_labeling_job] if args.key?(:data_labeling_job)
          @method_prop = args[:method_prop] if args.key?(:method_prop)
          @operation = args[:operation] if args.key?(:operation)
        end
      end
      
      # Value is the value of the field.
      class GoogleCloudAiplatformV1Value
        include Google::Apis::Core::Hashable
      
        # A double value.
        # Corresponds to the JSON property `doubleValue`
        # @return [Float]
        attr_accessor :double_value
      
        # An integer value.
        # Corresponds to the JSON property `intValue`
        # @return [Fixnum]
        attr_accessor :int_value
      
        # A string value.
        # Corresponds to the JSON property `stringValue`
        # @return [String]
        attr_accessor :string_value
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @double_value = args[:double_value] if args.key?(:double_value)
          @int_value = args[:int_value] if args.key?(:int_value)
          @string_value = args[:string_value] if args.key?(:string_value)
        end
      end
      
      # Retrieve from Vertex AI Search datastore or engine for grounding. datastore
      # and engine are mutually exclusive. See https://cloud.google.com/products/agent-
      # builder
      class GoogleCloudAiplatformV1VertexAiSearch
        include Google::Apis::Core::Hashable
      
        # Specifications that define the specific DataStores to be searched, along with
        # configurations for those data stores. This is only considered for Engines with
        # multiple data stores. It should only be set if engine is used.
        # Corresponds to the JSON property `dataStoreSpecs`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1VertexAiSearchDataStoreSpec>]
        attr_accessor :data_store_specs
      
        # Optional. Fully-qualified Vertex AI Search data store resource ID. Format: `
        # projects/`project`/locations/`location`/collections/`collection`/dataStores/`
        # dataStore``
        # Corresponds to the JSON property `datastore`
        # @return [String]
        attr_accessor :datastore
      
        # Optional. Fully-qualified Vertex AI Search engine resource ID. Format: `
        # projects/`project`/locations/`location`/collections/`collection`/engines/`
        # engine``
        # Corresponds to the JSON property `engine`
        # @return [String]
        attr_accessor :engine
      
        # Optional. Filter strings to be passed to the search API.
        # Corresponds to the JSON property `filter`
        # @return [String]
        attr_accessor :filter
      
        # Optional. Number of search results to return per query. The default value is
        # 10. The maximumm allowed value is 10.
        # Corresponds to the JSON property `maxResults`
        # @return [Fixnum]
        attr_accessor :max_results
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @data_store_specs = args[:data_store_specs] if args.key?(:data_store_specs)
          @datastore = args[:datastore] if args.key?(:datastore)
          @engine = args[:engine] if args.key?(:engine)
          @filter = args[:filter] if args.key?(:filter)
          @max_results = args[:max_results] if args.key?(:max_results)
        end
      end
      
      # Define data stores within engine to filter on in a search call and
      # configurations for those data stores. For more information, see https://cloud.
      # google.com/generative-ai-app-builder/docs/reference/rpc/google.cloud.
      # discoveryengine.v1#datastorespec
      class GoogleCloudAiplatformV1VertexAiSearchDataStoreSpec
        include Google::Apis::Core::Hashable
      
        # Full resource name of DataStore, such as Format: `projects/`project`/locations/
        # `location`/collections/`collection`/dataStores/`dataStore``
        # Corresponds to the JSON property `dataStore`
        # @return [String]
        attr_accessor :data_store
      
        # Optional. Filter specification to filter documents in the data store specified
        # by data_store field. For more information on filtering, see [Filtering](https:/
        # /cloud.google.com/generative-ai-app-builder/docs/filter-search-metadata)
        # Corresponds to the JSON property `filter`
        # @return [String]
        attr_accessor :filter
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @data_store = args[:data_store] if args.key?(:data_store)
          @filter = args[:filter] if args.key?(:filter)
        end
      end
      
      # Config for the Vertex AI Search.
      class GoogleCloudAiplatformV1VertexAiSearchConfig
        include Google::Apis::Core::Hashable
      
        # Vertex AI Search Serving Config resource full name. For example, `projects/`
        # project`/locations/`location`/collections/`collection`/engines/`engine`/
        # servingConfigs/`serving_config`` or `projects/`project`/locations/`location`/
        # collections/`collection`/dataStores/`data_store`/servingConfigs/`
        # serving_config``.
        # Corresponds to the JSON property `servingConfig`
        # @return [String]
        attr_accessor :serving_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @serving_config = args[:serving_config] if args.key?(:serving_config)
        end
      end
      
      # Retrieve from Vertex RAG Store for grounding.
      class GoogleCloudAiplatformV1VertexRagStore
        include Google::Apis::Core::Hashable
      
        # Optional. The representation of the rag source. It can be used to specify
        # corpus only or ragfiles. Currently only support one corpus or multiple files
        # from one corpus. In the future we may open up multiple corpora support.
        # Corresponds to the JSON property `ragResources`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1VertexRagStoreRagResource>]
        attr_accessor :rag_resources
      
        # Specifies the context retrieval config.
        # Corresponds to the JSON property `ragRetrievalConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1RagRetrievalConfig]
        attr_accessor :rag_retrieval_config
      
        # Optional. Number of top k results to return from the selected corpora.
        # Corresponds to the JSON property `similarityTopK`
        # @return [Fixnum]
        attr_accessor :similarity_top_k
      
        # Optional. Only return results with vector distance smaller than the threshold.
        # Corresponds to the JSON property `vectorDistanceThreshold`
        # @return [Float]
        attr_accessor :vector_distance_threshold
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @rag_resources = args[:rag_resources] if args.key?(:rag_resources)
          @rag_retrieval_config = args[:rag_retrieval_config] if args.key?(:rag_retrieval_config)
          @similarity_top_k = args[:similarity_top_k] if args.key?(:similarity_top_k)
          @vector_distance_threshold = args[:vector_distance_threshold] if args.key?(:vector_distance_threshold)
        end
      end
      
      # The definition of the Rag resource.
      class GoogleCloudAiplatformV1VertexRagStoreRagResource
        include Google::Apis::Core::Hashable
      
        # Optional. RagCorpora resource name. Format: `projects/`project`/locations/`
        # location`/ragCorpora/`rag_corpus``
        # Corresponds to the JSON property `ragCorpus`
        # @return [String]
        attr_accessor :rag_corpus
      
        # Optional. rag_file_id. The files should be in the same rag_corpus set in
        # rag_corpus field.
        # Corresponds to the JSON property `ragFileIds`
        # @return [Array<String>]
        attr_accessor :rag_file_ids
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @rag_corpus = args[:rag_corpus] if args.key?(:rag_corpus)
          @rag_file_ids = args[:rag_file_ids] if args.key?(:rag_file_ids)
        end
      end
      
      # Metadata describes the input video content.
      class GoogleCloudAiplatformV1VideoMetadata
        include Google::Apis::Core::Hashable
      
        # Optional. The end offset of the video.
        # Corresponds to the JSON property `endOffset`
        # @return [String]
        attr_accessor :end_offset
      
        # Optional. The frame rate of the video sent to the model. If not specified, the
        # default value will be 1.0. The fps range is (0.0, 24.0].
        # Corresponds to the JSON property `fps`
        # @return [Float]
        attr_accessor :fps
      
        # Optional. The start offset of the video.
        # Corresponds to the JSON property `startOffset`
        # @return [String]
        attr_accessor :start_offset
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @end_offset = args[:end_offset] if args.key?(:end_offset)
          @fps = args[:fps] if args.key?(:fps)
          @start_offset = args[:start_offset] if args.key?(:start_offset)
        end
      end
      
      # The configuration for the voice to use.
      class GoogleCloudAiplatformV1VoiceConfig
        include Google::Apis::Core::Hashable
      
        # The configuration for the prebuilt speaker to use.
        # Corresponds to the JSON property `prebuiltVoiceConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PrebuiltVoiceConfig]
        attr_accessor :prebuilt_voice_config
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @prebuilt_voice_config = args[:prebuilt_voice_config] if args.key?(:prebuilt_voice_config)
        end
      end
      
      # Represents the spec of a worker pool in a job.
      class GoogleCloudAiplatformV1WorkerPoolSpec
        include Google::Apis::Core::Hashable
      
        # The spec of a Container.
        # Corresponds to the JSON property `containerSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1ContainerSpec]
        attr_accessor :container_spec
      
        # Represents the spec of disk options.
        # Corresponds to the JSON property `diskSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1DiskSpec]
        attr_accessor :disk_spec
      
        # Optional. List of Lustre mounts.
        # Corresponds to the JSON property `lustreMounts`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1LustreMount>]
        attr_accessor :lustre_mounts
      
        # Specification of a single machine.
        # Corresponds to the JSON property `machineSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1MachineSpec]
        attr_accessor :machine_spec
      
        # Optional. List of NFS mount spec.
        # Corresponds to the JSON property `nfsMounts`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1NfsMount>]
        attr_accessor :nfs_mounts
      
        # The spec of a Python packaged code.
        # Corresponds to the JSON property `pythonPackageSpec`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1PythonPackageSpec]
        attr_accessor :python_package_spec
      
        # Optional. The number of worker replicas to use for this worker pool.
        # Corresponds to the JSON property `replicaCount`
        # @return [Fixnum]
        attr_accessor :replica_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @container_spec = args[:container_spec] if args.key?(:container_spec)
          @disk_spec = args[:disk_spec] if args.key?(:disk_spec)
          @lustre_mounts = args[:lustre_mounts] if args.key?(:lustre_mounts)
          @machine_spec = args[:machine_spec] if args.key?(:machine_spec)
          @nfs_mounts = args[:nfs_mounts] if args.key?(:nfs_mounts)
          @python_package_spec = args[:python_package_spec] if args.key?(:python_package_spec)
          @replica_count = args[:replica_count] if args.key?(:replica_count)
        end
      end
      
      # Contains Feature values to be written for a specific entity.
      class GoogleCloudAiplatformV1WriteFeatureValuesPayload
        include Google::Apis::Core::Hashable
      
        # Required. The ID of the entity.
        # Corresponds to the JSON property `entityId`
        # @return [String]
        attr_accessor :entity_id
      
        # Required. Feature values to be written, mapping from Feature ID to value. Up
        # to 100,000 `feature_values` entries may be written across all payloads. The
        # feature generation time, aligned by days, must be no older than five years (
        # 1825 days) and no later than one year (366 days) in the future.
        # Corresponds to the JSON property `featureValues`
        # @return [Hash<String,Google::Apis::AiplatformV1::GoogleCloudAiplatformV1FeatureValue>]
        attr_accessor :feature_values
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @entity_id = args[:entity_id] if args.key?(:entity_id)
          @feature_values = args[:feature_values] if args.key?(:feature_values)
        end
      end
      
      # Request message for FeaturestoreOnlineServingService.WriteFeatureValues.
      class GoogleCloudAiplatformV1WriteFeatureValuesRequest
        include Google::Apis::Core::Hashable
      
        # Required. The entities to be written. Up to 100,000 feature values can be
        # written across all `payloads`.
        # Corresponds to the JSON property `payloads`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1WriteFeatureValuesPayload>]
        attr_accessor :payloads
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @payloads = args[:payloads] if args.key?(:payloads)
        end
      end
      
      # Response message for FeaturestoreOnlineServingService.WriteFeatureValues.
      class GoogleCloudAiplatformV1WriteFeatureValuesResponse
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Request message for TensorboardService.WriteTensorboardExperimentData.
      class GoogleCloudAiplatformV1WriteTensorboardExperimentDataRequest
        include Google::Apis::Core::Hashable
      
        # Required. Requests containing per-run TensorboardTimeSeries data to write.
        # Corresponds to the JSON property `writeRunDataRequests`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1WriteTensorboardRunDataRequest>]
        attr_accessor :write_run_data_requests
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @write_run_data_requests = args[:write_run_data_requests] if args.key?(:write_run_data_requests)
        end
      end
      
      # Response message for TensorboardService.WriteTensorboardExperimentData.
      class GoogleCloudAiplatformV1WriteTensorboardExperimentDataResponse
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # Request message for TensorboardService.WriteTensorboardRunData.
      class GoogleCloudAiplatformV1WriteTensorboardRunDataRequest
        include Google::Apis::Core::Hashable
      
        # Required. The resource name of the TensorboardRun to write data to. Format: `
        # projects/`project`/locations/`location`/tensorboards/`tensorboard`/experiments/
        # `experiment`/runs/`run``
        # Corresponds to the JSON property `tensorboardRun`
        # @return [String]
        attr_accessor :tensorboard_run
      
        # Required. The TensorboardTimeSeries data to write. Values with in a time
        # series are indexed by their step value. Repeated writes to the same step will
        # overwrite the existing value for that step. The upper limit of data points per
        # write request is 5000.
        # Corresponds to the JSON property `timeSeriesData`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudAiplatformV1TimeSeriesData>]
        attr_accessor :time_series_data
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @tensorboard_run = args[:tensorboard_run] if args.key?(:tensorboard_run)
          @time_series_data = args[:time_series_data] if args.key?(:time_series_data)
        end
      end
      
      # Response message for TensorboardService.WriteTensorboardRunData.
      class GoogleCloudAiplatformV1WriteTensorboardRunDataResponse
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # An explanation method that redistributes Integrated Gradients attributions to
      # segmented regions, taking advantage of the model's fully differentiable
      # structure. Refer to this paper for more details: https://arxiv.org/abs/1906.
      # 02825 Supported only by image Models.
      class GoogleCloudAiplatformV1XraiAttribution
        include Google::Apis::Core::Hashable
      
        # Config for blur baseline. When enabled, a linear path from the maximally
        # blurred image to the input image is created. Using a blurred baseline instead
        # of zero (black image) is motivated by the BlurIG approach explained here:
        # https://arxiv.org/abs/2004.03383
        # Corresponds to the JSON property `blurBaselineConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1BlurBaselineConfig]
        attr_accessor :blur_baseline_config
      
        # Config for SmoothGrad approximation of gradients. When enabled, the gradients
        # are approximated by averaging the gradients from noisy samples in the vicinity
        # of the inputs. Adding noise can help improve the computed gradients. Refer to
        # this paper for more details: https://arxiv.org/pdf/1706.03825.pdf
        # Corresponds to the JSON property `smoothGradConfig`
        # @return [Google::Apis::AiplatformV1::GoogleCloudAiplatformV1SmoothGradConfig]
        attr_accessor :smooth_grad_config
      
        # Required. The number of steps for approximating the path integral. A good
        # value to start is 50 and gradually increase until the sum to diff property is
        # met within the desired error range. Valid range of its value is [1, 100],
        # inclusively.
        # Corresponds to the JSON property `stepCount`
        # @return [Fixnum]
        attr_accessor :step_count
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @blur_baseline_config = args[:blur_baseline_config] if args.key?(:blur_baseline_config)
          @smooth_grad_config = args[:smooth_grad_config] if args.key?(:smooth_grad_config)
          @step_count = args[:step_count] if args.key?(:step_count)
        end
      end
      
      # The response message for Locations.ListLocations.
      class GoogleCloudLocationListLocationsResponse
        include Google::Apis::Core::Hashable
      
        # A list of locations that matches the specified filter in the request.
        # Corresponds to the JSON property `locations`
        # @return [Array<Google::Apis::AiplatformV1::GoogleCloudLocationLocation>]
        attr_accessor :locations
      
        # The standard List next-page token.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @locations = args[:locations] if args.key?(:locations)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
        end
      end
      
      # A resource that represents a Google Cloud location.
      class GoogleCloudLocationLocation
        include Google::Apis::Core::Hashable
      
        # The friendly name for this location, typically a nearby city name. For example,
        # "Tokyo".
        # Corresponds to the JSON property `displayName`
        # @return [String]
        attr_accessor :display_name
      
        # Cross-service attributes for the location. For example `"cloud.googleapis.com/
        # region": "us-east1"`
        # Corresponds to the JSON property `labels`
        # @return [Hash<String,String>]
        attr_accessor :labels
      
        # The canonical id for this location. For example: `"us-east1"`.
        # Corresponds to the JSON property `locationId`
        # @return [String]
        attr_accessor :location_id
      
        # Service-specific metadata. For example the available capacity at the given
        # location.
        # Corresponds to the JSON property `metadata`
        # @return [Hash<String,Object>]
        attr_accessor :metadata
      
        # Resource name for the location, which may vary between implementations. For
        # example: `"projects/example-project/locations/us-east1"`
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @display_name = args[:display_name] if args.key?(:display_name)
          @labels = args[:labels] if args.key?(:labels)
          @location_id = args[:location_id] if args.key?(:location_id)
          @metadata = args[:metadata] if args.key?(:metadata)
          @name = args[:name] if args.key?(:name)
        end
      end
      
      # Associates `members`, or principals, with a `role`.
      class GoogleIamV1Binding
        include Google::Apis::Core::Hashable
      
        # Represents a textual expression in the Common Expression Language (CEL) syntax.
        # CEL is a C-like expression language. The syntax and semantics of CEL are
        # documented at https://github.com/google/cel-spec. Example (Comparison): title:
        # "Summary size limit" description: "Determines if a summary is less than 100
        # chars" expression: "document.summary.size() < 100" Example (Equality): title: "
        # Requestor is owner" description: "Determines if requestor is the document
        # owner" expression: "document.owner == request.auth.claims.email" Example (
        # Logic): title: "Public documents" description: "Determine whether the document
        # should be publicly visible" expression: "document.type != 'private' &&
        # document.type != 'internal'" Example (Data Manipulation): title: "Notification
        # string" description: "Create a notification string with a timestamp."
        # expression: "'New message received at ' + string(document.create_time)" The
        # exact variables and functions that may be referenced within an expression are
        # determined by the service that evaluates it. See the service documentation for
        # additional information.
        # Corresponds to the JSON property `condition`
        # @return [Google::Apis::AiplatformV1::GoogleTypeExpr]
        attr_accessor :condition
      
        # Specifies the principals requesting access for a Google Cloud resource. `
        # members` can have the following values: * `allUsers`: A special identifier
        # that represents anyone who is on the internet; with or without a Google
        # account. * `allAuthenticatedUsers`: A special identifier that represents
        # anyone who is authenticated with a Google account or a service account. Does
        # not include identities that come from external identity providers (IdPs)
        # through identity federation. * `user:`emailid``: An email address that
        # represents a specific Google account. For example, `alice@example.com` . * `
        # serviceAccount:`emailid``: An email address that represents a Google service
        # account. For example, `my-other-app@appspot.gserviceaccount.com`. * `
        # serviceAccount:`projectid`.svc.id.goog[`namespace`/`kubernetes-sa`]`: An
        # identifier for a [Kubernetes service account](https://cloud.google.com/
        # kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-
        # project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:`emailid``: An
        # email address that represents a Google group. For example, `admins@example.com`
        # . * `domain:`domain``: The G Suite domain (primary) that represents all the
        # users of that domain. For example, `google.com` or `example.com`. * `principal:
        # //iam.googleapis.com/locations/global/workforcePools/`pool_id`/subject/`
        # subject_attribute_value``: A single identity in a workforce identity pool. * `
        # principalSet://iam.googleapis.com/locations/global/workforcePools/`pool_id`/
        # group/`group_id``: All workforce identities in a group. * `principalSet://iam.
        # googleapis.com/locations/global/workforcePools/`pool_id`/attribute.`
        # attribute_name`/`attribute_value``: All workforce identities with a specific
        # attribute value. * `principalSet://iam.googleapis.com/locations/global/
        # workforcePools/`pool_id`/*`: All identities in a workforce identity pool. * `
        # principal://iam.googleapis.com/projects/`project_number`/locations/global/
        # workloadIdentityPools/`pool_id`/subject/`subject_attribute_value``: A single
        # identity in a workload identity pool. * `principalSet://iam.googleapis.com/
        # projects/`project_number`/locations/global/workloadIdentityPools/`pool_id`/
        # group/`group_id``: A workload identity pool group. * `principalSet://iam.
        # googleapis.com/projects/`project_number`/locations/global/
        # workloadIdentityPools/`pool_id`/attribute.`attribute_name`/`attribute_value``:
        # All identities in a workload identity pool with a certain attribute. * `
        # principalSet://iam.googleapis.com/projects/`project_number`/locations/global/
        # workloadIdentityPools/`pool_id`/*`: All identities in a workload identity pool.
        # * `deleted:user:`emailid`?uid=`uniqueid``: An email address (plus unique
        # identifier) representing a user that has been recently deleted. For example, `
        # alice@example.com?uid=123456789012345678901`. If the user is recovered, this
        # value reverts to `user:`emailid`` and the recovered user retains the role in
        # the binding. * `deleted:serviceAccount:`emailid`?uid=`uniqueid``: An email
        # address (plus unique identifier) representing a service account that has been
        # recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=
        # 123456789012345678901`. If the service account is undeleted, this value
        # reverts to `serviceAccount:`emailid`` and the undeleted service account
        # retains the role in the binding. * `deleted:group:`emailid`?uid=`uniqueid``:
        # An email address (plus unique identifier) representing a Google group that has
        # been recently deleted. For example, `admins@example.com?uid=
        # 123456789012345678901`. If the group is recovered, this value reverts to `
        # group:`emailid`` and the recovered group retains the role in the binding. * `
        # deleted:principal://iam.googleapis.com/locations/global/workforcePools/`
        # pool_id`/subject/`subject_attribute_value``: Deleted single identity in a
        # workforce identity pool. For example, `deleted:principal://iam.googleapis.com/
        # locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`.
        # Corresponds to the JSON property `members`
        # @return [Array<String>]
        attr_accessor :members
      
        # Role that is assigned to the list of `members`, or principals. For example, `
        # roles/viewer`, `roles/editor`, or `roles/owner`. For an overview of the IAM
        # roles and permissions, see the [IAM documentation](https://cloud.google.com/
        # iam/docs/roles-overview). For a list of the available pre-defined roles, see [
        # here](https://cloud.google.com/iam/docs/understanding-roles).
        # Corresponds to the JSON property `role`
        # @return [String]
        attr_accessor :role
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @condition = args[:condition] if args.key?(:condition)
          @members = args[:members] if args.key?(:members)
          @role = args[:role] if args.key?(:role)
        end
      end
      
      # An Identity and Access Management (IAM) policy, which specifies access
      # controls for Google Cloud resources. A `Policy` is a collection of `bindings`.
      # A `binding` binds one or more `members`, or principals, to a single `role`.
      # Principals can be user accounts, service accounts, Google groups, and domains (
      # such as G Suite). A `role` is a named list of permissions; each `role` can be
      # an IAM predefined role or a user-created custom role. For some types of Google
      # Cloud resources, a `binding` can also specify a `condition`, which is a
      # logical expression that allows access to a resource only if the expression
      # evaluates to `true`. A condition can add constraints based on attributes of
      # the request, the resource, or both. To learn which resources support
      # conditions in their IAM policies, see the [IAM documentation](https://cloud.
      # google.com/iam/help/conditions/resource-policies). **JSON example:** ``` ` "
      # bindings": [ ` "role": "roles/resourcemanager.organizationAdmin", "members": [
      # "user:mike@example.com", "group:admins@example.com", "domain:google.com", "
      # serviceAccount:my-project-id@appspot.gserviceaccount.com" ] `, ` "role": "
      # roles/resourcemanager.organizationViewer", "members": [ "user:eve@example.com"
      # ], "condition": ` "title": "expirable access", "description": "Does not grant
      # access after Sep 2020", "expression": "request.time < timestamp('2020-10-01T00:
      # 00:00.000Z')", ` ` ], "etag": "BwWWja0YfJA=", "version": 3 ` ``` **YAML
      # example:** ``` bindings: - members: - user:mike@example.com - group:admins@
      # example.com - domain:google.com - serviceAccount:my-project-id@appspot.
      # gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: -
      # user:eve@example.com role: roles/resourcemanager.organizationViewer condition:
      # title: expirable access description: Does not grant access after Sep 2020
      # expression: request.time < timestamp('2020-10-01T00:00:00.000Z') etag:
      # BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the
      # [IAM documentation](https://cloud.google.com/iam/docs/).
      class GoogleIamV1Policy
        include Google::Apis::Core::Hashable
      
        # Associates a list of `members`, or principals, with a `role`. Optionally, may
        # specify a `condition` that determines how and when the `bindings` are applied.
        # Each of the `bindings` must contain at least one principal. The `bindings` in
        # a `Policy` can refer to up to 1,500 principals; up to 250 of these principals
        # can be Google groups. Each occurrence of a principal counts towards these
        # limits. For example, if the `bindings` grant 50 different roles to `user:alice@
        # example.com`, and not to any other principal, then you can add another 1,450
        # principals to the `bindings` in the `Policy`.
        # Corresponds to the JSON property `bindings`
        # @return [Array<Google::Apis::AiplatformV1::GoogleIamV1Binding>]
        attr_accessor :bindings
      
        # `etag` is used for optimistic concurrency control as a way to help prevent
        # simultaneous updates of a policy from overwriting each other. It is strongly
        # suggested that systems make use of the `etag` in the read-modify-write cycle
        # to perform policy updates in order to avoid race conditions: An `etag` is
        # returned in the response to `getIamPolicy`, and systems are expected to put
        # that etag in the request to `setIamPolicy` to ensure that their change will be
        # applied to the same version of the policy. **Important:** If you use IAM
        # Conditions, you must include the `etag` field whenever you call `setIamPolicy`.
        # If you omit this field, then IAM allows you to overwrite a version `3` policy
        # with a version `1` policy, and all of the conditions in the version `3` policy
        # are lost.
        # Corresponds to the JSON property `etag`
        # NOTE: Values are automatically base64 encoded/decoded in the client library.
        # @return [String]
        attr_accessor :etag
      
        # Specifies the format of the policy. Valid values are `0`, `1`, and `3`.
        # Requests that specify an invalid value are rejected. Any operation that
        # affects conditional role bindings must specify version `3`. This requirement
        # applies to the following operations: * Getting a policy that includes a
        # conditional role binding * Adding a conditional role binding to a policy *
        # Changing a conditional role binding in a policy * Removing any role binding,
        # with or without a condition, from a policy that includes conditions **
        # Important:** If you use IAM Conditions, you must include the `etag` field
        # whenever you call `setIamPolicy`. If you omit this field, then IAM allows you
        # to overwrite a version `3` policy with a version `1` policy, and all of the
        # conditions in the version `3` policy are lost. If a policy does not include
        # any conditions, operations on that policy may specify any valid version or
        # leave the field unset. To learn which resources support conditions in their
        # IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/
        # conditions/resource-policies).
        # Corresponds to the JSON property `version`
        # @return [Fixnum]
        attr_accessor :version
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @bindings = args[:bindings] if args.key?(:bindings)
          @etag = args[:etag] if args.key?(:etag)
          @version = args[:version] if args.key?(:version)
        end
      end
      
      # Request message for `SetIamPolicy` method.
      class GoogleIamV1SetIamPolicyRequest
        include Google::Apis::Core::Hashable
      
        # An Identity and Access Management (IAM) policy, which specifies access
        # controls for Google Cloud resources. A `Policy` is a collection of `bindings`.
        # A `binding` binds one or more `members`, or principals, to a single `role`.
        # Principals can be user accounts, service accounts, Google groups, and domains (
        # such as G Suite). A `role` is a named list of permissions; each `role` can be
        # an IAM predefined role or a user-created custom role. For some types of Google
        # Cloud resources, a `binding` can also specify a `condition`, which is a
        # logical expression that allows access to a resource only if the expression
        # evaluates to `true`. A condition can add constraints based on attributes of
        # the request, the resource, or both. To learn which resources support
        # conditions in their IAM policies, see the [IAM documentation](https://cloud.
        # google.com/iam/help/conditions/resource-policies). **JSON example:** ``` ` "
        # bindings": [ ` "role": "roles/resourcemanager.organizationAdmin", "members": [
        # "user:mike@example.com", "group:admins@example.com", "domain:google.com", "
        # serviceAccount:my-project-id@appspot.gserviceaccount.com" ] `, ` "role": "
        # roles/resourcemanager.organizationViewer", "members": [ "user:eve@example.com"
        # ], "condition": ` "title": "expirable access", "description": "Does not grant
        # access after Sep 2020", "expression": "request.time < timestamp('2020-10-01T00:
        # 00:00.000Z')", ` ` ], "etag": "BwWWja0YfJA=", "version": 3 ` ``` **YAML
        # example:** ``` bindings: - members: - user:mike@example.com - group:admins@
        # example.com - domain:google.com - serviceAccount:my-project-id@appspot.
        # gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: -
        # user:eve@example.com role: roles/resourcemanager.organizationViewer condition:
        # title: expirable access description: Does not grant access after Sep 2020
        # expression: request.time < timestamp('2020-10-01T00:00:00.000Z') etag:
        # BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the
        # [IAM documentation](https://cloud.google.com/iam/docs/).
        # Corresponds to the JSON property `policy`
        # @return [Google::Apis::AiplatformV1::GoogleIamV1Policy]
        attr_accessor :policy
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @policy = args[:policy] if args.key?(:policy)
        end
      end
      
      # Response message for `TestIamPermissions` method.
      class GoogleIamV1TestIamPermissionsResponse
        include Google::Apis::Core::Hashable
      
        # A subset of `TestPermissionsRequest.permissions` that the caller is allowed.
        # Corresponds to the JSON property `permissions`
        # @return [Array<String>]
        attr_accessor :permissions
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @permissions = args[:permissions] if args.key?(:permissions)
        end
      end
      
      # The response message for Operations.ListOperations.
      class GoogleLongrunningListOperationsResponse
        include Google::Apis::Core::Hashable
      
        # The standard List next-page token.
        # Corresponds to the JSON property `nextPageToken`
        # @return [String]
        attr_accessor :next_page_token
      
        # A list of operations that matches the specified filter in the request.
        # Corresponds to the JSON property `operations`
        # @return [Array<Google::Apis::AiplatformV1::GoogleLongrunningOperation>]
        attr_accessor :operations
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
          @operations = args[:operations] if args.key?(:operations)
        end
      end
      
      # This resource represents a long-running operation that is the result of a
      # network API call.
      class GoogleLongrunningOperation
        include Google::Apis::Core::Hashable
      
        # If the value is `false`, it means the operation is still in progress. If `true`
        # , the operation is completed, and either `error` or `response` is available.
        # Corresponds to the JSON property `done`
        # @return [Boolean]
        attr_accessor :done
        alias_method :done?, :done
      
        # The `Status` type defines a logical error model that is suitable for different
        # programming environments, including REST APIs and RPC APIs. It is used by [
        # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
        # data: error code, error message, and error details. You can find out more
        # about this error model and how to work with it in the [API Design Guide](https:
        # //cloud.google.com/apis/design/errors).
        # Corresponds to the JSON property `error`
        # @return [Google::Apis::AiplatformV1::GoogleRpcStatus]
        attr_accessor :error
      
        # Service-specific metadata associated with the operation. It typically contains
        # progress information and common metadata such as create time. Some services
        # might not provide such metadata. Any method that returns a long-running
        # operation should document the metadata type, if any.
        # Corresponds to the JSON property `metadata`
        # @return [Hash<String,Object>]
        attr_accessor :metadata
      
        # The server-assigned name, which is only unique within the same service that
        # originally returns it. If you use the default HTTP mapping, the `name` should
        # be a resource name ending with `operations/`unique_id``.
        # Corresponds to the JSON property `name`
        # @return [String]
        attr_accessor :name
      
        # The normal, successful response of the operation. If the original method
        # returns no data on success, such as `Delete`, the response is `google.protobuf.
        # Empty`. If the original method is standard `Get`/`Create`/`Update`, the
        # response should be the resource. For other methods, the response should have
        # the type `XxxResponse`, where `Xxx` is the original method name. For example,
        # if the original method name is `TakeSnapshot()`, the inferred response type is
        # `TakeSnapshotResponse`.
        # Corresponds to the JSON property `response`
        # @return [Hash<String,Object>]
        attr_accessor :response
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @done = args[:done] if args.key?(:done)
          @error = args[:error] if args.key?(:error)
          @metadata = args[:metadata] if args.key?(:metadata)
          @name = args[:name] if args.key?(:name)
          @response = args[:response] if args.key?(:response)
        end
      end
      
      # A generic empty message that you can re-use to avoid defining duplicated empty
      # messages in your APIs. A typical example is to use it as the request or the
      # response type of an API method. For instance: service Foo ` rpc Bar(google.
      # protobuf.Empty) returns (google.protobuf.Empty); `
      class GoogleProtobufEmpty
        include Google::Apis::Core::Hashable
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
        end
      end
      
      # The `Status` type defines a logical error model that is suitable for different
      # programming environments, including REST APIs and RPC APIs. It is used by [
      # gRPC](https://github.com/grpc). Each `Status` message contains three pieces of
      # data: error code, error message, and error details. You can find out more
      # about this error model and how to work with it in the [API Design Guide](https:
      # //cloud.google.com/apis/design/errors).
      class GoogleRpcStatus
        include Google::Apis::Core::Hashable
      
        # The status code, which should be an enum value of google.rpc.Code.
        # Corresponds to the JSON property `code`
        # @return [Fixnum]
        attr_accessor :code
      
        # A list of messages that carry the error details. There is a common set of
        # message types for APIs to use.
        # Corresponds to the JSON property `details`
        # @return [Array<Hash<String,Object>>]
        attr_accessor :details
      
        # A developer-facing error message, which should be in English. Any user-facing
        # error message should be localized and sent in the google.rpc.Status.details
        # field, or localized by the client.
        # Corresponds to the JSON property `message`
        # @return [String]
        attr_accessor :message
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @code = args[:code] if args.key?(:code)
          @details = args[:details] if args.key?(:details)
          @message = args[:message] if args.key?(:message)
        end
      end
      
      # Represents a color in the RGBA color space. This representation is designed
      # for simplicity of conversion to and from color representations in various
      # languages over compactness. For example, the fields of this representation can
      # be trivially provided to the constructor of `java.awt.Color` in Java; it can
      # also be trivially provided to UIColor's `+colorWithRed:green:blue:alpha`
      # method in iOS; and, with just a little work, it can be easily formatted into a
      # CSS `rgba()` string in JavaScript. This reference page doesn't have
      # information about the absolute color space that should be used to interpret
      # the RGB value—for example, sRGB, Adobe RGB, DCI-P3, and BT.2020. By default,
      # applications should assume the sRGB color space. When color equality needs to
      # be decided, implementations, unless documented otherwise, treat two colors as
      # equal if all their red, green, blue, and alpha values each differ by at most `
      # 1e-5`. Example (Java): import com.google.type.Color; // ... public static java.
      # awt.Color fromProto(Color protocolor) ` float alpha = protocolor.hasAlpha() ?
      # protocolor.getAlpha().getValue() : 1.0; return new java.awt.Color( protocolor.
      # getRed(), protocolor.getGreen(), protocolor.getBlue(), alpha); ` public static
      # Color toProto(java.awt.Color color) ` float red = (float) color.getRed();
      # float green = (float) color.getGreen(); float blue = (float) color.getBlue();
      # float denominator = 255.0; Color.Builder resultBuilder = Color .newBuilder() .
      # setRed(red / denominator) .setGreen(green / denominator) .setBlue(blue /
      # denominator); int alpha = color.getAlpha(); if (alpha != 255) ` result.
      # setAlpha( FloatValue .newBuilder() .setValue(((float) alpha) / denominator) .
      # build()); ` return resultBuilder.build(); ` // ... Example (iOS / Obj-C): // ..
      # . static UIColor* fromProto(Color* protocolor) ` float red = [protocolor red];
      # float green = [protocolor green]; float blue = [protocolor blue]; FloatValue*
      # alpha_wrapper = [protocolor alpha]; float alpha = 1.0; if (alpha_wrapper !=
      # nil) ` alpha = [alpha_wrapper value]; ` return [UIColor colorWithRed:red green:
      # green blue:blue alpha:alpha]; ` static Color* toProto(UIColor* color) `
      # CGFloat red, green, blue, alpha; if (![color getRed:&red green:&green blue:&
      # blue alpha:&alpha]) ` return nil; ` Color* result = [[Color alloc] init]; [
      # result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha <
      # = 0.9999) ` [result setAlpha:floatWrapperWithValue(alpha)]; ` [result
      # autorelease]; return result; ` // ... Example (JavaScript): // ... var
      # protoToCssColor = function(rgb_color) ` var redFrac = rgb_color.red || 0.0;
      # var greenFrac = rgb_color.green || 0.0; var blueFrac = rgb_color.blue || 0.0;
      # var red = Math.floor(redFrac * 255); var green = Math.floor(greenFrac * 255);
      # var blue = Math.floor(blueFrac * 255); if (!('alpha' in rgb_color)) ` return
      # rgbToCssColor(red, green, blue); ` var alphaFrac = rgb_color.alpha.value || 0.
      # 0; var rgbParams = [red, green, blue].join(','); return ['rgba(', rgbParams, ',
      # ', alphaFrac, ')'].join(''); `; var rgbToCssColor = function(red, green, blue)
      # ` var rgbNumber = new Number((red << 16) | (green << 8) | blue); var hexString
      # = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var
      # resultBuilder = ['#']; for (var i = 0; i < missingZeros; i++) ` resultBuilder.
      # push('0'); ` resultBuilder.push(hexString); return resultBuilder.join(''); `; /
      # / ...
      class GoogleTypeColor
        include Google::Apis::Core::Hashable
      
        # The fraction of this color that should be applied to the pixel. That is, the
        # final pixel color is defined by the equation: `pixel color = alpha * (this
        # color) + (1.0 - alpha) * (background color)` This means that a value of 1.0
        # corresponds to a solid color, whereas a value of 0.0 corresponds to a
        # completely transparent color. This uses a wrapper message rather than a simple
        # float scalar so that it is possible to distinguish between a default value and
        # the value being unset. If omitted, this color object is rendered as a solid
        # color (as if the alpha value had been explicitly given a value of 1.0).
        # Corresponds to the JSON property `alpha`
        # @return [Float]
        attr_accessor :alpha
      
        # The amount of blue in the color as a value in the interval [0, 1].
        # Corresponds to the JSON property `blue`
        # @return [Float]
        attr_accessor :blue
      
        # The amount of green in the color as a value in the interval [0, 1].
        # Corresponds to the JSON property `green`
        # @return [Float]
        attr_accessor :green
      
        # The amount of red in the color as a value in the interval [0, 1].
        # Corresponds to the JSON property `red`
        # @return [Float]
        attr_accessor :red
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @alpha = args[:alpha] if args.key?(:alpha)
          @blue = args[:blue] if args.key?(:blue)
          @green = args[:green] if args.key?(:green)
          @red = args[:red] if args.key?(:red)
        end
      end
      
      # Represents a whole or partial calendar date, such as a birthday. The time of
      # day and time zone are either specified elsewhere or are insignificant. The
      # date is relative to the Gregorian Calendar. This can represent one of the
      # following: * A full date, with non-zero year, month, and day values. * A month
      # and day, with a zero year (for example, an anniversary). * A year on its own,
      # with a zero month and a zero day. * A year and month, with a zero day (for
      # example, a credit card expiration date). Related types: * google.type.
      # TimeOfDay * google.type.DateTime * google.protobuf.Timestamp
      class GoogleTypeDate
        include Google::Apis::Core::Hashable
      
        # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to
        # specify a year by itself or a year and month where the day isn't significant.
        # Corresponds to the JSON property `day`
        # @return [Fixnum]
        attr_accessor :day
      
        # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month
        # and day.
        # Corresponds to the JSON property `month`
        # @return [Fixnum]
        attr_accessor :month
      
        # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a
        # year.
        # Corresponds to the JSON property `year`
        # @return [Fixnum]
        attr_accessor :year
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @day = args[:day] if args.key?(:day)
          @month = args[:month] if args.key?(:month)
          @year = args[:year] if args.key?(:year)
        end
      end
      
      # Represents a textual expression in the Common Expression Language (CEL) syntax.
      # CEL is a C-like expression language. The syntax and semantics of CEL are
      # documented at https://github.com/google/cel-spec. Example (Comparison): title:
      # "Summary size limit" description: "Determines if a summary is less than 100
      # chars" expression: "document.summary.size() < 100" Example (Equality): title: "
      # Requestor is owner" description: "Determines if requestor is the document
      # owner" expression: "document.owner == request.auth.claims.email" Example (
      # Logic): title: "Public documents" description: "Determine whether the document
      # should be publicly visible" expression: "document.type != 'private' &&
      # document.type != 'internal'" Example (Data Manipulation): title: "Notification
      # string" description: "Create a notification string with a timestamp."
      # expression: "'New message received at ' + string(document.create_time)" The
      # exact variables and functions that may be referenced within an expression are
      # determined by the service that evaluates it. See the service documentation for
      # additional information.
      class GoogleTypeExpr
        include Google::Apis::Core::Hashable
      
        # Optional. Description of the expression. This is a longer text which describes
        # the expression, e.g. when hovered over it in a UI.
        # Corresponds to the JSON property `description`
        # @return [String]
        attr_accessor :description
      
        # Textual representation of an expression in Common Expression Language syntax.
        # Corresponds to the JSON property `expression`
        # @return [String]
        attr_accessor :expression
      
        # Optional. String indicating the location of the expression for error reporting,
        # e.g. a file name and a position in the file.
        # Corresponds to the JSON property `location`
        # @return [String]
        attr_accessor :location
      
        # Optional. Title for the expression, i.e. a short string describing its purpose.
        # This can be used e.g. in UIs which allow to enter the expression.
        # Corresponds to the JSON property `title`
        # @return [String]
        attr_accessor :title
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @description = args[:description] if args.key?(:description)
          @expression = args[:expression] if args.key?(:expression)
          @location = args[:location] if args.key?(:location)
          @title = args[:title] if args.key?(:title)
        end
      end
      
      # Represents a time interval, encoded as a Timestamp start (inclusive) and a
      # Timestamp end (exclusive). The start must be less than or equal to the end.
      # When the start equals the end, the interval is empty (matches no time). When
      # both start and end are unspecified, the interval matches any time.
      class GoogleTypeInterval
        include Google::Apis::Core::Hashable
      
        # Optional. Exclusive end of the interval. If specified, a Timestamp matching
        # this interval will have to be before the end.
        # Corresponds to the JSON property `endTime`
        # @return [String]
        attr_accessor :end_time
      
        # Optional. Inclusive start of the interval. If specified, a Timestamp matching
        # this interval will have to be the same or after the start.
        # Corresponds to the JSON property `startTime`
        # @return [String]
        attr_accessor :start_time
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @end_time = args[:end_time] if args.key?(:end_time)
          @start_time = args[:start_time] if args.key?(:start_time)
        end
      end
      
      # An object that represents a latitude/longitude pair. This is expressed as a
      # pair of doubles to represent degrees latitude and degrees longitude. Unless
      # specified otherwise, this object must conform to the WGS84 standard. Values
      # must be within normalized ranges.
      class GoogleTypeLatLng
        include Google::Apis::Core::Hashable
      
        # The latitude in degrees. It must be in the range [-90.0, +90.0].
        # Corresponds to the JSON property `latitude`
        # @return [Float]
        attr_accessor :latitude
      
        # The longitude in degrees. It must be in the range [-180.0, +180.0].
        # Corresponds to the JSON property `longitude`
        # @return [Float]
        attr_accessor :longitude
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @latitude = args[:latitude] if args.key?(:latitude)
          @longitude = args[:longitude] if args.key?(:longitude)
        end
      end
      
      # Represents an amount of money with its currency type.
      class GoogleTypeMoney
        include Google::Apis::Core::Hashable
      
        # The three-letter currency code defined in ISO 4217.
        # Corresponds to the JSON property `currencyCode`
        # @return [String]
        attr_accessor :currency_code
      
        # Number of nano (10^-9) units of the amount. The value must be between -999,999,
        # 999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be
        # positive or zero. If `units` is zero, `nanos` can be positive, zero, or
        # negative. If `units` is negative, `nanos` must be negative or zero. For
        # example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
        # Corresponds to the JSON property `nanos`
        # @return [Fixnum]
        attr_accessor :nanos
      
        # The whole units of the amount. For example if `currencyCode` is `"USD"`, then
        # 1 unit is one US dollar.
        # Corresponds to the JSON property `units`
        # @return [Fixnum]
        attr_accessor :units
      
        def initialize(**args)
           update!(**args)
        end
      
        # Update properties of this object
        def update!(**args)
          @currency_code = args[:currency_code] if args.key?(:currency_code)
          @nanos = args[:nanos] if args.key?(:nanos)
          @units = args[:units] if args.key?(:units)
        end
      end
    end
  end
end
