# Agent Platform API . projects . locations

## Instance Methods

Returns the batchPredictionJobs Resource.

Returns the cachedContents Resource.

Returns the customJobs Resource.

Returns the dataLabelingJobs Resource.

Returns the datasets Resource.

Returns the deploymentResourcePools Resource.

Returns the endpoints Resource.

Returns the evaluationItems Resource.

Returns the evaluationRuns Resource.

Returns the evaluationSets Resource.

Returns the featureGroups Resource.

Returns the featureOnlineStores Resource.

Returns the featurestores Resource.

Returns the hyperparameterTuningJobs Resource.

Returns the indexEndpoints Resource.

Returns the indexes Resource.

Returns the metadataStores Resource.

Returns the migratableResources Resource.

Returns the modelDeploymentMonitoringJobs Resource.

Returns the models Resource.

Returns the nasJobs Resource.

Returns the notebookExecutionJobs Resource.

Returns the notebookRuntimeTemplates Resource.

Returns the notebookRuntimes Resource.

Returns the operations Resource.

Returns the persistentResources Resource.

Returns the pipelineJobs Resource.

Returns the publishers Resource.

Returns the ragCorpora Resource.

Returns the ragEngineConfig Resource.

Returns the reasoningEngines Resource.

Returns the schedules Resource.

Returns the skills Resource.

Returns the specialistPools Resource.

Returns the studies Resource.

Returns the tensorboards Resource.

Returns the trainingPipelines Resource.

Returns the tuningJobs Resource.

Agentic Retrieval Ask API for RAG.

Asynchronous API to retrieves relevant contexts for a query.

Given an input prompt, it returns augmented prompt from vertex rag store to guide LLM towards generating grounded responses.

Close httplib2 connections.

Given an input text, it returns a score that evaluates the factuality of the text. It also extracts and returns claims from the text and provides supporting facts.

Deploys a model to a new endpoint.

Evaluates a dataset based on a set of given metrics.

Evaluates instances based on a given metric.

Generates rubrics for a given prompt. A rubric represents a single testable criterion for evaluation. One input prompt could have multiple rubrics This RPC allows users to get suggested rubrics based on provided prompt, which can then be reviewed and used for subsequent evaluations.

Generates synthetic (artificial) data based on a description

Gets information about a location.

Gets a RagEngineConfig.

Lists information about the supported locations for this service. This method lists locations based on the resource scope provided in the ListLocationsRequest.name field: * **Global locations**: If `name` is empty, the method lists the public locations available to all projects. * **Project-specific locations**: If `name` follows the format `projects/{project}`, the method lists locations visible to that specific project. This includes public, private, or other project-specific locations enabled for the project. For gRPC and client library implementations, the resource name is passed as the `name` field. For direct service calls, the resource name is incorporated into the request path based on the specific service implementation and version.

Retrieves the next page of results.

Retrieves relevant contexts for a query.

Updates a RagEngineConfig.

### Method Details

`askContexts(parent, body=None, x__xgafv=None)`

    Agentic Retrieval Ask API for RAG.

    Args:
      parent: string, Required. The resource name of the Location from which to retrieve RagContexts. The users must have permission to make a call in the project. Format: `projects/{project}/locations/{location}`. (required)
      body: object, The request body.
        The object takes the form of:

    { # Agentic Retrieval Ask API for RAG. Request message for VertexRagService.AskContexts.
      "query": { # A query to retrieve relevant contexts. # Required. Single RAG retrieve query.
        "ragRetrievalConfig": { # Specifies the context retrieval config. # Optional. The retrieval config for the query.
          "filter": { # Config for filters. # Optional. Config for filters.
            "metadataFilter": "A String", # Optional. String for metadata filtering.
            "vectorDistanceThreshold": 3.14, # Optional. Only returns contexts with vector distance smaller than the threshold.
            "vectorSimilarityThreshold": 3.14, # Optional. Only returns contexts with vector similarity larger than the threshold.
          },
          "ranking": { # Config for ranking and reranking. # Optional. Config for ranking and reranking.
            "llmRanker": { # Config for LlmRanker. # Optional. Config for LlmRanker.
              "modelName": "A String", # Optional. The model name used for ranking. See [Supported models](https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/inference#supported-models).
            },
            "rankService": { # Config for Rank Service. # Optional. Config for Rank Service.
              "modelName": "A String", # Optional. The model name of the rank service. Format: `semantic-ranker-512@latest`
            },
          },
          "topK": 42, # Optional. The number of contexts to retrieve.
        },
        "text": "A String", # Optional. The query in text format to get relevant contexts.
      },
      "tools": [ # Optional. The tools to use for AskContexts.
        { # 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).
          "codeExecution": { # 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. # Optional. CodeExecution tool type. Enables the model to execute code as part of generation.
          },
          "computerUse": { # Tool to support computer use. # Optional. Tool to support the model interacting directly with the computer. If enabled, it automatically populates computer-use specific Function Declarations.
            "environment": "A String", # Required. The environment being operated.
            "excludedPredefinedFunctions": [ # Optional. By default, [predefined functions](https://cloud.google.com/vertex-ai/generative-ai/docs/computer-use#supported-actions) are included in the final model call. Some of them can be explicitly excluded from being automatically included. This can serve two purposes: 1. Using a more restricted / different action space. 2. Improving the definitions / instructions of predefined functions.
              "A String",
            ],
          },
          "enterpriseWebSearch": { # Tool to search public web data, powered by Vertex AI Search and Sec4 compliance. # Optional. Tool to support searching public web data, powered by Vertex AI Search and Sec4 compliance.
            "blockingConfidence": "A String", # Optional. Sites with confidence level chosen & above this value will be blocked from the search results.
            "excludeDomains": [ # Optional. List of domains to be excluded from the search results. The default limit is 2000 domains.
              "A String",
            ],
          },
          "functionDeclarations": [ # 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.
            { # 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.
              "behavior": "A String", # Optional. Specifies the function Behavior. If not specified, the system keeps the current function call behavior. This field is currently only supported by the BidiGenerateContent method.
              "description": "A String", # Optional. Description and purpose of the function. Model uses it to decide how and whether to call the function.
              "name": "A String", # 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, colons and dashes, with a maximum length of 128.
              "parameters": { # Defines the schema of input and output data. This is a subset of the [OpenAPI 3.0 Schema Object](https://spec.openapis.org/oas/v3.0.3#schema-object). # Optional. Describes the parameters to this function in JSON Schema Object format. Reflects the Open API 3.03 Parameter Object. string Key: the name of the parameter. Parameter names are case sensitive. Schema Value: the Schema defining the type used for the parameter. For function with no parameters, this can be left unset. Parameter names must start with a letter or an underscore and must only contain chars a-z, A-Z, 0-9, or underscores with a maximum length of 64. Example with 1 required and 1 optional parameter: type: OBJECT properties: param1: type: STRING param2: type: INTEGER required: - param1
                "additionalProperties": "", # Optional. If `type` is `OBJECT`, specifies how to handle properties not defined in `properties`. If it is a boolean `false`, no additional properties are allowed. If it is a schema, additional properties are allowed if they conform to the schema.
                "anyOf": [ # Optional. The instance must be valid against any (one or more) of the subschemas listed in `any_of`.
                  # Object with schema name: GoogleCloudAiplatformV1Schema
                ],
                "default": "", # Optional. Default value to use if the field is not specified.
                "defs": { # Optional. `defs` provides a map of schema definitions that can be reused by `ref` elsewhere in the schema. Only allowed at root level of the schema.
                  "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                },
                "description": "A String", # Optional. Describes the data. The model uses this field to understand the purpose of the schema and how to use it. It is a best practice to provide a clear and descriptive explanation for the schema and its properties here, rather than in the prompt.
                "enum": [ # Optional. Possible values of the field. This field can be used to restrict a value to a fixed set of values. To mark a field as an enum, set `format` to `enum` and provide the list of possible values in `enum`. For example: 1. To define directions: `{type:STRING, format:enum, enum:["EAST", "NORTH", "SOUTH", "WEST"]}` 2. To define apartment numbers: `{type:INTEGER, format:enum, enum:["101", "201", "301"]}`
                  "A String",
                ],
                "example": "", # Optional. Example of an instance of this schema.
                "format": "A String", # Optional. The format of the data. For `NUMBER` type, format can be `float` or `double`. For `INTEGER` type, format can be `int32` or `int64`. For `STRING` type, format can be `email`, `byte`, `date`, `date-time`, `password`, and other formats to further refine the data type.
                "items": # Object with schema name: GoogleCloudAiplatformV1Schema # Optional. If type is `ARRAY`, `items` specifies the schema of elements in the array.
                "maxItems": "A String", # Optional. If type is `ARRAY`, `max_items` specifies the maximum number of items in an array.
                "maxLength": "A String", # Optional. If type is `STRING`, `max_length` specifies the maximum length of the string.
                "maxProperties": "A String", # Optional. If type is `OBJECT`, `max_properties` specifies the maximum number of properties that can be provided.
                "maximum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `maximum` specifies the maximum allowed value.
                "minItems": "A String", # Optional. If type is `ARRAY`, `min_items` specifies the minimum number of items in an array.
                "minLength": "A String", # Optional. If type is `STRING`, `min_length` specifies the minimum length of the string.
                "minProperties": "A String", # Optional. If type is `OBJECT`, `min_properties` specifies the minimum number of properties that can be provided.
                "minimum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `minimum` specifies the minimum allowed value.
                "nullable": True or False, # Optional. Indicates if the value of this field can be null.
                "pattern": "A String", # Optional. If type is `STRING`, `pattern` specifies a regular expression that the string must match.
                "properties": { # Optional. If type is `OBJECT`, `properties` is a map of property names to schema definitions for each property of the object.
                  "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                },
                "propertyOrdering": [ # Optional. Order of properties displayed or used where order matters. This is not a standard field in OpenAPI specification, but can be used to control the order of properties.
                  "A String",
                ],
                "ref": "A String", # Optional. Allows referencing another schema definition to use in place of this schema. The value must be a valid reference to a schema in `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
                "required": [ # Optional. If type is `OBJECT`, `required` lists the names of properties that must be present.
                  "A String",
                ],
                "title": "A String", # Optional. Title for the schema.
                "type": "A String", # Optional. Data type of the schema field.
              },
              "parametersJsonSchema": "", # 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`.
              "response": { # Defines the schema of input and output data. This is a subset of the [OpenAPI 3.0 Schema Object](https://spec.openapis.org/oas/v3.0.3#schema-object). # Optional. Describes the output from this function in JSON Schema format. Reflects the Open API 3.03 Response Object. The Schema defines the type used for the response value of the function.
                "additionalProperties": "", # Optional. If `type` is `OBJECT`, specifies how to handle properties not defined in `properties`. If it is a boolean `false`, no additional properties are allowed. If it is a schema, additional properties are allowed if they conform to the schema.
                "anyOf": [ # Optional. The instance must be valid against any (one or more) of the subschemas listed in `any_of`.
                  # Object with schema name: GoogleCloudAiplatformV1Schema
                ],
                "default": "", # Optional. Default value to use if the field is not specified.
                "defs": { # Optional. `defs` provides a map of schema definitions that can be reused by `ref` elsewhere in the schema. Only allowed at root level of the schema.
                  "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                },
                "description": "A String", # Optional. Describes the data. The model uses this field to understand the purpose of the schema and how to use it. It is a best practice to provide a clear and descriptive explanation for the schema and its properties here, rather than in the prompt.
                "enum": [ # Optional. Possible values of the field. This field can be used to restrict a value to a fixed set of values. To mark a field as an enum, set `format` to `enum` and provide the list of possible values in `enum`. For example: 1. To define directions: `{type:STRING, format:enum, enum:["EAST", "NORTH", "SOUTH", "WEST"]}` 2. To define apartment numbers: `{type:INTEGER, format:enum, enum:["101", "201", "301"]}`
                  "A String",
                ],
                "example": "", # Optional. Example of an instance of this schema.
                "format": "A String", # Optional. The format of the data. For `NUMBER` type, format can be `float` or `double`. For `INTEGER` type, format can be `int32` or `int64`. For `STRING` type, format can be `email`, `byte`, `date`, `date-time`, `password`, and other formats to further refine the data type.
                "items": # Object with schema name: GoogleCloudAiplatformV1Schema # Optional. If type is `ARRAY`, `items` specifies the schema of elements in the array.
                "maxItems": "A String", # Optional. If type is `ARRAY`, `max_items` specifies the maximum number of items in an array.
                "maxLength": "A String", # Optional. If type is `STRING`, `max_length` specifies the maximum length of the string.
                "maxProperties": "A String", # Optional. If type is `OBJECT`, `max_properties` specifies the maximum number of properties that can be provided.
                "maximum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `maximum` specifies the maximum allowed value.
                "minItems": "A String", # Optional. If type is `ARRAY`, `min_items` specifies the minimum number of items in an array.
                "minLength": "A String", # Optional. If type is `STRING`, `min_length` specifies the minimum length of the string.
                "minProperties": "A String", # Optional. If type is `OBJECT`, `min_properties` specifies the minimum number of properties that can be provided.
                "minimum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `minimum` specifies the minimum allowed value.
                "nullable": True or False, # Optional. Indicates if the value of this field can be null.
                "pattern": "A String", # Optional. If type is `STRING`, `pattern` specifies a regular expression that the string must match.
                "properties": { # Optional. If type is `OBJECT`, `properties` is a map of property names to schema definitions for each property of the object.
                  "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                },
                "propertyOrdering": [ # Optional. Order of properties displayed or used where order matters. This is not a standard field in OpenAPI specification, but can be used to control the order of properties.
                  "A String",
                ],
                "ref": "A String", # Optional. Allows referencing another schema definition to use in place of this schema. The value must be a valid reference to a schema in `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
                "required": [ # Optional. If type is `OBJECT`, `required` lists the names of properties that must be present.
                  "A String",
                ],
                "title": "A String", # Optional. Title for the schema.
                "type": "A String", # Optional. Data type of the schema field.
              },
              "responseJsonSchema": "", # 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`.
            },
          ],
          "googleMaps": { # Tool to retrieve public maps data for grounding, powered by Google. # Optional. GoogleMaps tool type. Tool to support Google Maps in Model.
            "enableWidget": True or False, # Optional. If true, include the widget context token in the response.
          },
          "googleSearch": { # GoogleSearch tool type. Tool to support Google Search in Model. Powered by Google. # Optional. GoogleSearch tool type. Tool to support Google Search in Model. Powered by Google.
            "blockingConfidence": "A String", # Optional. Sites with confidence level chosen & above this value will be blocked from the search results.
            "excludeDomains": [ # Optional. List of domains to be excluded from the search results. The default limit is 2000 domains. Example: ["amazon.com", "facebook.com"].
              "A String",
            ],
            "searchTypes": { # Different types of search that can be enabled on the GoogleSearch tool. # Optional. The set of search types to enable. If not set, web search is enabled by default.
              "imageSearch": { # Image search for grounding and related configurations. # Optional. Setting this field enables image search. Image bytes are returned.
              },
              "webSearch": { # Standard web search for grounding and related configurations. Only text results are returned. # Optional. Setting this field enables web search. Only text results are returned.
              },
            },
          },
          "googleSearchRetrieval": { # Tool to retrieve public web data for grounding, powered by Google. # Optional. Specialized retrieval tool that is powered by Google Search.
            "dynamicRetrievalConfig": { # Describes the options to customize dynamic retrieval. # Specifies the dynamic retrieval configuration for the given source.
              "dynamicThreshold": 3.14, # Optional. The threshold to be used in dynamic retrieval. If not set, a system default value is used.
              "mode": "A String", # The mode of the predictor to be used in dynamic retrieval.
            },
          },
          "parallelAiSearch": { # ParallelAiSearch tool type. A tool that uses the Parallel.ai search engine for grounding. # Optional. If specified, Vertex AI will use Parallel.ai to search for information to answer user queries. The search results will be grounded on Parallel.ai and presented to the model for response generation
            "apiKey": "A String", # Optional. The API key for ParallelAiSearch. If an API key is not provided, the system will attempt to verify access by checking for an active Parallel.ai subscription through the Google Cloud Marketplace. See https://docs.parallel.ai/search/search-quickstart for more details.
            "customConfigs": { # Optional. Custom configs for ParallelAiSearch. This field can be used to pass any parameter from the Parallel.ai Search API. See the Parallel.ai documentation for the full list of available parameters and their usage: https://docs.parallel.ai/api-reference/search-beta/search Currently only `source_policy`, `excerpts`, `max_results`, `mode`, `fetch_policy` can be set via this field. For example: { "source_policy": { "include_domains": ["google.com", "wikipedia.org"], "exclude_domains": ["example.com"] }, "fetch_policy": { "max_age_seconds": 3600 } }
              "a_key": "", # Properties of the object.
            },
          },
          "retrieval": { # Defines a retrieval tool that model can call to access external knowledge. # Optional. Retrieval tool type. System will always execute the provided retrieval tool(s) to get external knowledge to answer the prompt. Retrieval results are presented to the model for generation.
            "disableAttribution": True or False, # Optional. Deprecated. This option is no longer supported.
            "externalApi": { # 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. # Use data source powered by external API for grounding.
              "apiAuth": { # The generic reusable api auth config. Deprecated. Please use AuthConfig (google/cloud/aiplatform/master/auth.proto) instead. # The authentication config to access the API. Deprecated. Please use auth_config instead.
                "apiKeyConfig": { # The API secret. # The API secret.
                  "apiKeySecretVersion": "A String", # Required. The SecretManager secret version resource name storing API key. e.g. projects/{project}/secrets/{secret}/versions/{version}
                  "apiKeyString": "A String", # The API key string. Either this or `api_key_secret_version` must be set.
                },
              },
              "apiSpec": "A String", # The API spec that the external API implements.
              "authConfig": { # Auth configuration to run the extension. # The authentication config to access the API.
                "apiKeyConfig": { # Config for authentication with API key. # Config for API key auth.
                  "apiKeySecret": "A String", # 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.
                  "apiKeyString": "A String", # Optional. The API key to be used in the request directly.
                  "httpElementLocation": "A String", # Optional. The location of the API key.
                  "name": "A String", # 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.
                },
                "authType": "A String", # Type of auth scheme.
                "googleServiceAccountConfig": { # Config for Google Service Account Authentication. # Config for Google Service Account auth.
                  "serviceAccount": "A String", # 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.
                },
                "httpBasicAuthConfig": { # Config for HTTP Basic Authentication. # Config for HTTP Basic auth.
                  "credentialSecret": "A String", # 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.
                },
                "oauthConfig": { # Config for user oauth. # Config for user oauth.
                  "accessToken": "A String", # Access token for extension endpoint. Only used to propagate token from [[ExecuteExtensionRequest.runtime_auth_config]] at request time.
                  "serviceAccount": "A String", # 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.
                },
                "oidcConfig": { # Config for user OIDC auth. # Config for user OIDC auth.
                  "idToken": "A String", # OpenID Connect formatted ID token for extension endpoint. Only used to propagate token from [[ExecuteExtensionRequest.runtime_auth_config]] at request time.
                  "serviceAccount": "A String", # 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).
                },
              },
              "elasticSearchParams": { # The search parameters to use for the ELASTIC_SEARCH spec. # Parameters for the elastic search API.
                "index": "A String", # The ElasticSearch index to use.
                "numHits": 42, # Optional. Number of hits (chunks) to request. When specified, it is passed to Elasticsearch as the `num_hits` param.
                "searchTemplate": "A String", # The ElasticSearch search template to use.
              },
              "endpoint": "A String", # 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
              "simpleSearchParams": { # The search parameters to use for SIMPLE_SEARCH spec. # Parameters for the simple search API.
              },
            },
            "vertexAiSearch": { # Retrieve from Vertex AI Search datastore or engine for grounding. datastore and engine are mutually exclusive. See https://cloud.google.com/products/agent-builder # Set to use data source powered by Vertex AI Search.
              "dataStoreSpecs": [ # 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.
                { # 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
                  "dataStore": "A String", # Full resource name of DataStore, such as Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}`
                  "filter": "A String", # 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)
                },
              ],
              "datastore": "A String", # Optional. Fully-qualified Vertex AI Search data store resource ID. Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}`
              "engine": "A String", # Optional. Fully-qualified Vertex AI Search engine resource ID. Format: `projects/{project}/locations/{location}/collections/{collection}/engines/{engine}`
              "filter": "A String", # Optional. Filter strings to be passed to the search API.
              "maxResults": 42, # Optional. Number of search results to return per query. The default value is 10. The maximumm allowed value is 10.
            },
            "vertexRagStore": { # Retrieve from Vertex RAG Store for grounding. # Set to use data source powered by Vertex RAG store. User data is uploaded via the VertexRagDataService.
              "ragResources": [ # 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.
                { # The definition of the Rag resource.
                  "ragCorpus": "A String", # Optional. RagCorpora resource name. Format: `projects/{project}/locations/{location}/ragCorpora/{rag_corpus}`
                  "ragFileIds": [ # Optional. rag_file_id. The files should be in the same rag_corpus set in rag_corpus field.
                    "A String",
                  ],
                },
              ],
              "ragRetrievalConfig": { # Specifies the context retrieval config. # Optional. The retrieval config for the Rag query.
                "filter": { # Config for filters. # Optional. Config for filters.
                  "metadataFilter": "A String", # Optional. String for metadata filtering.
                  "vectorDistanceThreshold": 3.14, # Optional. Only returns contexts with vector distance smaller than the threshold.
                  "vectorSimilarityThreshold": 3.14, # Optional. Only returns contexts with vector similarity larger than the threshold.
                },
                "ranking": { # Config for ranking and reranking. # Optional. Config for ranking and reranking.
                  "llmRanker": { # Config for LlmRanker. # Optional. Config for LlmRanker.
                    "modelName": "A String", # Optional. The model name used for ranking. See [Supported models](https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/inference#supported-models).
                  },
                  "rankService": { # Config for Rank Service. # Optional. Config for Rank Service.
                    "modelName": "A String", # Optional. The model name of the rank service. Format: `semantic-ranker-512@latest`
                  },
                },
                "topK": 42, # Optional. The number of contexts to retrieve.
              },
              "similarityTopK": 42, # Optional. Number of top k results to return from the selected corpora.
              "vectorDistanceThreshold": 3.14, # Optional. Only return results with vector distance smaller than the threshold.
            },
          },
          "urlContext": { # Tool to support URL context. # Optional. Tool to support URL context retrieval.
          },
        },
      ],
    }

      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # Response message for VertexRagService.AskContexts.
      "contexts": { # Relevant contexts for one query. # The contexts of the query.
        "contexts": [ # All its contexts.
          { # A context of the query.
            "chunk": { # A RagChunk includes the content of a chunk of a RagFile, and associated metadata. # Context of the retrieved chunk.
              "pageSpan": { # Represents where the chunk starts and ends in the document. # If populated, represents where the chunk starts and ends in the document.
                "firstPage": 42, # Page where chunk starts in the document. Inclusive. 1-indexed.
                "lastPage": 42, # Page where chunk ends in the document. Inclusive. 1-indexed.
              },
              "text": "A String", # The content of the chunk.
            },
            "score": 3.14, # 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.
            "sourceDisplayName": "A String", # The file display name.
            "sourceUri": "A String", # 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.
            "text": "A String", # The text chunk.
          },
        ],
      },
      "response": "A String", # The Retrieval Response.
    }

`asyncRetrieveContexts(parent, body=None, x__xgafv=None)`

    Asynchronous API to retrieves relevant contexts for a query.

    Args:
      parent: string, Required. The resource name of the Location from which to retrieve RagContexts. The users must have permission to make a call in the project. Format: `projects/{project}/locations/{location}`. (required)
      body: object, The request body.
        The object takes the form of:

    { # Request message for VertexRagService.AsyncRetrieveContexts.
      "query": { # A query to retrieve relevant contexts. # Required. Single RAG retrieve query.
        "ragRetrievalConfig": { # Specifies the context retrieval config. # Optional. The retrieval config for the query.
          "filter": { # Config for filters. # Optional. Config for filters.
            "metadataFilter": "A String", # Optional. String for metadata filtering.
            "vectorDistanceThreshold": 3.14, # Optional. Only returns contexts with vector distance smaller than the threshold.
            "vectorSimilarityThreshold": 3.14, # Optional. Only returns contexts with vector similarity larger than the threshold.
          },
          "ranking": { # Config for ranking and reranking. # Optional. Config for ranking and reranking.
            "llmRanker": { # Config for LlmRanker. # Optional. Config for LlmRanker.
              "modelName": "A String", # Optional. The model name used for ranking. See [Supported models](https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/inference#supported-models).
            },
            "rankService": { # Config for Rank Service. # Optional. Config for Rank Service.
              "modelName": "A String", # Optional. The model name of the rank service. Format: `semantic-ranker-512@latest`
            },
          },
          "topK": 42, # Optional. The number of contexts to retrieve.
        },
        "text": "A String", # Optional. The query in text format to get relevant contexts.
      },
      "tools": [ # Optional. The tools to use for AskContexts.
        { # 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).
          "codeExecution": { # 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. # Optional. CodeExecution tool type. Enables the model to execute code as part of generation.
          },
          "computerUse": { # Tool to support computer use. # Optional. Tool to support the model interacting directly with the computer. If enabled, it automatically populates computer-use specific Function Declarations.
            "environment": "A String", # Required. The environment being operated.
            "excludedPredefinedFunctions": [ # Optional. By default, [predefined functions](https://cloud.google.com/vertex-ai/generative-ai/docs/computer-use#supported-actions) are included in the final model call. Some of them can be explicitly excluded from being automatically included. This can serve two purposes: 1. Using a more restricted / different action space. 2. Improving the definitions / instructions of predefined functions.
              "A String",
            ],
          },
          "enterpriseWebSearch": { # Tool to search public web data, powered by Vertex AI Search and Sec4 compliance. # Optional. Tool to support searching public web data, powered by Vertex AI Search and Sec4 compliance.
            "blockingConfidence": "A String", # Optional. Sites with confidence level chosen & above this value will be blocked from the search results.
            "excludeDomains": [ # Optional. List of domains to be excluded from the search results. The default limit is 2000 domains.
              "A String",
            ],
          },
          "functionDeclarations": [ # 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.
            { # 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.
              "behavior": "A String", # Optional. Specifies the function Behavior. If not specified, the system keeps the current function call behavior. This field is currently only supported by the BidiGenerateContent method.
              "description": "A String", # Optional. Description and purpose of the function. Model uses it to decide how and whether to call the function.
              "name": "A String", # 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, colons and dashes, with a maximum length of 128.
              "parameters": { # Defines the schema of input and output data. This is a subset of the [OpenAPI 3.0 Schema Object](https://spec.openapis.org/oas/v3.0.3#schema-object). # Optional. Describes the parameters to this function in JSON Schema Object format. Reflects the Open API 3.03 Parameter Object. string Key: the name of the parameter. Parameter names are case sensitive. Schema Value: the Schema defining the type used for the parameter. For function with no parameters, this can be left unset. Parameter names must start with a letter or an underscore and must only contain chars a-z, A-Z, 0-9, or underscores with a maximum length of 64. Example with 1 required and 1 optional parameter: type: OBJECT properties: param1: type: STRING param2: type: INTEGER required: - param1
                "additionalProperties": "", # Optional. If `type` is `OBJECT`, specifies how to handle properties not defined in `properties`. If it is a boolean `false`, no additional properties are allowed. If it is a schema, additional properties are allowed if they conform to the schema.
                "anyOf": [ # Optional. The instance must be valid against any (one or more) of the subschemas listed in `any_of`.
                  # Object with schema name: GoogleCloudAiplatformV1Schema
                ],
                "default": "", # Optional. Default value to use if the field is not specified.
                "defs": { # Optional. `defs` provides a map of schema definitions that can be reused by `ref` elsewhere in the schema. Only allowed at root level of the schema.
                  "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                },
                "description": "A String", # Optional. Describes the data. The model uses this field to understand the purpose of the schema and how to use it. It is a best practice to provide a clear and descriptive explanation for the schema and its properties here, rather than in the prompt.
                "enum": [ # Optional. Possible values of the field. This field can be used to restrict a value to a fixed set of values. To mark a field as an enum, set `format` to `enum` and provide the list of possible values in `enum`. For example: 1. To define directions: `{type:STRING, format:enum, enum:["EAST", "NORTH", "SOUTH", "WEST"]}` 2. To define apartment numbers: `{type:INTEGER, format:enum, enum:["101", "201", "301"]}`
                  "A String",
                ],
                "example": "", # Optional. Example of an instance of this schema.
                "format": "A String", # Optional. The format of the data. For `NUMBER` type, format can be `float` or `double`. For `INTEGER` type, format can be `int32` or `int64`. For `STRING` type, format can be `email`, `byte`, `date`, `date-time`, `password`, and other formats to further refine the data type.
                "items": # Object with schema name: GoogleCloudAiplatformV1Schema # Optional. If type is `ARRAY`, `items` specifies the schema of elements in the array.
                "maxItems": "A String", # Optional. If type is `ARRAY`, `max_items` specifies the maximum number of items in an array.
                "maxLength": "A String", # Optional. If type is `STRING`, `max_length` specifies the maximum length of the string.
                "maxProperties": "A String", # Optional. If type is `OBJECT`, `max_properties` specifies the maximum number of properties that can be provided.
                "maximum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `maximum` specifies the maximum allowed value.
                "minItems": "A String", # Optional. If type is `ARRAY`, `min_items` specifies the minimum number of items in an array.
                "minLength": "A String", # Optional. If type is `STRING`, `min_length` specifies the minimum length of the string.
                "minProperties": "A String", # Optional. If type is `OBJECT`, `min_properties` specifies the minimum number of properties that can be provided.
                "minimum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `minimum` specifies the minimum allowed value.
                "nullable": True or False, # Optional. Indicates if the value of this field can be null.
                "pattern": "A String", # Optional. If type is `STRING`, `pattern` specifies a regular expression that the string must match.
                "properties": { # Optional. If type is `OBJECT`, `properties` is a map of property names to schema definitions for each property of the object.
                  "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                },
                "propertyOrdering": [ # Optional. Order of properties displayed or used where order matters. This is not a standard field in OpenAPI specification, but can be used to control the order of properties.
                  "A String",
                ],
                "ref": "A String", # Optional. Allows referencing another schema definition to use in place of this schema. The value must be a valid reference to a schema in `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
                "required": [ # Optional. If type is `OBJECT`, `required` lists the names of properties that must be present.
                  "A String",
                ],
                "title": "A String", # Optional. Title for the schema.
                "type": "A String", # Optional. Data type of the schema field.
              },
              "parametersJsonSchema": "", # 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`.
              "response": { # Defines the schema of input and output data. This is a subset of the [OpenAPI 3.0 Schema Object](https://spec.openapis.org/oas/v3.0.3#schema-object). # Optional. Describes the output from this function in JSON Schema format. Reflects the Open API 3.03 Response Object. The Schema defines the type used for the response value of the function.
                "additionalProperties": "", # Optional. If `type` is `OBJECT`, specifies how to handle properties not defined in `properties`. If it is a boolean `false`, no additional properties are allowed. If it is a schema, additional properties are allowed if they conform to the schema.
                "anyOf": [ # Optional. The instance must be valid against any (one or more) of the subschemas listed in `any_of`.
                  # Object with schema name: GoogleCloudAiplatformV1Schema
                ],
                "default": "", # Optional. Default value to use if the field is not specified.
                "defs": { # Optional. `defs` provides a map of schema definitions that can be reused by `ref` elsewhere in the schema. Only allowed at root level of the schema.
                  "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                },
                "description": "A String", # Optional. Describes the data. The model uses this field to understand the purpose of the schema and how to use it. It is a best practice to provide a clear and descriptive explanation for the schema and its properties here, rather than in the prompt.
                "enum": [ # Optional. Possible values of the field. This field can be used to restrict a value to a fixed set of values. To mark a field as an enum, set `format` to `enum` and provide the list of possible values in `enum`. For example: 1. To define directions: `{type:STRING, format:enum, enum:["EAST", "NORTH", "SOUTH", "WEST"]}` 2. To define apartment numbers: `{type:INTEGER, format:enum, enum:["101", "201", "301"]}`
                  "A String",
                ],
                "example": "", # Optional. Example of an instance of this schema.
                "format": "A String", # Optional. The format of the data. For `NUMBER` type, format can be `float` or `double`. For `INTEGER` type, format can be `int32` or `int64`. For `STRING` type, format can be `email`, `byte`, `date`, `date-time`, `password`, and other formats to further refine the data type.
                "items": # Object with schema name: GoogleCloudAiplatformV1Schema # Optional. If type is `ARRAY`, `items` specifies the schema of elements in the array.
                "maxItems": "A String", # Optional. If type is `ARRAY`, `max_items` specifies the maximum number of items in an array.
                "maxLength": "A String", # Optional. If type is `STRING`, `max_length` specifies the maximum length of the string.
                "maxProperties": "A String", # Optional. If type is `OBJECT`, `max_properties` specifies the maximum number of properties that can be provided.
                "maximum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `maximum` specifies the maximum allowed value.
                "minItems": "A String", # Optional. If type is `ARRAY`, `min_items` specifies the minimum number of items in an array.
                "minLength": "A String", # Optional. If type is `STRING`, `min_length` specifies the minimum length of the string.
                "minProperties": "A String", # Optional. If type is `OBJECT`, `min_properties` specifies the minimum number of properties that can be provided.
                "minimum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `minimum` specifies the minimum allowed value.
                "nullable": True or False, # Optional. Indicates if the value of this field can be null.
                "pattern": "A String", # Optional. If type is `STRING`, `pattern` specifies a regular expression that the string must match.
                "properties": { # Optional. If type is `OBJECT`, `properties` is a map of property names to schema definitions for each property of the object.
                  "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                },
                "propertyOrdering": [ # Optional. Order of properties displayed or used where order matters. This is not a standard field in OpenAPI specification, but can be used to control the order of properties.
                  "A String",
                ],
                "ref": "A String", # Optional. Allows referencing another schema definition to use in place of this schema. The value must be a valid reference to a schema in `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
                "required": [ # Optional. If type is `OBJECT`, `required` lists the names of properties that must be present.
                  "A String",
                ],
                "title": "A String", # Optional. Title for the schema.
                "type": "A String", # Optional. Data type of the schema field.
              },
              "responseJsonSchema": "", # 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`.
            },
          ],
          "googleMaps": { # Tool to retrieve public maps data for grounding, powered by Google. # Optional. GoogleMaps tool type. Tool to support Google Maps in Model.
            "enableWidget": True or False, # Optional. If true, include the widget context token in the response.
          },
          "googleSearch": { # GoogleSearch tool type. Tool to support Google Search in Model. Powered by Google. # Optional. GoogleSearch tool type. Tool to support Google Search in Model. Powered by Google.
            "blockingConfidence": "A String", # Optional. Sites with confidence level chosen & above this value will be blocked from the search results.
            "excludeDomains": [ # Optional. List of domains to be excluded from the search results. The default limit is 2000 domains. Example: ["amazon.com", "facebook.com"].
              "A String",
            ],
            "searchTypes": { # Different types of search that can be enabled on the GoogleSearch tool. # Optional. The set of search types to enable. If not set, web search is enabled by default.
              "imageSearch": { # Image search for grounding and related configurations. # Optional. Setting this field enables image search. Image bytes are returned.
              },
              "webSearch": { # Standard web search for grounding and related configurations. Only text results are returned. # Optional. Setting this field enables web search. Only text results are returned.
              },
            },
          },
          "googleSearchRetrieval": { # Tool to retrieve public web data for grounding, powered by Google. # Optional. Specialized retrieval tool that is powered by Google Search.
            "dynamicRetrievalConfig": { # Describes the options to customize dynamic retrieval. # Specifies the dynamic retrieval configuration for the given source.
              "dynamicThreshold": 3.14, # Optional. The threshold to be used in dynamic retrieval. If not set, a system default value is used.
              "mode": "A String", # The mode of the predictor to be used in dynamic retrieval.
            },
          },
          "parallelAiSearch": { # ParallelAiSearch tool type. A tool that uses the Parallel.ai search engine for grounding. # Optional. If specified, Vertex AI will use Parallel.ai to search for information to answer user queries. The search results will be grounded on Parallel.ai and presented to the model for response generation
            "apiKey": "A String", # Optional. The API key for ParallelAiSearch. If an API key is not provided, the system will attempt to verify access by checking for an active Parallel.ai subscription through the Google Cloud Marketplace. See https://docs.parallel.ai/search/search-quickstart for more details.
            "customConfigs": { # Optional. Custom configs for ParallelAiSearch. This field can be used to pass any parameter from the Parallel.ai Search API. See the Parallel.ai documentation for the full list of available parameters and their usage: https://docs.parallel.ai/api-reference/search-beta/search Currently only `source_policy`, `excerpts`, `max_results`, `mode`, `fetch_policy` can be set via this field. For example: { "source_policy": { "include_domains": ["google.com", "wikipedia.org"], "exclude_domains": ["example.com"] }, "fetch_policy": { "max_age_seconds": 3600 } }
              "a_key": "", # Properties of the object.
            },
          },
          "retrieval": { # Defines a retrieval tool that model can call to access external knowledge. # Optional. Retrieval tool type. System will always execute the provided retrieval tool(s) to get external knowledge to answer the prompt. Retrieval results are presented to the model for generation.
            "disableAttribution": True or False, # Optional. Deprecated. This option is no longer supported.
            "externalApi": { # 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. # Use data source powered by external API for grounding.
              "apiAuth": { # The generic reusable api auth config. Deprecated. Please use AuthConfig (google/cloud/aiplatform/master/auth.proto) instead. # The authentication config to access the API. Deprecated. Please use auth_config instead.
                "apiKeyConfig": { # The API secret. # The API secret.
                  "apiKeySecretVersion": "A String", # Required. The SecretManager secret version resource name storing API key. e.g. projects/{project}/secrets/{secret}/versions/{version}
                  "apiKeyString": "A String", # The API key string. Either this or `api_key_secret_version` must be set.
                },
              },
              "apiSpec": "A String", # The API spec that the external API implements.
              "authConfig": { # Auth configuration to run the extension. # The authentication config to access the API.
                "apiKeyConfig": { # Config for authentication with API key. # Config for API key auth.
                  "apiKeySecret": "A String", # 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.
                  "apiKeyString": "A String", # Optional. The API key to be used in the request directly.
                  "httpElementLocation": "A String", # Optional. The location of the API key.
                  "name": "A String", # 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.
                },
                "authType": "A String", # Type of auth scheme.
                "googleServiceAccountConfig": { # Config for Google Service Account Authentication. # Config for Google Service Account auth.
                  "serviceAccount": "A String", # 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.
                },
                "httpBasicAuthConfig": { # Config for HTTP Basic Authentication. # Config for HTTP Basic auth.
                  "credentialSecret": "A String", # 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.
                },
                "oauthConfig": { # Config for user oauth. # Config for user oauth.
                  "accessToken": "A String", # Access token for extension endpoint. Only used to propagate token from [[ExecuteExtensionRequest.runtime_auth_config]] at request time.
                  "serviceAccount": "A String", # 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.
                },
                "oidcConfig": { # Config for user OIDC auth. # Config for user OIDC auth.
                  "idToken": "A String", # OpenID Connect formatted ID token for extension endpoint. Only used to propagate token from [[ExecuteExtensionRequest.runtime_auth_config]] at request time.
                  "serviceAccount": "A String", # 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).
                },
              },
              "elasticSearchParams": { # The search parameters to use for the ELASTIC_SEARCH spec. # Parameters for the elastic search API.
                "index": "A String", # The ElasticSearch index to use.
                "numHits": 42, # Optional. Number of hits (chunks) to request. When specified, it is passed to Elasticsearch as the `num_hits` param.
                "searchTemplate": "A String", # The ElasticSearch search template to use.
              },
              "endpoint": "A String", # 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
              "simpleSearchParams": { # The search parameters to use for SIMPLE_SEARCH spec. # Parameters for the simple search API.
              },
            },
            "vertexAiSearch": { # Retrieve from Vertex AI Search datastore or engine for grounding. datastore and engine are mutually exclusive. See https://cloud.google.com/products/agent-builder # Set to use data source powered by Vertex AI Search.
              "dataStoreSpecs": [ # 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.
                { # 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
                  "dataStore": "A String", # Full resource name of DataStore, such as Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}`
                  "filter": "A String", # 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)
                },
              ],
              "datastore": "A String", # Optional. Fully-qualified Vertex AI Search data store resource ID. Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}`
              "engine": "A String", # Optional. Fully-qualified Vertex AI Search engine resource ID. Format: `projects/{project}/locations/{location}/collections/{collection}/engines/{engine}`
              "filter": "A String", # Optional. Filter strings to be passed to the search API.
              "maxResults": 42, # Optional. Number of search results to return per query. The default value is 10. The maximumm allowed value is 10.
            },
            "vertexRagStore": { # Retrieve from Vertex RAG Store for grounding. # Set to use data source powered by Vertex RAG store. User data is uploaded via the VertexRagDataService.
              "ragResources": [ # 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.
                { # The definition of the Rag resource.
                  "ragCorpus": "A String", # Optional. RagCorpora resource name. Format: `projects/{project}/locations/{location}/ragCorpora/{rag_corpus}`
                  "ragFileIds": [ # Optional. rag_file_id. The files should be in the same rag_corpus set in rag_corpus field.
                    "A String",
                  ],
                },
              ],
              "ragRetrievalConfig": { # Specifies the context retrieval config. # Optional. The retrieval config for the Rag query.
                "filter": { # Config for filters. # Optional. Config for filters.
                  "metadataFilter": "A String", # Optional. String for metadata filtering.
                  "vectorDistanceThreshold": 3.14, # Optional. Only returns contexts with vector distance smaller than the threshold.
                  "vectorSimilarityThreshold": 3.14, # Optional. Only returns contexts with vector similarity larger than the threshold.
                },
                "ranking": { # Config for ranking and reranking. # Optional. Config for ranking and reranking.
                  "llmRanker": { # Config for LlmRanker. # Optional. Config for LlmRanker.
                    "modelName": "A String", # Optional. The model name used for ranking. See [Supported models](https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/inference#supported-models).
                  },
                  "rankService": { # Config for Rank Service. # Optional. Config for Rank Service.
                    "modelName": "A String", # Optional. The model name of the rank service. Format: `semantic-ranker-512@latest`
                  },
                },
                "topK": 42, # Optional. The number of contexts to retrieve.
              },
              "similarityTopK": 42, # Optional. Number of top k results to return from the selected corpora.
              "vectorDistanceThreshold": 3.14, # Optional. Only return results with vector distance smaller than the threshold.
            },
          },
          "urlContext": { # Tool to support URL context. # Optional. Tool to support URL context retrieval.
          },
        },
      ],
    }

      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # This resource represents a long-running operation that is the result of a network API call.
      "done": True or False, # 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.
      "error": { # 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). # The error result of the operation in case of failure or cancellation.
        "code": 42, # The status code, which should be an enum value of google.rpc.Code.
        "details": [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
          {
            "a_key": "", # Properties of the object. Contains field @type with type URL.
          },
        ],
        "message": "A String", # 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.
      },
      "metadata": { # 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.
        "a_key": "", # Properties of the object. Contains field @type with type URL.
      },
      "name": "A String", # 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}`.
      "response": { # 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`.
        "a_key": "", # Properties of the object. Contains field @type with type URL.
      },
    }

`augmentPrompt(parent, body=None, x__xgafv=None)`

    Given an input prompt, it returns augmented prompt from vertex rag store to guide LLM towards generating grounded responses.

    Args:
      parent: string, Required. The resource name of the Location from which to augment prompt. The users must have permission to make a call in the project. Format: `projects/{project}/locations/{location}`. (required)
      body: object, The request body.
        The object takes the form of:

    { # Request message for AugmentPrompt.
      "contents": [ # Optional. Input content to augment, only text format is supported for now.
        { # The structured data content of a message. A Content message contains a `role` field, which indicates the producer of the content, and a `parts` field, which contains the multi-part data of the message.
          "parts": [ # Required. A list of Part objects that make up a single message. Parts of a message can have different MIME types. A Content message must have at least one Part.
            { # 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`. For media types that are not text, `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.
              "codeExecutionResult": { # Result of executing the ExecutableCode. Generated only when the `CodeExecution` tool is used. # Optional. The result of executing the ExecutableCode.
                "outcome": "A String", # Required. Outcome of the code execution.
                "output": "A String", # Optional. Contains stdout when code execution is successful, stderr or other description otherwise.
              },
              "executableCode": { # 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. # Optional. Code generated by the model that is intended to be executed.
                "code": "A String", # Required. The code to be executed.
                "language": "A String", # Required. Programming language of the `code`.
              },
              "fileData": { # URI-based data. A FileData message contains a URI pointing to data of a specific media type. It is used to represent images, audio, and video stored in Google Cloud Storage. # Optional. The URI-based data of the part. This can be used to include files from Google Cloud Storage.
                "displayName": "A String", # Optional. The display name of the file. Used to provide a label or filename to distinguish files. This field is only returned in `PromptMessage` for prompt management. It is used in the Gemini calls only when server side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                "fileUri": "A String", # Required. The URI of the file in Google Cloud Storage.
                "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
              },
              "functionCall": { # 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. # Optional. A predicted function call returned from the model. This contains the name of the function to call and the arguments to pass to the function.
                "args": { # Optional. The function parameters and values in JSON object format. See FunctionDeclaration.parameters for parameter details.
                  "a_key": "", # Properties of the object.
                },
                "name": "A String", # Optional. The name of the function to call. Matches FunctionDeclaration.name.
                "partialArgs": [ # Optional. The partial argument value of the function call. If provided, represents the arguments/fields that are streamed incrementally.
                  { # Partial argument value of the function call.
                    "boolValue": True or False, # Optional. Represents a boolean value.
                    "jsonPath": "A String", # Required. A JSON Path (RFC 9535) to the argument being streamed. https://datatracker.ietf.org/doc/html/rfc9535. e.g. "$.foo.bar[0].data".
                    "nullValue": "A String", # Optional. Represents a null value.
                    "numberValue": 3.14, # Optional. Represents a double value.
                    "stringValue": "A String", # Optional. Represents a string value.
                    "willContinue": True or False, # Optional. Whether this is not the last part of the same json_path. If true, another PartialArg message for the current json_path is expected to follow.
                  },
                ],
                "willContinue": True or False, # Optional. Whether this is the last part of the FunctionCall. If true, another partial message for the current FunctionCall is expected to follow.
              },
              "functionResponse": { # 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. # Optional. The result of a function call. This is used to provide the model with the result of a function call that it predicted.
                "name": "A String", # Required. The name of the function to call. Matches FunctionDeclaration.name and FunctionCall.name.
                "parts": [ # Optional. Ordered `Parts` that constitute a function response. Parts may have different IANA MIME types.
                  { # A datatype containing media that is part of a `FunctionResponse` message. A `FunctionResponsePart` consists of data which has an associated datatype. A `FunctionResponsePart` can only contain one of the accepted types in `FunctionResponsePart.data`. A `FunctionResponsePart` must have a fixed IANA MIME type identifying the type and subtype of the media if the `inline_data` field is filled with raw bytes.
                    "fileData": { # URI based data for function response. # URI based data.
                      "displayName": "A String", # 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.
                      "fileUri": "A String", # Required. URI.
                      "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                    },
                    "inlineData": { # Raw media bytes for function response. Text should not be sent as raw bytes, use the 'text' field. # Inline media bytes.
                      "data": "A String", # Required. Raw bytes.
                      "displayName": "A String", # 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.
                      "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                    },
                  },
                ],
                "response": { # 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.
                  "a_key": "", # Properties of the object.
                },
                "scheduling": "A String", # Optional. Specifies how the response should be scheduled in the conversation. Only applicable to NON_BLOCKING function calls, is ignored otherwise. Defaults to WHEN_IDLE.
              },
              "inlineData": { # A content blob. A Blob contains data of a specific media type. It is used to represent images, audio, and video. # Optional. The inline data content of the part. This can be used to include images, audio, or video in a request.
                "data": "A String", # Required. The raw bytes of the data.
                "displayName": "A String", # Optional. The 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 used in the Gemini calls only when server-side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
              },
              "mediaResolution": { # per part media resolution. Media resolution for the input media. # per part media resolution. Media resolution for the input media.
                "level": "A String", # The tokenization quality used for given media.
              },
              "text": "A String", # Optional. The text content of the part. When sent from the VSCode Gemini Code Assist extension, references to @mentioned items will be converted to markdown boldface text. For example `@my-repo` will be converted to and sent as `**my-repo**` by the IDE agent.
              "thought": True or False, # Optional. Indicates whether the `part` represents the model's thought process or reasoning.
              "thoughtSignature": "A String", # Optional. An opaque signature for the thought so it can be reused in subsequent requests.
              "videoMetadata": { # Provides metadata for a video, including the start and end offsets for clipping and the frame rate. # Optional. Video metadata. The metadata should only be specified while the video data is presented in inline_data or file_data.
                "endOffset": "A String", # Optional. The end offset of the video.
                "fps": 3.14, # Optional. The frame rate of the video sent to the model. If not specified, the default value is 1.0. The valid range is (0.0, 24.0].
                "startOffset": "A String", # Optional. The start offset of the video.
              },
            },
          ],
          "role": "A String", # Optional. The producer of the content. Must be either 'user' or 'model'. If not set, the service will default to 'user'.
        },
      ],
      "model": { # Metadata of the backend deployed model. # Optional. Metadata of the backend deployed model.
        "model": "A String", # Optional. The model that the user will send the augmented prompt for content generation.
        "modelVersion": "A String", # Optional. The model version of the backend deployed model.
      },
      "vertexRagStore": { # Retrieve from Vertex RAG Store for grounding. # Optional. Retrieves contexts from the Vertex RagStore.
        "ragResources": [ # 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.
          { # The definition of the Rag resource.
            "ragCorpus": "A String", # Optional. RagCorpora resource name. Format: `projects/{project}/locations/{location}/ragCorpora/{rag_corpus}`
            "ragFileIds": [ # Optional. rag_file_id. The files should be in the same rag_corpus set in rag_corpus field.
              "A String",
            ],
          },
        ],
        "ragRetrievalConfig": { # Specifies the context retrieval config. # Optional. The retrieval config for the Rag query.
          "filter": { # Config for filters. # Optional. Config for filters.
            "metadataFilter": "A String", # Optional. String for metadata filtering.
            "vectorDistanceThreshold": 3.14, # Optional. Only returns contexts with vector distance smaller than the threshold.
            "vectorSimilarityThreshold": 3.14, # Optional. Only returns contexts with vector similarity larger than the threshold.
          },
          "ranking": { # Config for ranking and reranking. # Optional. Config for ranking and reranking.
            "llmRanker": { # Config for LlmRanker. # Optional. Config for LlmRanker.
              "modelName": "A String", # Optional. The model name used for ranking. See [Supported models](https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/inference#supported-models).
            },
            "rankService": { # Config for Rank Service. # Optional. Config for Rank Service.
              "modelName": "A String", # Optional. The model name of the rank service. Format: `semantic-ranker-512@latest`
            },
          },
          "topK": 42, # Optional. The number of contexts to retrieve.
        },
        "similarityTopK": 42, # Optional. Number of top k results to return from the selected corpora.
        "vectorDistanceThreshold": 3.14, # Optional. Only return results with vector distance smaller than the threshold.
      },
    }

      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # Response message for AugmentPrompt.
      "augmentedPrompt": [ # Augmented prompt, only text format is supported for now.
        { # The structured data content of a message. A Content message contains a `role` field, which indicates the producer of the content, and a `parts` field, which contains the multi-part data of the message.
          "parts": [ # Required. A list of Part objects that make up a single message. Parts of a message can have different MIME types. A Content message must have at least one Part.
            { # 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`. For media types that are not text, `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.
              "codeExecutionResult": { # Result of executing the ExecutableCode. Generated only when the `CodeExecution` tool is used. # Optional. The result of executing the ExecutableCode.
                "outcome": "A String", # Required. Outcome of the code execution.
                "output": "A String", # Optional. Contains stdout when code execution is successful, stderr or other description otherwise.
              },
              "executableCode": { # 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. # Optional. Code generated by the model that is intended to be executed.
                "code": "A String", # Required. The code to be executed.
                "language": "A String", # Required. Programming language of the `code`.
              },
              "fileData": { # URI-based data. A FileData message contains a URI pointing to data of a specific media type. It is used to represent images, audio, and video stored in Google Cloud Storage. # Optional. The URI-based data of the part. This can be used to include files from Google Cloud Storage.
                "displayName": "A String", # Optional. The display name of the file. Used to provide a label or filename to distinguish files. This field is only returned in `PromptMessage` for prompt management. It is used in the Gemini calls only when server side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                "fileUri": "A String", # Required. The URI of the file in Google Cloud Storage.
                "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
              },
              "functionCall": { # 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. # Optional. A predicted function call returned from the model. This contains the name of the function to call and the arguments to pass to the function.
                "args": { # Optional. The function parameters and values in JSON object format. See FunctionDeclaration.parameters for parameter details.
                  "a_key": "", # Properties of the object.
                },
                "name": "A String", # Optional. The name of the function to call. Matches FunctionDeclaration.name.
                "partialArgs": [ # Optional. The partial argument value of the function call. If provided, represents the arguments/fields that are streamed incrementally.
                  { # Partial argument value of the function call.
                    "boolValue": True or False, # Optional. Represents a boolean value.
                    "jsonPath": "A String", # Required. A JSON Path (RFC 9535) to the argument being streamed. https://datatracker.ietf.org/doc/html/rfc9535. e.g. "$.foo.bar[0].data".
                    "nullValue": "A String", # Optional. Represents a null value.
                    "numberValue": 3.14, # Optional. Represents a double value.
                    "stringValue": "A String", # Optional. Represents a string value.
                    "willContinue": True or False, # Optional. Whether this is not the last part of the same json_path. If true, another PartialArg message for the current json_path is expected to follow.
                  },
                ],
                "willContinue": True or False, # Optional. Whether this is the last part of the FunctionCall. If true, another partial message for the current FunctionCall is expected to follow.
              },
              "functionResponse": { # 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. # Optional. The result of a function call. This is used to provide the model with the result of a function call that it predicted.
                "name": "A String", # Required. The name of the function to call. Matches FunctionDeclaration.name and FunctionCall.name.
                "parts": [ # Optional. Ordered `Parts` that constitute a function response. Parts may have different IANA MIME types.
                  { # A datatype containing media that is part of a `FunctionResponse` message. A `FunctionResponsePart` consists of data which has an associated datatype. A `FunctionResponsePart` can only contain one of the accepted types in `FunctionResponsePart.data`. A `FunctionResponsePart` must have a fixed IANA MIME type identifying the type and subtype of the media if the `inline_data` field is filled with raw bytes.
                    "fileData": { # URI based data for function response. # URI based data.
                      "displayName": "A String", # 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.
                      "fileUri": "A String", # Required. URI.
                      "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                    },
                    "inlineData": { # Raw media bytes for function response. Text should not be sent as raw bytes, use the 'text' field. # Inline media bytes.
                      "data": "A String", # Required. Raw bytes.
                      "displayName": "A String", # 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.
                      "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                    },
                  },
                ],
                "response": { # 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.
                  "a_key": "", # Properties of the object.
                },
                "scheduling": "A String", # Optional. Specifies how the response should be scheduled in the conversation. Only applicable to NON_BLOCKING function calls, is ignored otherwise. Defaults to WHEN_IDLE.
              },
              "inlineData": { # A content blob. A Blob contains data of a specific media type. It is used to represent images, audio, and video. # Optional. The inline data content of the part. This can be used to include images, audio, or video in a request.
                "data": "A String", # Required. The raw bytes of the data.
                "displayName": "A String", # Optional. The 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 used in the Gemini calls only when server-side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
              },
              "mediaResolution": { # per part media resolution. Media resolution for the input media. # per part media resolution. Media resolution for the input media.
                "level": "A String", # The tokenization quality used for given media.
              },
              "text": "A String", # Optional. The text content of the part. When sent from the VSCode Gemini Code Assist extension, references to @mentioned items will be converted to markdown boldface text. For example `@my-repo` will be converted to and sent as `**my-repo**` by the IDE agent.
              "thought": True or False, # Optional. Indicates whether the `part` represents the model's thought process or reasoning.
              "thoughtSignature": "A String", # Optional. An opaque signature for the thought so it can be reused in subsequent requests.
              "videoMetadata": { # Provides metadata for a video, including the start and end offsets for clipping and the frame rate. # Optional. Video metadata. The metadata should only be specified while the video data is presented in inline_data or file_data.
                "endOffset": "A String", # Optional. The end offset of the video.
                "fps": 3.14, # Optional. The frame rate of the video sent to the model. If not specified, the default value is 1.0. The valid range is (0.0, 24.0].
                "startOffset": "A String", # Optional. The start offset of the video.
              },
            },
          ],
          "role": "A String", # Optional. The producer of the content. Must be either 'user' or 'model'. If not set, the service will default to 'user'.
        },
      ],
      "facts": [ # Retrieved facts from RAG data sources.
        { # The fact used in grounding.
          "chunk": { # A RagChunk includes the content of a chunk of a RagFile, and associated metadata. # If present, chunk properties.
            "pageSpan": { # Represents where the chunk starts and ends in the document. # If populated, represents where the chunk starts and ends in the document.
              "firstPage": 42, # Page where chunk starts in the document. Inclusive. 1-indexed.
              "lastPage": 42, # Page where chunk ends in the document. Inclusive. 1-indexed.
            },
            "text": "A String", # The content of the chunk.
          },
          "query": "A String", # Query that is used to retrieve this fact.
          "score": 3.14, # 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.
          "summary": "A String", # If present, the summary/snippet of the fact.
          "title": "A String", # If present, it refers to the title of this fact.
          "uri": "A String", # If present, this uri links to the source of the fact.
          "vectorDistance": 3.14, # If present, the distance between the query vector and this fact vector.
        },
      ],
    }

`close()`

    Close httplib2 connections.

`corroborateContent(parent, body=None, x__xgafv=None)`

    Given an input text, it returns a score that evaluates the factuality of the text. It also extracts and returns claims from the text and provides supporting facts.

    Args:
      parent: string, Required. The resource name of the Location from which to corroborate text. The users must have permission to make a call in the project. Format: `projects/{project}/locations/{location}`. (required)
      body: object, The request body.
        The object takes the form of:

    { # Request message for CorroborateContent.
      "content": { # The structured data content of a message. A Content message contains a `role` field, which indicates the producer of the content, and a `parts` field, which contains the multi-part data of the message. # Optional. Input content to corroborate, only text format is supported for now.
        "parts": [ # Required. A list of Part objects that make up a single message. Parts of a message can have different MIME types. A Content message must have at least one Part.
          { # 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`. For media types that are not text, `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.
            "codeExecutionResult": { # Result of executing the ExecutableCode. Generated only when the `CodeExecution` tool is used. # Optional. The result of executing the ExecutableCode.
              "outcome": "A String", # Required. Outcome of the code execution.
              "output": "A String", # Optional. Contains stdout when code execution is successful, stderr or other description otherwise.
            },
            "executableCode": { # 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. # Optional. Code generated by the model that is intended to be executed.
              "code": "A String", # Required. The code to be executed.
              "language": "A String", # Required. Programming language of the `code`.
            },
            "fileData": { # URI-based data. A FileData message contains a URI pointing to data of a specific media type. It is used to represent images, audio, and video stored in Google Cloud Storage. # Optional. The URI-based data of the part. This can be used to include files from Google Cloud Storage.
              "displayName": "A String", # Optional. The display name of the file. Used to provide a label or filename to distinguish files. This field is only returned in `PromptMessage` for prompt management. It is used in the Gemini calls only when server side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
              "fileUri": "A String", # Required. The URI of the file in Google Cloud Storage.
              "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
            },
            "functionCall": { # 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. # Optional. A predicted function call returned from the model. This contains the name of the function to call and the arguments to pass to the function.
              "args": { # Optional. The function parameters and values in JSON object format. See FunctionDeclaration.parameters for parameter details.
                "a_key": "", # Properties of the object.
              },
              "name": "A String", # Optional. The name of the function to call. Matches FunctionDeclaration.name.
              "partialArgs": [ # Optional. The partial argument value of the function call. If provided, represents the arguments/fields that are streamed incrementally.
                { # Partial argument value of the function call.
                  "boolValue": True or False, # Optional. Represents a boolean value.
                  "jsonPath": "A String", # Required. A JSON Path (RFC 9535) to the argument being streamed. https://datatracker.ietf.org/doc/html/rfc9535. e.g. "$.foo.bar[0].data".
                  "nullValue": "A String", # Optional. Represents a null value.
                  "numberValue": 3.14, # Optional. Represents a double value.
                  "stringValue": "A String", # Optional. Represents a string value.
                  "willContinue": True or False, # Optional. Whether this is not the last part of the same json_path. If true, another PartialArg message for the current json_path is expected to follow.
                },
              ],
              "willContinue": True or False, # Optional. Whether this is the last part of the FunctionCall. If true, another partial message for the current FunctionCall is expected to follow.
            },
            "functionResponse": { # 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. # Optional. The result of a function call. This is used to provide the model with the result of a function call that it predicted.
              "name": "A String", # Required. The name of the function to call. Matches FunctionDeclaration.name and FunctionCall.name.
              "parts": [ # Optional. Ordered `Parts` that constitute a function response. Parts may have different IANA MIME types.
                { # A datatype containing media that is part of a `FunctionResponse` message. A `FunctionResponsePart` consists of data which has an associated datatype. A `FunctionResponsePart` can only contain one of the accepted types in `FunctionResponsePart.data`. A `FunctionResponsePart` must have a fixed IANA MIME type identifying the type and subtype of the media if the `inline_data` field is filled with raw bytes.
                  "fileData": { # URI based data for function response. # URI based data.
                    "displayName": "A String", # 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.
                    "fileUri": "A String", # Required. URI.
                    "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                  },
                  "inlineData": { # Raw media bytes for function response. Text should not be sent as raw bytes, use the 'text' field. # Inline media bytes.
                    "data": "A String", # Required. Raw bytes.
                    "displayName": "A String", # 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.
                    "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                  },
                },
              ],
              "response": { # 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.
                "a_key": "", # Properties of the object.
              },
              "scheduling": "A String", # Optional. Specifies how the response should be scheduled in the conversation. Only applicable to NON_BLOCKING function calls, is ignored otherwise. Defaults to WHEN_IDLE.
            },
            "inlineData": { # A content blob. A Blob contains data of a specific media type. It is used to represent images, audio, and video. # Optional. The inline data content of the part. This can be used to include images, audio, or video in a request.
              "data": "A String", # Required. The raw bytes of the data.
              "displayName": "A String", # Optional. The 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 used in the Gemini calls only when server-side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
              "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
            },
            "mediaResolution": { # per part media resolution. Media resolution for the input media. # per part media resolution. Media resolution for the input media.
              "level": "A String", # The tokenization quality used for given media.
            },
            "text": "A String", # Optional. The text content of the part. When sent from the VSCode Gemini Code Assist extension, references to @mentioned items will be converted to markdown boldface text. For example `@my-repo` will be converted to and sent as `**my-repo**` by the IDE agent.
            "thought": True or False, # Optional. Indicates whether the `part` represents the model's thought process or reasoning.
            "thoughtSignature": "A String", # Optional. An opaque signature for the thought so it can be reused in subsequent requests.
            "videoMetadata": { # Provides metadata for a video, including the start and end offsets for clipping and the frame rate. # Optional. Video metadata. The metadata should only be specified while the video data is presented in inline_data or file_data.
              "endOffset": "A String", # Optional. The end offset of the video.
              "fps": 3.14, # Optional. The frame rate of the video sent to the model. If not specified, the default value is 1.0. The valid range is (0.0, 24.0].
              "startOffset": "A String", # Optional. The start offset of the video.
            },
          },
        ],
        "role": "A String", # Optional. The producer of the content. Must be either 'user' or 'model'. If not set, the service will default to 'user'.
      },
      "facts": [ # Optional. Facts used to generate the text can also be used to corroborate the text.
        { # The fact used in grounding.
          "chunk": { # A RagChunk includes the content of a chunk of a RagFile, and associated metadata. # If present, chunk properties.
            "pageSpan": { # Represents where the chunk starts and ends in the document. # If populated, represents where the chunk starts and ends in the document.
              "firstPage": 42, # Page where chunk starts in the document. Inclusive. 1-indexed.
              "lastPage": 42, # Page where chunk ends in the document. Inclusive. 1-indexed.
            },
            "text": "A String", # The content of the chunk.
          },
          "query": "A String", # Query that is used to retrieve this fact.
          "score": 3.14, # 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.
          "summary": "A String", # If present, the summary/snippet of the fact.
          "title": "A String", # If present, it refers to the title of this fact.
          "uri": "A String", # If present, this uri links to the source of the fact.
          "vectorDistance": 3.14, # If present, the distance between the query vector and this fact vector.
        },
      ],
      "parameters": { # Parameters that can be overrided per request. # Optional. Parameters that can be set to override default settings per request.
        "citationThreshold": 3.14, # Optional. Only return claims with citation score larger than the threshold.
      },
    }

      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # Response message for CorroborateContent.
      "claims": [ # Claims that are extracted from the input content and facts that support the claims.
        { # Claim that is extracted from the input text and facts that support it.
          "endIndex": 42, # Index in the input text where the claim ends (exclusive).
          "factIndexes": [ # Indexes of the facts supporting this claim.
            42,
          ],
          "score": 3.14, # Confidence score of this corroboration.
          "startIndex": 42, # Index in the input text where the claim starts (inclusive).
        },
      ],
      "corroborationScore": 3.14, # Confidence score of corroborating content. Value is [0,1] with 1 is the most confidence.
    }

`deploy(destination, body=None, x__xgafv=None)`

    Deploys a model to a new endpoint.

    Args:
      destination: string, Required. The resource name of the Location to deploy the model in. Format: `projects/{project}/locations/{location}` (required)
      body: object, The request body.
        The object takes the form of:

    { # Request message for ModelGardenService.Deploy.
      "deployConfig": { # The deploy config to use for the deployment. # Optional. The deploy config to use for the deployment. If not specified, the default deploy config will be used.
        "dedicatedResources": { # A description of resources that are dedicated to a DeployedModel or DeployedIndex, and that need a higher degree of manual configuration. # Optional. The dedicated resources to use for the endpoint. If not set, the default resources will be used.
          "autoscalingMetricSpecs": [ # 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`.
            { # The metric specification that defines the target resource utilization (CPU utilization, accelerator's duty cycle, and so on) for calculating the desired replica count.
              "metricName": "A String", # 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` * `pubsub.googleapis.com/subscription/num_undelivered_messages` * `prometheus.googleapis.com/vertex_dcgm_fi_dev_gpu_util` * `prometheus.googleapis.com/vertex_vllm_gpu_cache_usage_perc` * `prometheus.googleapis.com/vertex_vllm_num_requests_waiting`
              "target": 42, # 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.
            },
          ],
          "machineSpec": { # Specification of a single machine. # Required. Immutable. The specification of a single machine being used.
            "acceleratorCount": 42, # The number of accelerators to attach to the machine. For accelerator optimized machine types (https://cloud.google.com/compute/docs/accelerator-optimized-machines), One may set the accelerator_count from 1 to N for machine with N GPUs. If accelerator_count is less than or equal to N / 2, Vertex will co-schedule the replicas of the model into the same VM to save cost. For example, if the machine type is a3-highgpu-8g, which has 8 H100 GPUs, one can set accelerator_count to 1 to 8. If accelerator_count is 1, 2, 3, or 4, Vertex will co-schedule 8, 4, 2, or 2 replicas of the model into the same VM to save cost. When co-scheduling, CPU, memory and storage on the VM will be distributed to replicas on the VM. For example, one can expect a co-scheduled replica requesting 2 GPUs out of a 8-GPU VM will receive 25% of the CPU, memory and storage of the VM. Note that the feature is not compatible with multihost_gpu_node_count. When multihost_gpu_node_count is set, the co-scheduling will not be enabled.
            "acceleratorType": "A String", # Immutable. The type of accelerator(s) that may be attached to the machine as per accelerator_count.
            "gpuPartitionSize": "A String", # Optional. Immutable. The Nvidia GPU partition size. When specified, the requested accelerators will be partitioned into smaller GPU partitions. For example, if the request is for 8 units of NVIDIA A100 GPUs, and gpu_partition_size="1g.10gb", the service will create 8 * 7 = 56 partitioned MIG instances. The partition size must be a value supported by the requested accelerator. Refer to [Nvidia GPU Partitioning](https://cloud.google.com/kubernetes-engine/docs/how-to/gpus-multi#multi-instance_gpu_partitions) for the available partition sizes. If set, the accelerator_count should be set to 1.
            "machineType": "A String", # 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.
            "reservationAffinity": { # 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. # Optional. Immutable. Configuration controlling how this resource pool consumes reservation.
              "key": "A String", # 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.
              "reservationAffinityType": "A String", # Required. Specifies the reservation affinity type.
              "values": [ # Optional. Corresponds to the label values of a reservation resource. This must be the full resource name of the reservation or reservation block.
                "A String",
              ],
            },
            "tpuTopology": "A String", # Immutable. The topology of the TPUs. Corresponds to the TPU topologies available from GKE. (Example: tpu_topology: "2x2x1").
          },
          "maxReplicaCount": 42, # 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).
          "minReplicaCount": 42, # 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.
          "requiredReplicaCount": 42, # 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.
          "spot": True or False, # Optional. If true, schedule the deployment workload on [spot VMs](https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms).
        },
        "fastTryoutEnabled": True or False, # Optional. If true, enable the QMT fast tryout feature for this model if possible.
        "systemLabels": { # Optional. System labels for Model Garden deployments. These labels are managed by Google and for tracking purposes only.
          "a_key": "A String",
        },
      },
      "endpointConfig": { # The endpoint config to use for the deployment. # Optional. The endpoint config to use for the deployment. If not specified, the default endpoint config will be used.
        "dedicatedEndpointDisabled": True or False, # 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.
        "dedicatedEndpointEnabled": True or False, # 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.
        "endpointDisplayName": "A String", # Optional. The user-specified display name of the endpoint. If not set, a default name will be used.
        "endpointUserId": "A String", # 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.
        "labels": { # Optional. 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.
          "a_key": "A String",
        },
        "privateServiceConnectConfig": { # Represents configuration for private service connect. # Optional. Configuration for private service connect. If set, the endpoint will be exposed through private service connect.
          "enablePrivateServiceConnect": True or False, # Required. If true, expose the IndexEndpoint via private service connect.
          "projectAllowlist": [ # A list of Projects from which the forwarding rule will target the service attachment.
            "A String",
          ],
          "pscAutomationConfigs": [ # Optional. List of projects and networks where the PSC endpoints will be created. This field is used by Online Inference(Prediction) only.
            { # PSC config that is used to automatically create PSC endpoints in the user projects.
              "errorMessage": "A String", # Output only. Error message if the PSC service automation failed.
              "forwardingRule": "A String", # Output only. Forwarding rule created by the PSC service automation.
              "ipAddress": "A String", # Output only. IP address rule created by the PSC service automation.
              "network": "A String", # 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}`.
              "projectId": "A String", # Required. Project id used to create forwarding rule.
              "state": "A String", # Output only. The state of the PSC service automation.
            },
          ],
          "serviceAttachment": "A String", # Output only. The name of the generated service attachment resource. This is only populated if the endpoint is deployed with PrivateServiceConnect.
        },
      },
      "huggingFaceModelId": "A String", # The Hugging Face model to deploy. Format: Hugging Face model ID like `google/gemma-2-2b-it`.
      "modelConfig": { # The model config to use for the deployment. # Optional. The model config to use for the deployment. If not specified, the default model config will be used.
        "acceptEula": True or False, # Optional. Whether the user accepts the End User License Agreement (EULA) for the model.
        "containerSpec": { # 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). # Optional. The specification of the container that is to be used when deploying. If not set, the default container spec will be used.
          "args": [ # 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).
            "A String",
          ],
          "command": [ # 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).
            "A String",
          ],
          "deploymentTimeout": "A String", # Immutable. Deployment timeout. Limit for deployment timeout is 2 hours.
          "env": [ # 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).
            { # Represents an environment variable present in a Container or Python Module.
              "name": "A String", # Required. Name of the environment variable. Must be a valid C identifier.
              "value": "A String", # 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.
            },
          ],
          "grpcPorts": [ # 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.
            { # Represents a network port in a container.
              "containerPort": 42, # The number of the port to expose on the pod's IP address. Must be a valid port number, between 1 and 65535 inclusive.
            },
          ],
          "healthProbe": { # Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. # Immutable. Specification for Kubernetes readiness probe.
            "exec": { # ExecAction specifies a command to execute. # ExecAction probes the health of a container by executing a command.
              "command": [ # 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.
                "A String",
              ],
            },
            "failureThreshold": 42, # Number of consecutive failures before the probe is considered failed. Defaults to 3. Minimum value is 1. Maps to Kubernetes probe argument 'failureThreshold'.
            "grpc": { # GrpcAction checks the health of a container using a gRPC service. # GrpcAction probes the health of a container by sending a gRPC request.
              "port": 42, # Port number of the gRPC service. Number must be in the range 1 to 65535.
              "service": "A String", # 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.
            },
            "httpGet": { # HttpGetAction describes an action based on HTTP Get requests. # HttpGetAction probes the health of a container by sending an HTTP GET request.
              "host": "A String", # Host name to connect to, defaults to the model serving container's IP. You probably want to set "Host" in httpHeaders instead.
              "httpHeaders": [ # Custom headers to set in the request. HTTP allows repeated headers.
                { # HttpHeader describes a custom header to be used in HTTP probes
                  "name": "A String", # The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.
                  "value": "A String", # The header field value
                },
              ],
              "path": "A String", # Path to access on the HTTP server.
              "port": 42, # Number of the port to access on the container. Number must be in the range 1 to 65535.
              "scheme": "A String", # Scheme to use for connecting to the host. Defaults to HTTP. Acceptable values are "HTTP" or "HTTPS".
            },
            "initialDelaySeconds": 42, # Number of seconds to wait before starting the probe. Defaults to 0. Minimum value is 0. Maps to Kubernetes probe argument 'initialDelaySeconds'.
            "periodSeconds": 42, # 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'.
            "successThreshold": 42, # Number of consecutive successes before the probe is considered successful. Defaults to 1. Minimum value is 1. Maps to Kubernetes probe argument 'successThreshold'.
            "tcpSocket": { # TcpSocketAction probes the health of a container by opening a TCP socket connection. # TcpSocketAction probes the health of a container by opening a TCP socket connection.
              "host": "A String", # Optional: Host name to connect to, defaults to the model serving container's IP.
              "port": 42, # Number of the port to access on the container. Number must be in the range 1 to 65535.
            },
            "timeoutSeconds": 42, # 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'.
          },
          "healthRoute": "A String", # 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).)
          "imageUri": "A String", # 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.
          "invokeRoutePrefix": "A String", # 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.
          "livenessProbe": { # Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. # Immutable. Specification for Kubernetes liveness probe.
            "exec": { # ExecAction specifies a command to execute. # ExecAction probes the health of a container by executing a command.
              "command": [ # 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.
                "A String",
              ],
            },
            "failureThreshold": 42, # Number of consecutive failures before the probe is considered failed. Defaults to 3. Minimum value is 1. Maps to Kubernetes probe argument 'failureThreshold'.
            "grpc": { # GrpcAction checks the health of a container using a gRPC service. # GrpcAction probes the health of a container by sending a gRPC request.
              "port": 42, # Port number of the gRPC service. Number must be in the range 1 to 65535.
              "service": "A String", # 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.
            },
            "httpGet": { # HttpGetAction describes an action based on HTTP Get requests. # HttpGetAction probes the health of a container by sending an HTTP GET request.
              "host": "A String", # Host name to connect to, defaults to the model serving container's IP. You probably want to set "Host" in httpHeaders instead.
              "httpHeaders": [ # Custom headers to set in the request. HTTP allows repeated headers.
                { # HttpHeader describes a custom header to be used in HTTP probes
                  "name": "A String", # The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.
                  "value": "A String", # The header field value
                },
              ],
              "path": "A String", # Path to access on the HTTP server.
              "port": 42, # Number of the port to access on the container. Number must be in the range 1 to 65535.
              "scheme": "A String", # Scheme to use for connecting to the host. Defaults to HTTP. Acceptable values are "HTTP" or "HTTPS".
            },
            "initialDelaySeconds": 42, # Number of seconds to wait before starting the probe. Defaults to 0. Minimum value is 0. Maps to Kubernetes probe argument 'initialDelaySeconds'.
            "periodSeconds": 42, # 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'.
            "successThreshold": 42, # Number of consecutive successes before the probe is considered successful. Defaults to 1. Minimum value is 1. Maps to Kubernetes probe argument 'successThreshold'.
            "tcpSocket": { # TcpSocketAction probes the health of a container by opening a TCP socket connection. # TcpSocketAction probes the health of a container by opening a TCP socket connection.
              "host": "A String", # Optional: Host name to connect to, defaults to the model serving container's IP.
              "port": 42, # Number of the port to access on the container. Number must be in the range 1 to 65535.
            },
            "timeoutSeconds": 42, # 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'.
          },
          "ports": [ # 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).
            { # Represents a network port in a container.
              "containerPort": 42, # The number of the port to expose on the pod's IP address. Must be a valid port number, between 1 and 65535 inclusive.
            },
          ],
          "predictRoute": "A String", # 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).)
          "sharedMemorySizeMb": "A String", # Immutable. The amount of the VM memory to reserve as the shared memory for the model in megabytes.
          "startupProbe": { # Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. # Immutable. Specification for Kubernetes startup probe.
            "exec": { # ExecAction specifies a command to execute. # ExecAction probes the health of a container by executing a command.
              "command": [ # 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.
                "A String",
              ],
            },
            "failureThreshold": 42, # Number of consecutive failures before the probe is considered failed. Defaults to 3. Minimum value is 1. Maps to Kubernetes probe argument 'failureThreshold'.
            "grpc": { # GrpcAction checks the health of a container using a gRPC service. # GrpcAction probes the health of a container by sending a gRPC request.
              "port": 42, # Port number of the gRPC service. Number must be in the range 1 to 65535.
              "service": "A String", # 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.
            },
            "httpGet": { # HttpGetAction describes an action based on HTTP Get requests. # HttpGetAction probes the health of a container by sending an HTTP GET request.
              "host": "A String", # Host name to connect to, defaults to the model serving container's IP. You probably want to set "Host" in httpHeaders instead.
              "httpHeaders": [ # Custom headers to set in the request. HTTP allows repeated headers.
                { # HttpHeader describes a custom header to be used in HTTP probes
                  "name": "A String", # The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header.
                  "value": "A String", # The header field value
                },
              ],
              "path": "A String", # Path to access on the HTTP server.
              "port": 42, # Number of the port to access on the container. Number must be in the range 1 to 65535.
              "scheme": "A String", # Scheme to use for connecting to the host. Defaults to HTTP. Acceptable values are "HTTP" or "HTTPS".
            },
            "initialDelaySeconds": 42, # Number of seconds to wait before starting the probe. Defaults to 0. Minimum value is 0. Maps to Kubernetes probe argument 'initialDelaySeconds'.
            "periodSeconds": 42, # 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'.
            "successThreshold": 42, # Number of consecutive successes before the probe is considered successful. Defaults to 1. Minimum value is 1. Maps to Kubernetes probe argument 'successThreshold'.
            "tcpSocket": { # TcpSocketAction probes the health of a container by opening a TCP socket connection. # TcpSocketAction probes the health of a container by opening a TCP socket connection.
              "host": "A String", # Optional: Host name to connect to, defaults to the model serving container's IP.
              "port": 42, # Number of the port to access on the container. Number must be in the range 1 to 65535.
            },
            "timeoutSeconds": 42, # 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'.
          },
        },
        "huggingFaceAccessToken": "A String", # Optional. The Hugging Face read access token used to access the model artifacts of gated models.
        "huggingFaceCacheEnabled": True or False, # 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.
        "modelDisplayName": "A String", # Optional. The user-specified display name of the uploaded model. If not set, a default name will be used.
        "modelUserId": "A String", # 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.
      },
      "publisherModelName": "A String", # 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`.
    }

      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # This resource represents a long-running operation that is the result of a network API call.
      "done": True or False, # 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.
      "error": { # 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). # The error result of the operation in case of failure or cancellation.
        "code": 42, # The status code, which should be an enum value of google.rpc.Code.
        "details": [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
          {
            "a_key": "", # Properties of the object. Contains field @type with type URL.
          },
        ],
        "message": "A String", # 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.
      },
      "metadata": { # 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.
        "a_key": "", # Properties of the object. Contains field @type with type URL.
      },
      "name": "A String", # 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}`.
      "response": { # 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`.
        "a_key": "", # Properties of the object. Contains field @type with type URL.
      },
    }

`evaluateDataset(location, body=None, x__xgafv=None)`

    Evaluates a dataset based on a set of given metrics.

    Args:
      location: string, Required. The resource name of the Location to evaluate the dataset. Format: `projects/{project}/locations/{location}` (required)
      body: object, The request body.
        The object takes the form of:

    { # Request message for EvaluationService.EvaluateDataset.
      "autoraterConfig": { # The configs for autorater. This is applicable to both EvaluateInstances and EvaluateDataset. # Optional. Autorater config used for evaluation. Currently only publisher Gemini models are supported. Format: `projects/{PROJECT}/locations/{LOCATION}/publishers/google/models/{MODEL}.`
        "autoraterModel": "A String", # 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}`
        "flipEnabled": True or False, # 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.
        "generationConfig": { # Configuration for content generation. This message contains all the parameters that control how the model generates content. It allows you to influence the randomness, length, and structure of the output. # Optional. Configuration options for model generation and outputs.
          "audioTimestamp": True or False, # Optional. If enabled, audio timestamps will be included in the request to the model. This can be useful for synchronizing audio with other modalities in the response.
          "candidateCount": 42, # Optional. The number of candidate responses to generate. A higher `candidate_count` can provide more options to choose from, but it also consumes more resources. This can be useful for generating a variety of responses and selecting the best one.
          "enableAffectiveDialog": True or False, # Optional. If enabled, the model will detect emotions and adapt its responses accordingly. For example, if the model detects that the user is frustrated, it may provide a more empathetic response.
          "frequencyPenalty": 3.14, # Optional. Penalizes tokens based on their frequency in the generated text. A positive value helps to reduce the repetition of words and phrases. Valid values can range from [-2.0, 2.0].
          "imageConfig": { # Configuration for image generation. This message allows you to control various aspects of image generation, such as the output format, aspect ratio, and whether the model can generate images of people. # Optional. Config for image generation features.
            "aspectRatio": "A String", # Optional. The desired aspect ratio for the generated images. The following aspect ratios are supported: "1:1" "2:3", "3:2" "3:4", "4:3" "4:5", "5:4" "9:16", "16:9" "21:9"
            "imageOutputOptions": { # The image output format for generated images. # Optional. The image output format for generated images.
              "compressionQuality": 42, # Optional. The compression quality of the output image.
              "mimeType": "A String", # Optional. The image format that the output should be saved as.
            },
            "imageSize": "A String", # Optional. Specifies the size of generated images. Supported values are `1K`, `2K`, `4K`. If not specified, the model will use default value `1K`.
            "personGeneration": "A String", # Optional. Controls whether the model can generate people.
            "prominentPeople": "A String", # Optional. Controls whether prominent people (celebrities) generation is allowed. If used with personGeneration, personGeneration enum would take precedence. For instance, if ALLOW_NONE is set, all person generation would be blocked. If this field is unspecified, the default behavior is to allow prominent people.
          },
          "logprobs": 42, # Optional. The number of top log probabilities to return for each token. This can be used to see which other tokens were considered likely candidates for a given position. A higher value will return more options, but it will also increase the size of the response.
          "maxOutputTokens": 42, # Optional. The maximum number of tokens to generate in the response. A token is approximately four characters. The default value varies by model. This parameter can be used to control the length of the generated text and prevent overly long responses.
          "mediaResolution": "A String", # Optional. The token resolution at which input media content is sampled. This is used to control the trade-off between the quality of the response and the number of tokens used to represent the media. A higher resolution allows the model to perceive more detail, which can lead to a more nuanced response, but it will also use more tokens. This does not affect the image dimensions sent to the model.
          "presencePenalty": 3.14, # Optional. Penalizes tokens that have already appeared in the generated text. A positive value encourages the model to generate more diverse and less repetitive text. Valid values can range from [-2.0, 2.0].
          "responseJsonSchema": "", # Optional. When this field is set, response_schema must be omitted and response_mime_type must be set to `application/json`.
          "responseLogprobs": True or False, # Optional. If set to true, the log probabilities of the output tokens are returned. Log probabilities are the logarithm of the probability of a token appearing in the output. A higher log probability means the token is more likely to be generated. This can be useful for analyzing the model's confidence in its own output and for debugging.
          "responseMimeType": "A String", # Optional. The IANA standard MIME type of the response. The model will generate output that conforms to this MIME type. Supported values include 'text/plain' (default) and 'application/json'. The model needs to be prompted to output the appropriate response type, otherwise the behavior is undefined.
          "responseModalities": [ # Optional. The modalities of the response. The model will generate a response that includes all the specified modalities. For example, if this is set to `[TEXT, IMAGE]`, the response will include both text and an image.
            "A String",
          ],
          "responseSchema": { # Defines the schema of input and output data. This is a subset of the [OpenAPI 3.0 Schema Object](https://spec.openapis.org/oas/v3.0.3#schema-object). # Optional. Lets you to specify a schema for the model's response, ensuring that the output conforms to a particular structure. This is useful for generating structured data such as JSON. The schema is a subset of the [OpenAPI 3.0 schema object](https://spec.openapis.org/oas/v3.0.3#schema) object. When this field is set, you must also set the `response_mime_type` to `application/json`.
            "additionalProperties": "", # Optional. If `type` is `OBJECT`, specifies how to handle properties not defined in `properties`. If it is a boolean `false`, no additional properties are allowed. If it is a schema, additional properties are allowed if they conform to the schema.
            "anyOf": [ # Optional. The instance must be valid against any (one or more) of the subschemas listed in `any_of`.
              # Object with schema name: GoogleCloudAiplatformV1Schema
            ],
            "default": "", # Optional. Default value to use if the field is not specified.
            "defs": { # Optional. `defs` provides a map of schema definitions that can be reused by `ref` elsewhere in the schema. Only allowed at root level of the schema.
              "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
            },
            "description": "A String", # Optional. Describes the data. The model uses this field to understand the purpose of the schema and how to use it. It is a best practice to provide a clear and descriptive explanation for the schema and its properties here, rather than in the prompt.
            "enum": [ # Optional. Possible values of the field. This field can be used to restrict a value to a fixed set of values. To mark a field as an enum, set `format` to `enum` and provide the list of possible values in `enum`. For example: 1. To define directions: `{type:STRING, format:enum, enum:["EAST", "NORTH", "SOUTH", "WEST"]}` 2. To define apartment numbers: `{type:INTEGER, format:enum, enum:["101", "201", "301"]}`
              "A String",
            ],
            "example": "", # Optional. Example of an instance of this schema.
            "format": "A String", # Optional. The format of the data. For `NUMBER` type, format can be `float` or `double`. For `INTEGER` type, format can be `int32` or `int64`. For `STRING` type, format can be `email`, `byte`, `date`, `date-time`, `password`, and other formats to further refine the data type.
            "items": # Object with schema name: GoogleCloudAiplatformV1Schema # Optional. If type is `ARRAY`, `items` specifies the schema of elements in the array.
            "maxItems": "A String", # Optional. If type is `ARRAY`, `max_items` specifies the maximum number of items in an array.
            "maxLength": "A String", # Optional. If type is `STRING`, `max_length` specifies the maximum length of the string.
            "maxProperties": "A String", # Optional. If type is `OBJECT`, `max_properties` specifies the maximum number of properties that can be provided.
            "maximum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `maximum` specifies the maximum allowed value.
            "minItems": "A String", # Optional. If type is `ARRAY`, `min_items` specifies the minimum number of items in an array.
            "minLength": "A String", # Optional. If type is `STRING`, `min_length` specifies the minimum length of the string.
            "minProperties": "A String", # Optional. If type is `OBJECT`, `min_properties` specifies the minimum number of properties that can be provided.
            "minimum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `minimum` specifies the minimum allowed value.
            "nullable": True or False, # Optional. Indicates if the value of this field can be null.
            "pattern": "A String", # Optional. If type is `STRING`, `pattern` specifies a regular expression that the string must match.
            "properties": { # Optional. If type is `OBJECT`, `properties` is a map of property names to schema definitions for each property of the object.
              "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
            },
            "propertyOrdering": [ # Optional. Order of properties displayed or used where order matters. This is not a standard field in OpenAPI specification, but can be used to control the order of properties.
              "A String",
            ],
            "ref": "A String", # Optional. Allows referencing another schema definition to use in place of this schema. The value must be a valid reference to a schema in `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
            "required": [ # Optional. If type is `OBJECT`, `required` lists the names of properties that must be present.
              "A String",
            ],
            "title": "A String", # Optional. Title for the schema.
            "type": "A String", # Optional. Data type of the schema field.
          },
          "routingConfig": { # The configuration for routing the request to a specific model. This can be used to control which model is used for the generation, either automatically or by specifying a model name. # Optional. Routing configuration.
            "autoMode": { # The configuration for automated routing. When automated routing is specified, the routing will be determined by the pretrained routing model and customer provided model routing preference. # In this mode, the model is selected automatically based on the content of the request.
              "modelRoutingPreference": "A String", # The model routing preference.
            },
            "manualMode": { # The configuration for manual routing. When manual routing is specified, the model will be selected based on the model name provided. # In this mode, the model is specified manually.
              "modelName": "A String", # The name of the model to use. Only public LLM models are accepted.
            },
          },
          "seed": 42, # Optional. A seed for the random number generator. By setting a seed, you can make the model's output mostly deterministic. For a given prompt and parameters (like temperature, top_p, etc.), the model will produce the same response every time. However, it's not a guaranteed absolute deterministic behavior. This is different from parameters like `temperature`, which control the *level* of randomness. `seed` ensures that the "random" choices the model makes are the same on every run, making it essential for testing and ensuring reproducible results.
          "speechConfig": { # Configuration for speech generation. # Optional. The speech generation config.
            "languageCode": "A String", # Optional. The language code (ISO 639-1) for the speech synthesis.
            "multiSpeakerVoiceConfig": { # Configuration for a multi-speaker text-to-speech request. # The configuration for a multi-speaker text-to-speech request. This field is mutually exclusive with `voice_config`.
              "speakerVoiceConfigs": [ # Required. A list of configurations for the voices of the speakers. Exactly two speaker voice configurations must be provided.
                { # Configuration for a single speaker in a multi-speaker setup.
                  "speaker": "A String", # Required. The name of the speaker. This should be the same as the speaker name used in the prompt.
                  "voiceConfig": { # Configuration for a voice. # Required. The configuration for the voice of this speaker.
                    "prebuiltVoiceConfig": { # Configuration for a prebuilt voice. # The configuration for a prebuilt voice.
                      "voiceName": "A String", # The name of the prebuilt voice to use.
                    },
                    "replicatedVoiceConfig": { # The configuration for the replicated voice to use. # Optional. The configuration for a replicated voice. This enables users to replicate a voice from an audio sample.
                      "mimeType": "A String", # Optional. The mimetype of the voice sample. The only currently supported value is `audio/wav`. This represents 16-bit signed little-endian wav data, with a 24kHz sampling rate. `mime_type` will default to `audio/wav` if not set.
                      "voiceSampleAudio": "A String", # Optional. The sample of the custom voice.
                    },
                  },
                },
              ],
            },
            "voiceConfig": { # Configuration for a voice. # The configuration for the voice to use.
              "prebuiltVoiceConfig": { # Configuration for a prebuilt voice. # The configuration for a prebuilt voice.
                "voiceName": "A String", # The name of the prebuilt voice to use.
              },
              "replicatedVoiceConfig": { # The configuration for the replicated voice to use. # Optional. The configuration for a replicated voice. This enables users to replicate a voice from an audio sample.
                "mimeType": "A String", # Optional. The mimetype of the voice sample. The only currently supported value is `audio/wav`. This represents 16-bit signed little-endian wav data, with a 24kHz sampling rate. `mime_type` will default to `audio/wav` if not set.
                "voiceSampleAudio": "A String", # Optional. The sample of the custom voice.
              },
            },
          },
          "stopSequences": [ # Optional. A list of character sequences that will stop the model from generating further tokens. If a stop sequence is generated, the output will end at that point. This is useful for controlling the length and structure of the output. For example, you can use ["\n", "###"] to stop generation at a new line or a specific marker.
            "A String",
          ],
          "temperature": 3.14, # Optional. Controls the randomness of the output. A higher temperature results in more creative and diverse responses, while a lower temperature makes the output more predictable and focused. The valid range is (0.0, 2.0].
          "thinkingConfig": { # Configuration for the model's thinking features. "Thinking" is a process where the model breaks down a complex task into smaller, manageable steps. This allows the model to reason about the task, plan its approach, and execute the plan to generate a high-quality response. # Optional. Configuration for thinking features. An error will be returned if this field is set for models that don't support thinking.
            "includeThoughts": True or False, # Optional. If true, the model will include its thoughts in the response. "Thoughts" are the intermediate steps the model takes to arrive at the final response. They can provide insights into the model's reasoning process and help with debugging. If this is true, thoughts are returned only when available.
            "thinkingBudget": 42, # Optional. The token budget for the model's thinking process. The model will make a best effort to stay within this budget. This can be used to control the trade-off between response quality and latency.
            "thinkingLevel": "A String", # Optional. The number of thoughts tokens that the model should generate.
          },
          "topK": 3.14, # Optional. Specifies the top-k sampling threshold. The model considers only the top k most probable tokens for the next token. This can be useful for generating more coherent and less random text. For example, a `top_k` of 40 means the model will choose the next word from the 40 most likely words.
          "topP": 3.14, # Optional. Specifies the nucleus sampling threshold. The model considers only the smallest set of tokens whose cumulative probability is at least `top_p`. This helps generate more diverse and less repetitive responses. For example, a `top_p` of 0.9 means the model considers tokens until the cumulative probability of the tokens to select from reaches 0.9. It's recommended to adjust either temperature or `top_p`, but not both.
        },
        "samplingCount": 42, # 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.
      },
      "dataset": { # The dataset used for evaluation. # Required. The dataset used for evaluation.
        "bigquerySource": { # The BigQuery location for the input content. # BigQuery source holds the dataset.
          "inputUri": "A String", # Required. BigQuery URI to a table, up to 2000 characters long. Accepted forms: * BigQuery path. For example: `bq://projectId.bqDatasetId.bqTableId`.
        },
        "gcsSource": { # The Google Cloud Storage location for the input content. # Cloud storage source holds the dataset. Currently only one Cloud Storage file path is supported.
          "uris": [ # 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.
            "A String",
          ],
        },
      },
      "location": "A String", # Required. The resource name of the Location to evaluate the dataset. Format: `projects/{project}/locations/{location}`
      "metrics": [ # Required. The metrics used for evaluation.
        { # The metric used for running evaluations.
          "aggregationMetrics": [ # Optional. The aggregation metrics to use.
            "A String",
          ],
          "bleuSpec": { # 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. # Spec for bleu metric.
            "useEffectiveOrder": True or False, # Optional. Whether to use_effective_order to compute bleu score.
          },
          "computationBasedMetricSpec": { # Specification for a computation based metric. # Spec for a computation based metric.
            "parameters": { # Optional. A map of parameters for the metric, e.g. {"rouge_type": "rougeL"}.
              "a_key": "", # Properties of the object.
            },
            "type": "A String", # Required. The type of the computation based metric.
          },
          "customCodeExecutionSpec": { # Specificies a metric that is populated by evaluating user-defined Python code. # Spec for Custom Code Execution metric.
            "evaluationFunction": "A String", # Required. Python function. Expected user to define the following function, e.g.: def evaluate(instance: dict[str, Any]) -> float: Please include this function signature in the code snippet. Instance is the evaluation instance, any fields populated in the instance are available to the function as instance[field_name]. Example: Example input: ``` instance= EvaluationInstance( response=EvaluationInstance.InstanceData(text="The answer is 4."), reference=EvaluationInstance.InstanceData(text="4") ) ``` Example converted input: ``` { 'response': {'text': 'The answer is 4.'}, 'reference': {'text': '4'} } ``` Example python function: ``` def evaluate(instance: dict[str, Any]) -> float: if instance'response' == instance'reference': return 1.0 return 0.0 ``` CustomCodeExecutionSpec is also supported in Batch Evaluation (EvalDataset RPC) and Tuning Evaluation. Each line in the input jsonl file will be converted to dict[str, Any] and passed to the evaluation function.
          },
          "exactMatchSpec": { # Spec for exact match metric - returns 1 if prediction and reference exactly matches, otherwise 0. # Spec for exact match metric.
          },
          "llmBasedMetricSpec": { # Specification for an LLM based metric. # Spec for an LLM based metric.
            "additionalConfig": { # Optional. Optional additional configuration for the metric.
              "a_key": "", # Properties of the object.
            },
            "judgeAutoraterConfig": { # The configs for autorater. This is applicable to both EvaluateInstances and EvaluateDataset. # Optional. Optional configuration for the judge LLM (Autorater).
              "autoraterModel": "A String", # 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}`
              "flipEnabled": True or False, # 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.
              "generationConfig": { # Configuration for content generation. This message contains all the parameters that control how the model generates content. It allows you to influence the randomness, length, and structure of the output. # Optional. Configuration options for model generation and outputs.
                "audioTimestamp": True or False, # Optional. If enabled, audio timestamps will be included in the request to the model. This can be useful for synchronizing audio with other modalities in the response.
                "candidateCount": 42, # Optional. The number of candidate responses to generate. A higher `candidate_count` can provide more options to choose from, but it also consumes more resources. This can be useful for generating a variety of responses and selecting the best one.
                "enableAffectiveDialog": True or False, # Optional. If enabled, the model will detect emotions and adapt its responses accordingly. For example, if the model detects that the user is frustrated, it may provide a more empathetic response.
                "frequencyPenalty": 3.14, # Optional. Penalizes tokens based on their frequency in the generated text. A positive value helps to reduce the repetition of words and phrases. Valid values can range from [-2.0, 2.0].
                "imageConfig": { # Configuration for image generation. This message allows you to control various aspects of image generation, such as the output format, aspect ratio, and whether the model can generate images of people. # Optional. Config for image generation features.
                  "aspectRatio": "A String", # Optional. The desired aspect ratio for the generated images. The following aspect ratios are supported: "1:1" "2:3", "3:2" "3:4", "4:3" "4:5", "5:4" "9:16", "16:9" "21:9"
                  "imageOutputOptions": { # The image output format for generated images. # Optional. The image output format for generated images.
                    "compressionQuality": 42, # Optional. The compression quality of the output image.
                    "mimeType": "A String", # Optional. The image format that the output should be saved as.
                  },
                  "imageSize": "A String", # Optional. Specifies the size of generated images. Supported values are `1K`, `2K`, `4K`. If not specified, the model will use default value `1K`.
                  "personGeneration": "A String", # Optional. Controls whether the model can generate people.
                  "prominentPeople": "A String", # Optional. Controls whether prominent people (celebrities) generation is allowed. If used with personGeneration, personGeneration enum would take precedence. For instance, if ALLOW_NONE is set, all person generation would be blocked. If this field is unspecified, the default behavior is to allow prominent people.
                },
                "logprobs": 42, # Optional. The number of top log probabilities to return for each token. This can be used to see which other tokens were considered likely candidates for a given position. A higher value will return more options, but it will also increase the size of the response.
                "maxOutputTokens": 42, # Optional. The maximum number of tokens to generate in the response. A token is approximately four characters. The default value varies by model. This parameter can be used to control the length of the generated text and prevent overly long responses.
                "mediaResolution": "A String", # Optional. The token resolution at which input media content is sampled. This is used to control the trade-off between the quality of the response and the number of tokens used to represent the media. A higher resolution allows the model to perceive more detail, which can lead to a more nuanced response, but it will also use more tokens. This does not affect the image dimensions sent to the model.
                "presencePenalty": 3.14, # Optional. Penalizes tokens that have already appeared in the generated text. A positive value encourages the model to generate more diverse and less repetitive text. Valid values can range from [-2.0, 2.0].
                "responseJsonSchema": "", # Optional. When this field is set, response_schema must be omitted and response_mime_type must be set to `application/json`.
                "responseLogprobs": True or False, # Optional. If set to true, the log probabilities of the output tokens are returned. Log probabilities are the logarithm of the probability of a token appearing in the output. A higher log probability means the token is more likely to be generated. This can be useful for analyzing the model's confidence in its own output and for debugging.
                "responseMimeType": "A String", # Optional. The IANA standard MIME type of the response. The model will generate output that conforms to this MIME type. Supported values include 'text/plain' (default) and 'application/json'. The model needs to be prompted to output the appropriate response type, otherwise the behavior is undefined.
                "responseModalities": [ # Optional. The modalities of the response. The model will generate a response that includes all the specified modalities. For example, if this is set to `[TEXT, IMAGE]`, the response will include both text and an image.
                  "A String",
                ],
                "responseSchema": { # Defines the schema of input and output data. This is a subset of the [OpenAPI 3.0 Schema Object](https://spec.openapis.org/oas/v3.0.3#schema-object). # Optional. Lets you to specify a schema for the model's response, ensuring that the output conforms to a particular structure. This is useful for generating structured data such as JSON. The schema is a subset of the [OpenAPI 3.0 schema object](https://spec.openapis.org/oas/v3.0.3#schema) object. When this field is set, you must also set the `response_mime_type` to `application/json`.
                  "additionalProperties": "", # Optional. If `type` is `OBJECT`, specifies how to handle properties not defined in `properties`. If it is a boolean `false`, no additional properties are allowed. If it is a schema, additional properties are allowed if they conform to the schema.
                  "anyOf": [ # Optional. The instance must be valid against any (one or more) of the subschemas listed in `any_of`.
                    # Object with schema name: GoogleCloudAiplatformV1Schema
                  ],
                  "default": "", # Optional. Default value to use if the field is not specified.
                  "defs": { # Optional. `defs` provides a map of schema definitions that can be reused by `ref` elsewhere in the schema. Only allowed at root level of the schema.
                    "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                  },
                  "description": "A String", # Optional. Describes the data. The model uses this field to understand the purpose of the schema and how to use it. It is a best practice to provide a clear and descriptive explanation for the schema and its properties here, rather than in the prompt.
                  "enum": [ # Optional. Possible values of the field. This field can be used to restrict a value to a fixed set of values. To mark a field as an enum, set `format` to `enum` and provide the list of possible values in `enum`. For example: 1. To define directions: `{type:STRING, format:enum, enum:["EAST", "NORTH", "SOUTH", "WEST"]}` 2. To define apartment numbers: `{type:INTEGER, format:enum, enum:["101", "201", "301"]}`
                    "A String",
                  ],
                  "example": "", # Optional. Example of an instance of this schema.
                  "format": "A String", # Optional. The format of the data. For `NUMBER` type, format can be `float` or `double`. For `INTEGER` type, format can be `int32` or `int64`. For `STRING` type, format can be `email`, `byte`, `date`, `date-time`, `password`, and other formats to further refine the data type.
                  "items": # Object with schema name: GoogleCloudAiplatformV1Schema # Optional. If type is `ARRAY`, `items` specifies the schema of elements in the array.
                  "maxItems": "A String", # Optional. If type is `ARRAY`, `max_items` specifies the maximum number of items in an array.
                  "maxLength": "A String", # Optional. If type is `STRING`, `max_length` specifies the maximum length of the string.
                  "maxProperties": "A String", # Optional. If type is `OBJECT`, `max_properties` specifies the maximum number of properties that can be provided.
                  "maximum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `maximum` specifies the maximum allowed value.
                  "minItems": "A String", # Optional. If type is `ARRAY`, `min_items` specifies the minimum number of items in an array.
                  "minLength": "A String", # Optional. If type is `STRING`, `min_length` specifies the minimum length of the string.
                  "minProperties": "A String", # Optional. If type is `OBJECT`, `min_properties` specifies the minimum number of properties that can be provided.
                  "minimum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `minimum` specifies the minimum allowed value.
                  "nullable": True or False, # Optional. Indicates if the value of this field can be null.
                  "pattern": "A String", # Optional. If type is `STRING`, `pattern` specifies a regular expression that the string must match.
                  "properties": { # Optional. If type is `OBJECT`, `properties` is a map of property names to schema definitions for each property of the object.
                    "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                  },
                  "propertyOrdering": [ # Optional. Order of properties displayed or used where order matters. This is not a standard field in OpenAPI specification, but can be used to control the order of properties.
                    "A String",
                  ],
                  "ref": "A String", # Optional. Allows referencing another schema definition to use in place of this schema. The value must be a valid reference to a schema in `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
                  "required": [ # Optional. If type is `OBJECT`, `required` lists the names of properties that must be present.
                    "A String",
                  ],
                  "title": "A String", # Optional. Title for the schema.
                  "type": "A String", # Optional. Data type of the schema field.
                },
                "routingConfig": { # The configuration for routing the request to a specific model. This can be used to control which model is used for the generation, either automatically or by specifying a model name. # Optional. Routing configuration.
                  "autoMode": { # The configuration for automated routing. When automated routing is specified, the routing will be determined by the pretrained routing model and customer provided model routing preference. # In this mode, the model is selected automatically based on the content of the request.
                    "modelRoutingPreference": "A String", # The model routing preference.
                  },
                  "manualMode": { # The configuration for manual routing. When manual routing is specified, the model will be selected based on the model name provided. # In this mode, the model is specified manually.
                    "modelName": "A String", # The name of the model to use. Only public LLM models are accepted.
                  },
                },
                "seed": 42, # Optional. A seed for the random number generator. By setting a seed, you can make the model's output mostly deterministic. For a given prompt and parameters (like temperature, top_p, etc.), the model will produce the same response every time. However, it's not a guaranteed absolute deterministic behavior. This is different from parameters like `temperature`, which control the *level* of randomness. `seed` ensures that the "random" choices the model makes are the same on every run, making it essential for testing and ensuring reproducible results.
                "speechConfig": { # Configuration for speech generation. # Optional. The speech generation config.
                  "languageCode": "A String", # Optional. The language code (ISO 639-1) for the speech synthesis.
                  "multiSpeakerVoiceConfig": { # Configuration for a multi-speaker text-to-speech request. # The configuration for a multi-speaker text-to-speech request. This field is mutually exclusive with `voice_config`.
                    "speakerVoiceConfigs": [ # Required. A list of configurations for the voices of the speakers. Exactly two speaker voice configurations must be provided.
                      { # Configuration for a single speaker in a multi-speaker setup.
                        "speaker": "A String", # Required. The name of the speaker. This should be the same as the speaker name used in the prompt.
                        "voiceConfig": { # Configuration for a voice. # Required. The configuration for the voice of this speaker.
                          "prebuiltVoiceConfig": { # Configuration for a prebuilt voice. # The configuration for a prebuilt voice.
                            "voiceName": "A String", # The name of the prebuilt voice to use.
                          },
                          "replicatedVoiceConfig": { # The configuration for the replicated voice to use. # Optional. The configuration for a replicated voice. This enables users to replicate a voice from an audio sample.
                            "mimeType": "A String", # Optional. The mimetype of the voice sample. The only currently supported value is `audio/wav`. This represents 16-bit signed little-endian wav data, with a 24kHz sampling rate. `mime_type` will default to `audio/wav` if not set.
                            "voiceSampleAudio": "A String", # Optional. The sample of the custom voice.
                          },
                        },
                      },
                    ],
                  },
                  "voiceConfig": { # Configuration for a voice. # The configuration for the voice to use.
                    "prebuiltVoiceConfig": { # Configuration for a prebuilt voice. # The configuration for a prebuilt voice.
                      "voiceName": "A String", # The name of the prebuilt voice to use.
                    },
                    "replicatedVoiceConfig": { # The configuration for the replicated voice to use. # Optional. The configuration for a replicated voice. This enables users to replicate a voice from an audio sample.
                      "mimeType": "A String", # Optional. The mimetype of the voice sample. The only currently supported value is `audio/wav`. This represents 16-bit signed little-endian wav data, with a 24kHz sampling rate. `mime_type` will default to `audio/wav` if not set.
                      "voiceSampleAudio": "A String", # Optional. The sample of the custom voice.
                    },
                  },
                },
                "stopSequences": [ # Optional. A list of character sequences that will stop the model from generating further tokens. If a stop sequence is generated, the output will end at that point. This is useful for controlling the length and structure of the output. For example, you can use ["\n", "###"] to stop generation at a new line or a specific marker.
                  "A String",
                ],
                "temperature": 3.14, # Optional. Controls the randomness of the output. A higher temperature results in more creative and diverse responses, while a lower temperature makes the output more predictable and focused. The valid range is (0.0, 2.0].
                "thinkingConfig": { # Configuration for the model's thinking features. "Thinking" is a process where the model breaks down a complex task into smaller, manageable steps. This allows the model to reason about the task, plan its approach, and execute the plan to generate a high-quality response. # Optional. Configuration for thinking features. An error will be returned if this field is set for models that don't support thinking.
                  "includeThoughts": True or False, # Optional. If true, the model will include its thoughts in the response. "Thoughts" are the intermediate steps the model takes to arrive at the final response. They can provide insights into the model's reasoning process and help with debugging. If this is true, thoughts are returned only when available.
                  "thinkingBudget": 42, # Optional. The token budget for the model's thinking process. The model will make a best effort to stay within this budget. This can be used to control the trade-off between response quality and latency.
                  "thinkingLevel": "A String", # Optional. The number of thoughts tokens that the model should generate.
                },
                "topK": 3.14, # Optional. Specifies the top-k sampling threshold. The model considers only the top k most probable tokens for the next token. This can be useful for generating more coherent and less random text. For example, a `top_k` of 40 means the model will choose the next word from the 40 most likely words.
                "topP": 3.14, # Optional. Specifies the nucleus sampling threshold. The model considers only the smallest set of tokens whose cumulative probability is at least `top_p`. This helps generate more diverse and less repetitive responses. For example, a `top_p` of 0.9 means the model considers tokens until the cumulative probability of the tokens to select from reaches 0.9. It's recommended to adjust either temperature or `top_p`, but not both.
              },
              "samplingCount": 42, # 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.
            },
            "metricPromptTemplate": "A String", # Required. Template for the prompt sent to the judge model.
            "predefinedRubricGenerationSpec": { # The spec for a pre-defined metric. # Dynamically generate rubrics using a predefined spec.
              "metricSpecName": "A String", # Required. The name of a pre-defined metric, such as "instruction_following_v1" or "text_quality_v1".
              "metricSpecParameters": { # Optional. The parameters needed to run the pre-defined metric.
                "a_key": "", # Properties of the object.
              },
            },
            "resultParserConfig": { # Config for parsing LLM responses. It can be used to parse the LLM response to be evaluated, or the LLM response from LLM-based metrics/Autoraters. # Optional. The parser config for the metric result.
              "customCodeParserConfig": { # Configuration for parsing the LLM response using custom code. # Optional. Use custom code to parse the LLM response.
                "parsingFunction": "A String", # Required. Python function for parsing results. The function should be defined within this string. The function takes a list of strings (LLM responses) and should return either a list of dictionaries (for rubrics) or a single dictionary (for a metric result). Example function signature: def parse(responses: list[str]) -> list[dict[str, Any]] | dict[str, Any]: When parsing rubrics, return a list of dictionaries, where each dictionary represents a Rubric. Example for rubrics: [ { "content": {"property": {"description": "The response is factual."}}, "type": "FACTUALITY", "importance": "HIGH" }, { "content": {"property": {"description": "The response is fluent."}}, "type": "FLUENCY", "importance": "MEDIUM" } ] When parsing critique results, return a dictionary representing a MetricResult. Example for a metric result: { "score": 0.8, "explanation": "The model followed most instructions.", "rubric_verdicts": [...] } ... code for result extraction and aggregation
              },
            },
            "rubricGenerationSpec": { # Specification for how rubrics should be generated. # Dynamically generate rubrics using this specification.
              "modelConfig": { # The configs for autorater. This is applicable to both EvaluateInstances and EvaluateDataset. # Configuration for the model used in rubric generation. Configs including sampling count and base model can be specified here. Flipping is not supported for rubric generation.
                "autoraterModel": "A String", # 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}`
                "flipEnabled": True or False, # 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.
                "generationConfig": { # Configuration for content generation. This message contains all the parameters that control how the model generates content. It allows you to influence the randomness, length, and structure of the output. # Optional. Configuration options for model generation and outputs.
                  "audioTimestamp": True or False, # Optional. If enabled, audio timestamps will be included in the request to the model. This can be useful for synchronizing audio with other modalities in the response.
                  "candidateCount": 42, # Optional. The number of candidate responses to generate. A higher `candidate_count` can provide more options to choose from, but it also consumes more resources. This can be useful for generating a variety of responses and selecting the best one.
                  "enableAffectiveDialog": True or False, # Optional. If enabled, the model will detect emotions and adapt its responses accordingly. For example, if the model detects that the user is frustrated, it may provide a more empathetic response.
                  "frequencyPenalty": 3.14, # Optional. Penalizes tokens based on their frequency in the generated text. A positive value helps to reduce the repetition of words and phrases. Valid values can range from [-2.0, 2.0].
                  "imageConfig": { # Configuration for image generation. This message allows you to control various aspects of image generation, such as the output format, aspect ratio, and whether the model can generate images of people. # Optional. Config for image generation features.
                    "aspectRatio": "A String", # Optional. The desired aspect ratio for the generated images. The following aspect ratios are supported: "1:1" "2:3", "3:2" "3:4", "4:3" "4:5", "5:4" "9:16", "16:9" "21:9"
                    "imageOutputOptions": { # The image output format for generated images. # Optional. The image output format for generated images.
                      "compressionQuality": 42, # Optional. The compression quality of the output image.
                      "mimeType": "A String", # Optional. The image format that the output should be saved as.
                    },
                    "imageSize": "A String", # Optional. Specifies the size of generated images. Supported values are `1K`, `2K`, `4K`. If not specified, the model will use default value `1K`.
                    "personGeneration": "A String", # Optional. Controls whether the model can generate people.
                    "prominentPeople": "A String", # Optional. Controls whether prominent people (celebrities) generation is allowed. If used with personGeneration, personGeneration enum would take precedence. For instance, if ALLOW_NONE is set, all person generation would be blocked. If this field is unspecified, the default behavior is to allow prominent people.
                  },
                  "logprobs": 42, # Optional. The number of top log probabilities to return for each token. This can be used to see which other tokens were considered likely candidates for a given position. A higher value will return more options, but it will also increase the size of the response.
                  "maxOutputTokens": 42, # Optional. The maximum number of tokens to generate in the response. A token is approximately four characters. The default value varies by model. This parameter can be used to control the length of the generated text and prevent overly long responses.
                  "mediaResolution": "A String", # Optional. The token resolution at which input media content is sampled. This is used to control the trade-off between the quality of the response and the number of tokens used to represent the media. A higher resolution allows the model to perceive more detail, which can lead to a more nuanced response, but it will also use more tokens. This does not affect the image dimensions sent to the model.
                  "presencePenalty": 3.14, # Optional. Penalizes tokens that have already appeared in the generated text. A positive value encourages the model to generate more diverse and less repetitive text. Valid values can range from [-2.0, 2.0].
                  "responseJsonSchema": "", # Optional. When this field is set, response_schema must be omitted and response_mime_type must be set to `application/json`.
                  "responseLogprobs": True or False, # Optional. If set to true, the log probabilities of the output tokens are returned. Log probabilities are the logarithm of the probability of a token appearing in the output. A higher log probability means the token is more likely to be generated. This can be useful for analyzing the model's confidence in its own output and for debugging.
                  "responseMimeType": "A String", # Optional. The IANA standard MIME type of the response. The model will generate output that conforms to this MIME type. Supported values include 'text/plain' (default) and 'application/json'. The model needs to be prompted to output the appropriate response type, otherwise the behavior is undefined.
                  "responseModalities": [ # Optional. The modalities of the response. The model will generate a response that includes all the specified modalities. For example, if this is set to `[TEXT, IMAGE]`, the response will include both text and an image.
                    "A String",
                  ],
                  "responseSchema": { # Defines the schema of input and output data. This is a subset of the [OpenAPI 3.0 Schema Object](https://spec.openapis.org/oas/v3.0.3#schema-object). # Optional. Lets you to specify a schema for the model's response, ensuring that the output conforms to a particular structure. This is useful for generating structured data such as JSON. The schema is a subset of the [OpenAPI 3.0 schema object](https://spec.openapis.org/oas/v3.0.3#schema) object. When this field is set, you must also set the `response_mime_type` to `application/json`.
                    "additionalProperties": "", # Optional. If `type` is `OBJECT`, specifies how to handle properties not defined in `properties`. If it is a boolean `false`, no additional properties are allowed. If it is a schema, additional properties are allowed if they conform to the schema.
                    "anyOf": [ # Optional. The instance must be valid against any (one or more) of the subschemas listed in `any_of`.
                      # Object with schema name: GoogleCloudAiplatformV1Schema
                    ],
                    "default": "", # Optional. Default value to use if the field is not specified.
                    "defs": { # Optional. `defs` provides a map of schema definitions that can be reused by `ref` elsewhere in the schema. Only allowed at root level of the schema.
                      "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                    },
                    "description": "A String", # Optional. Describes the data. The model uses this field to understand the purpose of the schema and how to use it. It is a best practice to provide a clear and descriptive explanation for the schema and its properties here, rather than in the prompt.
                    "enum": [ # Optional. Possible values of the field. This field can be used to restrict a value to a fixed set of values. To mark a field as an enum, set `format` to `enum` and provide the list of possible values in `enum`. For example: 1. To define directions: `{type:STRING, format:enum, enum:["EAST", "NORTH", "SOUTH", "WEST"]}` 2. To define apartment numbers: `{type:INTEGER, format:enum, enum:["101", "201", "301"]}`
                      "A String",
                    ],
                    "example": "", # Optional. Example of an instance of this schema.
                    "format": "A String", # Optional. The format of the data. For `NUMBER` type, format can be `float` or `double`. For `INTEGER` type, format can be `int32` or `int64`. For `STRING` type, format can be `email`, `byte`, `date`, `date-time`, `password`, and other formats to further refine the data type.
                    "items": # Object with schema name: GoogleCloudAiplatformV1Schema # Optional. If type is `ARRAY`, `items` specifies the schema of elements in the array.
                    "maxItems": "A String", # Optional. If type is `ARRAY`, `max_items` specifies the maximum number of items in an array.
                    "maxLength": "A String", # Optional. If type is `STRING`, `max_length` specifies the maximum length of the string.
                    "maxProperties": "A String", # Optional. If type is `OBJECT`, `max_properties` specifies the maximum number of properties that can be provided.
                    "maximum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `maximum` specifies the maximum allowed value.
                    "minItems": "A String", # Optional. If type is `ARRAY`, `min_items` specifies the minimum number of items in an array.
                    "minLength": "A String", # Optional. If type is `STRING`, `min_length` specifies the minimum length of the string.
                    "minProperties": "A String", # Optional. If type is `OBJECT`, `min_properties` specifies the minimum number of properties that can be provided.
                    "minimum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `minimum` specifies the minimum allowed value.
                    "nullable": True or False, # Optional. Indicates if the value of this field can be null.
                    "pattern": "A String", # Optional. If type is `STRING`, `pattern` specifies a regular expression that the string must match.
                    "properties": { # Optional. If type is `OBJECT`, `properties` is a map of property names to schema definitions for each property of the object.
                      "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                    },
                    "propertyOrdering": [ # Optional. Order of properties displayed or used where order matters. This is not a standard field in OpenAPI specification, but can be used to control the order of properties.
                      "A String",
                    ],
                    "ref": "A String", # Optional. Allows referencing another schema definition to use in place of this schema. The value must be a valid reference to a schema in `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
                    "required": [ # Optional. If type is `OBJECT`, `required` lists the names of properties that must be present.
                      "A String",
                    ],
                    "title": "A String", # Optional. Title for the schema.
                    "type": "A String", # Optional. Data type of the schema field.
                  },
                  "routingConfig": { # The configuration for routing the request to a specific model. This can be used to control which model is used for the generation, either automatically or by specifying a model name. # Optional. Routing configuration.
                    "autoMode": { # The configuration for automated routing. When automated routing is specified, the routing will be determined by the pretrained routing model and customer provided model routing preference. # In this mode, the model is selected automatically based on the content of the request.
                      "modelRoutingPreference": "A String", # The model routing preference.
                    },
                    "manualMode": { # The configuration for manual routing. When manual routing is specified, the model will be selected based on the model name provided. # In this mode, the model is specified manually.
                      "modelName": "A String", # The name of the model to use. Only public LLM models are accepted.
                    },
                  },
                  "seed": 42, # Optional. A seed for the random number generator. By setting a seed, you can make the model's output mostly deterministic. For a given prompt and parameters (like temperature, top_p, etc.), the model will produce the same response every time. However, it's not a guaranteed absolute deterministic behavior. This is different from parameters like `temperature`, which control the *level* of randomness. `seed` ensures that the "random" choices the model makes are the same on every run, making it essential for testing and ensuring reproducible results.
                  "speechConfig": { # Configuration for speech generation. # Optional. The speech generation config.
                    "languageCode": "A String", # Optional. The language code (ISO 639-1) for the speech synthesis.
                    "multiSpeakerVoiceConfig": { # Configuration for a multi-speaker text-to-speech request. # The configuration for a multi-speaker text-to-speech request. This field is mutually exclusive with `voice_config`.
                      "speakerVoiceConfigs": [ # Required. A list of configurations for the voices of the speakers. Exactly two speaker voice configurations must be provided.
                        { # Configuration for a single speaker in a multi-speaker setup.
                          "speaker": "A String", # Required. The name of the speaker. This should be the same as the speaker name used in the prompt.
                          "voiceConfig": { # Configuration for a voice. # Required. The configuration for the voice of this speaker.
                            "prebuiltVoiceConfig": { # Configuration for a prebuilt voice. # The configuration for a prebuilt voice.
                              "voiceName": "A String", # The name of the prebuilt voice to use.
                            },
                            "replicatedVoiceConfig": { # The configuration for the replicated voice to use. # Optional. The configuration for a replicated voice. This enables users to replicate a voice from an audio sample.
                              "mimeType": "A String", # Optional. The mimetype of the voice sample. The only currently supported value is `audio/wav`. This represents 16-bit signed little-endian wav data, with a 24kHz sampling rate. `mime_type` will default to `audio/wav` if not set.
                              "voiceSampleAudio": "A String", # Optional. The sample of the custom voice.
                            },
                          },
                        },
                      ],
                    },
                    "voiceConfig": { # Configuration for a voice. # The configuration for the voice to use.
                      "prebuiltVoiceConfig": { # Configuration for a prebuilt voice. # The configuration for a prebuilt voice.
                        "voiceName": "A String", # The name of the prebuilt voice to use.
                      },
                      "replicatedVoiceConfig": { # The configuration for the replicated voice to use. # Optional. The configuration for a replicated voice. This enables users to replicate a voice from an audio sample.
                        "mimeType": "A String", # Optional. The mimetype of the voice sample. The only currently supported value is `audio/wav`. This represents 16-bit signed little-endian wav data, with a 24kHz sampling rate. `mime_type` will default to `audio/wav` if not set.
                        "voiceSampleAudio": "A String", # Optional. The sample of the custom voice.
                      },
                    },
                  },
                  "stopSequences": [ # Optional. A list of character sequences that will stop the model from generating further tokens. If a stop sequence is generated, the output will end at that point. This is useful for controlling the length and structure of the output. For example, you can use ["\n", "###"] to stop generation at a new line or a specific marker.
                    "A String",
                  ],
                  "temperature": 3.14, # Optional. Controls the randomness of the output. A higher temperature results in more creative and diverse responses, while a lower temperature makes the output more predictable and focused. The valid range is (0.0, 2.0].
                  "thinkingConfig": { # Configuration for the model's thinking features. "Thinking" is a process where the model breaks down a complex task into smaller, manageable steps. This allows the model to reason about the task, plan its approach, and execute the plan to generate a high-quality response. # Optional. Configuration for thinking features. An error will be returned if this field is set for models that don't support thinking.
                    "includeThoughts": True or False, # Optional. If true, the model will include its thoughts in the response. "Thoughts" are the intermediate steps the model takes to arrive at the final response. They can provide insights into the model's reasoning process and help with debugging. If this is true, thoughts are returned only when available.
                    "thinkingBudget": 42, # Optional. The token budget for the model's thinking process. The model will make a best effort to stay within this budget. This can be used to control the trade-off between response quality and latency.
                    "thinkingLevel": "A String", # Optional. The number of thoughts tokens that the model should generate.
                  },
                  "topK": 3.14, # Optional. Specifies the top-k sampling threshold. The model considers only the top k most probable tokens for the next token. This can be useful for generating more coherent and less random text. For example, a `top_k` of 40 means the model will choose the next word from the 40 most likely words.
                  "topP": 3.14, # Optional. Specifies the nucleus sampling threshold. The model considers only the smallest set of tokens whose cumulative probability is at least `top_p`. This helps generate more diverse and less repetitive responses. For example, a `top_p` of 0.9 means the model considers tokens until the cumulative probability of the tokens to select from reaches 0.9. It's recommended to adjust either temperature or `top_p`, but not both.
                },
                "samplingCount": 42, # 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.
              },
              "promptTemplate": "A String", # Template for the prompt used to generate rubrics. The details should be updated based on the most-recent recipe requirements.
              "rubricContentType": "A String", # The type of rubric content to be generated.
              "rubricTypeOntology": [ # 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.
                "A String",
              ],
            },
            "rubricGroupKey": "A String", # Use a pre-defined group of rubrics associated with the input. Refers to a key in the rubric_groups map of EvaluationInstance.
            "systemInstruction": "A String", # Optional. System instructions for the judge model.
          },
          "metadata": { # Metadata about the metric, used for visualization and organization. # Optional. Metadata about the metric, used for visualization and organization.
            "otherMetadata": { # Optional. Flexible metadata for user-defined attributes.
              "a_key": "", # Properties of the object.
            },
            "scoreRange": { # The range of possible scores for this metric, used for plotting. # Optional. The range of possible scores for this metric, used for plotting.
              "description": "A String", # Optional. The description of the score explaining the directionality etc.
              "max": 3.14, # Required. The maximum value of the score range (inclusive).
              "min": 3.14, # Required. The minimum value of the score range (inclusive).
              "step": 3.14, # Optional. The distance between discrete steps in the range. If unset, the range is assumed to be continuous.
            },
            "title": "A String", # Optional. The user-friendly name for the metric. If not set for a registered metric, it will default to the metric's display name.
          },
          "pairwiseMetricSpec": { # Spec for pairwise metric. # Spec for pairwise metric.
            "baselineResponseFieldName": "A String", # Optional. The field name of the baseline response.
            "candidateResponseFieldName": "A String", # Optional. The field name of the candidate response.
            "customOutputFormatConfig": { # Spec for custom output format configuration. # Optional. CustomOutputFormatConfig allows customization of metric output. When this config is set, the default output is replaced with the raw output string. If a custom format is chosen, the `pairwise_choice` and `explanation` fields in the corresponding metric result will be empty.
              "returnRawOutput": True or False, # Optional. Whether to return raw output.
            },
            "metricPromptTemplate": "A String", # Required. Metric prompt template for pairwise metric.
            "systemInstruction": "A String", # Optional. System instructions for pairwise metric.
          },
          "pointwiseMetricSpec": { # Spec for pointwise metric. # Spec for pointwise metric.
            "customOutputFormatConfig": { # Spec for custom output format configuration. # Optional. CustomOutputFormatConfig allows customization of metric output. By default, metrics return a score and explanation. When this config is set, the default output is replaced with either: - The raw output string. - A parsed output based on a user-defined schema. If a custom format is chosen, the `score` and `explanation` fields in the corresponding metric result will be empty.
              "returnRawOutput": True or False, # Optional. Whether to return raw output.
            },
            "metricPromptTemplate": "A String", # Required. Metric prompt template for pointwise metric.
            "systemInstruction": "A String", # Optional. System instructions for pointwise metric.
          },
          "predefinedMetricSpec": { # The spec for a pre-defined metric. # The spec for a pre-defined metric.
            "metricSpecName": "A String", # Required. The name of a pre-defined metric, such as "instruction_following_v1" or "text_quality_v1".
            "metricSpecParameters": { # Optional. The parameters needed to run the pre-defined metric.
              "a_key": "", # Properties of the object.
            },
          },
          "rougeSpec": { # 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. # Spec for rouge metric.
            "rougeType": "A String", # Optional. Supported rouge types are rougen[1-9], rougeL, and rougeLsum.
            "splitSummaries": True or False, # Optional. Whether to split summaries while using rougeLsum.
            "useStemmer": True or False, # Optional. Whether to use stemmer to compute rouge score.
          },
        },
      ],
      "outputConfig": { # Config for evaluation output. # Required. Config for evaluation output.
        "gcsDestination": { # The Google Cloud Storage location where the output is to be written to. # Cloud storage destination for evaluation output.
          "outputUriPrefix": "A String", # 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.
        },
      },
    }

      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # This resource represents a long-running operation that is the result of a network API call.
      "done": True or False, # 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.
      "error": { # 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). # The error result of the operation in case of failure or cancellation.
        "code": 42, # The status code, which should be an enum value of google.rpc.Code.
        "details": [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
          {
            "a_key": "", # Properties of the object. Contains field @type with type URL.
          },
        ],
        "message": "A String", # 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.
      },
      "metadata": { # 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.
        "a_key": "", # Properties of the object. Contains field @type with type URL.
      },
      "name": "A String", # 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}`.
      "response": { # 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`.
        "a_key": "", # Properties of the object. Contains field @type with type URL.
      },
    }

`evaluateInstances(location, body=None, x__xgafv=None)`

    Evaluates instances based on a given metric.

    Args:
      location: string, Required. The resource name of the Location to evaluate the instances. Format: `projects/{project}/locations/{location}` (required)
      body: object, The request body.
        The object takes the form of:

    { # Request message for EvaluationService.EvaluateInstances.
      "autoraterConfig": { # The configs for autorater. This is applicable to both EvaluateInstances and EvaluateDataset. # Optional. Autorater config used for evaluation.
        "autoraterModel": "A String", # 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}`
        "flipEnabled": True or False, # 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.
        "generationConfig": { # Configuration for content generation. This message contains all the parameters that control how the model generates content. It allows you to influence the randomness, length, and structure of the output. # Optional. Configuration options for model generation and outputs.
          "audioTimestamp": True or False, # Optional. If enabled, audio timestamps will be included in the request to the model. This can be useful for synchronizing audio with other modalities in the response.
          "candidateCount": 42, # Optional. The number of candidate responses to generate. A higher `candidate_count` can provide more options to choose from, but it also consumes more resources. This can be useful for generating a variety of responses and selecting the best one.
          "enableAffectiveDialog": True or False, # Optional. If enabled, the model will detect emotions and adapt its responses accordingly. For example, if the model detects that the user is frustrated, it may provide a more empathetic response.
          "frequencyPenalty": 3.14, # Optional. Penalizes tokens based on their frequency in the generated text. A positive value helps to reduce the repetition of words and phrases. Valid values can range from [-2.0, 2.0].
          "imageConfig": { # Configuration for image generation. This message allows you to control various aspects of image generation, such as the output format, aspect ratio, and whether the model can generate images of people. # Optional. Config for image generation features.
            "aspectRatio": "A String", # Optional. The desired aspect ratio for the generated images. The following aspect ratios are supported: "1:1" "2:3", "3:2" "3:4", "4:3" "4:5", "5:4" "9:16", "16:9" "21:9"
            "imageOutputOptions": { # The image output format for generated images. # Optional. The image output format for generated images.
              "compressionQuality": 42, # Optional. The compression quality of the output image.
              "mimeType": "A String", # Optional. The image format that the output should be saved as.
            },
            "imageSize": "A String", # Optional. Specifies the size of generated images. Supported values are `1K`, `2K`, `4K`. If not specified, the model will use default value `1K`.
            "personGeneration": "A String", # Optional. Controls whether the model can generate people.
            "prominentPeople": "A String", # Optional. Controls whether prominent people (celebrities) generation is allowed. If used with personGeneration, personGeneration enum would take precedence. For instance, if ALLOW_NONE is set, all person generation would be blocked. If this field is unspecified, the default behavior is to allow prominent people.
          },
          "logprobs": 42, # Optional. The number of top log probabilities to return for each token. This can be used to see which other tokens were considered likely candidates for a given position. A higher value will return more options, but it will also increase the size of the response.
          "maxOutputTokens": 42, # Optional. The maximum number of tokens to generate in the response. A token is approximately four characters. The default value varies by model. This parameter can be used to control the length of the generated text and prevent overly long responses.
          "mediaResolution": "A String", # Optional. The token resolution at which input media content is sampled. This is used to control the trade-off between the quality of the response and the number of tokens used to represent the media. A higher resolution allows the model to perceive more detail, which can lead to a more nuanced response, but it will also use more tokens. This does not affect the image dimensions sent to the model.
          "presencePenalty": 3.14, # Optional. Penalizes tokens that have already appeared in the generated text. A positive value encourages the model to generate more diverse and less repetitive text. Valid values can range from [-2.0, 2.0].
          "responseJsonSchema": "", # Optional. When this field is set, response_schema must be omitted and response_mime_type must be set to `application/json`.
          "responseLogprobs": True or False, # Optional. If set to true, the log probabilities of the output tokens are returned. Log probabilities are the logarithm of the probability of a token appearing in the output. A higher log probability means the token is more likely to be generated. This can be useful for analyzing the model's confidence in its own output and for debugging.
          "responseMimeType": "A String", # Optional. The IANA standard MIME type of the response. The model will generate output that conforms to this MIME type. Supported values include 'text/plain' (default) and 'application/json'. The model needs to be prompted to output the appropriate response type, otherwise the behavior is undefined.
          "responseModalities": [ # Optional. The modalities of the response. The model will generate a response that includes all the specified modalities. For example, if this is set to `[TEXT, IMAGE]`, the response will include both text and an image.
            "A String",
          ],
          "responseSchema": { # Defines the schema of input and output data. This is a subset of the [OpenAPI 3.0 Schema Object](https://spec.openapis.org/oas/v3.0.3#schema-object). # Optional. Lets you to specify a schema for the model's response, ensuring that the output conforms to a particular structure. This is useful for generating structured data such as JSON. The schema is a subset of the [OpenAPI 3.0 schema object](https://spec.openapis.org/oas/v3.0.3#schema) object. When this field is set, you must also set the `response_mime_type` to `application/json`.
            "additionalProperties": "", # Optional. If `type` is `OBJECT`, specifies how to handle properties not defined in `properties`. If it is a boolean `false`, no additional properties are allowed. If it is a schema, additional properties are allowed if they conform to the schema.
            "anyOf": [ # Optional. The instance must be valid against any (one or more) of the subschemas listed in `any_of`.
              # Object with schema name: GoogleCloudAiplatformV1Schema
            ],
            "default": "", # Optional. Default value to use if the field is not specified.
            "defs": { # Optional. `defs` provides a map of schema definitions that can be reused by `ref` elsewhere in the schema. Only allowed at root level of the schema.
              "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
            },
            "description": "A String", # Optional. Describes the data. The model uses this field to understand the purpose of the schema and how to use it. It is a best practice to provide a clear and descriptive explanation for the schema and its properties here, rather than in the prompt.
            "enum": [ # Optional. Possible values of the field. This field can be used to restrict a value to a fixed set of values. To mark a field as an enum, set `format` to `enum` and provide the list of possible values in `enum`. For example: 1. To define directions: `{type:STRING, format:enum, enum:["EAST", "NORTH", "SOUTH", "WEST"]}` 2. To define apartment numbers: `{type:INTEGER, format:enum, enum:["101", "201", "301"]}`
              "A String",
            ],
            "example": "", # Optional. Example of an instance of this schema.
            "format": "A String", # Optional. The format of the data. For `NUMBER` type, format can be `float` or `double`. For `INTEGER` type, format can be `int32` or `int64`. For `STRING` type, format can be `email`, `byte`, `date`, `date-time`, `password`, and other formats to further refine the data type.
            "items": # Object with schema name: GoogleCloudAiplatformV1Schema # Optional. If type is `ARRAY`, `items` specifies the schema of elements in the array.
            "maxItems": "A String", # Optional. If type is `ARRAY`, `max_items` specifies the maximum number of items in an array.
            "maxLength": "A String", # Optional. If type is `STRING`, `max_length` specifies the maximum length of the string.
            "maxProperties": "A String", # Optional. If type is `OBJECT`, `max_properties` specifies the maximum number of properties that can be provided.
            "maximum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `maximum` specifies the maximum allowed value.
            "minItems": "A String", # Optional. If type is `ARRAY`, `min_items` specifies the minimum number of items in an array.
            "minLength": "A String", # Optional. If type is `STRING`, `min_length` specifies the minimum length of the string.
            "minProperties": "A String", # Optional. If type is `OBJECT`, `min_properties` specifies the minimum number of properties that can be provided.
            "minimum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `minimum` specifies the minimum allowed value.
            "nullable": True or False, # Optional. Indicates if the value of this field can be null.
            "pattern": "A String", # Optional. If type is `STRING`, `pattern` specifies a regular expression that the string must match.
            "properties": { # Optional. If type is `OBJECT`, `properties` is a map of property names to schema definitions for each property of the object.
              "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
            },
            "propertyOrdering": [ # Optional. Order of properties displayed or used where order matters. This is not a standard field in OpenAPI specification, but can be used to control the order of properties.
              "A String",
            ],
            "ref": "A String", # Optional. Allows referencing another schema definition to use in place of this schema. The value must be a valid reference to a schema in `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
            "required": [ # Optional. If type is `OBJECT`, `required` lists the names of properties that must be present.
              "A String",
            ],
            "title": "A String", # Optional. Title for the schema.
            "type": "A String", # Optional. Data type of the schema field.
          },
          "routingConfig": { # The configuration for routing the request to a specific model. This can be used to control which model is used for the generation, either automatically or by specifying a model name. # Optional. Routing configuration.
            "autoMode": { # The configuration for automated routing. When automated routing is specified, the routing will be determined by the pretrained routing model and customer provided model routing preference. # In this mode, the model is selected automatically based on the content of the request.
              "modelRoutingPreference": "A String", # The model routing preference.
            },
            "manualMode": { # The configuration for manual routing. When manual routing is specified, the model will be selected based on the model name provided. # In this mode, the model is specified manually.
              "modelName": "A String", # The name of the model to use. Only public LLM models are accepted.
            },
          },
          "seed": 42, # Optional. A seed for the random number generator. By setting a seed, you can make the model's output mostly deterministic. For a given prompt and parameters (like temperature, top_p, etc.), the model will produce the same response every time. However, it's not a guaranteed absolute deterministic behavior. This is different from parameters like `temperature`, which control the *level* of randomness. `seed` ensures that the "random" choices the model makes are the same on every run, making it essential for testing and ensuring reproducible results.
          "speechConfig": { # Configuration for speech generation. # Optional. The speech generation config.
            "languageCode": "A String", # Optional. The language code (ISO 639-1) for the speech synthesis.
            "multiSpeakerVoiceConfig": { # Configuration for a multi-speaker text-to-speech request. # The configuration for a multi-speaker text-to-speech request. This field is mutually exclusive with `voice_config`.
              "speakerVoiceConfigs": [ # Required. A list of configurations for the voices of the speakers. Exactly two speaker voice configurations must be provided.
                { # Configuration for a single speaker in a multi-speaker setup.
                  "speaker": "A String", # Required. The name of the speaker. This should be the same as the speaker name used in the prompt.
                  "voiceConfig": { # Configuration for a voice. # Required. The configuration for the voice of this speaker.
                    "prebuiltVoiceConfig": { # Configuration for a prebuilt voice. # The configuration for a prebuilt voice.
                      "voiceName": "A String", # The name of the prebuilt voice to use.
                    },
                    "replicatedVoiceConfig": { # The configuration for the replicated voice to use. # Optional. The configuration for a replicated voice. This enables users to replicate a voice from an audio sample.
                      "mimeType": "A String", # Optional. The mimetype of the voice sample. The only currently supported value is `audio/wav`. This represents 16-bit signed little-endian wav data, with a 24kHz sampling rate. `mime_type` will default to `audio/wav` if not set.
                      "voiceSampleAudio": "A String", # Optional. The sample of the custom voice.
                    },
                  },
                },
              ],
            },
            "voiceConfig": { # Configuration for a voice. # The configuration for the voice to use.
              "prebuiltVoiceConfig": { # Configuration for a prebuilt voice. # The configuration for a prebuilt voice.
                "voiceName": "A String", # The name of the prebuilt voice to use.
              },
              "replicatedVoiceConfig": { # The configuration for the replicated voice to use. # Optional. The configuration for a replicated voice. This enables users to replicate a voice from an audio sample.
                "mimeType": "A String", # Optional. The mimetype of the voice sample. The only currently supported value is `audio/wav`. This represents 16-bit signed little-endian wav data, with a 24kHz sampling rate. `mime_type` will default to `audio/wav` if not set.
                "voiceSampleAudio": "A String", # Optional. The sample of the custom voice.
              },
            },
          },
          "stopSequences": [ # Optional. A list of character sequences that will stop the model from generating further tokens. If a stop sequence is generated, the output will end at that point. This is useful for controlling the length and structure of the output. For example, you can use ["\n", "###"] to stop generation at a new line or a specific marker.
            "A String",
          ],
          "temperature": 3.14, # Optional. Controls the randomness of the output. A higher temperature results in more creative and diverse responses, while a lower temperature makes the output more predictable and focused. The valid range is (0.0, 2.0].
          "thinkingConfig": { # Configuration for the model's thinking features. "Thinking" is a process where the model breaks down a complex task into smaller, manageable steps. This allows the model to reason about the task, plan its approach, and execute the plan to generate a high-quality response. # Optional. Configuration for thinking features. An error will be returned if this field is set for models that don't support thinking.
            "includeThoughts": True or False, # Optional. If true, the model will include its thoughts in the response. "Thoughts" are the intermediate steps the model takes to arrive at the final response. They can provide insights into the model's reasoning process and help with debugging. If this is true, thoughts are returned only when available.
            "thinkingBudget": 42, # Optional. The token budget for the model's thinking process. The model will make a best effort to stay within this budget. This can be used to control the trade-off between response quality and latency.
            "thinkingLevel": "A String", # Optional. The number of thoughts tokens that the model should generate.
          },
          "topK": 3.14, # Optional. Specifies the top-k sampling threshold. The model considers only the top k most probable tokens for the next token. This can be useful for generating more coherent and less random text. For example, a `top_k` of 40 means the model will choose the next word from the 40 most likely words.
          "topP": 3.14, # Optional. Specifies the nucleus sampling threshold. The model considers only the smallest set of tokens whose cumulative probability is at least `top_p`. This helps generate more diverse and less repetitive responses. For example, a `top_p` of 0.9 means the model considers tokens until the cumulative probability of the tokens to select from reaches 0.9. It's recommended to adjust either temperature or `top_p`, but not both.
        },
        "samplingCount": 42, # 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.
      },
      "bleuInput": { # Input for bleu metric. # Instances and metric spec for bleu metric.
        "instances": [ # Required. Repeated bleu instances.
          { # Spec for bleu instance.
            "prediction": "A String", # Required. Output of the evaluated model.
            "reference": "A String", # Required. Ground truth used to compare against the prediction.
          },
        ],
        "metricSpec": { # 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. # Required. Spec for bleu score metric.
          "useEffectiveOrder": True or False, # Optional. Whether to use_effective_order to compute bleu score.
        },
      },
      "coherenceInput": { # Input for coherence metric. # Input for coherence metric.
        "instance": { # Spec for coherence instance. # Required. Coherence instance.
          "prediction": "A String", # Required. Output of the evaluated model.
        },
        "metricSpec": { # Spec for coherence score metric. # Required. Spec for coherence score metric.
          "version": 42, # Optional. Which version to use for evaluation.
        },
      },
      "cometInput": { # Input for Comet metric. # Translation metrics. Input for Comet metric.
        "instance": { # Spec for Comet instance - The fields used for evaluation are dependent on the comet version. # Required. Comet instance.
          "prediction": "A String", # Required. Output of the evaluated model.
          "reference": "A String", # Optional. Ground truth used to compare against the prediction.
          "source": "A String", # Optional. Source text in original language.
        },
        "metricSpec": { # Spec for Comet metric. # Required. Spec for comet metric.
          "sourceLanguage": "A String", # Optional. Source language in BCP-47 format.
          "targetLanguage": "A String", # Optional. Target language in BCP-47 format. Covers both prediction and reference.
          "version": "A String", # Required. Which version to use for evaluation.
        },
      },
      "exactMatchInput": { # Input for exact match metric. # Auto metric instances. Instances and metric spec for exact match metric.
        "instances": [ # Required. Repeated exact match instances.
          { # Spec for exact match instance.
            "prediction": "A String", # Required. Output of the evaluated model.
            "reference": "A String", # Required. Ground truth used to compare against the prediction.
          },
        ],
        "metricSpec": { # Spec for exact match metric - returns 1 if prediction and reference exactly matches, otherwise 0. # Required. Spec for exact match metric.
        },
      },
      "fluencyInput": { # Input for fluency metric. # LLM-based metric instance. General text generation metrics, applicable to other categories. Input for fluency metric.
        "instance": { # Spec for fluency instance. # Required. Fluency instance.
          "prediction": "A String", # Required. Output of the evaluated model.
        },
        "metricSpec": { # Spec for fluency score metric. # Required. Spec for fluency score metric.
          "version": 42, # Optional. Which version to use for evaluation.
        },
      },
      "fulfillmentInput": { # Input for fulfillment metric. # Input for fulfillment metric.
        "instance": { # Spec for fulfillment instance. # Required. Fulfillment instance.
          "instruction": "A String", # Required. Inference instruction prompt to compare prediction with.
          "prediction": "A String", # Required. Output of the evaluated model.
        },
        "metricSpec": { # Spec for fulfillment metric. # Required. Spec for fulfillment score metric.
          "version": 42, # Optional. Which version to use for evaluation.
        },
      },
      "groundednessInput": { # Input for groundedness metric. # Input for groundedness metric.
        "instance": { # Spec for groundedness instance. # Required. Groundedness instance.
          "context": "A String", # Required. Background information provided in context used to compare against the prediction.
          "prediction": "A String", # Required. Output of the evaluated model.
        },
        "metricSpec": { # Spec for groundedness metric. # Required. Spec for groundedness metric.
          "version": 42, # Optional. Which version to use for evaluation.
        },
      },
      "instance": { # 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 # The instance to be evaluated.
        "agentData": { # Deprecated: Use `agent_eval_data` instead. Contains data specific to agent evaluations. # Optional. Deprecated: Use `agent_eval_data` instead. Data used for agent evaluation.
          "agentConfig": { # Deprecated: Use `google.cloud.aiplatform.master.AgentConfig` in `agent_eval_data` instead. Configuration for an Agent. # Optional. Deprecated: Use `agent_eval_data` instead. Agent configuration.
            "agentId": "A String", # Optional. Unique identifier of the agent. This ID is used to refer to this agent, e.g., in AgentEvent.author, or in the `sub_agents` field. It must be unique within the `agents` map.
            "agentType": "A String", # Optional. The type or class of the agent (e.g., "LlmAgent", "RouterAgent", "ToolUseAgent"). Useful for the autorater to understand the expected behavior of the agent.
            "description": "A String", # Optional. A high-level description of the agent's role and responsibilities. Critical for evaluating if the agent is routing tasks correctly.
            "developerInstruction": { # Instance data used to populate placeholders in a metric prompt template. # Optional. Contains instructions from the developer for the agent. Can be static or a dynamic prompt template used with the `AgentEvent.state_delta` field.
              "contents": { # List of standard Content messages from Gemini API. # List of Gemini content data.
                "contents": [ # Optional. Repeated contents.
                  { # The structured data content of a message. A Content message contains a `role` field, which indicates the producer of the content, and a `parts` field, which contains the multi-part data of the message.
                    "parts": [ # Required. A list of Part objects that make up a single message. Parts of a message can have different MIME types. A Content message must have at least one Part.
                      { # 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`. For media types that are not text, `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.
                        "codeExecutionResult": { # Result of executing the ExecutableCode. Generated only when the `CodeExecution` tool is used. # Optional. The result of executing the ExecutableCode.
                          "outcome": "A String", # Required. Outcome of the code execution.
                          "output": "A String", # Optional. Contains stdout when code execution is successful, stderr or other description otherwise.
                        },
                        "executableCode": { # 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. # Optional. Code generated by the model that is intended to be executed.
                          "code": "A String", # Required. The code to be executed.
                          "language": "A String", # Required. Programming language of the `code`.
                        },
                        "fileData": { # URI-based data. A FileData message contains a URI pointing to data of a specific media type. It is used to represent images, audio, and video stored in Google Cloud Storage. # Optional. The URI-based data of the part. This can be used to include files from Google Cloud Storage.
                          "displayName": "A String", # Optional. The display name of the file. Used to provide a label or filename to distinguish files. This field is only returned in `PromptMessage` for prompt management. It is used in the Gemini calls only when server side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                          "fileUri": "A String", # Required. The URI of the file in Google Cloud Storage.
                          "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                        },
                        "functionCall": { # 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. # Optional. A predicted function call returned from the model. This contains the name of the function to call and the arguments to pass to the function.
                          "args": { # Optional. The function parameters and values in JSON object format. See FunctionDeclaration.parameters for parameter details.
                            "a_key": "", # Properties of the object.
                          },
                          "name": "A String", # Optional. The name of the function to call. Matches FunctionDeclaration.name.
                          "partialArgs": [ # Optional. The partial argument value of the function call. If provided, represents the arguments/fields that are streamed incrementally.
                            { # Partial argument value of the function call.
                              "boolValue": True or False, # Optional. Represents a boolean value.
                              "jsonPath": "A String", # Required. A JSON Path (RFC 9535) to the argument being streamed. https://datatracker.ietf.org/doc/html/rfc9535. e.g. "$.foo.bar[0].data".
                              "nullValue": "A String", # Optional. Represents a null value.
                              "numberValue": 3.14, # Optional. Represents a double value.
                              "stringValue": "A String", # Optional. Represents a string value.
                              "willContinue": True or False, # Optional. Whether this is not the last part of the same json_path. If true, another PartialArg message for the current json_path is expected to follow.
                            },
                          ],
                          "willContinue": True or False, # Optional. Whether this is the last part of the FunctionCall. If true, another partial message for the current FunctionCall is expected to follow.
                        },
                        "functionResponse": { # 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. # Optional. The result of a function call. This is used to provide the model with the result of a function call that it predicted.
                          "name": "A String", # Required. The name of the function to call. Matches FunctionDeclaration.name and FunctionCall.name.
                          "parts": [ # Optional. Ordered `Parts` that constitute a function response. Parts may have different IANA MIME types.
                            { # A datatype containing media that is part of a `FunctionResponse` message. A `FunctionResponsePart` consists of data which has an associated datatype. A `FunctionResponsePart` can only contain one of the accepted types in `FunctionResponsePart.data`. A `FunctionResponsePart` must have a fixed IANA MIME type identifying the type and subtype of the media if the `inline_data` field is filled with raw bytes.
                              "fileData": { # URI based data for function response. # URI based data.
                                "displayName": "A String", # 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.
                                "fileUri": "A String", # Required. URI.
                                "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                              },
                              "inlineData": { # Raw media bytes for function response. Text should not be sent as raw bytes, use the 'text' field. # Inline media bytes.
                                "data": "A String", # Required. Raw bytes.
                                "displayName": "A String", # 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.
                                "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                              },
                            },
                          ],
                          "response": { # 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.
                            "a_key": "", # Properties of the object.
                          },
                          "scheduling": "A String", # Optional. Specifies how the response should be scheduled in the conversation. Only applicable to NON_BLOCKING function calls, is ignored otherwise. Defaults to WHEN_IDLE.
                        },
                        "inlineData": { # A content blob. A Blob contains data of a specific media type. It is used to represent images, audio, and video. # Optional. The inline data content of the part. This can be used to include images, audio, or video in a request.
                          "data": "A String", # Required. The raw bytes of the data.
                          "displayName": "A String", # Optional. The 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 used in the Gemini calls only when server-side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                          "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                        },
                        "mediaResolution": { # per part media resolution. Media resolution for the input media. # per part media resolution. Media resolution for the input media.
                          "level": "A String", # The tokenization quality used for given media.
                        },
                        "text": "A String", # Optional. The text content of the part. When sent from the VSCode Gemini Code Assist extension, references to @mentioned items will be converted to markdown boldface text. For example `@my-repo` will be converted to and sent as `**my-repo**` by the IDE agent.
                        "thought": True or False, # Optional. Indicates whether the `part` represents the model's thought process or reasoning.
                        "thoughtSignature": "A String", # Optional. An opaque signature for the thought so it can be reused in subsequent requests.
                        "videoMetadata": { # Provides metadata for a video, including the start and end offsets for clipping and the frame rate. # Optional. Video metadata. The metadata should only be specified while the video data is presented in inline_data or file_data.
                          "endOffset": "A String", # Optional. The end offset of the video.
                          "fps": 3.14, # Optional. The frame rate of the video sent to the model. If not specified, the default value is 1.0. The valid range is (0.0, 24.0].
                          "startOffset": "A String", # Optional. The start offset of the video.
                        },
                      },
                    ],
                    "role": "A String", # Optional. The producer of the content. Must be either 'user' or 'model'. If not set, the service will default to 'user'.
                  },
                ],
              },
              "text": "A String", # Text data.
            },
            "subAgents": [ # Optional. The list of valid agent IDs (names) that this agent can delegate to. This defines the directed edges in the agent system graph topology.
              "A String",
            ],
            "tools": { # Represents a list of tools for an agent. # List of tools.
              "tool": [ # Optional. List of tools: each tool can have multiple function declarations.
                { # 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).
                  "codeExecution": { # 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. # Optional. CodeExecution tool type. Enables the model to execute code as part of generation.
                  },
                  "computerUse": { # Tool to support computer use. # Optional. Tool to support the model interacting directly with the computer. If enabled, it automatically populates computer-use specific Function Declarations.
                    "environment": "A String", # Required. The environment being operated.
                    "excludedPredefinedFunctions": [ # Optional. By default, [predefined functions](https://cloud.google.com/vertex-ai/generative-ai/docs/computer-use#supported-actions) are included in the final model call. Some of them can be explicitly excluded from being automatically included. This can serve two purposes: 1. Using a more restricted / different action space. 2. Improving the definitions / instructions of predefined functions.
                      "A String",
                    ],
                  },
                  "enterpriseWebSearch": { # Tool to search public web data, powered by Vertex AI Search and Sec4 compliance. # Optional. Tool to support searching public web data, powered by Vertex AI Search and Sec4 compliance.
                    "blockingConfidence": "A String", # Optional. Sites with confidence level chosen & above this value will be blocked from the search results.
                    "excludeDomains": [ # Optional. List of domains to be excluded from the search results. The default limit is 2000 domains.
                      "A String",
                    ],
                  },
                  "functionDeclarations": [ # 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.
                    { # 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.
                      "behavior": "A String", # Optional. Specifies the function Behavior. If not specified, the system keeps the current function call behavior. This field is currently only supported by the BidiGenerateContent method.
                      "description": "A String", # Optional. Description and purpose of the function. Model uses it to decide how and whether to call the function.
                      "name": "A String", # 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, colons and dashes, with a maximum length of 128.
                      "parameters": { # Defines the schema of input and output data. This is a subset of the [OpenAPI 3.0 Schema Object](https://spec.openapis.org/oas/v3.0.3#schema-object). # Optional. Describes the parameters to this function in JSON Schema Object format. Reflects the Open API 3.03 Parameter Object. string Key: the name of the parameter. Parameter names are case sensitive. Schema Value: the Schema defining the type used for the parameter. For function with no parameters, this can be left unset. Parameter names must start with a letter or an underscore and must only contain chars a-z, A-Z, 0-9, or underscores with a maximum length of 64. Example with 1 required and 1 optional parameter: type: OBJECT properties: param1: type: STRING param2: type: INTEGER required: - param1
                        "additionalProperties": "", # Optional. If `type` is `OBJECT`, specifies how to handle properties not defined in `properties`. If it is a boolean `false`, no additional properties are allowed. If it is a schema, additional properties are allowed if they conform to the schema.
                        "anyOf": [ # Optional. The instance must be valid against any (one or more) of the subschemas listed in `any_of`.
                          # Object with schema name: GoogleCloudAiplatformV1Schema
                        ],
                        "default": "", # Optional. Default value to use if the field is not specified.
                        "defs": { # Optional. `defs` provides a map of schema definitions that can be reused by `ref` elsewhere in the schema. Only allowed at root level of the schema.
                          "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                        },
                        "description": "A String", # Optional. Describes the data. The model uses this field to understand the purpose of the schema and how to use it. It is a best practice to provide a clear and descriptive explanation for the schema and its properties here, rather than in the prompt.
                        "enum": [ # Optional. Possible values of the field. This field can be used to restrict a value to a fixed set of values. To mark a field as an enum, set `format` to `enum` and provide the list of possible values in `enum`. For example: 1. To define directions: `{type:STRING, format:enum, enum:["EAST", "NORTH", "SOUTH", "WEST"]}` 2. To define apartment numbers: `{type:INTEGER, format:enum, enum:["101", "201", "301"]}`
                          "A String",
                        ],
                        "example": "", # Optional. Example of an instance of this schema.
                        "format": "A String", # Optional. The format of the data. For `NUMBER` type, format can be `float` or `double`. For `INTEGER` type, format can be `int32` or `int64`. For `STRING` type, format can be `email`, `byte`, `date`, `date-time`, `password`, and other formats to further refine the data type.
                        "items": # Object with schema name: GoogleCloudAiplatformV1Schema # Optional. If type is `ARRAY`, `items` specifies the schema of elements in the array.
                        "maxItems": "A String", # Optional. If type is `ARRAY`, `max_items` specifies the maximum number of items in an array.
                        "maxLength": "A String", # Optional. If type is `STRING`, `max_length` specifies the maximum length of the string.
                        "maxProperties": "A String", # Optional. If type is `OBJECT`, `max_properties` specifies the maximum number of properties that can be provided.
                        "maximum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `maximum` specifies the maximum allowed value.
                        "minItems": "A String", # Optional. If type is `ARRAY`, `min_items` specifies the minimum number of items in an array.
                        "minLength": "A String", # Optional. If type is `STRING`, `min_length` specifies the minimum length of the string.
                        "minProperties": "A String", # Optional. If type is `OBJECT`, `min_properties` specifies the minimum number of properties that can be provided.
                        "minimum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `minimum` specifies the minimum allowed value.
                        "nullable": True or False, # Optional. Indicates if the value of this field can be null.
                        "pattern": "A String", # Optional. If type is `STRING`, `pattern` specifies a regular expression that the string must match.
                        "properties": { # Optional. If type is `OBJECT`, `properties` is a map of property names to schema definitions for each property of the object.
                          "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                        },
                        "propertyOrdering": [ # Optional. Order of properties displayed or used where order matters. This is not a standard field in OpenAPI specification, but can be used to control the order of properties.
                          "A String",
                        ],
                        "ref": "A String", # Optional. Allows referencing another schema definition to use in place of this schema. The value must be a valid reference to a schema in `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
                        "required": [ # Optional. If type is `OBJECT`, `required` lists the names of properties that must be present.
                          "A String",
                        ],
                        "title": "A String", # Optional. Title for the schema.
                        "type": "A String", # Optional. Data type of the schema field.
                      },
                      "parametersJsonSchema": "", # 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`.
                      "response": { # Defines the schema of input and output data. This is a subset of the [OpenAPI 3.0 Schema Object](https://spec.openapis.org/oas/v3.0.3#schema-object). # Optional. Describes the output from this function in JSON Schema format. Reflects the Open API 3.03 Response Object. The Schema defines the type used for the response value of the function.
                        "additionalProperties": "", # Optional. If `type` is `OBJECT`, specifies how to handle properties not defined in `properties`. If it is a boolean `false`, no additional properties are allowed. If it is a schema, additional properties are allowed if they conform to the schema.
                        "anyOf": [ # Optional. The instance must be valid against any (one or more) of the subschemas listed in `any_of`.
                          # Object with schema name: GoogleCloudAiplatformV1Schema
                        ],
                        "default": "", # Optional. Default value to use if the field is not specified.
                        "defs": { # Optional. `defs` provides a map of schema definitions that can be reused by `ref` elsewhere in the schema. Only allowed at root level of the schema.
                          "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                        },
                        "description": "A String", # Optional. Describes the data. The model uses this field to understand the purpose of the schema and how to use it. It is a best practice to provide a clear and descriptive explanation for the schema and its properties here, rather than in the prompt.
                        "enum": [ # Optional. Possible values of the field. This field can be used to restrict a value to a fixed set of values. To mark a field as an enum, set `format` to `enum` and provide the list of possible values in `enum`. For example: 1. To define directions: `{type:STRING, format:enum, enum:["EAST", "NORTH", "SOUTH", "WEST"]}` 2. To define apartment numbers: `{type:INTEGER, format:enum, enum:["101", "201", "301"]}`
                          "A String",
                        ],
                        "example": "", # Optional. Example of an instance of this schema.
                        "format": "A String", # Optional. The format of the data. For `NUMBER` type, format can be `float` or `double`. For `INTEGER` type, format can be `int32` or `int64`. For `STRING` type, format can be `email`, `byte`, `date`, `date-time`, `password`, and other formats to further refine the data type.
                        "items": # Object with schema name: GoogleCloudAiplatformV1Schema # Optional. If type is `ARRAY`, `items` specifies the schema of elements in the array.
                        "maxItems": "A String", # Optional. If type is `ARRAY`, `max_items` specifies the maximum number of items in an array.
                        "maxLength": "A String", # Optional. If type is `STRING`, `max_length` specifies the maximum length of the string.
                        "maxProperties": "A String", # Optional. If type is `OBJECT`, `max_properties` specifies the maximum number of properties that can be provided.
                        "maximum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `maximum` specifies the maximum allowed value.
                        "minItems": "A String", # Optional. If type is `ARRAY`, `min_items` specifies the minimum number of items in an array.
                        "minLength": "A String", # Optional. If type is `STRING`, `min_length` specifies the minimum length of the string.
                        "minProperties": "A String", # Optional. If type is `OBJECT`, `min_properties` specifies the minimum number of properties that can be provided.
                        "minimum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `minimum` specifies the minimum allowed value.
                        "nullable": True or False, # Optional. Indicates if the value of this field can be null.
                        "pattern": "A String", # Optional. If type is `STRING`, `pattern` specifies a regular expression that the string must match.
                        "properties": { # Optional. If type is `OBJECT`, `properties` is a map of property names to schema definitions for each property of the object.
                          "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                        },
                        "propertyOrdering": [ # Optional. Order of properties displayed or used where order matters. This is not a standard field in OpenAPI specification, but can be used to control the order of properties.
                          "A String",
                        ],
                        "ref": "A String", # Optional. Allows referencing another schema definition to use in place of this schema. The value must be a valid reference to a schema in `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
                        "required": [ # Optional. If type is `OBJECT`, `required` lists the names of properties that must be present.
                          "A String",
                        ],
                        "title": "A String", # Optional. Title for the schema.
                        "type": "A String", # Optional. Data type of the schema field.
                      },
                      "responseJsonSchema": "", # 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`.
                    },
                  ],
                  "googleMaps": { # Tool to retrieve public maps data for grounding, powered by Google. # Optional. GoogleMaps tool type. Tool to support Google Maps in Model.
                    "enableWidget": True or False, # Optional. If true, include the widget context token in the response.
                  },
                  "googleSearch": { # GoogleSearch tool type. Tool to support Google Search in Model. Powered by Google. # Optional. GoogleSearch tool type. Tool to support Google Search in Model. Powered by Google.
                    "blockingConfidence": "A String", # Optional. Sites with confidence level chosen & above this value will be blocked from the search results.
                    "excludeDomains": [ # Optional. List of domains to be excluded from the search results. The default limit is 2000 domains. Example: ["amazon.com", "facebook.com"].
                      "A String",
                    ],
                    "searchTypes": { # Different types of search that can be enabled on the GoogleSearch tool. # Optional. The set of search types to enable. If not set, web search is enabled by default.
                      "imageSearch": { # Image search for grounding and related configurations. # Optional. Setting this field enables image search. Image bytes are returned.
                      },
                      "webSearch": { # Standard web search for grounding and related configurations. Only text results are returned. # Optional. Setting this field enables web search. Only text results are returned.
                      },
                    },
                  },
                  "googleSearchRetrieval": { # Tool to retrieve public web data for grounding, powered by Google. # Optional. Specialized retrieval tool that is powered by Google Search.
                    "dynamicRetrievalConfig": { # Describes the options to customize dynamic retrieval. # Specifies the dynamic retrieval configuration for the given source.
                      "dynamicThreshold": 3.14, # Optional. The threshold to be used in dynamic retrieval. If not set, a system default value is used.
                      "mode": "A String", # The mode of the predictor to be used in dynamic retrieval.
                    },
                  },
                  "parallelAiSearch": { # ParallelAiSearch tool type. A tool that uses the Parallel.ai search engine for grounding. # Optional. If specified, Vertex AI will use Parallel.ai to search for information to answer user queries. The search results will be grounded on Parallel.ai and presented to the model for response generation
                    "apiKey": "A String", # Optional. The API key for ParallelAiSearch. If an API key is not provided, the system will attempt to verify access by checking for an active Parallel.ai subscription through the Google Cloud Marketplace. See https://docs.parallel.ai/search/search-quickstart for more details.
                    "customConfigs": { # Optional. Custom configs for ParallelAiSearch. This field can be used to pass any parameter from the Parallel.ai Search API. See the Parallel.ai documentation for the full list of available parameters and their usage: https://docs.parallel.ai/api-reference/search-beta/search Currently only `source_policy`, `excerpts`, `max_results`, `mode`, `fetch_policy` can be set via this field. For example: { "source_policy": { "include_domains": ["google.com", "wikipedia.org"], "exclude_domains": ["example.com"] }, "fetch_policy": { "max_age_seconds": 3600 } }
                      "a_key": "", # Properties of the object.
                    },
                  },
                  "retrieval": { # Defines a retrieval tool that model can call to access external knowledge. # Optional. Retrieval tool type. System will always execute the provided retrieval tool(s) to get external knowledge to answer the prompt. Retrieval results are presented to the model for generation.
                    "disableAttribution": True or False, # Optional. Deprecated. This option is no longer supported.
                    "externalApi": { # 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. # Use data source powered by external API for grounding.
                      "apiAuth": { # The generic reusable api auth config. Deprecated. Please use AuthConfig (google/cloud/aiplatform/master/auth.proto) instead. # The authentication config to access the API. Deprecated. Please use auth_config instead.
                        "apiKeyConfig": { # The API secret. # The API secret.
                          "apiKeySecretVersion": "A String", # Required. The SecretManager secret version resource name storing API key. e.g. projects/{project}/secrets/{secret}/versions/{version}
                          "apiKeyString": "A String", # The API key string. Either this or `api_key_secret_version` must be set.
                        },
                      },
                      "apiSpec": "A String", # The API spec that the external API implements.
                      "authConfig": { # Auth configuration to run the extension. # The authentication config to access the API.
                        "apiKeyConfig": { # Config for authentication with API key. # Config for API key auth.
                          "apiKeySecret": "A String", # 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.
                          "apiKeyString": "A String", # Optional. The API key to be used in the request directly.
                          "httpElementLocation": "A String", # Optional. The location of the API key.
                          "name": "A String", # 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.
                        },
                        "authType": "A String", # Type of auth scheme.
                        "googleServiceAccountConfig": { # Config for Google Service Account Authentication. # Config for Google Service Account auth.
                          "serviceAccount": "A String", # 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.
                        },
                        "httpBasicAuthConfig": { # Config for HTTP Basic Authentication. # Config for HTTP Basic auth.
                          "credentialSecret": "A String", # 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.
                        },
                        "oauthConfig": { # Config for user oauth. # Config for user oauth.
                          "accessToken": "A String", # Access token for extension endpoint. Only used to propagate token from [[ExecuteExtensionRequest.runtime_auth_config]] at request time.
                          "serviceAccount": "A String", # 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.
                        },
                        "oidcConfig": { # Config for user OIDC auth. # Config for user OIDC auth.
                          "idToken": "A String", # OpenID Connect formatted ID token for extension endpoint. Only used to propagate token from [[ExecuteExtensionRequest.runtime_auth_config]] at request time.
                          "serviceAccount": "A String", # 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).
                        },
                      },
                      "elasticSearchParams": { # The search parameters to use for the ELASTIC_SEARCH spec. # Parameters for the elastic search API.
                        "index": "A String", # The ElasticSearch index to use.
                        "numHits": 42, # Optional. Number of hits (chunks) to request. When specified, it is passed to Elasticsearch as the `num_hits` param.
                        "searchTemplate": "A String", # The ElasticSearch search template to use.
                      },
                      "endpoint": "A String", # 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
                      "simpleSearchParams": { # The search parameters to use for SIMPLE_SEARCH spec. # Parameters for the simple search API.
                      },
                    },
                    "vertexAiSearch": { # Retrieve from Vertex AI Search datastore or engine for grounding. datastore and engine are mutually exclusive. See https://cloud.google.com/products/agent-builder # Set to use data source powered by Vertex AI Search.
                      "dataStoreSpecs": [ # 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.
                        { # 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
                          "dataStore": "A String", # Full resource name of DataStore, such as Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}`
                          "filter": "A String", # 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)
                        },
                      ],
                      "datastore": "A String", # Optional. Fully-qualified Vertex AI Search data store resource ID. Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}`
                      "engine": "A String", # Optional. Fully-qualified Vertex AI Search engine resource ID. Format: `projects/{project}/locations/{location}/collections/{collection}/engines/{engine}`
                      "filter": "A String", # Optional. Filter strings to be passed to the search API.
                      "maxResults": 42, # Optional. Number of search results to return per query. The default value is 10. The maximumm allowed value is 10.
                    },
                    "vertexRagStore": { # Retrieve from Vertex RAG Store for grounding. # Set to use data source powered by Vertex RAG store. User data is uploaded via the VertexRagDataService.
                      "ragResources": [ # 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.
                        { # The definition of the Rag resource.
                          "ragCorpus": "A String", # Optional. RagCorpora resource name. Format: `projects/{project}/locations/{location}/ragCorpora/{rag_corpus}`
                          "ragFileIds": [ # Optional. rag_file_id. The files should be in the same rag_corpus set in rag_corpus field.
                            "A String",
                          ],
                        },
                      ],
                      "ragRetrievalConfig": { # Specifies the context retrieval config. # Optional. The retrieval config for the Rag query.
                        "filter": { # Config for filters. # Optional. Config for filters.
                          "metadataFilter": "A String", # Optional. String for metadata filtering.
                          "vectorDistanceThreshold": 3.14, # Optional. Only returns contexts with vector distance smaller than the threshold.
                          "vectorSimilarityThreshold": 3.14, # Optional. Only returns contexts with vector similarity larger than the threshold.
                        },
                        "ranking": { # Config for ranking and reranking. # Optional. Config for ranking and reranking.
                          "llmRanker": { # Config for LlmRanker. # Optional. Config for LlmRanker.
                            "modelName": "A String", # Optional. The model name used for ranking. See [Supported models](https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/inference#supported-models).
                          },
                          "rankService": { # Config for Rank Service. # Optional. Config for Rank Service.
                            "modelName": "A String", # Optional. The model name of the rank service. Format: `semantic-ranker-512@latest`
                          },
                        },
                        "topK": 42, # Optional. The number of contexts to retrieve.
                      },
                      "similarityTopK": 42, # Optional. Number of top k results to return from the selected corpora.
                      "vectorDistanceThreshold": 3.14, # Optional. Only return results with vector distance smaller than the threshold.
                    },
                  },
                  "urlContext": { # Tool to support URL context. # Optional. Tool to support URL context retrieval.
                  },
                },
              ],
            },
            "toolsText": "A String", # A JSON string containing a list of tools available to an agent with info such as name, description, parameters and required parameters.
          },
          "agents": { # Optional. The static Agent Configuration. This map defines the graph structure of the agent system. Key: agent_id (matches the `author` field in events). Value: The static configuration of the agent (tools, instructions, sub-agents).
            "a_key": { # Deprecated: Use `google.cloud.aiplatform.master.AgentConfig` in `agent_eval_data` instead. Configuration for an Agent.
              "agentId": "A String", # Optional. Unique identifier of the agent. This ID is used to refer to this agent, e.g., in AgentEvent.author, or in the `sub_agents` field. It must be unique within the `agents` map.
              "agentType": "A String", # Optional. The type or class of the agent (e.g., "LlmAgent", "RouterAgent", "ToolUseAgent"). Useful for the autorater to understand the expected behavior of the agent.
              "description": "A String", # Optional. A high-level description of the agent's role and responsibilities. Critical for evaluating if the agent is routing tasks correctly.
              "developerInstruction": { # Instance data used to populate placeholders in a metric prompt template. # Optional. Contains instructions from the developer for the agent. Can be static or a dynamic prompt template used with the `AgentEvent.state_delta` field.
                "contents": { # List of standard Content messages from Gemini API. # List of Gemini content data.
                  "contents": [ # Optional. Repeated contents.
                    { # The structured data content of a message. A Content message contains a `role` field, which indicates the producer of the content, and a `parts` field, which contains the multi-part data of the message.
                      "parts": [ # Required. A list of Part objects that make up a single message. Parts of a message can have different MIME types. A Content message must have at least one Part.
                        { # 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`. For media types that are not text, `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.
                          "codeExecutionResult": { # Result of executing the ExecutableCode. Generated only when the `CodeExecution` tool is used. # Optional. The result of executing the ExecutableCode.
                            "outcome": "A String", # Required. Outcome of the code execution.
                            "output": "A String", # Optional. Contains stdout when code execution is successful, stderr or other description otherwise.
                          },
                          "executableCode": { # 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. # Optional. Code generated by the model that is intended to be executed.
                            "code": "A String", # Required. The code to be executed.
                            "language": "A String", # Required. Programming language of the `code`.
                          },
                          "fileData": { # URI-based data. A FileData message contains a URI pointing to data of a specific media type. It is used to represent images, audio, and video stored in Google Cloud Storage. # Optional. The URI-based data of the part. This can be used to include files from Google Cloud Storage.
                            "displayName": "A String", # Optional. The display name of the file. Used to provide a label or filename to distinguish files. This field is only returned in `PromptMessage` for prompt management. It is used in the Gemini calls only when server side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                            "fileUri": "A String", # Required. The URI of the file in Google Cloud Storage.
                            "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                          },
                          "functionCall": { # 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. # Optional. A predicted function call returned from the model. This contains the name of the function to call and the arguments to pass to the function.
                            "args": { # Optional. The function parameters and values in JSON object format. See FunctionDeclaration.parameters for parameter details.
                              "a_key": "", # Properties of the object.
                            },
                            "name": "A String", # Optional. The name of the function to call. Matches FunctionDeclaration.name.
                            "partialArgs": [ # Optional. The partial argument value of the function call. If provided, represents the arguments/fields that are streamed incrementally.
                              { # Partial argument value of the function call.
                                "boolValue": True or False, # Optional. Represents a boolean value.
                                "jsonPath": "A String", # Required. A JSON Path (RFC 9535) to the argument being streamed. https://datatracker.ietf.org/doc/html/rfc9535. e.g. "$.foo.bar[0].data".
                                "nullValue": "A String", # Optional. Represents a null value.
                                "numberValue": 3.14, # Optional. Represents a double value.
                                "stringValue": "A String", # Optional. Represents a string value.
                                "willContinue": True or False, # Optional. Whether this is not the last part of the same json_path. If true, another PartialArg message for the current json_path is expected to follow.
                              },
                            ],
                            "willContinue": True or False, # Optional. Whether this is the last part of the FunctionCall. If true, another partial message for the current FunctionCall is expected to follow.
                          },
                          "functionResponse": { # 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. # Optional. The result of a function call. This is used to provide the model with the result of a function call that it predicted.
                            "name": "A String", # Required. The name of the function to call. Matches FunctionDeclaration.name and FunctionCall.name.
                            "parts": [ # Optional. Ordered `Parts` that constitute a function response. Parts may have different IANA MIME types.
                              { # A datatype containing media that is part of a `FunctionResponse` message. A `FunctionResponsePart` consists of data which has an associated datatype. A `FunctionResponsePart` can only contain one of the accepted types in `FunctionResponsePart.data`. A `FunctionResponsePart` must have a fixed IANA MIME type identifying the type and subtype of the media if the `inline_data` field is filled with raw bytes.
                                "fileData": { # URI based data for function response. # URI based data.
                                  "displayName": "A String", # 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.
                                  "fileUri": "A String", # Required. URI.
                                  "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                                },
                                "inlineData": { # Raw media bytes for function response. Text should not be sent as raw bytes, use the 'text' field. # Inline media bytes.
                                  "data": "A String", # Required. Raw bytes.
                                  "displayName": "A String", # 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.
                                  "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                                },
                              },
                            ],
                            "response": { # 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.
                              "a_key": "", # Properties of the object.
                            },
                            "scheduling": "A String", # Optional. Specifies how the response should be scheduled in the conversation. Only applicable to NON_BLOCKING function calls, is ignored otherwise. Defaults to WHEN_IDLE.
                          },
                          "inlineData": { # A content blob. A Blob contains data of a specific media type. It is used to represent images, audio, and video. # Optional. The inline data content of the part. This can be used to include images, audio, or video in a request.
                            "data": "A String", # Required. The raw bytes of the data.
                            "displayName": "A String", # Optional. The 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 used in the Gemini calls only when server-side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                            "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                          },
                          "mediaResolution": { # per part media resolution. Media resolution for the input media. # per part media resolution. Media resolution for the input media.
                            "level": "A String", # The tokenization quality used for given media.
                          },
                          "text": "A String", # Optional. The text content of the part. When sent from the VSCode Gemini Code Assist extension, references to @mentioned items will be converted to markdown boldface text. For example `@my-repo` will be converted to and sent as `**my-repo**` by the IDE agent.
                          "thought": True or False, # Optional. Indicates whether the `part` represents the model's thought process or reasoning.
                          "thoughtSignature": "A String", # Optional. An opaque signature for the thought so it can be reused in subsequent requests.
                          "videoMetadata": { # Provides metadata for a video, including the start and end offsets for clipping and the frame rate. # Optional. Video metadata. The metadata should only be specified while the video data is presented in inline_data or file_data.
                            "endOffset": "A String", # Optional. The end offset of the video.
                            "fps": 3.14, # Optional. The frame rate of the video sent to the model. If not specified, the default value is 1.0. The valid range is (0.0, 24.0].
                            "startOffset": "A String", # Optional. The start offset of the video.
                          },
                        },
                      ],
                      "role": "A String", # Optional. The producer of the content. Must be either 'user' or 'model'. If not set, the service will default to 'user'.
                    },
                  ],
                },
                "text": "A String", # Text data.
              },
              "subAgents": [ # Optional. The list of valid agent IDs (names) that this agent can delegate to. This defines the directed edges in the agent system graph topology.
                "A String",
              ],
              "tools": { # Represents a list of tools for an agent. # List of tools.
                "tool": [ # Optional. List of tools: each tool can have multiple function declarations.
                  { # 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).
                    "codeExecution": { # 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. # Optional. CodeExecution tool type. Enables the model to execute code as part of generation.
                    },
                    "computerUse": { # Tool to support computer use. # Optional. Tool to support the model interacting directly with the computer. If enabled, it automatically populates computer-use specific Function Declarations.
                      "environment": "A String", # Required. The environment being operated.
                      "excludedPredefinedFunctions": [ # Optional. By default, [predefined functions](https://cloud.google.com/vertex-ai/generative-ai/docs/computer-use#supported-actions) are included in the final model call. Some of them can be explicitly excluded from being automatically included. This can serve two purposes: 1. Using a more restricted / different action space. 2. Improving the definitions / instructions of predefined functions.
                        "A String",
                      ],
                    },
                    "enterpriseWebSearch": { # Tool to search public web data, powered by Vertex AI Search and Sec4 compliance. # Optional. Tool to support searching public web data, powered by Vertex AI Search and Sec4 compliance.
                      "blockingConfidence": "A String", # Optional. Sites with confidence level chosen & above this value will be blocked from the search results.
                      "excludeDomains": [ # Optional. List of domains to be excluded from the search results. The default limit is 2000 domains.
                        "A String",
                      ],
                    },
                    "functionDeclarations": [ # 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.
                      { # 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.
                        "behavior": "A String", # Optional. Specifies the function Behavior. If not specified, the system keeps the current function call behavior. This field is currently only supported by the BidiGenerateContent method.
                        "description": "A String", # Optional. Description and purpose of the function. Model uses it to decide how and whether to call the function.
                        "name": "A String", # 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, colons and dashes, with a maximum length of 128.
                        "parameters": { # Defines the schema of input and output data. This is a subset of the [OpenAPI 3.0 Schema Object](https://spec.openapis.org/oas/v3.0.3#schema-object). # Optional. Describes the parameters to this function in JSON Schema Object format. Reflects the Open API 3.03 Parameter Object. string Key: the name of the parameter. Parameter names are case sensitive. Schema Value: the Schema defining the type used for the parameter. For function with no parameters, this can be left unset. Parameter names must start with a letter or an underscore and must only contain chars a-z, A-Z, 0-9, or underscores with a maximum length of 64. Example with 1 required and 1 optional parameter: type: OBJECT properties: param1: type: STRING param2: type: INTEGER required: - param1
                          "additionalProperties": "", # Optional. If `type` is `OBJECT`, specifies how to handle properties not defined in `properties`. If it is a boolean `false`, no additional properties are allowed. If it is a schema, additional properties are allowed if they conform to the schema.
                          "anyOf": [ # Optional. The instance must be valid against any (one or more) of the subschemas listed in `any_of`.
                            # Object with schema name: GoogleCloudAiplatformV1Schema
                          ],
                          "default": "", # Optional. Default value to use if the field is not specified.
                          "defs": { # Optional. `defs` provides a map of schema definitions that can be reused by `ref` elsewhere in the schema. Only allowed at root level of the schema.
                            "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                          },
                          "description": "A String", # Optional. Describes the data. The model uses this field to understand the purpose of the schema and how to use it. It is a best practice to provide a clear and descriptive explanation for the schema and its properties here, rather than in the prompt.
                          "enum": [ # Optional. Possible values of the field. This field can be used to restrict a value to a fixed set of values. To mark a field as an enum, set `format` to `enum` and provide the list of possible values in `enum`. For example: 1. To define directions: `{type:STRING, format:enum, enum:["EAST", "NORTH", "SOUTH", "WEST"]}` 2. To define apartment numbers: `{type:INTEGER, format:enum, enum:["101", "201", "301"]}`
                            "A String",
                          ],
                          "example": "", # Optional. Example of an instance of this schema.
                          "format": "A String", # Optional. The format of the data. For `NUMBER` type, format can be `float` or `double`. For `INTEGER` type, format can be `int32` or `int64`. For `STRING` type, format can be `email`, `byte`, `date`, `date-time`, `password`, and other formats to further refine the data type.
                          "items": # Object with schema name: GoogleCloudAiplatformV1Schema # Optional. If type is `ARRAY`, `items` specifies the schema of elements in the array.
                          "maxItems": "A String", # Optional. If type is `ARRAY`, `max_items` specifies the maximum number of items in an array.
                          "maxLength": "A String", # Optional. If type is `STRING`, `max_length` specifies the maximum length of the string.
                          "maxProperties": "A String", # Optional. If type is `OBJECT`, `max_properties` specifies the maximum number of properties that can be provided.
                          "maximum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `maximum` specifies the maximum allowed value.
                          "minItems": "A String", # Optional. If type is `ARRAY`, `min_items` specifies the minimum number of items in an array.
                          "minLength": "A String", # Optional. If type is `STRING`, `min_length` specifies the minimum length of the string.
                          "minProperties": "A String", # Optional. If type is `OBJECT`, `min_properties` specifies the minimum number of properties that can be provided.
                          "minimum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `minimum` specifies the minimum allowed value.
                          "nullable": True or False, # Optional. Indicates if the value of this field can be null.
                          "pattern": "A String", # Optional. If type is `STRING`, `pattern` specifies a regular expression that the string must match.
                          "properties": { # Optional. If type is `OBJECT`, `properties` is a map of property names to schema definitions for each property of the object.
                            "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                          },
                          "propertyOrdering": [ # Optional. Order of properties displayed or used where order matters. This is not a standard field in OpenAPI specification, but can be used to control the order of properties.
                            "A String",
                          ],
                          "ref": "A String", # Optional. Allows referencing another schema definition to use in place of this schema. The value must be a valid reference to a schema in `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
                          "required": [ # Optional. If type is `OBJECT`, `required` lists the names of properties that must be present.
                            "A String",
                          ],
                          "title": "A String", # Optional. Title for the schema.
                          "type": "A String", # Optional. Data type of the schema field.
                        },
                        "parametersJsonSchema": "", # 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`.
                        "response": { # Defines the schema of input and output data. This is a subset of the [OpenAPI 3.0 Schema Object](https://spec.openapis.org/oas/v3.0.3#schema-object). # Optional. Describes the output from this function in JSON Schema format. Reflects the Open API 3.03 Response Object. The Schema defines the type used for the response value of the function.
                          "additionalProperties": "", # Optional. If `type` is `OBJECT`, specifies how to handle properties not defined in `properties`. If it is a boolean `false`, no additional properties are allowed. If it is a schema, additional properties are allowed if they conform to the schema.
                          "anyOf": [ # Optional. The instance must be valid against any (one or more) of the subschemas listed in `any_of`.
                            # Object with schema name: GoogleCloudAiplatformV1Schema
                          ],
                          "default": "", # Optional. Default value to use if the field is not specified.
                          "defs": { # Optional. `defs` provides a map of schema definitions that can be reused by `ref` elsewhere in the schema. Only allowed at root level of the schema.
                            "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                          },
                          "description": "A String", # Optional. Describes the data. The model uses this field to understand the purpose of the schema and how to use it. It is a best practice to provide a clear and descriptive explanation for the schema and its properties here, rather than in the prompt.
                          "enum": [ # Optional. Possible values of the field. This field can be used to restrict a value to a fixed set of values. To mark a field as an enum, set `format` to `enum` and provide the list of possible values in `enum`. For example: 1. To define directions: `{type:STRING, format:enum, enum:["EAST", "NORTH", "SOUTH", "WEST"]}` 2. To define apartment numbers: `{type:INTEGER, format:enum, enum:["101", "201", "301"]}`
                            "A String",
                          ],
                          "example": "", # Optional. Example of an instance of this schema.
                          "format": "A String", # Optional. The format of the data. For `NUMBER` type, format can be `float` or `double`. For `INTEGER` type, format can be `int32` or `int64`. For `STRING` type, format can be `email`, `byte`, `date`, `date-time`, `password`, and other formats to further refine the data type.
                          "items": # Object with schema name: GoogleCloudAiplatformV1Schema # Optional. If type is `ARRAY`, `items` specifies the schema of elements in the array.
                          "maxItems": "A String", # Optional. If type is `ARRAY`, `max_items` specifies the maximum number of items in an array.
                          "maxLength": "A String", # Optional. If type is `STRING`, `max_length` specifies the maximum length of the string.
                          "maxProperties": "A String", # Optional. If type is `OBJECT`, `max_properties` specifies the maximum number of properties that can be provided.
                          "maximum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `maximum` specifies the maximum allowed value.
                          "minItems": "A String", # Optional. If type is `ARRAY`, `min_items` specifies the minimum number of items in an array.
                          "minLength": "A String", # Optional. If type is `STRING`, `min_length` specifies the minimum length of the string.
                          "minProperties": "A String", # Optional. If type is `OBJECT`, `min_properties` specifies the minimum number of properties that can be provided.
                          "minimum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `minimum` specifies the minimum allowed value.
                          "nullable": True or False, # Optional. Indicates if the value of this field can be null.
                          "pattern": "A String", # Optional. If type is `STRING`, `pattern` specifies a regular expression that the string must match.
                          "properties": { # Optional. If type is `OBJECT`, `properties` is a map of property names to schema definitions for each property of the object.
                            "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                          },
                          "propertyOrdering": [ # Optional. Order of properties displayed or used where order matters. This is not a standard field in OpenAPI specification, but can be used to control the order of properties.
                            "A String",
                          ],
                          "ref": "A String", # Optional. Allows referencing another schema definition to use in place of this schema. The value must be a valid reference to a schema in `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
                          "required": [ # Optional. If type is `OBJECT`, `required` lists the names of properties that must be present.
                            "A String",
                          ],
                          "title": "A String", # Optional. Title for the schema.
                          "type": "A String", # Optional. Data type of the schema field.
                        },
                        "responseJsonSchema": "", # 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`.
                      },
                    ],
                    "googleMaps": { # Tool to retrieve public maps data for grounding, powered by Google. # Optional. GoogleMaps tool type. Tool to support Google Maps in Model.
                      "enableWidget": True or False, # Optional. If true, include the widget context token in the response.
                    },
                    "googleSearch": { # GoogleSearch tool type. Tool to support Google Search in Model. Powered by Google. # Optional. GoogleSearch tool type. Tool to support Google Search in Model. Powered by Google.
                      "blockingConfidence": "A String", # Optional. Sites with confidence level chosen & above this value will be blocked from the search results.
                      "excludeDomains": [ # Optional. List of domains to be excluded from the search results. The default limit is 2000 domains. Example: ["amazon.com", "facebook.com"].
                        "A String",
                      ],
                      "searchTypes": { # Different types of search that can be enabled on the GoogleSearch tool. # Optional. The set of search types to enable. If not set, web search is enabled by default.
                        "imageSearch": { # Image search for grounding and related configurations. # Optional. Setting this field enables image search. Image bytes are returned.
                        },
                        "webSearch": { # Standard web search for grounding and related configurations. Only text results are returned. # Optional. Setting this field enables web search. Only text results are returned.
                        },
                      },
                    },
                    "googleSearchRetrieval": { # Tool to retrieve public web data for grounding, powered by Google. # Optional. Specialized retrieval tool that is powered by Google Search.
                      "dynamicRetrievalConfig": { # Describes the options to customize dynamic retrieval. # Specifies the dynamic retrieval configuration for the given source.
                        "dynamicThreshold": 3.14, # Optional. The threshold to be used in dynamic retrieval. If not set, a system default value is used.
                        "mode": "A String", # The mode of the predictor to be used in dynamic retrieval.
                      },
                    },
                    "parallelAiSearch": { # ParallelAiSearch tool type. A tool that uses the Parallel.ai search engine for grounding. # Optional. If specified, Vertex AI will use Parallel.ai to search for information to answer user queries. The search results will be grounded on Parallel.ai and presented to the model for response generation
                      "apiKey": "A String", # Optional. The API key for ParallelAiSearch. If an API key is not provided, the system will attempt to verify access by checking for an active Parallel.ai subscription through the Google Cloud Marketplace. See https://docs.parallel.ai/search/search-quickstart for more details.
                      "customConfigs": { # Optional. Custom configs for ParallelAiSearch. This field can be used to pass any parameter from the Parallel.ai Search API. See the Parallel.ai documentation for the full list of available parameters and their usage: https://docs.parallel.ai/api-reference/search-beta/search Currently only `source_policy`, `excerpts`, `max_results`, `mode`, `fetch_policy` can be set via this field. For example: { "source_policy": { "include_domains": ["google.com", "wikipedia.org"], "exclude_domains": ["example.com"] }, "fetch_policy": { "max_age_seconds": 3600 } }
                        "a_key": "", # Properties of the object.
                      },
                    },
                    "retrieval": { # Defines a retrieval tool that model can call to access external knowledge. # Optional. Retrieval tool type. System will always execute the provided retrieval tool(s) to get external knowledge to answer the prompt. Retrieval results are presented to the model for generation.
                      "disableAttribution": True or False, # Optional. Deprecated. This option is no longer supported.
                      "externalApi": { # 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. # Use data source powered by external API for grounding.
                        "apiAuth": { # The generic reusable api auth config. Deprecated. Please use AuthConfig (google/cloud/aiplatform/master/auth.proto) instead. # The authentication config to access the API. Deprecated. Please use auth_config instead.
                          "apiKeyConfig": { # The API secret. # The API secret.
                            "apiKeySecretVersion": "A String", # Required. The SecretManager secret version resource name storing API key. e.g. projects/{project}/secrets/{secret}/versions/{version}
                            "apiKeyString": "A String", # The API key string. Either this or `api_key_secret_version` must be set.
                          },
                        },
                        "apiSpec": "A String", # The API spec that the external API implements.
                        "authConfig": { # Auth configuration to run the extension. # The authentication config to access the API.
                          "apiKeyConfig": { # Config for authentication with API key. # Config for API key auth.
                            "apiKeySecret": "A String", # 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.
                            "apiKeyString": "A String", # Optional. The API key to be used in the request directly.
                            "httpElementLocation": "A String", # Optional. The location of the API key.
                            "name": "A String", # 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.
                          },
                          "authType": "A String", # Type of auth scheme.
                          "googleServiceAccountConfig": { # Config for Google Service Account Authentication. # Config for Google Service Account auth.
                            "serviceAccount": "A String", # 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.
                          },
                          "httpBasicAuthConfig": { # Config for HTTP Basic Authentication. # Config for HTTP Basic auth.
                            "credentialSecret": "A String", # 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.
                          },
                          "oauthConfig": { # Config for user oauth. # Config for user oauth.
                            "accessToken": "A String", # Access token for extension endpoint. Only used to propagate token from [[ExecuteExtensionRequest.runtime_auth_config]] at request time.
                            "serviceAccount": "A String", # 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.
                          },
                          "oidcConfig": { # Config for user OIDC auth. # Config for user OIDC auth.
                            "idToken": "A String", # OpenID Connect formatted ID token for extension endpoint. Only used to propagate token from [[ExecuteExtensionRequest.runtime_auth_config]] at request time.
                            "serviceAccount": "A String", # 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).
                          },
                        },
                        "elasticSearchParams": { # The search parameters to use for the ELASTIC_SEARCH spec. # Parameters for the elastic search API.
                          "index": "A String", # The ElasticSearch index to use.
                          "numHits": 42, # Optional. Number of hits (chunks) to request. When specified, it is passed to Elasticsearch as the `num_hits` param.
                          "searchTemplate": "A String", # The ElasticSearch search template to use.
                        },
                        "endpoint": "A String", # 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
                        "simpleSearchParams": { # The search parameters to use for SIMPLE_SEARCH spec. # Parameters for the simple search API.
                        },
                      },
                      "vertexAiSearch": { # Retrieve from Vertex AI Search datastore or engine for grounding. datastore and engine are mutually exclusive. See https://cloud.google.com/products/agent-builder # Set to use data source powered by Vertex AI Search.
                        "dataStoreSpecs": [ # 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.
                          { # 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
                            "dataStore": "A String", # Full resource name of DataStore, such as Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}`
                            "filter": "A String", # 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)
                          },
                        ],
                        "datastore": "A String", # Optional. Fully-qualified Vertex AI Search data store resource ID. Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}`
                        "engine": "A String", # Optional. Fully-qualified Vertex AI Search engine resource ID. Format: `projects/{project}/locations/{location}/collections/{collection}/engines/{engine}`
                        "filter": "A String", # Optional. Filter strings to be passed to the search API.
                        "maxResults": 42, # Optional. Number of search results to return per query. The default value is 10. The maximumm allowed value is 10.
                      },
                      "vertexRagStore": { # Retrieve from Vertex RAG Store for grounding. # Set to use data source powered by Vertex RAG store. User data is uploaded via the VertexRagDataService.
                        "ragResources": [ # 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.
                          { # The definition of the Rag resource.
                            "ragCorpus": "A String", # Optional. RagCorpora resource name. Format: `projects/{project}/locations/{location}/ragCorpora/{rag_corpus}`
                            "ragFileIds": [ # Optional. rag_file_id. The files should be in the same rag_corpus set in rag_corpus field.
                              "A String",
                            ],
                          },
                        ],
                        "ragRetrievalConfig": { # Specifies the context retrieval config. # Optional. The retrieval config for the Rag query.
                          "filter": { # Config for filters. # Optional. Config for filters.
                            "metadataFilter": "A String", # Optional. String for metadata filtering.
                            "vectorDistanceThreshold": 3.14, # Optional. Only returns contexts with vector distance smaller than the threshold.
                            "vectorSimilarityThreshold": 3.14, # Optional. Only returns contexts with vector similarity larger than the threshold.
                          },
                          "ranking": { # Config for ranking and reranking. # Optional. Config for ranking and reranking.
                            "llmRanker": { # Config for LlmRanker. # Optional. Config for LlmRanker.
                              "modelName": "A String", # Optional. The model name used for ranking. See [Supported models](https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/inference#supported-models).
                            },
                            "rankService": { # Config for Rank Service. # Optional. Config for Rank Service.
                              "modelName": "A String", # Optional. The model name of the rank service. Format: `semantic-ranker-512@latest`
                            },
                          },
                          "topK": 42, # Optional. The number of contexts to retrieve.
                        },
                        "similarityTopK": 42, # Optional. Number of top k results to return from the selected corpora.
                        "vectorDistanceThreshold": 3.14, # Optional. Only return results with vector distance smaller than the threshold.
                      },
                    },
                    "urlContext": { # Tool to support URL context. # Optional. Tool to support URL context retrieval.
                    },
                  },
                ],
              },
              "toolsText": "A String", # A JSON string containing a list of tools available to an agent with info such as name, description, parameters and required parameters.
            },
          },
          "developerInstruction": { # Instance data used to populate placeholders in a metric prompt template. # Optional. Deprecated: Use `agents.developer_instruction` or `turns.events.active_instruction` instead. A field containing instructions from the developer for the agent.
            "contents": { # List of standard Content messages from Gemini API. # List of Gemini content data.
              "contents": [ # Optional. Repeated contents.
                { # The structured data content of a message. A Content message contains a `role` field, which indicates the producer of the content, and a `parts` field, which contains the multi-part data of the message.
                  "parts": [ # Required. A list of Part objects that make up a single message. Parts of a message can have different MIME types. A Content message must have at least one Part.
                    { # 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`. For media types that are not text, `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.
                      "codeExecutionResult": { # Result of executing the ExecutableCode. Generated only when the `CodeExecution` tool is used. # Optional. The result of executing the ExecutableCode.
                        "outcome": "A String", # Required. Outcome of the code execution.
                        "output": "A String", # Optional. Contains stdout when code execution is successful, stderr or other description otherwise.
                      },
                      "executableCode": { # 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. # Optional. Code generated by the model that is intended to be executed.
                        "code": "A String", # Required. The code to be executed.
                        "language": "A String", # Required. Programming language of the `code`.
                      },
                      "fileData": { # URI-based data. A FileData message contains a URI pointing to data of a specific media type. It is used to represent images, audio, and video stored in Google Cloud Storage. # Optional. The URI-based data of the part. This can be used to include files from Google Cloud Storage.
                        "displayName": "A String", # Optional. The display name of the file. Used to provide a label or filename to distinguish files. This field is only returned in `PromptMessage` for prompt management. It is used in the Gemini calls only when server side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                        "fileUri": "A String", # Required. The URI of the file in Google Cloud Storage.
                        "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                      },
                      "functionCall": { # 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. # Optional. A predicted function call returned from the model. This contains the name of the function to call and the arguments to pass to the function.
                        "args": { # Optional. The function parameters and values in JSON object format. See FunctionDeclaration.parameters for parameter details.
                          "a_key": "", # Properties of the object.
                        },
                        "name": "A String", # Optional. The name of the function to call. Matches FunctionDeclaration.name.
                        "partialArgs": [ # Optional. The partial argument value of the function call. If provided, represents the arguments/fields that are streamed incrementally.
                          { # Partial argument value of the function call.
                            "boolValue": True or False, # Optional. Represents a boolean value.
                            "jsonPath": "A String", # Required. A JSON Path (RFC 9535) to the argument being streamed. https://datatracker.ietf.org/doc/html/rfc9535. e.g. "$.foo.bar[0].data".
                            "nullValue": "A String", # Optional. Represents a null value.
                            "numberValue": 3.14, # Optional. Represents a double value.
                            "stringValue": "A String", # Optional. Represents a string value.
                            "willContinue": True or False, # Optional. Whether this is not the last part of the same json_path. If true, another PartialArg message for the current json_path is expected to follow.
                          },
                        ],
                        "willContinue": True or False, # Optional. Whether this is the last part of the FunctionCall. If true, another partial message for the current FunctionCall is expected to follow.
                      },
                      "functionResponse": { # 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. # Optional. The result of a function call. This is used to provide the model with the result of a function call that it predicted.
                        "name": "A String", # Required. The name of the function to call. Matches FunctionDeclaration.name and FunctionCall.name.
                        "parts": [ # Optional. Ordered `Parts` that constitute a function response. Parts may have different IANA MIME types.
                          { # A datatype containing media that is part of a `FunctionResponse` message. A `FunctionResponsePart` consists of data which has an associated datatype. A `FunctionResponsePart` can only contain one of the accepted types in `FunctionResponsePart.data`. A `FunctionResponsePart` must have a fixed IANA MIME type identifying the type and subtype of the media if the `inline_data` field is filled with raw bytes.
                            "fileData": { # URI based data for function response. # URI based data.
                              "displayName": "A String", # 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.
                              "fileUri": "A String", # Required. URI.
                              "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                            },
                            "inlineData": { # Raw media bytes for function response. Text should not be sent as raw bytes, use the 'text' field. # Inline media bytes.
                              "data": "A String", # Required. Raw bytes.
                              "displayName": "A String", # 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.
                              "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                            },
                          },
                        ],
                        "response": { # 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.
                          "a_key": "", # Properties of the object.
                        },
                        "scheduling": "A String", # Optional. Specifies how the response should be scheduled in the conversation. Only applicable to NON_BLOCKING function calls, is ignored otherwise. Defaults to WHEN_IDLE.
                      },
                      "inlineData": { # A content blob. A Blob contains data of a specific media type. It is used to represent images, audio, and video. # Optional. The inline data content of the part. This can be used to include images, audio, or video in a request.
                        "data": "A String", # Required. The raw bytes of the data.
                        "displayName": "A String", # Optional. The 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 used in the Gemini calls only when server-side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                        "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                      },
                      "mediaResolution": { # per part media resolution. Media resolution for the input media. # per part media resolution. Media resolution for the input media.
                        "level": "A String", # The tokenization quality used for given media.
                      },
                      "text": "A String", # Optional. The text content of the part. When sent from the VSCode Gemini Code Assist extension, references to @mentioned items will be converted to markdown boldface text. For example `@my-repo` will be converted to and sent as `**my-repo**` by the IDE agent.
                      "thought": True or False, # Optional. Indicates whether the `part` represents the model's thought process or reasoning.
                      "thoughtSignature": "A String", # Optional. An opaque signature for the thought so it can be reused in subsequent requests.
                      "videoMetadata": { # Provides metadata for a video, including the start and end offsets for clipping and the frame rate. # Optional. Video metadata. The metadata should only be specified while the video data is presented in inline_data or file_data.
                        "endOffset": "A String", # Optional. The end offset of the video.
                        "fps": 3.14, # Optional. The frame rate of the video sent to the model. If not specified, the default value is 1.0. The valid range is (0.0, 24.0].
                        "startOffset": "A String", # Optional. The start offset of the video.
                      },
                    },
                  ],
                  "role": "A String", # Optional. The producer of the content. Must be either 'user' or 'model'. If not set, the service will default to 'user'.
                },
              ],
            },
            "text": "A String", # Text data.
          },
          "events": { # Represents a list of events for an agent. # A list of events.
            "event": [ # Optional. A list of events.
              { # The structured data content of a message. A Content message contains a `role` field, which indicates the producer of the content, and a `parts` field, which contains the multi-part data of the message.
                "parts": [ # Required. A list of Part objects that make up a single message. Parts of a message can have different MIME types. A Content message must have at least one Part.
                  { # 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`. For media types that are not text, `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.
                    "codeExecutionResult": { # Result of executing the ExecutableCode. Generated only when the `CodeExecution` tool is used. # Optional. The result of executing the ExecutableCode.
                      "outcome": "A String", # Required. Outcome of the code execution.
                      "output": "A String", # Optional. Contains stdout when code execution is successful, stderr or other description otherwise.
                    },
                    "executableCode": { # 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. # Optional. Code generated by the model that is intended to be executed.
                      "code": "A String", # Required. The code to be executed.
                      "language": "A String", # Required. Programming language of the `code`.
                    },
                    "fileData": { # URI-based data. A FileData message contains a URI pointing to data of a specific media type. It is used to represent images, audio, and video stored in Google Cloud Storage. # Optional. The URI-based data of the part. This can be used to include files from Google Cloud Storage.
                      "displayName": "A String", # Optional. The display name of the file. Used to provide a label or filename to distinguish files. This field is only returned in `PromptMessage` for prompt management. It is used in the Gemini calls only when server side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                      "fileUri": "A String", # Required. The URI of the file in Google Cloud Storage.
                      "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                    },
                    "functionCall": { # 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. # Optional. A predicted function call returned from the model. This contains the name of the function to call and the arguments to pass to the function.
                      "args": { # Optional. The function parameters and values in JSON object format. See FunctionDeclaration.parameters for parameter details.
                        "a_key": "", # Properties of the object.
                      },
                      "name": "A String", # Optional. The name of the function to call. Matches FunctionDeclaration.name.
                      "partialArgs": [ # Optional. The partial argument value of the function call. If provided, represents the arguments/fields that are streamed incrementally.
                        { # Partial argument value of the function call.
                          "boolValue": True or False, # Optional. Represents a boolean value.
                          "jsonPath": "A String", # Required. A JSON Path (RFC 9535) to the argument being streamed. https://datatracker.ietf.org/doc/html/rfc9535. e.g. "$.foo.bar[0].data".
                          "nullValue": "A String", # Optional. Represents a null value.
                          "numberValue": 3.14, # Optional. Represents a double value.
                          "stringValue": "A String", # Optional. Represents a string value.
                          "willContinue": True or False, # Optional. Whether this is not the last part of the same json_path. If true, another PartialArg message for the current json_path is expected to follow.
                        },
                      ],
                      "willContinue": True or False, # Optional. Whether this is the last part of the FunctionCall. If true, another partial message for the current FunctionCall is expected to follow.
                    },
                    "functionResponse": { # 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. # Optional. The result of a function call. This is used to provide the model with the result of a function call that it predicted.
                      "name": "A String", # Required. The name of the function to call. Matches FunctionDeclaration.name and FunctionCall.name.
                      "parts": [ # Optional. Ordered `Parts` that constitute a function response. Parts may have different IANA MIME types.
                        { # A datatype containing media that is part of a `FunctionResponse` message. A `FunctionResponsePart` consists of data which has an associated datatype. A `FunctionResponsePart` can only contain one of the accepted types in `FunctionResponsePart.data`. A `FunctionResponsePart` must have a fixed IANA MIME type identifying the type and subtype of the media if the `inline_data` field is filled with raw bytes.
                          "fileData": { # URI based data for function response. # URI based data.
                            "displayName": "A String", # 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.
                            "fileUri": "A String", # Required. URI.
                            "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                          },
                          "inlineData": { # Raw media bytes for function response. Text should not be sent as raw bytes, use the 'text' field. # Inline media bytes.
                            "data": "A String", # Required. Raw bytes.
                            "displayName": "A String", # 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.
                            "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                          },
                        },
                      ],
                      "response": { # 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.
                        "a_key": "", # Properties of the object.
                      },
                      "scheduling": "A String", # Optional. Specifies how the response should be scheduled in the conversation. Only applicable to NON_BLOCKING function calls, is ignored otherwise. Defaults to WHEN_IDLE.
                    },
                    "inlineData": { # A content blob. A Blob contains data of a specific media type. It is used to represent images, audio, and video. # Optional. The inline data content of the part. This can be used to include images, audio, or video in a request.
                      "data": "A String", # Required. The raw bytes of the data.
                      "displayName": "A String", # Optional. The 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 used in the Gemini calls only when server-side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                      "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                    },
                    "mediaResolution": { # per part media resolution. Media resolution for the input media. # per part media resolution. Media resolution for the input media.
                      "level": "A String", # The tokenization quality used for given media.
                    },
                    "text": "A String", # Optional. The text content of the part. When sent from the VSCode Gemini Code Assist extension, references to @mentioned items will be converted to markdown boldface text. For example `@my-repo` will be converted to and sent as `**my-repo**` by the IDE agent.
                    "thought": True or False, # Optional. Indicates whether the `part` represents the model's thought process or reasoning.
                    "thoughtSignature": "A String", # Optional. An opaque signature for the thought so it can be reused in subsequent requests.
                    "videoMetadata": { # Provides metadata for a video, including the start and end offsets for clipping and the frame rate. # Optional. Video metadata. The metadata should only be specified while the video data is presented in inline_data or file_data.
                      "endOffset": "A String", # Optional. The end offset of the video.
                      "fps": 3.14, # Optional. The frame rate of the video sent to the model. If not specified, the default value is 1.0. The valid range is (0.0, 24.0].
                      "startOffset": "A String", # Optional. The start offset of the video.
                    },
                  },
                ],
                "role": "A String", # Optional. The producer of the content. Must be either 'user' or 'model'. If not set, the service will default to 'user'.
              },
            ],
          },
          "tools": { # Deprecated: Use `agent_eval_data` instead. Represents a list of tools for an agent. # List of tools.
            "tool": [ # Optional. List of tools: each tool can have multiple function declarations.
              { # 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).
                "codeExecution": { # 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. # Optional. CodeExecution tool type. Enables the model to execute code as part of generation.
                },
                "computerUse": { # Tool to support computer use. # Optional. Tool to support the model interacting directly with the computer. If enabled, it automatically populates computer-use specific Function Declarations.
                  "environment": "A String", # Required. The environment being operated.
                  "excludedPredefinedFunctions": [ # Optional. By default, [predefined functions](https://cloud.google.com/vertex-ai/generative-ai/docs/computer-use#supported-actions) are included in the final model call. Some of them can be explicitly excluded from being automatically included. This can serve two purposes: 1. Using a more restricted / different action space. 2. Improving the definitions / instructions of predefined functions.
                    "A String",
                  ],
                },
                "enterpriseWebSearch": { # Tool to search public web data, powered by Vertex AI Search and Sec4 compliance. # Optional. Tool to support searching public web data, powered by Vertex AI Search and Sec4 compliance.
                  "blockingConfidence": "A String", # Optional. Sites with confidence level chosen & above this value will be blocked from the search results.
                  "excludeDomains": [ # Optional. List of domains to be excluded from the search results. The default limit is 2000 domains.
                    "A String",
                  ],
                },
                "functionDeclarations": [ # 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.
                  { # 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.
                    "behavior": "A String", # Optional. Specifies the function Behavior. If not specified, the system keeps the current function call behavior. This field is currently only supported by the BidiGenerateContent method.
                    "description": "A String", # Optional. Description and purpose of the function. Model uses it to decide how and whether to call the function.
                    "name": "A String", # 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, colons and dashes, with a maximum length of 128.
                    "parameters": { # Defines the schema of input and output data. This is a subset of the [OpenAPI 3.0 Schema Object](https://spec.openapis.org/oas/v3.0.3#schema-object). # Optional. Describes the parameters to this function in JSON Schema Object format. Reflects the Open API 3.03 Parameter Object. string Key: the name of the parameter. Parameter names are case sensitive. Schema Value: the Schema defining the type used for the parameter. For function with no parameters, this can be left unset. Parameter names must start with a letter or an underscore and must only contain chars a-z, A-Z, 0-9, or underscores with a maximum length of 64. Example with 1 required and 1 optional parameter: type: OBJECT properties: param1: type: STRING param2: type: INTEGER required: - param1
                      "additionalProperties": "", # Optional. If `type` is `OBJECT`, specifies how to handle properties not defined in `properties`. If it is a boolean `false`, no additional properties are allowed. If it is a schema, additional properties are allowed if they conform to the schema.
                      "anyOf": [ # Optional. The instance must be valid against any (one or more) of the subschemas listed in `any_of`.
                        # Object with schema name: GoogleCloudAiplatformV1Schema
                      ],
                      "default": "", # Optional. Default value to use if the field is not specified.
                      "defs": { # Optional. `defs` provides a map of schema definitions that can be reused by `ref` elsewhere in the schema. Only allowed at root level of the schema.
                        "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                      },
                      "description": "A String", # Optional. Describes the data. The model uses this field to understand the purpose of the schema and how to use it. It is a best practice to provide a clear and descriptive explanation for the schema and its properties here, rather than in the prompt.
                      "enum": [ # Optional. Possible values of the field. This field can be used to restrict a value to a fixed set of values. To mark a field as an enum, set `format` to `enum` and provide the list of possible values in `enum`. For example: 1. To define directions: `{type:STRING, format:enum, enum:["EAST", "NORTH", "SOUTH", "WEST"]}` 2. To define apartment numbers: `{type:INTEGER, format:enum, enum:["101", "201", "301"]}`
                        "A String",
                      ],
                      "example": "", # Optional. Example of an instance of this schema.
                      "format": "A String", # Optional. The format of the data. For `NUMBER` type, format can be `float` or `double`. For `INTEGER` type, format can be `int32` or `int64`. For `STRING` type, format can be `email`, `byte`, `date`, `date-time`, `password`, and other formats to further refine the data type.
                      "items": # Object with schema name: GoogleCloudAiplatformV1Schema # Optional. If type is `ARRAY`, `items` specifies the schema of elements in the array.
                      "maxItems": "A String", # Optional. If type is `ARRAY`, `max_items` specifies the maximum number of items in an array.
                      "maxLength": "A String", # Optional. If type is `STRING`, `max_length` specifies the maximum length of the string.
                      "maxProperties": "A String", # Optional. If type is `OBJECT`, `max_properties` specifies the maximum number of properties that can be provided.
                      "maximum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `maximum` specifies the maximum allowed value.
                      "minItems": "A String", # Optional. If type is `ARRAY`, `min_items` specifies the minimum number of items in an array.
                      "minLength": "A String", # Optional. If type is `STRING`, `min_length` specifies the minimum length of the string.
                      "minProperties": "A String", # Optional. If type is `OBJECT`, `min_properties` specifies the minimum number of properties that can be provided.
                      "minimum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `minimum` specifies the minimum allowed value.
                      "nullable": True or False, # Optional. Indicates if the value of this field can be null.
                      "pattern": "A String", # Optional. If type is `STRING`, `pattern` specifies a regular expression that the string must match.
                      "properties": { # Optional. If type is `OBJECT`, `properties` is a map of property names to schema definitions for each property of the object.
                        "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                      },
                      "propertyOrdering": [ # Optional. Order of properties displayed or used where order matters. This is not a standard field in OpenAPI specification, but can be used to control the order of properties.
                        "A String",
                      ],
                      "ref": "A String", # Optional. Allows referencing another schema definition to use in place of this schema. The value must be a valid reference to a schema in `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
                      "required": [ # Optional. If type is `OBJECT`, `required` lists the names of properties that must be present.
                        "A String",
                      ],
                      "title": "A String", # Optional. Title for the schema.
                      "type": "A String", # Optional. Data type of the schema field.
                    },
                    "parametersJsonSchema": "", # 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`.
                    "response": { # Defines the schema of input and output data. This is a subset of the [OpenAPI 3.0 Schema Object](https://spec.openapis.org/oas/v3.0.3#schema-object). # Optional. Describes the output from this function in JSON Schema format. Reflects the Open API 3.03 Response Object. The Schema defines the type used for the response value of the function.
                      "additionalProperties": "", # Optional. If `type` is `OBJECT`, specifies how to handle properties not defined in `properties`. If it is a boolean `false`, no additional properties are allowed. If it is a schema, additional properties are allowed if they conform to the schema.
                      "anyOf": [ # Optional. The instance must be valid against any (one or more) of the subschemas listed in `any_of`.
                        # Object with schema name: GoogleCloudAiplatformV1Schema
                      ],
                      "default": "", # Optional. Default value to use if the field is not specified.
                      "defs": { # Optional. `defs` provides a map of schema definitions that can be reused by `ref` elsewhere in the schema. Only allowed at root level of the schema.
                        "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                      },
                      "description": "A String", # Optional. Describes the data. The model uses this field to understand the purpose of the schema and how to use it. It is a best practice to provide a clear and descriptive explanation for the schema and its properties here, rather than in the prompt.
                      "enum": [ # Optional. Possible values of the field. This field can be used to restrict a value to a fixed set of values. To mark a field as an enum, set `format` to `enum` and provide the list of possible values in `enum`. For example: 1. To define directions: `{type:STRING, format:enum, enum:["EAST", "NORTH", "SOUTH", "WEST"]}` 2. To define apartment numbers: `{type:INTEGER, format:enum, enum:["101", "201", "301"]}`
                        "A String",
                      ],
                      "example": "", # Optional. Example of an instance of this schema.
                      "format": "A String", # Optional. The format of the data. For `NUMBER` type, format can be `float` or `double`. For `INTEGER` type, format can be `int32` or `int64`. For `STRING` type, format can be `email`, `byte`, `date`, `date-time`, `password`, and other formats to further refine the data type.
                      "items": # Object with schema name: GoogleCloudAiplatformV1Schema # Optional. If type is `ARRAY`, `items` specifies the schema of elements in the array.
                      "maxItems": "A String", # Optional. If type is `ARRAY`, `max_items` specifies the maximum number of items in an array.
                      "maxLength": "A String", # Optional. If type is `STRING`, `max_length` specifies the maximum length of the string.
                      "maxProperties": "A String", # Optional. If type is `OBJECT`, `max_properties` specifies the maximum number of properties that can be provided.
                      "maximum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `maximum` specifies the maximum allowed value.
                      "minItems": "A String", # Optional. If type is `ARRAY`, `min_items` specifies the minimum number of items in an array.
                      "minLength": "A String", # Optional. If type is `STRING`, `min_length` specifies the minimum length of the string.
                      "minProperties": "A String", # Optional. If type is `OBJECT`, `min_properties` specifies the minimum number of properties that can be provided.
                      "minimum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `minimum` specifies the minimum allowed value.
                      "nullable": True or False, # Optional. Indicates if the value of this field can be null.
                      "pattern": "A String", # Optional. If type is `STRING`, `pattern` specifies a regular expression that the string must match.
                      "properties": { # Optional. If type is `OBJECT`, `properties` is a map of property names to schema definitions for each property of the object.
                        "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                      },
                      "propertyOrdering": [ # Optional. Order of properties displayed or used where order matters. This is not a standard field in OpenAPI specification, but can be used to control the order of properties.
                        "A String",
                      ],
                      "ref": "A String", # Optional. Allows referencing another schema definition to use in place of this schema. The value must be a valid reference to a schema in `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
                      "required": [ # Optional. If type is `OBJECT`, `required` lists the names of properties that must be present.
                        "A String",
                      ],
                      "title": "A String", # Optional. Title for the schema.
                      "type": "A String", # Optional. Data type of the schema field.
                    },
                    "responseJsonSchema": "", # 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`.
                  },
                ],
                "googleMaps": { # Tool to retrieve public maps data for grounding, powered by Google. # Optional. GoogleMaps tool type. Tool to support Google Maps in Model.
                  "enableWidget": True or False, # Optional. If true, include the widget context token in the response.
                },
                "googleSearch": { # GoogleSearch tool type. Tool to support Google Search in Model. Powered by Google. # Optional. GoogleSearch tool type. Tool to support Google Search in Model. Powered by Google.
                  "blockingConfidence": "A String", # Optional. Sites with confidence level chosen & above this value will be blocked from the search results.
                  "excludeDomains": [ # Optional. List of domains to be excluded from the search results. The default limit is 2000 domains. Example: ["amazon.com", "facebook.com"].
                    "A String",
                  ],
                  "searchTypes": { # Different types of search that can be enabled on the GoogleSearch tool. # Optional. The set of search types to enable. If not set, web search is enabled by default.
                    "imageSearch": { # Image search for grounding and related configurations. # Optional. Setting this field enables image search. Image bytes are returned.
                    },
                    "webSearch": { # Standard web search for grounding and related configurations. Only text results are returned. # Optional. Setting this field enables web search. Only text results are returned.
                    },
                  },
                },
                "googleSearchRetrieval": { # Tool to retrieve public web data for grounding, powered by Google. # Optional. Specialized retrieval tool that is powered by Google Search.
                  "dynamicRetrievalConfig": { # Describes the options to customize dynamic retrieval. # Specifies the dynamic retrieval configuration for the given source.
                    "dynamicThreshold": 3.14, # Optional. The threshold to be used in dynamic retrieval. If not set, a system default value is used.
                    "mode": "A String", # The mode of the predictor to be used in dynamic retrieval.
                  },
                },
                "parallelAiSearch": { # ParallelAiSearch tool type. A tool that uses the Parallel.ai search engine for grounding. # Optional. If specified, Vertex AI will use Parallel.ai to search for information to answer user queries. The search results will be grounded on Parallel.ai and presented to the model for response generation
                  "apiKey": "A String", # Optional. The API key for ParallelAiSearch. If an API key is not provided, the system will attempt to verify access by checking for an active Parallel.ai subscription through the Google Cloud Marketplace. See https://docs.parallel.ai/search/search-quickstart for more details.
                  "customConfigs": { # Optional. Custom configs for ParallelAiSearch. This field can be used to pass any parameter from the Parallel.ai Search API. See the Parallel.ai documentation for the full list of available parameters and their usage: https://docs.parallel.ai/api-reference/search-beta/search Currently only `source_policy`, `excerpts`, `max_results`, `mode`, `fetch_policy` can be set via this field. For example: { "source_policy": { "include_domains": ["google.com", "wikipedia.org"], "exclude_domains": ["example.com"] }, "fetch_policy": { "max_age_seconds": 3600 } }
                    "a_key": "", # Properties of the object.
                  },
                },
                "retrieval": { # Defines a retrieval tool that model can call to access external knowledge. # Optional. Retrieval tool type. System will always execute the provided retrieval tool(s) to get external knowledge to answer the prompt. Retrieval results are presented to the model for generation.
                  "disableAttribution": True or False, # Optional. Deprecated. This option is no longer supported.
                  "externalApi": { # 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. # Use data source powered by external API for grounding.
                    "apiAuth": { # The generic reusable api auth config. Deprecated. Please use AuthConfig (google/cloud/aiplatform/master/auth.proto) instead. # The authentication config to access the API. Deprecated. Please use auth_config instead.
                      "apiKeyConfig": { # The API secret. # The API secret.
                        "apiKeySecretVersion": "A String", # Required. The SecretManager secret version resource name storing API key. e.g. projects/{project}/secrets/{secret}/versions/{version}
                        "apiKeyString": "A String", # The API key string. Either this or `api_key_secret_version` must be set.
                      },
                    },
                    "apiSpec": "A String", # The API spec that the external API implements.
                    "authConfig": { # Auth configuration to run the extension. # The authentication config to access the API.
                      "apiKeyConfig": { # Config for authentication with API key. # Config for API key auth.
                        "apiKeySecret": "A String", # 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.
                        "apiKeyString": "A String", # Optional. The API key to be used in the request directly.
                        "httpElementLocation": "A String", # Optional. The location of the API key.
                        "name": "A String", # 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.
                      },
                      "authType": "A String", # Type of auth scheme.
                      "googleServiceAccountConfig": { # Config for Google Service Account Authentication. # Config for Google Service Account auth.
                        "serviceAccount": "A String", # 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.
                      },
                      "httpBasicAuthConfig": { # Config for HTTP Basic Authentication. # Config for HTTP Basic auth.
                        "credentialSecret": "A String", # 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.
                      },
                      "oauthConfig": { # Config for user oauth. # Config for user oauth.
                        "accessToken": "A String", # Access token for extension endpoint. Only used to propagate token from [[ExecuteExtensionRequest.runtime_auth_config]] at request time.
                        "serviceAccount": "A String", # 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.
                      },
                      "oidcConfig": { # Config for user OIDC auth. # Config for user OIDC auth.
                        "idToken": "A String", # OpenID Connect formatted ID token for extension endpoint. Only used to propagate token from [[ExecuteExtensionRequest.runtime_auth_config]] at request time.
                        "serviceAccount": "A String", # 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).
                      },
                    },
                    "elasticSearchParams": { # The search parameters to use for the ELASTIC_SEARCH spec. # Parameters for the elastic search API.
                      "index": "A String", # The ElasticSearch index to use.
                      "numHits": 42, # Optional. Number of hits (chunks) to request. When specified, it is passed to Elasticsearch as the `num_hits` param.
                      "searchTemplate": "A String", # The ElasticSearch search template to use.
                    },
                    "endpoint": "A String", # 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
                    "simpleSearchParams": { # The search parameters to use for SIMPLE_SEARCH spec. # Parameters for the simple search API.
                    },
                  },
                  "vertexAiSearch": { # Retrieve from Vertex AI Search datastore or engine for grounding. datastore and engine are mutually exclusive. See https://cloud.google.com/products/agent-builder # Set to use data source powered by Vertex AI Search.
                    "dataStoreSpecs": [ # 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.
                      { # 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
                        "dataStore": "A String", # Full resource name of DataStore, such as Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}`
                        "filter": "A String", # 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)
                      },
                    ],
                    "datastore": "A String", # Optional. Fully-qualified Vertex AI Search data store resource ID. Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}`
                    "engine": "A String", # Optional. Fully-qualified Vertex AI Search engine resource ID. Format: `projects/{project}/locations/{location}/collections/{collection}/engines/{engine}`
                    "filter": "A String", # Optional. Filter strings to be passed to the search API.
                    "maxResults": 42, # Optional. Number of search results to return per query. The default value is 10. The maximumm allowed value is 10.
                  },
                  "vertexRagStore": { # Retrieve from Vertex RAG Store for grounding. # Set to use data source powered by Vertex RAG store. User data is uploaded via the VertexRagDataService.
                    "ragResources": [ # 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.
                      { # The definition of the Rag resource.
                        "ragCorpus": "A String", # Optional. RagCorpora resource name. Format: `projects/{project}/locations/{location}/ragCorpora/{rag_corpus}`
                        "ragFileIds": [ # Optional. rag_file_id. The files should be in the same rag_corpus set in rag_corpus field.
                          "A String",
                        ],
                      },
                    ],
                    "ragRetrievalConfig": { # Specifies the context retrieval config. # Optional. The retrieval config for the Rag query.
                      "filter": { # Config for filters. # Optional. Config for filters.
                        "metadataFilter": "A String", # Optional. String for metadata filtering.
                        "vectorDistanceThreshold": 3.14, # Optional. Only returns contexts with vector distance smaller than the threshold.
                        "vectorSimilarityThreshold": 3.14, # Optional. Only returns contexts with vector similarity larger than the threshold.
                      },
                      "ranking": { # Config for ranking and reranking. # Optional. Config for ranking and reranking.
                        "llmRanker": { # Config for LlmRanker. # Optional. Config for LlmRanker.
                          "modelName": "A String", # Optional. The model name used for ranking. See [Supported models](https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/inference#supported-models).
                        },
                        "rankService": { # Config for Rank Service. # Optional. Config for Rank Service.
                          "modelName": "A String", # Optional. The model name of the rank service. Format: `semantic-ranker-512@latest`
                        },
                      },
                      "topK": 42, # Optional. The number of contexts to retrieve.
                    },
                    "similarityTopK": 42, # Optional. Number of top k results to return from the selected corpora.
                    "vectorDistanceThreshold": 3.14, # Optional. Only return results with vector distance smaller than the threshold.
                  },
                },
                "urlContext": { # Tool to support URL context. # Optional. Tool to support URL context retrieval.
                },
              },
            ],
          },
          "toolsText": "A String", # A JSON string containing a list of tools available to an agent with info such as name, description, parameters and required parameters.
          "turns": [ # Optional. The chronological list of conversation turns. Each turn represents a logical execution cycle (e.g., User Input -> Agent Response).
            { # Represents a single turn/invocation in the conversation.
              "events": [ # Optional. The list of events that occurred during this turn.
                { # A single event in the execution trace.
                  "activeTools": [ # Optional. The list of tools that were active/available to the agent at the time of this event. This overrides the `AgentConfig.tools` if set.
                    { # 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).
                      "codeExecution": { # 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. # Optional. CodeExecution tool type. Enables the model to execute code as part of generation.
                      },
                      "computerUse": { # Tool to support computer use. # Optional. Tool to support the model interacting directly with the computer. If enabled, it automatically populates computer-use specific Function Declarations.
                        "environment": "A String", # Required. The environment being operated.
                        "excludedPredefinedFunctions": [ # Optional. By default, [predefined functions](https://cloud.google.com/vertex-ai/generative-ai/docs/computer-use#supported-actions) are included in the final model call. Some of them can be explicitly excluded from being automatically included. This can serve two purposes: 1. Using a more restricted / different action space. 2. Improving the definitions / instructions of predefined functions.
                          "A String",
                        ],
                      },
                      "enterpriseWebSearch": { # Tool to search public web data, powered by Vertex AI Search and Sec4 compliance. # Optional. Tool to support searching public web data, powered by Vertex AI Search and Sec4 compliance.
                        "blockingConfidence": "A String", # Optional. Sites with confidence level chosen & above this value will be blocked from the search results.
                        "excludeDomains": [ # Optional. List of domains to be excluded from the search results. The default limit is 2000 domains.
                          "A String",
                        ],
                      },
                      "functionDeclarations": [ # 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.
                        { # 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.
                          "behavior": "A String", # Optional. Specifies the function Behavior. If not specified, the system keeps the current function call behavior. This field is currently only supported by the BidiGenerateContent method.
                          "description": "A String", # Optional. Description and purpose of the function. Model uses it to decide how and whether to call the function.
                          "name": "A String", # 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, colons and dashes, with a maximum length of 128.
                          "parameters": { # Defines the schema of input and output data. This is a subset of the [OpenAPI 3.0 Schema Object](https://spec.openapis.org/oas/v3.0.3#schema-object). # Optional. Describes the parameters to this function in JSON Schema Object format. Reflects the Open API 3.03 Parameter Object. string Key: the name of the parameter. Parameter names are case sensitive. Schema Value: the Schema defining the type used for the parameter. For function with no parameters, this can be left unset. Parameter names must start with a letter or an underscore and must only contain chars a-z, A-Z, 0-9, or underscores with a maximum length of 64. Example with 1 required and 1 optional parameter: type: OBJECT properties: param1: type: STRING param2: type: INTEGER required: - param1
                            "additionalProperties": "", # Optional. If `type` is `OBJECT`, specifies how to handle properties not defined in `properties`. If it is a boolean `false`, no additional properties are allowed. If it is a schema, additional properties are allowed if they conform to the schema.
                            "anyOf": [ # Optional. The instance must be valid against any (one or more) of the subschemas listed in `any_of`.
                              # Object with schema name: GoogleCloudAiplatformV1Schema
                            ],
                            "default": "", # Optional. Default value to use if the field is not specified.
                            "defs": { # Optional. `defs` provides a map of schema definitions that can be reused by `ref` elsewhere in the schema. Only allowed at root level of the schema.
                              "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                            },
                            "description": "A String", # Optional. Describes the data. The model uses this field to understand the purpose of the schema and how to use it. It is a best practice to provide a clear and descriptive explanation for the schema and its properties here, rather than in the prompt.
                            "enum": [ # Optional. Possible values of the field. This field can be used to restrict a value to a fixed set of values. To mark a field as an enum, set `format` to `enum` and provide the list of possible values in `enum`. For example: 1. To define directions: `{type:STRING, format:enum, enum:["EAST", "NORTH", "SOUTH", "WEST"]}` 2. To define apartment numbers: `{type:INTEGER, format:enum, enum:["101", "201", "301"]}`
                              "A String",
                            ],
                            "example": "", # Optional. Example of an instance of this schema.
                            "format": "A String", # Optional. The format of the data. For `NUMBER` type, format can be `float` or `double`. For `INTEGER` type, format can be `int32` or `int64`. For `STRING` type, format can be `email`, `byte`, `date`, `date-time`, `password`, and other formats to further refine the data type.
                            "items": # Object with schema name: GoogleCloudAiplatformV1Schema # Optional. If type is `ARRAY`, `items` specifies the schema of elements in the array.
                            "maxItems": "A String", # Optional. If type is `ARRAY`, `max_items` specifies the maximum number of items in an array.
                            "maxLength": "A String", # Optional. If type is `STRING`, `max_length` specifies the maximum length of the string.
                            "maxProperties": "A String", # Optional. If type is `OBJECT`, `max_properties` specifies the maximum number of properties that can be provided.
                            "maximum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `maximum` specifies the maximum allowed value.
                            "minItems": "A String", # Optional. If type is `ARRAY`, `min_items` specifies the minimum number of items in an array.
                            "minLength": "A String", # Optional. If type is `STRING`, `min_length` specifies the minimum length of the string.
                            "minProperties": "A String", # Optional. If type is `OBJECT`, `min_properties` specifies the minimum number of properties that can be provided.
                            "minimum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `minimum` specifies the minimum allowed value.
                            "nullable": True or False, # Optional. Indicates if the value of this field can be null.
                            "pattern": "A String", # Optional. If type is `STRING`, `pattern` specifies a regular expression that the string must match.
                            "properties": { # Optional. If type is `OBJECT`, `properties` is a map of property names to schema definitions for each property of the object.
                              "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                            },
                            "propertyOrdering": [ # Optional. Order of properties displayed or used where order matters. This is not a standard field in OpenAPI specification, but can be used to control the order of properties.
                              "A String",
                            ],
                            "ref": "A String", # Optional. Allows referencing another schema definition to use in place of this schema. The value must be a valid reference to a schema in `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
                            "required": [ # Optional. If type is `OBJECT`, `required` lists the names of properties that must be present.
                              "A String",
                            ],
                            "title": "A String", # Optional. Title for the schema.
                            "type": "A String", # Optional. Data type of the schema field.
                          },
                          "parametersJsonSchema": "", # 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`.
                          "response": { # Defines the schema of input and output data. This is a subset of the [OpenAPI 3.0 Schema Object](https://spec.openapis.org/oas/v3.0.3#schema-object). # Optional. Describes the output from this function in JSON Schema format. Reflects the Open API 3.03 Response Object. The Schema defines the type used for the response value of the function.
                            "additionalProperties": "", # Optional. If `type` is `OBJECT`, specifies how to handle properties not defined in `properties`. If it is a boolean `false`, no additional properties are allowed. If it is a schema, additional properties are allowed if they conform to the schema.
                            "anyOf": [ # Optional. The instance must be valid against any (one or more) of the subschemas listed in `any_of`.
                              # Object with schema name: GoogleCloudAiplatformV1Schema
                            ],
                            "default": "", # Optional. Default value to use if the field is not specified.
                            "defs": { # Optional. `defs` provides a map of schema definitions that can be reused by `ref` elsewhere in the schema. Only allowed at root level of the schema.
                              "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                            },
                            "description": "A String", # Optional. Describes the data. The model uses this field to understand the purpose of the schema and how to use it. It is a best practice to provide a clear and descriptive explanation for the schema and its properties here, rather than in the prompt.
                            "enum": [ # Optional. Possible values of the field. This field can be used to restrict a value to a fixed set of values. To mark a field as an enum, set `format` to `enum` and provide the list of possible values in `enum`. For example: 1. To define directions: `{type:STRING, format:enum, enum:["EAST", "NORTH", "SOUTH", "WEST"]}` 2. To define apartment numbers: `{type:INTEGER, format:enum, enum:["101", "201", "301"]}`
                              "A String",
                            ],
                            "example": "", # Optional. Example of an instance of this schema.
                            "format": "A String", # Optional. The format of the data. For `NUMBER` type, format can be `float` or `double`. For `INTEGER` type, format can be `int32` or `int64`. For `STRING` type, format can be `email`, `byte`, `date`, `date-time`, `password`, and other formats to further refine the data type.
                            "items": # Object with schema name: GoogleCloudAiplatformV1Schema # Optional. If type is `ARRAY`, `items` specifies the schema of elements in the array.
                            "maxItems": "A String", # Optional. If type is `ARRAY`, `max_items` specifies the maximum number of items in an array.
                            "maxLength": "A String", # Optional. If type is `STRING`, `max_length` specifies the maximum length of the string.
                            "maxProperties": "A String", # Optional. If type is `OBJECT`, `max_properties` specifies the maximum number of properties that can be provided.
                            "maximum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `maximum` specifies the maximum allowed value.
                            "minItems": "A String", # Optional. If type is `ARRAY`, `min_items` specifies the minimum number of items in an array.
                            "minLength": "A String", # Optional. If type is `STRING`, `min_length` specifies the minimum length of the string.
                            "minProperties": "A String", # Optional. If type is `OBJECT`, `min_properties` specifies the minimum number of properties that can be provided.
                            "minimum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `minimum` specifies the minimum allowed value.
                            "nullable": True or False, # Optional. Indicates if the value of this field can be null.
                            "pattern": "A String", # Optional. If type is `STRING`, `pattern` specifies a regular expression that the string must match.
                            "properties": { # Optional. If type is `OBJECT`, `properties` is a map of property names to schema definitions for each property of the object.
                              "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                            },
                            "propertyOrdering": [ # Optional. Order of properties displayed or used where order matters. This is not a standard field in OpenAPI specification, but can be used to control the order of properties.
                              "A String",
                            ],
                            "ref": "A String", # Optional. Allows referencing another schema definition to use in place of this schema. The value must be a valid reference to a schema in `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
                            "required": [ # Optional. If type is `OBJECT`, `required` lists the names of properties that must be present.
                              "A String",
                            ],
                            "title": "A String", # Optional. Title for the schema.
                            "type": "A String", # Optional. Data type of the schema field.
                          },
                          "responseJsonSchema": "", # 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`.
                        },
                      ],
                      "googleMaps": { # Tool to retrieve public maps data for grounding, powered by Google. # Optional. GoogleMaps tool type. Tool to support Google Maps in Model.
                        "enableWidget": True or False, # Optional. If true, include the widget context token in the response.
                      },
                      "googleSearch": { # GoogleSearch tool type. Tool to support Google Search in Model. Powered by Google. # Optional. GoogleSearch tool type. Tool to support Google Search in Model. Powered by Google.
                        "blockingConfidence": "A String", # Optional. Sites with confidence level chosen & above this value will be blocked from the search results.
                        "excludeDomains": [ # Optional. List of domains to be excluded from the search results. The default limit is 2000 domains. Example: ["amazon.com", "facebook.com"].
                          "A String",
                        ],
                        "searchTypes": { # Different types of search that can be enabled on the GoogleSearch tool. # Optional. The set of search types to enable. If not set, web search is enabled by default.
                          "imageSearch": { # Image search for grounding and related configurations. # Optional. Setting this field enables image search. Image bytes are returned.
                          },
                          "webSearch": { # Standard web search for grounding and related configurations. Only text results are returned. # Optional. Setting this field enables web search. Only text results are returned.
                          },
                        },
                      },
                      "googleSearchRetrieval": { # Tool to retrieve public web data for grounding, powered by Google. # Optional. Specialized retrieval tool that is powered by Google Search.
                        "dynamicRetrievalConfig": { # Describes the options to customize dynamic retrieval. # Specifies the dynamic retrieval configuration for the given source.
                          "dynamicThreshold": 3.14, # Optional. The threshold to be used in dynamic retrieval. If not set, a system default value is used.
                          "mode": "A String", # The mode of the predictor to be used in dynamic retrieval.
                        },
                      },
                      "parallelAiSearch": { # ParallelAiSearch tool type. A tool that uses the Parallel.ai search engine for grounding. # Optional. If specified, Vertex AI will use Parallel.ai to search for information to answer user queries. The search results will be grounded on Parallel.ai and presented to the model for response generation
                        "apiKey": "A String", # Optional. The API key for ParallelAiSearch. If an API key is not provided, the system will attempt to verify access by checking for an active Parallel.ai subscription through the Google Cloud Marketplace. See https://docs.parallel.ai/search/search-quickstart for more details.
                        "customConfigs": { # Optional. Custom configs for ParallelAiSearch. This field can be used to pass any parameter from the Parallel.ai Search API. See the Parallel.ai documentation for the full list of available parameters and their usage: https://docs.parallel.ai/api-reference/search-beta/search Currently only `source_policy`, `excerpts`, `max_results`, `mode`, `fetch_policy` can be set via this field. For example: { "source_policy": { "include_domains": ["google.com", "wikipedia.org"], "exclude_domains": ["example.com"] }, "fetch_policy": { "max_age_seconds": 3600 } }
                          "a_key": "", # Properties of the object.
                        },
                      },
                      "retrieval": { # Defines a retrieval tool that model can call to access external knowledge. # Optional. Retrieval tool type. System will always execute the provided retrieval tool(s) to get external knowledge to answer the prompt. Retrieval results are presented to the model for generation.
                        "disableAttribution": True or False, # Optional. Deprecated. This option is no longer supported.
                        "externalApi": { # 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. # Use data source powered by external API for grounding.
                          "apiAuth": { # The generic reusable api auth config. Deprecated. Please use AuthConfig (google/cloud/aiplatform/master/auth.proto) instead. # The authentication config to access the API. Deprecated. Please use auth_config instead.
                            "apiKeyConfig": { # The API secret. # The API secret.
                              "apiKeySecretVersion": "A String", # Required. The SecretManager secret version resource name storing API key. e.g. projects/{project}/secrets/{secret}/versions/{version}
                              "apiKeyString": "A String", # The API key string. Either this or `api_key_secret_version` must be set.
                            },
                          },
                          "apiSpec": "A String", # The API spec that the external API implements.
                          "authConfig": { # Auth configuration to run the extension. # The authentication config to access the API.
                            "apiKeyConfig": { # Config for authentication with API key. # Config for API key auth.
                              "apiKeySecret": "A String", # 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.
                              "apiKeyString": "A String", # Optional. The API key to be used in the request directly.
                              "httpElementLocation": "A String", # Optional. The location of the API key.
                              "name": "A String", # 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.
                            },
                            "authType": "A String", # Type of auth scheme.
                            "googleServiceAccountConfig": { # Config for Google Service Account Authentication. # Config for Google Service Account auth.
                              "serviceAccount": "A String", # 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.
                            },
                            "httpBasicAuthConfig": { # Config for HTTP Basic Authentication. # Config for HTTP Basic auth.
                              "credentialSecret": "A String", # 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.
                            },
                            "oauthConfig": { # Config for user oauth. # Config for user oauth.
                              "accessToken": "A String", # Access token for extension endpoint. Only used to propagate token from [[ExecuteExtensionRequest.runtime_auth_config]] at request time.
                              "serviceAccount": "A String", # 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.
                            },
                            "oidcConfig": { # Config for user OIDC auth. # Config for user OIDC auth.
                              "idToken": "A String", # OpenID Connect formatted ID token for extension endpoint. Only used to propagate token from [[ExecuteExtensionRequest.runtime_auth_config]] at request time.
                              "serviceAccount": "A String", # 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).
                            },
                          },
                          "elasticSearchParams": { # The search parameters to use for the ELASTIC_SEARCH spec. # Parameters for the elastic search API.
                            "index": "A String", # The ElasticSearch index to use.
                            "numHits": 42, # Optional. Number of hits (chunks) to request. When specified, it is passed to Elasticsearch as the `num_hits` param.
                            "searchTemplate": "A String", # The ElasticSearch search template to use.
                          },
                          "endpoint": "A String", # 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
                          "simpleSearchParams": { # The search parameters to use for SIMPLE_SEARCH spec. # Parameters for the simple search API.
                          },
                        },
                        "vertexAiSearch": { # Retrieve from Vertex AI Search datastore or engine for grounding. datastore and engine are mutually exclusive. See https://cloud.google.com/products/agent-builder # Set to use data source powered by Vertex AI Search.
                          "dataStoreSpecs": [ # 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.
                            { # 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
                              "dataStore": "A String", # Full resource name of DataStore, such as Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}`
                              "filter": "A String", # 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)
                            },
                          ],
                          "datastore": "A String", # Optional. Fully-qualified Vertex AI Search data store resource ID. Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}`
                          "engine": "A String", # Optional. Fully-qualified Vertex AI Search engine resource ID. Format: `projects/{project}/locations/{location}/collections/{collection}/engines/{engine}`
                          "filter": "A String", # Optional. Filter strings to be passed to the search API.
                          "maxResults": 42, # Optional. Number of search results to return per query. The default value is 10. The maximumm allowed value is 10.
                        },
                        "vertexRagStore": { # Retrieve from Vertex RAG Store for grounding. # Set to use data source powered by Vertex RAG store. User data is uploaded via the VertexRagDataService.
                          "ragResources": [ # 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.
                            { # The definition of the Rag resource.
                              "ragCorpus": "A String", # Optional. RagCorpora resource name. Format: `projects/{project}/locations/{location}/ragCorpora/{rag_corpus}`
                              "ragFileIds": [ # Optional. rag_file_id. The files should be in the same rag_corpus set in rag_corpus field.
                                "A String",
                              ],
                            },
                          ],
                          "ragRetrievalConfig": { # Specifies the context retrieval config. # Optional. The retrieval config for the Rag query.
                            "filter": { # Config for filters. # Optional. Config for filters.
                              "metadataFilter": "A String", # Optional. String for metadata filtering.
                              "vectorDistanceThreshold": 3.14, # Optional. Only returns contexts with vector distance smaller than the threshold.
                              "vectorSimilarityThreshold": 3.14, # Optional. Only returns contexts with vector similarity larger than the threshold.
                            },
                            "ranking": { # Config for ranking and reranking. # Optional. Config for ranking and reranking.
                              "llmRanker": { # Config for LlmRanker. # Optional. Config for LlmRanker.
                                "modelName": "A String", # Optional. The model name used for ranking. See [Supported models](https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/inference#supported-models).
                              },
                              "rankService": { # Config for Rank Service. # Optional. Config for Rank Service.
                                "modelName": "A String", # Optional. The model name of the rank service. Format: `semantic-ranker-512@latest`
                              },
                            },
                            "topK": 42, # Optional. The number of contexts to retrieve.
                          },
                          "similarityTopK": 42, # Optional. Number of top k results to return from the selected corpora.
                          "vectorDistanceThreshold": 3.14, # Optional. Only return results with vector distance smaller than the threshold.
                        },
                      },
                      "urlContext": { # Tool to support URL context. # Optional. Tool to support URL context retrieval.
                      },
                    },
                  ],
                  "author": "A String", # Required. The ID of the agent or entity that generated this event.
                  "content": { # The structured data content of a message. A Content message contains a `role` field, which indicates the producer of the content, and a `parts` field, which contains the multi-part data of the message. # Required. The content of the event (e.g., text response, tool call, tool response).
                    "parts": [ # Required. A list of Part objects that make up a single message. Parts of a message can have different MIME types. A Content message must have at least one Part.
                      { # 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`. For media types that are not text, `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.
                        "codeExecutionResult": { # Result of executing the ExecutableCode. Generated only when the `CodeExecution` tool is used. # Optional. The result of executing the ExecutableCode.
                          "outcome": "A String", # Required. Outcome of the code execution.
                          "output": "A String", # Optional. Contains stdout when code execution is successful, stderr or other description otherwise.
                        },
                        "executableCode": { # 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. # Optional. Code generated by the model that is intended to be executed.
                          "code": "A String", # Required. The code to be executed.
                          "language": "A String", # Required. Programming language of the `code`.
                        },
                        "fileData": { # URI-based data. A FileData message contains a URI pointing to data of a specific media type. It is used to represent images, audio, and video stored in Google Cloud Storage. # Optional. The URI-based data of the part. This can be used to include files from Google Cloud Storage.
                          "displayName": "A String", # Optional. The display name of the file. Used to provide a label or filename to distinguish files. This field is only returned in `PromptMessage` for prompt management. It is used in the Gemini calls only when server side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                          "fileUri": "A String", # Required. The URI of the file in Google Cloud Storage.
                          "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                        },
                        "functionCall": { # 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. # Optional. A predicted function call returned from the model. This contains the name of the function to call and the arguments to pass to the function.
                          "args": { # Optional. The function parameters and values in JSON object format. See FunctionDeclaration.parameters for parameter details.
                            "a_key": "", # Properties of the object.
                          },
                          "name": "A String", # Optional. The name of the function to call. Matches FunctionDeclaration.name.
                          "partialArgs": [ # Optional. The partial argument value of the function call. If provided, represents the arguments/fields that are streamed incrementally.
                            { # Partial argument value of the function call.
                              "boolValue": True or False, # Optional. Represents a boolean value.
                              "jsonPath": "A String", # Required. A JSON Path (RFC 9535) to the argument being streamed. https://datatracker.ietf.org/doc/html/rfc9535. e.g. "$.foo.bar[0].data".
                              "nullValue": "A String", # Optional. Represents a null value.
                              "numberValue": 3.14, # Optional. Represents a double value.
                              "stringValue": "A String", # Optional. Represents a string value.
                              "willContinue": True or False, # Optional. Whether this is not the last part of the same json_path. If true, another PartialArg message for the current json_path is expected to follow.
                            },
                          ],
                          "willContinue": True or False, # Optional. Whether this is the last part of the FunctionCall. If true, another partial message for the current FunctionCall is expected to follow.
                        },
                        "functionResponse": { # 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. # Optional. The result of a function call. This is used to provide the model with the result of a function call that it predicted.
                          "name": "A String", # Required. The name of the function to call. Matches FunctionDeclaration.name and FunctionCall.name.
                          "parts": [ # Optional. Ordered `Parts` that constitute a function response. Parts may have different IANA MIME types.
                            { # A datatype containing media that is part of a `FunctionResponse` message. A `FunctionResponsePart` consists of data which has an associated datatype. A `FunctionResponsePart` can only contain one of the accepted types in `FunctionResponsePart.data`. A `FunctionResponsePart` must have a fixed IANA MIME type identifying the type and subtype of the media if the `inline_data` field is filled with raw bytes.
                              "fileData": { # URI based data for function response. # URI based data.
                                "displayName": "A String", # 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.
                                "fileUri": "A String", # Required. URI.
                                "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                              },
                              "inlineData": { # Raw media bytes for function response. Text should not be sent as raw bytes, use the 'text' field. # Inline media bytes.
                                "data": "A String", # Required. Raw bytes.
                                "displayName": "A String", # 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.
                                "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                              },
                            },
                          ],
                          "response": { # 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.
                            "a_key": "", # Properties of the object.
                          },
                          "scheduling": "A String", # Optional. Specifies how the response should be scheduled in the conversation. Only applicable to NON_BLOCKING function calls, is ignored otherwise. Defaults to WHEN_IDLE.
                        },
                        "inlineData": { # A content blob. A Blob contains data of a specific media type. It is used to represent images, audio, and video. # Optional. The inline data content of the part. This can be used to include images, audio, or video in a request.
                          "data": "A String", # Required. The raw bytes of the data.
                          "displayName": "A String", # Optional. The 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 used in the Gemini calls only when server-side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                          "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                        },
                        "mediaResolution": { # per part media resolution. Media resolution for the input media. # per part media resolution. Media resolution for the input media.
                          "level": "A String", # The tokenization quality used for given media.
                        },
                        "text": "A String", # Optional. The text content of the part. When sent from the VSCode Gemini Code Assist extension, references to @mentioned items will be converted to markdown boldface text. For example `@my-repo` will be converted to and sent as `**my-repo**` by the IDE agent.
                        "thought": True or False, # Optional. Indicates whether the `part` represents the model's thought process or reasoning.
                        "thoughtSignature": "A String", # Optional. An opaque signature for the thought so it can be reused in subsequent requests.
                        "videoMetadata": { # Provides metadata for a video, including the start and end offsets for clipping and the frame rate. # Optional. Video metadata. The metadata should only be specified while the video data is presented in inline_data or file_data.
                          "endOffset": "A String", # Optional. The end offset of the video.
                          "fps": 3.14, # Optional. The frame rate of the video sent to the model. If not specified, the default value is 1.0. The valid range is (0.0, 24.0].
                          "startOffset": "A String", # Optional. The start offset of the video.
                        },
                      },
                    ],
                    "role": "A String", # Optional. The producer of the content. Must be either 'user' or 'model'. If not set, the service will default to 'user'.
                  },
                  "eventTime": "A String", # Optional. The timestamp when the event occurred.
                  "stateDelta": { # Optional. The change in the session state caused by this event. This is a key-value map of fields that were modified or added by the event.
                    "a_key": "", # Properties of the object.
                  },
                },
              ],
              "turnId": "A String", # Optional. A unique identifier for the turn. Useful for referencing specific turns across systems.
              "turnIndex": 42, # Required. The 0-based index of the turn in the conversation sequence.
            },
          ],
        },
        "otherData": { # Instance data specified as a map. # Optional. Other data used to populate placeholders based on their key. If a key conflicts with a field in the EvaluationInstance (e.g. `prompt`), the value of the field will take precedence over the value in other_data.
          "mapInstance": { # Optional. Map of instance data.
            "a_key": { # Instance data used to populate placeholders in a metric prompt template.
              "contents": { # List of standard Content messages from Gemini API. # List of Gemini content data.
                "contents": [ # Optional. Repeated contents.
                  { # The structured data content of a message. A Content message contains a `role` field, which indicates the producer of the content, and a `parts` field, which contains the multi-part data of the message.
                    "parts": [ # Required. A list of Part objects that make up a single message. Parts of a message can have different MIME types. A Content message must have at least one Part.
                      { # 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`. For media types that are not text, `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.
                        "codeExecutionResult": { # Result of executing the ExecutableCode. Generated only when the `CodeExecution` tool is used. # Optional. The result of executing the ExecutableCode.
                          "outcome": "A String", # Required. Outcome of the code execution.
                          "output": "A String", # Optional. Contains stdout when code execution is successful, stderr or other description otherwise.
                        },
                        "executableCode": { # 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. # Optional. Code generated by the model that is intended to be executed.
                          "code": "A String", # Required. The code to be executed.
                          "language": "A String", # Required. Programming language of the `code`.
                        },
                        "fileData": { # URI-based data. A FileData message contains a URI pointing to data of a specific media type. It is used to represent images, audio, and video stored in Google Cloud Storage. # Optional. The URI-based data of the part. This can be used to include files from Google Cloud Storage.
                          "displayName": "A String", # Optional. The display name of the file. Used to provide a label or filename to distinguish files. This field is only returned in `PromptMessage` for prompt management. It is used in the Gemini calls only when server side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                          "fileUri": "A String", # Required. The URI of the file in Google Cloud Storage.
                          "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                        },
                        "functionCall": { # 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. # Optional. A predicted function call returned from the model. This contains the name of the function to call and the arguments to pass to the function.
                          "args": { # Optional. The function parameters and values in JSON object format. See FunctionDeclaration.parameters for parameter details.
                            "a_key": "", # Properties of the object.
                          },
                          "name": "A String", # Optional. The name of the function to call. Matches FunctionDeclaration.name.
                          "partialArgs": [ # Optional. The partial argument value of the function call. If provided, represents the arguments/fields that are streamed incrementally.
                            { # Partial argument value of the function call.
                              "boolValue": True or False, # Optional. Represents a boolean value.
                              "jsonPath": "A String", # Required. A JSON Path (RFC 9535) to the argument being streamed. https://datatracker.ietf.org/doc/html/rfc9535. e.g. "$.foo.bar[0].data".
                              "nullValue": "A String", # Optional. Represents a null value.
                              "numberValue": 3.14, # Optional. Represents a double value.
                              "stringValue": "A String", # Optional. Represents a string value.
                              "willContinue": True or False, # Optional. Whether this is not the last part of the same json_path. If true, another PartialArg message for the current json_path is expected to follow.
                            },
                          ],
                          "willContinue": True or False, # Optional. Whether this is the last part of the FunctionCall. If true, another partial message for the current FunctionCall is expected to follow.
                        },
                        "functionResponse": { # 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. # Optional. The result of a function call. This is used to provide the model with the result of a function call that it predicted.
                          "name": "A String", # Required. The name of the function to call. Matches FunctionDeclaration.name and FunctionCall.name.
                          "parts": [ # Optional. Ordered `Parts` that constitute a function response. Parts may have different IANA MIME types.
                            { # A datatype containing media that is part of a `FunctionResponse` message. A `FunctionResponsePart` consists of data which has an associated datatype. A `FunctionResponsePart` can only contain one of the accepted types in `FunctionResponsePart.data`. A `FunctionResponsePart` must have a fixed IANA MIME type identifying the type and subtype of the media if the `inline_data` field is filled with raw bytes.
                              "fileData": { # URI based data for function response. # URI based data.
                                "displayName": "A String", # 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.
                                "fileUri": "A String", # Required. URI.
                                "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                              },
                              "inlineData": { # Raw media bytes for function response. Text should not be sent as raw bytes, use the 'text' field. # Inline media bytes.
                                "data": "A String", # Required. Raw bytes.
                                "displayName": "A String", # 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.
                                "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                              },
                            },
                          ],
                          "response": { # 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.
                            "a_key": "", # Properties of the object.
                          },
                          "scheduling": "A String", # Optional. Specifies how the response should be scheduled in the conversation. Only applicable to NON_BLOCKING function calls, is ignored otherwise. Defaults to WHEN_IDLE.
                        },
                        "inlineData": { # A content blob. A Blob contains data of a specific media type. It is used to represent images, audio, and video. # Optional. The inline data content of the part. This can be used to include images, audio, or video in a request.
                          "data": "A String", # Required. The raw bytes of the data.
                          "displayName": "A String", # Optional. The 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 used in the Gemini calls only when server-side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                          "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                        },
                        "mediaResolution": { # per part media resolution. Media resolution for the input media. # per part media resolution. Media resolution for the input media.
                          "level": "A String", # The tokenization quality used for given media.
                        },
                        "text": "A String", # Optional. The text content of the part. When sent from the VSCode Gemini Code Assist extension, references to @mentioned items will be converted to markdown boldface text. For example `@my-repo` will be converted to and sent as `**my-repo**` by the IDE agent.
                        "thought": True or False, # Optional. Indicates whether the `part` represents the model's thought process or reasoning.
                        "thoughtSignature": "A String", # Optional. An opaque signature for the thought so it can be reused in subsequent requests.
                        "videoMetadata": { # Provides metadata for a video, including the start and end offsets for clipping and the frame rate. # Optional. Video metadata. The metadata should only be specified while the video data is presented in inline_data or file_data.
                          "endOffset": "A String", # Optional. The end offset of the video.
                          "fps": 3.14, # Optional. The frame rate of the video sent to the model. If not specified, the default value is 1.0. The valid range is (0.0, 24.0].
                          "startOffset": "A String", # Optional. The start offset of the video.
                        },
                      },
                    ],
                    "role": "A String", # Optional. The producer of the content. Must be either 'user' or 'model'. If not set, the service will default to 'user'.
                  },
                ],
              },
              "text": "A String", # Text data.
            },
          },
        },
        "prompt": { # Instance data used to populate placeholders in a metric prompt template. # Optional. Data used to populate placeholder `prompt` in a metric prompt template.
          "contents": { # List of standard Content messages from Gemini API. # List of Gemini content data.
            "contents": [ # Optional. Repeated contents.
              { # The structured data content of a message. A Content message contains a `role` field, which indicates the producer of the content, and a `parts` field, which contains the multi-part data of the message.
                "parts": [ # Required. A list of Part objects that make up a single message. Parts of a message can have different MIME types. A Content message must have at least one Part.
                  { # 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`. For media types that are not text, `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.
                    "codeExecutionResult": { # Result of executing the ExecutableCode. Generated only when the `CodeExecution` tool is used. # Optional. The result of executing the ExecutableCode.
                      "outcome": "A String", # Required. Outcome of the code execution.
                      "output": "A String", # Optional. Contains stdout when code execution is successful, stderr or other description otherwise.
                    },
                    "executableCode": { # 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. # Optional. Code generated by the model that is intended to be executed.
                      "code": "A String", # Required. The code to be executed.
                      "language": "A String", # Required. Programming language of the `code`.
                    },
                    "fileData": { # URI-based data. A FileData message contains a URI pointing to data of a specific media type. It is used to represent images, audio, and video stored in Google Cloud Storage. # Optional. The URI-based data of the part. This can be used to include files from Google Cloud Storage.
                      "displayName": "A String", # Optional. The display name of the file. Used to provide a label or filename to distinguish files. This field is only returned in `PromptMessage` for prompt management. It is used in the Gemini calls only when server side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                      "fileUri": "A String", # Required. The URI of the file in Google Cloud Storage.
                      "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                    },
                    "functionCall": { # 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. # Optional. A predicted function call returned from the model. This contains the name of the function to call and the arguments to pass to the function.
                      "args": { # Optional. The function parameters and values in JSON object format. See FunctionDeclaration.parameters for parameter details.
                        "a_key": "", # Properties of the object.
                      },
                      "name": "A String", # Optional. The name of the function to call. Matches FunctionDeclaration.name.
                      "partialArgs": [ # Optional. The partial argument value of the function call. If provided, represents the arguments/fields that are streamed incrementally.
                        { # Partial argument value of the function call.
                          "boolValue": True or False, # Optional. Represents a boolean value.
                          "jsonPath": "A String", # Required. A JSON Path (RFC 9535) to the argument being streamed. https://datatracker.ietf.org/doc/html/rfc9535. e.g. "$.foo.bar[0].data".
                          "nullValue": "A String", # Optional. Represents a null value.
                          "numberValue": 3.14, # Optional. Represents a double value.
                          "stringValue": "A String", # Optional. Represents a string value.
                          "willContinue": True or False, # Optional. Whether this is not the last part of the same json_path. If true, another PartialArg message for the current json_path is expected to follow.
                        },
                      ],
                      "willContinue": True or False, # Optional. Whether this is the last part of the FunctionCall. If true, another partial message for the current FunctionCall is expected to follow.
                    },
                    "functionResponse": { # 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. # Optional. The result of a function call. This is used to provide the model with the result of a function call that it predicted.
                      "name": "A String", # Required. The name of the function to call. Matches FunctionDeclaration.name and FunctionCall.name.
                      "parts": [ # Optional. Ordered `Parts` that constitute a function response. Parts may have different IANA MIME types.
                        { # A datatype containing media that is part of a `FunctionResponse` message. A `FunctionResponsePart` consists of data which has an associated datatype. A `FunctionResponsePart` can only contain one of the accepted types in `FunctionResponsePart.data`. A `FunctionResponsePart` must have a fixed IANA MIME type identifying the type and subtype of the media if the `inline_data` field is filled with raw bytes.
                          "fileData": { # URI based data for function response. # URI based data.
                            "displayName": "A String", # 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.
                            "fileUri": "A String", # Required. URI.
                            "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                          },
                          "inlineData": { # Raw media bytes for function response. Text should not be sent as raw bytes, use the 'text' field. # Inline media bytes.
                            "data": "A String", # Required. Raw bytes.
                            "displayName": "A String", # 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.
                            "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                          },
                        },
                      ],
                      "response": { # 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.
                        "a_key": "", # Properties of the object.
                      },
                      "scheduling": "A String", # Optional. Specifies how the response should be scheduled in the conversation. Only applicable to NON_BLOCKING function calls, is ignored otherwise. Defaults to WHEN_IDLE.
                    },
                    "inlineData": { # A content blob. A Blob contains data of a specific media type. It is used to represent images, audio, and video. # Optional. The inline data content of the part. This can be used to include images, audio, or video in a request.
                      "data": "A String", # Required. The raw bytes of the data.
                      "displayName": "A String", # Optional. The 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 used in the Gemini calls only when server-side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                      "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                    },
                    "mediaResolution": { # per part media resolution. Media resolution for the input media. # per part media resolution. Media resolution for the input media.
                      "level": "A String", # The tokenization quality used for given media.
                    },
                    "text": "A String", # Optional. The text content of the part. When sent from the VSCode Gemini Code Assist extension, references to @mentioned items will be converted to markdown boldface text. For example `@my-repo` will be converted to and sent as `**my-repo**` by the IDE agent.
                    "thought": True or False, # Optional. Indicates whether the `part` represents the model's thought process or reasoning.
                    "thoughtSignature": "A String", # Optional. An opaque signature for the thought so it can be reused in subsequent requests.
                    "videoMetadata": { # Provides metadata for a video, including the start and end offsets for clipping and the frame rate. # Optional. Video metadata. The metadata should only be specified while the video data is presented in inline_data or file_data.
                      "endOffset": "A String", # Optional. The end offset of the video.
                      "fps": 3.14, # Optional. The frame rate of the video sent to the model. If not specified, the default value is 1.0. The valid range is (0.0, 24.0].
                      "startOffset": "A String", # Optional. The start offset of the video.
                    },
                  },
                ],
                "role": "A String", # Optional. The producer of the content. Must be either 'user' or 'model'. If not set, the service will default to 'user'.
              },
            ],
          },
          "text": "A String", # Text data.
        },
        "reference": { # Instance data used to populate placeholders in a metric prompt template. # Optional. Data used to populate placeholder `reference` in a metric prompt template.
          "contents": { # List of standard Content messages from Gemini API. # List of Gemini content data.
            "contents": [ # Optional. Repeated contents.
              { # The structured data content of a message. A Content message contains a `role` field, which indicates the producer of the content, and a `parts` field, which contains the multi-part data of the message.
                "parts": [ # Required. A list of Part objects that make up a single message. Parts of a message can have different MIME types. A Content message must have at least one Part.
                  { # 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`. For media types that are not text, `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.
                    "codeExecutionResult": { # Result of executing the ExecutableCode. Generated only when the `CodeExecution` tool is used. # Optional. The result of executing the ExecutableCode.
                      "outcome": "A String", # Required. Outcome of the code execution.
                      "output": "A String", # Optional. Contains stdout when code execution is successful, stderr or other description otherwise.
                    },
                    "executableCode": { # 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. # Optional. Code generated by the model that is intended to be executed.
                      "code": "A String", # Required. The code to be executed.
                      "language": "A String", # Required. Programming language of the `code`.
                    },
                    "fileData": { # URI-based data. A FileData message contains a URI pointing to data of a specific media type. It is used to represent images, audio, and video stored in Google Cloud Storage. # Optional. The URI-based data of the part. This can be used to include files from Google Cloud Storage.
                      "displayName": "A String", # Optional. The display name of the file. Used to provide a label or filename to distinguish files. This field is only returned in `PromptMessage` for prompt management. It is used in the Gemini calls only when server side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                      "fileUri": "A String", # Required. The URI of the file in Google Cloud Storage.
                      "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                    },
                    "functionCall": { # 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. # Optional. A predicted function call returned from the model. This contains the name of the function to call and the arguments to pass to the function.
                      "args": { # Optional. The function parameters and values in JSON object format. See FunctionDeclaration.parameters for parameter details.
                        "a_key": "", # Properties of the object.
                      },
                      "name": "A String", # Optional. The name of the function to call. Matches FunctionDeclaration.name.
                      "partialArgs": [ # Optional. The partial argument value of the function call. If provided, represents the arguments/fields that are streamed incrementally.
                        { # Partial argument value of the function call.
                          "boolValue": True or False, # Optional. Represents a boolean value.
                          "jsonPath": "A String", # Required. A JSON Path (RFC 9535) to the argument being streamed. https://datatracker.ietf.org/doc/html/rfc9535. e.g. "$.foo.bar[0].data".
                          "nullValue": "A String", # Optional. Represents a null value.
                          "numberValue": 3.14, # Optional. Represents a double value.
                          "stringValue": "A String", # Optional. Represents a string value.
                          "willContinue": True or False, # Optional. Whether this is not the last part of the same json_path. If true, another PartialArg message for the current json_path is expected to follow.
                        },
                      ],
                      "willContinue": True or False, # Optional. Whether this is the last part of the FunctionCall. If true, another partial message for the current FunctionCall is expected to follow.
                    },
                    "functionResponse": { # 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. # Optional. The result of a function call. This is used to provide the model with the result of a function call that it predicted.
                      "name": "A String", # Required. The name of the function to call. Matches FunctionDeclaration.name and FunctionCall.name.
                      "parts": [ # Optional. Ordered `Parts` that constitute a function response. Parts may have different IANA MIME types.
                        { # A datatype containing media that is part of a `FunctionResponse` message. A `FunctionResponsePart` consists of data which has an associated datatype. A `FunctionResponsePart` can only contain one of the accepted types in `FunctionResponsePart.data`. A `FunctionResponsePart` must have a fixed IANA MIME type identifying the type and subtype of the media if the `inline_data` field is filled with raw bytes.
                          "fileData": { # URI based data for function response. # URI based data.
                            "displayName": "A String", # 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.
                            "fileUri": "A String", # Required. URI.
                            "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                          },
                          "inlineData": { # Raw media bytes for function response. Text should not be sent as raw bytes, use the 'text' field. # Inline media bytes.
                            "data": "A String", # Required. Raw bytes.
                            "displayName": "A String", # 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.
                            "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                          },
                        },
                      ],
                      "response": { # 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.
                        "a_key": "", # Properties of the object.
                      },
                      "scheduling": "A String", # Optional. Specifies how the response should be scheduled in the conversation. Only applicable to NON_BLOCKING function calls, is ignored otherwise. Defaults to WHEN_IDLE.
                    },
                    "inlineData": { # A content blob. A Blob contains data of a specific media type. It is used to represent images, audio, and video. # Optional. The inline data content of the part. This can be used to include images, audio, or video in a request.
                      "data": "A String", # Required. The raw bytes of the data.
                      "displayName": "A String", # Optional. The 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 used in the Gemini calls only when server-side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                      "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                    },
                    "mediaResolution": { # per part media resolution. Media resolution for the input media. # per part media resolution. Media resolution for the input media.
                      "level": "A String", # The tokenization quality used for given media.
                    },
                    "text": "A String", # Optional. The text content of the part. When sent from the VSCode Gemini Code Assist extension, references to @mentioned items will be converted to markdown boldface text. For example `@my-repo` will be converted to and sent as `**my-repo**` by the IDE agent.
                    "thought": True or False, # Optional. Indicates whether the `part` represents the model's thought process or reasoning.
                    "thoughtSignature": "A String", # Optional. An opaque signature for the thought so it can be reused in subsequent requests.
                    "videoMetadata": { # Provides metadata for a video, including the start and end offsets for clipping and the frame rate. # Optional. Video metadata. The metadata should only be specified while the video data is presented in inline_data or file_data.
                      "endOffset": "A String", # Optional. The end offset of the video.
                      "fps": 3.14, # Optional. The frame rate of the video sent to the model. If not specified, the default value is 1.0. The valid range is (0.0, 24.0].
                      "startOffset": "A String", # Optional. The start offset of the video.
                    },
                  },
                ],
                "role": "A String", # Optional. The producer of the content. Must be either 'user' or 'model'. If not set, the service will default to 'user'.
              },
            ],
          },
          "text": "A String", # Text data.
        },
        "response": { # Instance data used to populate placeholders in a metric prompt template. # Optional. Data used to populate placeholder `response` in a metric prompt template.
          "contents": { # List of standard Content messages from Gemini API. # List of Gemini content data.
            "contents": [ # Optional. Repeated contents.
              { # The structured data content of a message. A Content message contains a `role` field, which indicates the producer of the content, and a `parts` field, which contains the multi-part data of the message.
                "parts": [ # Required. A list of Part objects that make up a single message. Parts of a message can have different MIME types. A Content message must have at least one Part.
                  { # 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`. For media types that are not text, `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.
                    "codeExecutionResult": { # Result of executing the ExecutableCode. Generated only when the `CodeExecution` tool is used. # Optional. The result of executing the ExecutableCode.
                      "outcome": "A String", # Required. Outcome of the code execution.
                      "output": "A String", # Optional. Contains stdout when code execution is successful, stderr or other description otherwise.
                    },
                    "executableCode": { # 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. # Optional. Code generated by the model that is intended to be executed.
                      "code": "A String", # Required. The code to be executed.
                      "language": "A String", # Required. Programming language of the `code`.
                    },
                    "fileData": { # URI-based data. A FileData message contains a URI pointing to data of a specific media type. It is used to represent images, audio, and video stored in Google Cloud Storage. # Optional. The URI-based data of the part. This can be used to include files from Google Cloud Storage.
                      "displayName": "A String", # Optional. The display name of the file. Used to provide a label or filename to distinguish files. This field is only returned in `PromptMessage` for prompt management. It is used in the Gemini calls only when server side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                      "fileUri": "A String", # Required. The URI of the file in Google Cloud Storage.
                      "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                    },
                    "functionCall": { # 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. # Optional. A predicted function call returned from the model. This contains the name of the function to call and the arguments to pass to the function.
                      "args": { # Optional. The function parameters and values in JSON object format. See FunctionDeclaration.parameters for parameter details.
                        "a_key": "", # Properties of the object.
                      },
                      "name": "A String", # Optional. The name of the function to call. Matches FunctionDeclaration.name.
                      "partialArgs": [ # Optional. The partial argument value of the function call. If provided, represents the arguments/fields that are streamed incrementally.
                        { # Partial argument value of the function call.
                          "boolValue": True or False, # Optional. Represents a boolean value.
                          "jsonPath": "A String", # Required. A JSON Path (RFC 9535) to the argument being streamed. https://datatracker.ietf.org/doc/html/rfc9535. e.g. "$.foo.bar[0].data".
                          "nullValue": "A String", # Optional. Represents a null value.
                          "numberValue": 3.14, # Optional. Represents a double value.
                          "stringValue": "A String", # Optional. Represents a string value.
                          "willContinue": True or False, # Optional. Whether this is not the last part of the same json_path. If true, another PartialArg message for the current json_path is expected to follow.
                        },
                      ],
                      "willContinue": True or False, # Optional. Whether this is the last part of the FunctionCall. If true, another partial message for the current FunctionCall is expected to follow.
                    },
                    "functionResponse": { # 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. # Optional. The result of a function call. This is used to provide the model with the result of a function call that it predicted.
                      "name": "A String", # Required. The name of the function to call. Matches FunctionDeclaration.name and FunctionCall.name.
                      "parts": [ # Optional. Ordered `Parts` that constitute a function response. Parts may have different IANA MIME types.
                        { # A datatype containing media that is part of a `FunctionResponse` message. A `FunctionResponsePart` consists of data which has an associated datatype. A `FunctionResponsePart` can only contain one of the accepted types in `FunctionResponsePart.data`. A `FunctionResponsePart` must have a fixed IANA MIME type identifying the type and subtype of the media if the `inline_data` field is filled with raw bytes.
                          "fileData": { # URI based data for function response. # URI based data.
                            "displayName": "A String", # 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.
                            "fileUri": "A String", # Required. URI.
                            "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                          },
                          "inlineData": { # Raw media bytes for function response. Text should not be sent as raw bytes, use the 'text' field. # Inline media bytes.
                            "data": "A String", # Required. Raw bytes.
                            "displayName": "A String", # 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.
                            "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                          },
                        },
                      ],
                      "response": { # 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.
                        "a_key": "", # Properties of the object.
                      },
                      "scheduling": "A String", # Optional. Specifies how the response should be scheduled in the conversation. Only applicable to NON_BLOCKING function calls, is ignored otherwise. Defaults to WHEN_IDLE.
                    },
                    "inlineData": { # A content blob. A Blob contains data of a specific media type. It is used to represent images, audio, and video. # Optional. The inline data content of the part. This can be used to include images, audio, or video in a request.
                      "data": "A String", # Required. The raw bytes of the data.
                      "displayName": "A String", # Optional. The 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 used in the Gemini calls only when server-side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                      "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                    },
                    "mediaResolution": { # per part media resolution. Media resolution for the input media. # per part media resolution. Media resolution for the input media.
                      "level": "A String", # The tokenization quality used for given media.
                    },
                    "text": "A String", # Optional. The text content of the part. When sent from the VSCode Gemini Code Assist extension, references to @mentioned items will be converted to markdown boldface text. For example `@my-repo` will be converted to and sent as `**my-repo**` by the IDE agent.
                    "thought": True or False, # Optional. Indicates whether the `part` represents the model's thought process or reasoning.
                    "thoughtSignature": "A String", # Optional. An opaque signature for the thought so it can be reused in subsequent requests.
                    "videoMetadata": { # Provides metadata for a video, including the start and end offsets for clipping and the frame rate. # Optional. Video metadata. The metadata should only be specified while the video data is presented in inline_data or file_data.
                      "endOffset": "A String", # Optional. The end offset of the video.
                      "fps": 3.14, # Optional. The frame rate of the video sent to the model. If not specified, the default value is 1.0. The valid range is (0.0, 24.0].
                      "startOffset": "A String", # Optional. The start offset of the video.
                    },
                  },
                ],
                "role": "A String", # Optional. The producer of the content. Must be either 'user' or 'model'. If not set, the service will default to 'user'.
              },
            ],
          },
          "text": "A String", # Text data.
        },
        "rubricGroups": { # 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.
          "a_key": { # A group of rubrics, used for grouping rubrics based on a metric or a version.
            "displayName": "A String", # 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".
            "groupId": "A String", # Unique identifier for the group.
            "rubrics": [ # Rubrics that are part of this group.
              { # Message representing a single testable criterion for evaluation. One input prompt could have multiple rubrics.
                "content": { # Content of the rubric, defining the testable criteria. # Required. The actual testable criteria for the rubric.
                  "property": { # Defines criteria based on a specific property. # Evaluation criteria based on a specific property.
                    "description": "A String", # Description of the property being evaluated. Example: "The model's response is grammatically correct."
                  },
                },
                "importance": "A String", # Optional. The relative importance of this rubric.
                "rubricId": "A String", # Unique identifier for the rubric. This ID is used to refer to this rubric, e.g., in RubricVerdict.
                "type": "A String", # 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".
              },
            ],
          },
        },
      },
      "location": "A String", # Required. The resource name of the Location to evaluate the instances. Format: `projects/{project}/locations/{location}`
      "metricSources": [ # Optional. The metrics (either inline or registered) used for evaluation. Currently, we only support evaluating a single metric. If multiple metrics are provided, only the first one will be evaluated.
        { # The metric source used for evaluation.
          "metric": { # The metric used for running evaluations. # Inline metric config.
            "aggregationMetrics": [ # Optional. The aggregation metrics to use.
              "A String",
            ],
            "bleuSpec": { # 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. # Spec for bleu metric.
              "useEffectiveOrder": True or False, # Optional. Whether to use_effective_order to compute bleu score.
            },
            "computationBasedMetricSpec": { # Specification for a computation based metric. # Spec for a computation based metric.
              "parameters": { # Optional. A map of parameters for the metric, e.g. {"rouge_type": "rougeL"}.
                "a_key": "", # Properties of the object.
              },
              "type": "A String", # Required. The type of the computation based metric.
            },
            "customCodeExecutionSpec": { # Specificies a metric that is populated by evaluating user-defined Python code. # Spec for Custom Code Execution metric.
              "evaluationFunction": "A String", # Required. Python function. Expected user to define the following function, e.g.: def evaluate(instance: dict[str, Any]) -> float: Please include this function signature in the code snippet. Instance is the evaluation instance, any fields populated in the instance are available to the function as instance[field_name]. Example: Example input: ``` instance= EvaluationInstance( response=EvaluationInstance.InstanceData(text="The answer is 4."), reference=EvaluationInstance.InstanceData(text="4") ) ``` Example converted input: ``` { 'response': {'text': 'The answer is 4.'}, 'reference': {'text': '4'} } ``` Example python function: ``` def evaluate(instance: dict[str, Any]) -> float: if instance'response' == instance'reference': return 1.0 return 0.0 ``` CustomCodeExecutionSpec is also supported in Batch Evaluation (EvalDataset RPC) and Tuning Evaluation. Each line in the input jsonl file will be converted to dict[str, Any] and passed to the evaluation function.
            },
            "exactMatchSpec": { # Spec for exact match metric - returns 1 if prediction and reference exactly matches, otherwise 0. # Spec for exact match metric.
            },
            "llmBasedMetricSpec": { # Specification for an LLM based metric. # Spec for an LLM based metric.
              "additionalConfig": { # Optional. Optional additional configuration for the metric.
                "a_key": "", # Properties of the object.
              },
              "judgeAutoraterConfig": { # The configs for autorater. This is applicable to both EvaluateInstances and EvaluateDataset. # Optional. Optional configuration for the judge LLM (Autorater).
                "autoraterModel": "A String", # 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}`
                "flipEnabled": True or False, # 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.
                "generationConfig": { # Configuration for content generation. This message contains all the parameters that control how the model generates content. It allows you to influence the randomness, length, and structure of the output. # Optional. Configuration options for model generation and outputs.
                  "audioTimestamp": True or False, # Optional. If enabled, audio timestamps will be included in the request to the model. This can be useful for synchronizing audio with other modalities in the response.
                  "candidateCount": 42, # Optional. The number of candidate responses to generate. A higher `candidate_count` can provide more options to choose from, but it also consumes more resources. This can be useful for generating a variety of responses and selecting the best one.
                  "enableAffectiveDialog": True or False, # Optional. If enabled, the model will detect emotions and adapt its responses accordingly. For example, if the model detects that the user is frustrated, it may provide a more empathetic response.
                  "frequencyPenalty": 3.14, # Optional. Penalizes tokens based on their frequency in the generated text. A positive value helps to reduce the repetition of words and phrases. Valid values can range from [-2.0, 2.0].
                  "imageConfig": { # Configuration for image generation. This message allows you to control various aspects of image generation, such as the output format, aspect ratio, and whether the model can generate images of people. # Optional. Config for image generation features.
                    "aspectRatio": "A String", # Optional. The desired aspect ratio for the generated images. The following aspect ratios are supported: "1:1" "2:3", "3:2" "3:4", "4:3" "4:5", "5:4" "9:16", "16:9" "21:9"
                    "imageOutputOptions": { # The image output format for generated images. # Optional. The image output format for generated images.
                      "compressionQuality": 42, # Optional. The compression quality of the output image.
                      "mimeType": "A String", # Optional. The image format that the output should be saved as.
                    },
                    "imageSize": "A String", # Optional. Specifies the size of generated images. Supported values are `1K`, `2K`, `4K`. If not specified, the model will use default value `1K`.
                    "personGeneration": "A String", # Optional. Controls whether the model can generate people.
                    "prominentPeople": "A String", # Optional. Controls whether prominent people (celebrities) generation is allowed. If used with personGeneration, personGeneration enum would take precedence. For instance, if ALLOW_NONE is set, all person generation would be blocked. If this field is unspecified, the default behavior is to allow prominent people.
                  },
                  "logprobs": 42, # Optional. The number of top log probabilities to return for each token. This can be used to see which other tokens were considered likely candidates for a given position. A higher value will return more options, but it will also increase the size of the response.
                  "maxOutputTokens": 42, # Optional. The maximum number of tokens to generate in the response. A token is approximately four characters. The default value varies by model. This parameter can be used to control the length of the generated text and prevent overly long responses.
                  "mediaResolution": "A String", # Optional. The token resolution at which input media content is sampled. This is used to control the trade-off between the quality of the response and the number of tokens used to represent the media. A higher resolution allows the model to perceive more detail, which can lead to a more nuanced response, but it will also use more tokens. This does not affect the image dimensions sent to the model.
                  "presencePenalty": 3.14, # Optional. Penalizes tokens that have already appeared in the generated text. A positive value encourages the model to generate more diverse and less repetitive text. Valid values can range from [-2.0, 2.0].
                  "responseJsonSchema": "", # Optional. When this field is set, response_schema must be omitted and response_mime_type must be set to `application/json`.
                  "responseLogprobs": True or False, # Optional. If set to true, the log probabilities of the output tokens are returned. Log probabilities are the logarithm of the probability of a token appearing in the output. A higher log probability means the token is more likely to be generated. This can be useful for analyzing the model's confidence in its own output and for debugging.
                  "responseMimeType": "A String", # Optional. The IANA standard MIME type of the response. The model will generate output that conforms to this MIME type. Supported values include 'text/plain' (default) and 'application/json'. The model needs to be prompted to output the appropriate response type, otherwise the behavior is undefined.
                  "responseModalities": [ # Optional. The modalities of the response. The model will generate a response that includes all the specified modalities. For example, if this is set to `[TEXT, IMAGE]`, the response will include both text and an image.
                    "A String",
                  ],
                  "responseSchema": { # Defines the schema of input and output data. This is a subset of the [OpenAPI 3.0 Schema Object](https://spec.openapis.org/oas/v3.0.3#schema-object). # Optional. Lets you to specify a schema for the model's response, ensuring that the output conforms to a particular structure. This is useful for generating structured data such as JSON. The schema is a subset of the [OpenAPI 3.0 schema object](https://spec.openapis.org/oas/v3.0.3#schema) object. When this field is set, you must also set the `response_mime_type` to `application/json`.
                    "additionalProperties": "", # Optional. If `type` is `OBJECT`, specifies how to handle properties not defined in `properties`. If it is a boolean `false`, no additional properties are allowed. If it is a schema, additional properties are allowed if they conform to the schema.
                    "anyOf": [ # Optional. The instance must be valid against any (one or more) of the subschemas listed in `any_of`.
                      # Object with schema name: GoogleCloudAiplatformV1Schema
                    ],
                    "default": "", # Optional. Default value to use if the field is not specified.
                    "defs": { # Optional. `defs` provides a map of schema definitions that can be reused by `ref` elsewhere in the schema. Only allowed at root level of the schema.
                      "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                    },
                    "description": "A String", # Optional. Describes the data. The model uses this field to understand the purpose of the schema and how to use it. It is a best practice to provide a clear and descriptive explanation for the schema and its properties here, rather than in the prompt.
                    "enum": [ # Optional. Possible values of the field. This field can be used to restrict a value to a fixed set of values. To mark a field as an enum, set `format` to `enum` and provide the list of possible values in `enum`. For example: 1. To define directions: `{type:STRING, format:enum, enum:["EAST", "NORTH", "SOUTH", "WEST"]}` 2. To define apartment numbers: `{type:INTEGER, format:enum, enum:["101", "201", "301"]}`
                      "A String",
                    ],
                    "example": "", # Optional. Example of an instance of this schema.
                    "format": "A String", # Optional. The format of the data. For `NUMBER` type, format can be `float` or `double`. For `INTEGER` type, format can be `int32` or `int64`. For `STRING` type, format can be `email`, `byte`, `date`, `date-time`, `password`, and other formats to further refine the data type.
                    "items": # Object with schema name: GoogleCloudAiplatformV1Schema # Optional. If type is `ARRAY`, `items` specifies the schema of elements in the array.
                    "maxItems": "A String", # Optional. If type is `ARRAY`, `max_items` specifies the maximum number of items in an array.
                    "maxLength": "A String", # Optional. If type is `STRING`, `max_length` specifies the maximum length of the string.
                    "maxProperties": "A String", # Optional. If type is `OBJECT`, `max_properties` specifies the maximum number of properties that can be provided.
                    "maximum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `maximum` specifies the maximum allowed value.
                    "minItems": "A String", # Optional. If type is `ARRAY`, `min_items` specifies the minimum number of items in an array.
                    "minLength": "A String", # Optional. If type is `STRING`, `min_length` specifies the minimum length of the string.
                    "minProperties": "A String", # Optional. If type is `OBJECT`, `min_properties` specifies the minimum number of properties that can be provided.
                    "minimum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `minimum` specifies the minimum allowed value.
                    "nullable": True or False, # Optional. Indicates if the value of this field can be null.
                    "pattern": "A String", # Optional. If type is `STRING`, `pattern` specifies a regular expression that the string must match.
                    "properties": { # Optional. If type is `OBJECT`, `properties` is a map of property names to schema definitions for each property of the object.
                      "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                    },
                    "propertyOrdering": [ # Optional. Order of properties displayed or used where order matters. This is not a standard field in OpenAPI specification, but can be used to control the order of properties.
                      "A String",
                    ],
                    "ref": "A String", # Optional. Allows referencing another schema definition to use in place of this schema. The value must be a valid reference to a schema in `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
                    "required": [ # Optional. If type is `OBJECT`, `required` lists the names of properties that must be present.
                      "A String",
                    ],
                    "title": "A String", # Optional. Title for the schema.
                    "type": "A String", # Optional. Data type of the schema field.
                  },
                  "routingConfig": { # The configuration for routing the request to a specific model. This can be used to control which model is used for the generation, either automatically or by specifying a model name. # Optional. Routing configuration.
                    "autoMode": { # The configuration for automated routing. When automated routing is specified, the routing will be determined by the pretrained routing model and customer provided model routing preference. # In this mode, the model is selected automatically based on the content of the request.
                      "modelRoutingPreference": "A String", # The model routing preference.
                    },
                    "manualMode": { # The configuration for manual routing. When manual routing is specified, the model will be selected based on the model name provided. # In this mode, the model is specified manually.
                      "modelName": "A String", # The name of the model to use. Only public LLM models are accepted.
                    },
                  },
                  "seed": 42, # Optional. A seed for the random number generator. By setting a seed, you can make the model's output mostly deterministic. For a given prompt and parameters (like temperature, top_p, etc.), the model will produce the same response every time. However, it's not a guaranteed absolute deterministic behavior. This is different from parameters like `temperature`, which control the *level* of randomness. `seed` ensures that the "random" choices the model makes are the same on every run, making it essential for testing and ensuring reproducible results.
                  "speechConfig": { # Configuration for speech generation. # Optional. The speech generation config.
                    "languageCode": "A String", # Optional. The language code (ISO 639-1) for the speech synthesis.
                    "multiSpeakerVoiceConfig": { # Configuration for a multi-speaker text-to-speech request. # The configuration for a multi-speaker text-to-speech request. This field is mutually exclusive with `voice_config`.
                      "speakerVoiceConfigs": [ # Required. A list of configurations for the voices of the speakers. Exactly two speaker voice configurations must be provided.
                        { # Configuration for a single speaker in a multi-speaker setup.
                          "speaker": "A String", # Required. The name of the speaker. This should be the same as the speaker name used in the prompt.
                          "voiceConfig": { # Configuration for a voice. # Required. The configuration for the voice of this speaker.
                            "prebuiltVoiceConfig": { # Configuration for a prebuilt voice. # The configuration for a prebuilt voice.
                              "voiceName": "A String", # The name of the prebuilt voice to use.
                            },
                            "replicatedVoiceConfig": { # The configuration for the replicated voice to use. # Optional. The configuration for a replicated voice. This enables users to replicate a voice from an audio sample.
                              "mimeType": "A String", # Optional. The mimetype of the voice sample. The only currently supported value is `audio/wav`. This represents 16-bit signed little-endian wav data, with a 24kHz sampling rate. `mime_type` will default to `audio/wav` if not set.
                              "voiceSampleAudio": "A String", # Optional. The sample of the custom voice.
                            },
                          },
                        },
                      ],
                    },
                    "voiceConfig": { # Configuration for a voice. # The configuration for the voice to use.
                      "prebuiltVoiceConfig": { # Configuration for a prebuilt voice. # The configuration for a prebuilt voice.
                        "voiceName": "A String", # The name of the prebuilt voice to use.
                      },
                      "replicatedVoiceConfig": { # The configuration for the replicated voice to use. # Optional. The configuration for a replicated voice. This enables users to replicate a voice from an audio sample.
                        "mimeType": "A String", # Optional. The mimetype of the voice sample. The only currently supported value is `audio/wav`. This represents 16-bit signed little-endian wav data, with a 24kHz sampling rate. `mime_type` will default to `audio/wav` if not set.
                        "voiceSampleAudio": "A String", # Optional. The sample of the custom voice.
                      },
                    },
                  },
                  "stopSequences": [ # Optional. A list of character sequences that will stop the model from generating further tokens. If a stop sequence is generated, the output will end at that point. This is useful for controlling the length and structure of the output. For example, you can use ["\n", "###"] to stop generation at a new line or a specific marker.
                    "A String",
                  ],
                  "temperature": 3.14, # Optional. Controls the randomness of the output. A higher temperature results in more creative and diverse responses, while a lower temperature makes the output more predictable and focused. The valid range is (0.0, 2.0].
                  "thinkingConfig": { # Configuration for the model's thinking features. "Thinking" is a process where the model breaks down a complex task into smaller, manageable steps. This allows the model to reason about the task, plan its approach, and execute the plan to generate a high-quality response. # Optional. Configuration for thinking features. An error will be returned if this field is set for models that don't support thinking.
                    "includeThoughts": True or False, # Optional. If true, the model will include its thoughts in the response. "Thoughts" are the intermediate steps the model takes to arrive at the final response. They can provide insights into the model's reasoning process and help with debugging. If this is true, thoughts are returned only when available.
                    "thinkingBudget": 42, # Optional. The token budget for the model's thinking process. The model will make a best effort to stay within this budget. This can be used to control the trade-off between response quality and latency.
                    "thinkingLevel": "A String", # Optional. The number of thoughts tokens that the model should generate.
                  },
                  "topK": 3.14, # Optional. Specifies the top-k sampling threshold. The model considers only the top k most probable tokens for the next token. This can be useful for generating more coherent and less random text. For example, a `top_k` of 40 means the model will choose the next word from the 40 most likely words.
                  "topP": 3.14, # Optional. Specifies the nucleus sampling threshold. The model considers only the smallest set of tokens whose cumulative probability is at least `top_p`. This helps generate more diverse and less repetitive responses. For example, a `top_p` of 0.9 means the model considers tokens until the cumulative probability of the tokens to select from reaches 0.9. It's recommended to adjust either temperature or `top_p`, but not both.
                },
                "samplingCount": 42, # 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.
              },
              "metricPromptTemplate": "A String", # Required. Template for the prompt sent to the judge model.
              "predefinedRubricGenerationSpec": { # The spec for a pre-defined metric. # Dynamically generate rubrics using a predefined spec.
                "metricSpecName": "A String", # Required. The name of a pre-defined metric, such as "instruction_following_v1" or "text_quality_v1".
                "metricSpecParameters": { # Optional. The parameters needed to run the pre-defined metric.
                  "a_key": "", # Properties of the object.
                },
              },
              "resultParserConfig": { # Config for parsing LLM responses. It can be used to parse the LLM response to be evaluated, or the LLM response from LLM-based metrics/Autoraters. # Optional. The parser config for the metric result.
                "customCodeParserConfig": { # Configuration for parsing the LLM response using custom code. # Optional. Use custom code to parse the LLM response.
                  "parsingFunction": "A String", # Required. Python function for parsing results. The function should be defined within this string. The function takes a list of strings (LLM responses) and should return either a list of dictionaries (for rubrics) or a single dictionary (for a metric result). Example function signature: def parse(responses: list[str]) -> list[dict[str, Any]] | dict[str, Any]: When parsing rubrics, return a list of dictionaries, where each dictionary represents a Rubric. Example for rubrics: [ { "content": {"property": {"description": "The response is factual."}}, "type": "FACTUALITY", "importance": "HIGH" }, { "content": {"property": {"description": "The response is fluent."}}, "type": "FLUENCY", "importance": "MEDIUM" } ] When parsing critique results, return a dictionary representing a MetricResult. Example for a metric result: { "score": 0.8, "explanation": "The model followed most instructions.", "rubric_verdicts": [...] } ... code for result extraction and aggregation
                },
              },
              "rubricGenerationSpec": { # Specification for how rubrics should be generated. # Dynamically generate rubrics using this specification.
                "modelConfig": { # The configs for autorater. This is applicable to both EvaluateInstances and EvaluateDataset. # Configuration for the model used in rubric generation. Configs including sampling count and base model can be specified here. Flipping is not supported for rubric generation.
                  "autoraterModel": "A String", # 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}`
                  "flipEnabled": True or False, # 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.
                  "generationConfig": { # Configuration for content generation. This message contains all the parameters that control how the model generates content. It allows you to influence the randomness, length, and structure of the output. # Optional. Configuration options for model generation and outputs.
                    "audioTimestamp": True or False, # Optional. If enabled, audio timestamps will be included in the request to the model. This can be useful for synchronizing audio with other modalities in the response.
                    "candidateCount": 42, # Optional. The number of candidate responses to generate. A higher `candidate_count` can provide more options to choose from, but it also consumes more resources. This can be useful for generating a variety of responses and selecting the best one.
                    "enableAffectiveDialog": True or False, # Optional. If enabled, the model will detect emotions and adapt its responses accordingly. For example, if the model detects that the user is frustrated, it may provide a more empathetic response.
                    "frequencyPenalty": 3.14, # Optional. Penalizes tokens based on their frequency in the generated text. A positive value helps to reduce the repetition of words and phrases. Valid values can range from [-2.0, 2.0].
                    "imageConfig": { # Configuration for image generation. This message allows you to control various aspects of image generation, such as the output format, aspect ratio, and whether the model can generate images of people. # Optional. Config for image generation features.
                      "aspectRatio": "A String", # Optional. The desired aspect ratio for the generated images. The following aspect ratios are supported: "1:1" "2:3", "3:2" "3:4", "4:3" "4:5", "5:4" "9:16", "16:9" "21:9"
                      "imageOutputOptions": { # The image output format for generated images. # Optional. The image output format for generated images.
                        "compressionQuality": 42, # Optional. The compression quality of the output image.
                        "mimeType": "A String", # Optional. The image format that the output should be saved as.
                      },
                      "imageSize": "A String", # Optional. Specifies the size of generated images. Supported values are `1K`, `2K`, `4K`. If not specified, the model will use default value `1K`.
                      "personGeneration": "A String", # Optional. Controls whether the model can generate people.
                      "prominentPeople": "A String", # Optional. Controls whether prominent people (celebrities) generation is allowed. If used with personGeneration, personGeneration enum would take precedence. For instance, if ALLOW_NONE is set, all person generation would be blocked. If this field is unspecified, the default behavior is to allow prominent people.
                    },
                    "logprobs": 42, # Optional. The number of top log probabilities to return for each token. This can be used to see which other tokens were considered likely candidates for a given position. A higher value will return more options, but it will also increase the size of the response.
                    "maxOutputTokens": 42, # Optional. The maximum number of tokens to generate in the response. A token is approximately four characters. The default value varies by model. This parameter can be used to control the length of the generated text and prevent overly long responses.
                    "mediaResolution": "A String", # Optional. The token resolution at which input media content is sampled. This is used to control the trade-off between the quality of the response and the number of tokens used to represent the media. A higher resolution allows the model to perceive more detail, which can lead to a more nuanced response, but it will also use more tokens. This does not affect the image dimensions sent to the model.
                    "presencePenalty": 3.14, # Optional. Penalizes tokens that have already appeared in the generated text. A positive value encourages the model to generate more diverse and less repetitive text. Valid values can range from [-2.0, 2.0].
                    "responseJsonSchema": "", # Optional. When this field is set, response_schema must be omitted and response_mime_type must be set to `application/json`.
                    "responseLogprobs": True or False, # Optional. If set to true, the log probabilities of the output tokens are returned. Log probabilities are the logarithm of the probability of a token appearing in the output. A higher log probability means the token is more likely to be generated. This can be useful for analyzing the model's confidence in its own output and for debugging.
                    "responseMimeType": "A String", # Optional. The IANA standard MIME type of the response. The model will generate output that conforms to this MIME type. Supported values include 'text/plain' (default) and 'application/json'. The model needs to be prompted to output the appropriate response type, otherwise the behavior is undefined.
                    "responseModalities": [ # Optional. The modalities of the response. The model will generate a response that includes all the specified modalities. For example, if this is set to `[TEXT, IMAGE]`, the response will include both text and an image.
                      "A String",
                    ],
                    "responseSchema": { # Defines the schema of input and output data. This is a subset of the [OpenAPI 3.0 Schema Object](https://spec.openapis.org/oas/v3.0.3#schema-object). # Optional. Lets you to specify a schema for the model's response, ensuring that the output conforms to a particular structure. This is useful for generating structured data such as JSON. The schema is a subset of the [OpenAPI 3.0 schema object](https://spec.openapis.org/oas/v3.0.3#schema) object. When this field is set, you must also set the `response_mime_type` to `application/json`.
                      "additionalProperties": "", # Optional. If `type` is `OBJECT`, specifies how to handle properties not defined in `properties`. If it is a boolean `false`, no additional properties are allowed. If it is a schema, additional properties are allowed if they conform to the schema.
                      "anyOf": [ # Optional. The instance must be valid against any (one or more) of the subschemas listed in `any_of`.
                        # Object with schema name: GoogleCloudAiplatformV1Schema
                      ],
                      "default": "", # Optional. Default value to use if the field is not specified.
                      "defs": { # Optional. `defs` provides a map of schema definitions that can be reused by `ref` elsewhere in the schema. Only allowed at root level of the schema.
                        "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                      },
                      "description": "A String", # Optional. Describes the data. The model uses this field to understand the purpose of the schema and how to use it. It is a best practice to provide a clear and descriptive explanation for the schema and its properties here, rather than in the prompt.
                      "enum": [ # Optional. Possible values of the field. This field can be used to restrict a value to a fixed set of values. To mark a field as an enum, set `format` to `enum` and provide the list of possible values in `enum`. For example: 1. To define directions: `{type:STRING, format:enum, enum:["EAST", "NORTH", "SOUTH", "WEST"]}` 2. To define apartment numbers: `{type:INTEGER, format:enum, enum:["101", "201", "301"]}`
                        "A String",
                      ],
                      "example": "", # Optional. Example of an instance of this schema.
                      "format": "A String", # Optional. The format of the data. For `NUMBER` type, format can be `float` or `double`. For `INTEGER` type, format can be `int32` or `int64`. For `STRING` type, format can be `email`, `byte`, `date`, `date-time`, `password`, and other formats to further refine the data type.
                      "items": # Object with schema name: GoogleCloudAiplatformV1Schema # Optional. If type is `ARRAY`, `items` specifies the schema of elements in the array.
                      "maxItems": "A String", # Optional. If type is `ARRAY`, `max_items` specifies the maximum number of items in an array.
                      "maxLength": "A String", # Optional. If type is `STRING`, `max_length` specifies the maximum length of the string.
                      "maxProperties": "A String", # Optional. If type is `OBJECT`, `max_properties` specifies the maximum number of properties that can be provided.
                      "maximum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `maximum` specifies the maximum allowed value.
                      "minItems": "A String", # Optional. If type is `ARRAY`, `min_items` specifies the minimum number of items in an array.
                      "minLength": "A String", # Optional. If type is `STRING`, `min_length` specifies the minimum length of the string.
                      "minProperties": "A String", # Optional. If type is `OBJECT`, `min_properties` specifies the minimum number of properties that can be provided.
                      "minimum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `minimum` specifies the minimum allowed value.
                      "nullable": True or False, # Optional. Indicates if the value of this field can be null.
                      "pattern": "A String", # Optional. If type is `STRING`, `pattern` specifies a regular expression that the string must match.
                      "properties": { # Optional. If type is `OBJECT`, `properties` is a map of property names to schema definitions for each property of the object.
                        "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                      },
                      "propertyOrdering": [ # Optional. Order of properties displayed or used where order matters. This is not a standard field in OpenAPI specification, but can be used to control the order of properties.
                        "A String",
                      ],
                      "ref": "A String", # Optional. Allows referencing another schema definition to use in place of this schema. The value must be a valid reference to a schema in `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
                      "required": [ # Optional. If type is `OBJECT`, `required` lists the names of properties that must be present.
                        "A String",
                      ],
                      "title": "A String", # Optional. Title for the schema.
                      "type": "A String", # Optional. Data type of the schema field.
                    },
                    "routingConfig": { # The configuration for routing the request to a specific model. This can be used to control which model is used for the generation, either automatically or by specifying a model name. # Optional. Routing configuration.
                      "autoMode": { # The configuration for automated routing. When automated routing is specified, the routing will be determined by the pretrained routing model and customer provided model routing preference. # In this mode, the model is selected automatically based on the content of the request.
                        "modelRoutingPreference": "A String", # The model routing preference.
                      },
                      "manualMode": { # The configuration for manual routing. When manual routing is specified, the model will be selected based on the model name provided. # In this mode, the model is specified manually.
                        "modelName": "A String", # The name of the model to use. Only public LLM models are accepted.
                      },
                    },
                    "seed": 42, # Optional. A seed for the random number generator. By setting a seed, you can make the model's output mostly deterministic. For a given prompt and parameters (like temperature, top_p, etc.), the model will produce the same response every time. However, it's not a guaranteed absolute deterministic behavior. This is different from parameters like `temperature`, which control the *level* of randomness. `seed` ensures that the "random" choices the model makes are the same on every run, making it essential for testing and ensuring reproducible results.
                    "speechConfig": { # Configuration for speech generation. # Optional. The speech generation config.
                      "languageCode": "A String", # Optional. The language code (ISO 639-1) for the speech synthesis.
                      "multiSpeakerVoiceConfig": { # Configuration for a multi-speaker text-to-speech request. # The configuration for a multi-speaker text-to-speech request. This field is mutually exclusive with `voice_config`.
                        "speakerVoiceConfigs": [ # Required. A list of configurations for the voices of the speakers. Exactly two speaker voice configurations must be provided.
                          { # Configuration for a single speaker in a multi-speaker setup.
                            "speaker": "A String", # Required. The name of the speaker. This should be the same as the speaker name used in the prompt.
                            "voiceConfig": { # Configuration for a voice. # Required. The configuration for the voice of this speaker.
                              "prebuiltVoiceConfig": { # Configuration for a prebuilt voice. # The configuration for a prebuilt voice.
                                "voiceName": "A String", # The name of the prebuilt voice to use.
                              },
                              "replicatedVoiceConfig": { # The configuration for the replicated voice to use. # Optional. The configuration for a replicated voice. This enables users to replicate a voice from an audio sample.
                                "mimeType": "A String", # Optional. The mimetype of the voice sample. The only currently supported value is `audio/wav`. This represents 16-bit signed little-endian wav data, with a 24kHz sampling rate. `mime_type` will default to `audio/wav` if not set.
                                "voiceSampleAudio": "A String", # Optional. The sample of the custom voice.
                              },
                            },
                          },
                        ],
                      },
                      "voiceConfig": { # Configuration for a voice. # The configuration for the voice to use.
                        "prebuiltVoiceConfig": { # Configuration for a prebuilt voice. # The configuration for a prebuilt voice.
                          "voiceName": "A String", # The name of the prebuilt voice to use.
                        },
                        "replicatedVoiceConfig": { # The configuration for the replicated voice to use. # Optional. The configuration for a replicated voice. This enables users to replicate a voice from an audio sample.
                          "mimeType": "A String", # Optional. The mimetype of the voice sample. The only currently supported value is `audio/wav`. This represents 16-bit signed little-endian wav data, with a 24kHz sampling rate. `mime_type` will default to `audio/wav` if not set.
                          "voiceSampleAudio": "A String", # Optional. The sample of the custom voice.
                        },
                      },
                    },
                    "stopSequences": [ # Optional. A list of character sequences that will stop the model from generating further tokens. If a stop sequence is generated, the output will end at that point. This is useful for controlling the length and structure of the output. For example, you can use ["\n", "###"] to stop generation at a new line or a specific marker.
                      "A String",
                    ],
                    "temperature": 3.14, # Optional. Controls the randomness of the output. A higher temperature results in more creative and diverse responses, while a lower temperature makes the output more predictable and focused. The valid range is (0.0, 2.0].
                    "thinkingConfig": { # Configuration for the model's thinking features. "Thinking" is a process where the model breaks down a complex task into smaller, manageable steps. This allows the model to reason about the task, plan its approach, and execute the plan to generate a high-quality response. # Optional. Configuration for thinking features. An error will be returned if this field is set for models that don't support thinking.
                      "includeThoughts": True or False, # Optional. If true, the model will include its thoughts in the response. "Thoughts" are the intermediate steps the model takes to arrive at the final response. They can provide insights into the model's reasoning process and help with debugging. If this is true, thoughts are returned only when available.
                      "thinkingBudget": 42, # Optional. The token budget for the model's thinking process. The model will make a best effort to stay within this budget. This can be used to control the trade-off between response quality and latency.
                      "thinkingLevel": "A String", # Optional. The number of thoughts tokens that the model should generate.
                    },
                    "topK": 3.14, # Optional. Specifies the top-k sampling threshold. The model considers only the top k most probable tokens for the next token. This can be useful for generating more coherent and less random text. For example, a `top_k` of 40 means the model will choose the next word from the 40 most likely words.
                    "topP": 3.14, # Optional. Specifies the nucleus sampling threshold. The model considers only the smallest set of tokens whose cumulative probability is at least `top_p`. This helps generate more diverse and less repetitive responses. For example, a `top_p` of 0.9 means the model considers tokens until the cumulative probability of the tokens to select from reaches 0.9. It's recommended to adjust either temperature or `top_p`, but not both.
                  },
                  "samplingCount": 42, # 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.
                },
                "promptTemplate": "A String", # Template for the prompt used to generate rubrics. The details should be updated based on the most-recent recipe requirements.
                "rubricContentType": "A String", # The type of rubric content to be generated.
                "rubricTypeOntology": [ # 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.
                  "A String",
                ],
              },
              "rubricGroupKey": "A String", # Use a pre-defined group of rubrics associated with the input. Refers to a key in the rubric_groups map of EvaluationInstance.
              "systemInstruction": "A String", # Optional. System instructions for the judge model.
            },
            "metadata": { # Metadata about the metric, used for visualization and organization. # Optional. Metadata about the metric, used for visualization and organization.
              "otherMetadata": { # Optional. Flexible metadata for user-defined attributes.
                "a_key": "", # Properties of the object.
              },
              "scoreRange": { # The range of possible scores for this metric, used for plotting. # Optional. The range of possible scores for this metric, used for plotting.
                "description": "A String", # Optional. The description of the score explaining the directionality etc.
                "max": 3.14, # Required. The maximum value of the score range (inclusive).
                "min": 3.14, # Required. The minimum value of the score range (inclusive).
                "step": 3.14, # Optional. The distance between discrete steps in the range. If unset, the range is assumed to be continuous.
              },
              "title": "A String", # Optional. The user-friendly name for the metric. If not set for a registered metric, it will default to the metric's display name.
            },
            "pairwiseMetricSpec": { # Spec for pairwise metric. # Spec for pairwise metric.
              "baselineResponseFieldName": "A String", # Optional. The field name of the baseline response.
              "candidateResponseFieldName": "A String", # Optional. The field name of the candidate response.
              "customOutputFormatConfig": { # Spec for custom output format configuration. # Optional. CustomOutputFormatConfig allows customization of metric output. When this config is set, the default output is replaced with the raw output string. If a custom format is chosen, the `pairwise_choice` and `explanation` fields in the corresponding metric result will be empty.
                "returnRawOutput": True or False, # Optional. Whether to return raw output.
              },
              "metricPromptTemplate": "A String", # Required. Metric prompt template for pairwise metric.
              "systemInstruction": "A String", # Optional. System instructions for pairwise metric.
            },
            "pointwiseMetricSpec": { # Spec for pointwise metric. # Spec for pointwise metric.
              "customOutputFormatConfig": { # Spec for custom output format configuration. # Optional. CustomOutputFormatConfig allows customization of metric output. By default, metrics return a score and explanation. When this config is set, the default output is replaced with either: - The raw output string. - A parsed output based on a user-defined schema. If a custom format is chosen, the `score` and `explanation` fields in the corresponding metric result will be empty.
                "returnRawOutput": True or False, # Optional. Whether to return raw output.
              },
              "metricPromptTemplate": "A String", # Required. Metric prompt template for pointwise metric.
              "systemInstruction": "A String", # Optional. System instructions for pointwise metric.
            },
            "predefinedMetricSpec": { # The spec for a pre-defined metric. # The spec for a pre-defined metric.
              "metricSpecName": "A String", # Required. The name of a pre-defined metric, such as "instruction_following_v1" or "text_quality_v1".
              "metricSpecParameters": { # Optional. The parameters needed to run the pre-defined metric.
                "a_key": "", # Properties of the object.
              },
            },
            "rougeSpec": { # 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. # Spec for rouge metric.
              "rougeType": "A String", # Optional. Supported rouge types are rougen[1-9], rougeL, and rougeLsum.
              "splitSummaries": True or False, # Optional. Whether to split summaries while using rougeLsum.
              "useStemmer": True or False, # Optional. Whether to use stemmer to compute rouge score.
            },
          },
          "metricResourceName": "A String", # Optional. Resource name for registered metric.
        },
      ],
      "metrics": [ # 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.
        { # The metric used for running evaluations.
          "aggregationMetrics": [ # Optional. The aggregation metrics to use.
            "A String",
          ],
          "bleuSpec": { # 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. # Spec for bleu metric.
            "useEffectiveOrder": True or False, # Optional. Whether to use_effective_order to compute bleu score.
          },
          "computationBasedMetricSpec": { # Specification for a computation based metric. # Spec for a computation based metric.
            "parameters": { # Optional. A map of parameters for the metric, e.g. {"rouge_type": "rougeL"}.
              "a_key": "", # Properties of the object.
            },
            "type": "A String", # Required. The type of the computation based metric.
          },
          "customCodeExecutionSpec": { # Specificies a metric that is populated by evaluating user-defined Python code. # Spec for Custom Code Execution metric.
            "evaluationFunction": "A String", # Required. Python function. Expected user to define the following function, e.g.: def evaluate(instance: dict[str, Any]) -> float: Please include this function signature in the code snippet. Instance is the evaluation instance, any fields populated in the instance are available to the function as instance[field_name]. Example: Example input: ``` instance= EvaluationInstance( response=EvaluationInstance.InstanceData(text="The answer is 4."), reference=EvaluationInstance.InstanceData(text="4") ) ``` Example converted input: ``` { 'response': {'text': 'The answer is 4.'}, 'reference': {'text': '4'} } ``` Example python function: ``` def evaluate(instance: dict[str, Any]) -> float: if instance'response' == instance'reference': return 1.0 return 0.0 ``` CustomCodeExecutionSpec is also supported in Batch Evaluation (EvalDataset RPC) and Tuning Evaluation. Each line in the input jsonl file will be converted to dict[str, Any] and passed to the evaluation function.
          },
          "exactMatchSpec": { # Spec for exact match metric - returns 1 if prediction and reference exactly matches, otherwise 0. # Spec for exact match metric.
          },
          "llmBasedMetricSpec": { # Specification for an LLM based metric. # Spec for an LLM based metric.
            "additionalConfig": { # Optional. Optional additional configuration for the metric.
              "a_key": "", # Properties of the object.
            },
            "judgeAutoraterConfig": { # The configs for autorater. This is applicable to both EvaluateInstances and EvaluateDataset. # Optional. Optional configuration for the judge LLM (Autorater).
              "autoraterModel": "A String", # 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}`
              "flipEnabled": True or False, # 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.
              "generationConfig": { # Configuration for content generation. This message contains all the parameters that control how the model generates content. It allows you to influence the randomness, length, and structure of the output. # Optional. Configuration options for model generation and outputs.
                "audioTimestamp": True or False, # Optional. If enabled, audio timestamps will be included in the request to the model. This can be useful for synchronizing audio with other modalities in the response.
                "candidateCount": 42, # Optional. The number of candidate responses to generate. A higher `candidate_count` can provide more options to choose from, but it also consumes more resources. This can be useful for generating a variety of responses and selecting the best one.
                "enableAffectiveDialog": True or False, # Optional. If enabled, the model will detect emotions and adapt its responses accordingly. For example, if the model detects that the user is frustrated, it may provide a more empathetic response.
                "frequencyPenalty": 3.14, # Optional. Penalizes tokens based on their frequency in the generated text. A positive value helps to reduce the repetition of words and phrases. Valid values can range from [-2.0, 2.0].
                "imageConfig": { # Configuration for image generation. This message allows you to control various aspects of image generation, such as the output format, aspect ratio, and whether the model can generate images of people. # Optional. Config for image generation features.
                  "aspectRatio": "A String", # Optional. The desired aspect ratio for the generated images. The following aspect ratios are supported: "1:1" "2:3", "3:2" "3:4", "4:3" "4:5", "5:4" "9:16", "16:9" "21:9"
                  "imageOutputOptions": { # The image output format for generated images. # Optional. The image output format for generated images.
                    "compressionQuality": 42, # Optional. The compression quality of the output image.
                    "mimeType": "A String", # Optional. The image format that the output should be saved as.
                  },
                  "imageSize": "A String", # Optional. Specifies the size of generated images. Supported values are `1K`, `2K`, `4K`. If not specified, the model will use default value `1K`.
                  "personGeneration": "A String", # Optional. Controls whether the model can generate people.
                  "prominentPeople": "A String", # Optional. Controls whether prominent people (celebrities) generation is allowed. If used with personGeneration, personGeneration enum would take precedence. For instance, if ALLOW_NONE is set, all person generation would be blocked. If this field is unspecified, the default behavior is to allow prominent people.
                },
                "logprobs": 42, # Optional. The number of top log probabilities to return for each token. This can be used to see which other tokens were considered likely candidates for a given position. A higher value will return more options, but it will also increase the size of the response.
                "maxOutputTokens": 42, # Optional. The maximum number of tokens to generate in the response. A token is approximately four characters. The default value varies by model. This parameter can be used to control the length of the generated text and prevent overly long responses.
                "mediaResolution": "A String", # Optional. The token resolution at which input media content is sampled. This is used to control the trade-off between the quality of the response and the number of tokens used to represent the media. A higher resolution allows the model to perceive more detail, which can lead to a more nuanced response, but it will also use more tokens. This does not affect the image dimensions sent to the model.
                "presencePenalty": 3.14, # Optional. Penalizes tokens that have already appeared in the generated text. A positive value encourages the model to generate more diverse and less repetitive text. Valid values can range from [-2.0, 2.0].
                "responseJsonSchema": "", # Optional. When this field is set, response_schema must be omitted and response_mime_type must be set to `application/json`.
                "responseLogprobs": True or False, # Optional. If set to true, the log probabilities of the output tokens are returned. Log probabilities are the logarithm of the probability of a token appearing in the output. A higher log probability means the token is more likely to be generated. This can be useful for analyzing the model's confidence in its own output and for debugging.
                "responseMimeType": "A String", # Optional. The IANA standard MIME type of the response. The model will generate output that conforms to this MIME type. Supported values include 'text/plain' (default) and 'application/json'. The model needs to be prompted to output the appropriate response type, otherwise the behavior is undefined.
                "responseModalities": [ # Optional. The modalities of the response. The model will generate a response that includes all the specified modalities. For example, if this is set to `[TEXT, IMAGE]`, the response will include both text and an image.
                  "A String",
                ],
                "responseSchema": { # Defines the schema of input and output data. This is a subset of the [OpenAPI 3.0 Schema Object](https://spec.openapis.org/oas/v3.0.3#schema-object). # Optional. Lets you to specify a schema for the model's response, ensuring that the output conforms to a particular structure. This is useful for generating structured data such as JSON. The schema is a subset of the [OpenAPI 3.0 schema object](https://spec.openapis.org/oas/v3.0.3#schema) object. When this field is set, you must also set the `response_mime_type` to `application/json`.
                  "additionalProperties": "", # Optional. If `type` is `OBJECT`, specifies how to handle properties not defined in `properties`. If it is a boolean `false`, no additional properties are allowed. If it is a schema, additional properties are allowed if they conform to the schema.
                  "anyOf": [ # Optional. The instance must be valid against any (one or more) of the subschemas listed in `any_of`.
                    # Object with schema name: GoogleCloudAiplatformV1Schema
                  ],
                  "default": "", # Optional. Default value to use if the field is not specified.
                  "defs": { # Optional. `defs` provides a map of schema definitions that can be reused by `ref` elsewhere in the schema. Only allowed at root level of the schema.
                    "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                  },
                  "description": "A String", # Optional. Describes the data. The model uses this field to understand the purpose of the schema and how to use it. It is a best practice to provide a clear and descriptive explanation for the schema and its properties here, rather than in the prompt.
                  "enum": [ # Optional. Possible values of the field. This field can be used to restrict a value to a fixed set of values. To mark a field as an enum, set `format` to `enum` and provide the list of possible values in `enum`. For example: 1. To define directions: `{type:STRING, format:enum, enum:["EAST", "NORTH", "SOUTH", "WEST"]}` 2. To define apartment numbers: `{type:INTEGER, format:enum, enum:["101", "201", "301"]}`
                    "A String",
                  ],
                  "example": "", # Optional. Example of an instance of this schema.
                  "format": "A String", # Optional. The format of the data. For `NUMBER` type, format can be `float` or `double`. For `INTEGER` type, format can be `int32` or `int64`. For `STRING` type, format can be `email`, `byte`, `date`, `date-time`, `password`, and other formats to further refine the data type.
                  "items": # Object with schema name: GoogleCloudAiplatformV1Schema # Optional. If type is `ARRAY`, `items` specifies the schema of elements in the array.
                  "maxItems": "A String", # Optional. If type is `ARRAY`, `max_items` specifies the maximum number of items in an array.
                  "maxLength": "A String", # Optional. If type is `STRING`, `max_length` specifies the maximum length of the string.
                  "maxProperties": "A String", # Optional. If type is `OBJECT`, `max_properties` specifies the maximum number of properties that can be provided.
                  "maximum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `maximum` specifies the maximum allowed value.
                  "minItems": "A String", # Optional. If type is `ARRAY`, `min_items` specifies the minimum number of items in an array.
                  "minLength": "A String", # Optional. If type is `STRING`, `min_length` specifies the minimum length of the string.
                  "minProperties": "A String", # Optional. If type is `OBJECT`, `min_properties` specifies the minimum number of properties that can be provided.
                  "minimum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `minimum` specifies the minimum allowed value.
                  "nullable": True or False, # Optional. Indicates if the value of this field can be null.
                  "pattern": "A String", # Optional. If type is `STRING`, `pattern` specifies a regular expression that the string must match.
                  "properties": { # Optional. If type is `OBJECT`, `properties` is a map of property names to schema definitions for each property of the object.
                    "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                  },
                  "propertyOrdering": [ # Optional. Order of properties displayed or used where order matters. This is not a standard field in OpenAPI specification, but can be used to control the order of properties.
                    "A String",
                  ],
                  "ref": "A String", # Optional. Allows referencing another schema definition to use in place of this schema. The value must be a valid reference to a schema in `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
                  "required": [ # Optional. If type is `OBJECT`, `required` lists the names of properties that must be present.
                    "A String",
                  ],
                  "title": "A String", # Optional. Title for the schema.
                  "type": "A String", # Optional. Data type of the schema field.
                },
                "routingConfig": { # The configuration for routing the request to a specific model. This can be used to control which model is used for the generation, either automatically or by specifying a model name. # Optional. Routing configuration.
                  "autoMode": { # The configuration for automated routing. When automated routing is specified, the routing will be determined by the pretrained routing model and customer provided model routing preference. # In this mode, the model is selected automatically based on the content of the request.
                    "modelRoutingPreference": "A String", # The model routing preference.
                  },
                  "manualMode": { # The configuration for manual routing. When manual routing is specified, the model will be selected based on the model name provided. # In this mode, the model is specified manually.
                    "modelName": "A String", # The name of the model to use. Only public LLM models are accepted.
                  },
                },
                "seed": 42, # Optional. A seed for the random number generator. By setting a seed, you can make the model's output mostly deterministic. For a given prompt and parameters (like temperature, top_p, etc.), the model will produce the same response every time. However, it's not a guaranteed absolute deterministic behavior. This is different from parameters like `temperature`, which control the *level* of randomness. `seed` ensures that the "random" choices the model makes are the same on every run, making it essential for testing and ensuring reproducible results.
                "speechConfig": { # Configuration for speech generation. # Optional. The speech generation config.
                  "languageCode": "A String", # Optional. The language code (ISO 639-1) for the speech synthesis.
                  "multiSpeakerVoiceConfig": { # Configuration for a multi-speaker text-to-speech request. # The configuration for a multi-speaker text-to-speech request. This field is mutually exclusive with `voice_config`.
                    "speakerVoiceConfigs": [ # Required. A list of configurations for the voices of the speakers. Exactly two speaker voice configurations must be provided.
                      { # Configuration for a single speaker in a multi-speaker setup.
                        "speaker": "A String", # Required. The name of the speaker. This should be the same as the speaker name used in the prompt.
                        "voiceConfig": { # Configuration for a voice. # Required. The configuration for the voice of this speaker.
                          "prebuiltVoiceConfig": { # Configuration for a prebuilt voice. # The configuration for a prebuilt voice.
                            "voiceName": "A String", # The name of the prebuilt voice to use.
                          },
                          "replicatedVoiceConfig": { # The configuration for the replicated voice to use. # Optional. The configuration for a replicated voice. This enables users to replicate a voice from an audio sample.
                            "mimeType": "A String", # Optional. The mimetype of the voice sample. The only currently supported value is `audio/wav`. This represents 16-bit signed little-endian wav data, with a 24kHz sampling rate. `mime_type` will default to `audio/wav` if not set.
                            "voiceSampleAudio": "A String", # Optional. The sample of the custom voice.
                          },
                        },
                      },
                    ],
                  },
                  "voiceConfig": { # Configuration for a voice. # The configuration for the voice to use.
                    "prebuiltVoiceConfig": { # Configuration for a prebuilt voice. # The configuration for a prebuilt voice.
                      "voiceName": "A String", # The name of the prebuilt voice to use.
                    },
                    "replicatedVoiceConfig": { # The configuration for the replicated voice to use. # Optional. The configuration for a replicated voice. This enables users to replicate a voice from an audio sample.
                      "mimeType": "A String", # Optional. The mimetype of the voice sample. The only currently supported value is `audio/wav`. This represents 16-bit signed little-endian wav data, with a 24kHz sampling rate. `mime_type` will default to `audio/wav` if not set.
                      "voiceSampleAudio": "A String", # Optional. The sample of the custom voice.
                    },
                  },
                },
                "stopSequences": [ # Optional. A list of character sequences that will stop the model from generating further tokens. If a stop sequence is generated, the output will end at that point. This is useful for controlling the length and structure of the output. For example, you can use ["\n", "###"] to stop generation at a new line or a specific marker.
                  "A String",
                ],
                "temperature": 3.14, # Optional. Controls the randomness of the output. A higher temperature results in more creative and diverse responses, while a lower temperature makes the output more predictable and focused. The valid range is (0.0, 2.0].
                "thinkingConfig": { # Configuration for the model's thinking features. "Thinking" is a process where the model breaks down a complex task into smaller, manageable steps. This allows the model to reason about the task, plan its approach, and execute the plan to generate a high-quality response. # Optional. Configuration for thinking features. An error will be returned if this field is set for models that don't support thinking.
                  "includeThoughts": True or False, # Optional. If true, the model will include its thoughts in the response. "Thoughts" are the intermediate steps the model takes to arrive at the final response. They can provide insights into the model's reasoning process and help with debugging. If this is true, thoughts are returned only when available.
                  "thinkingBudget": 42, # Optional. The token budget for the model's thinking process. The model will make a best effort to stay within this budget. This can be used to control the trade-off between response quality and latency.
                  "thinkingLevel": "A String", # Optional. The number of thoughts tokens that the model should generate.
                },
                "topK": 3.14, # Optional. Specifies the top-k sampling threshold. The model considers only the top k most probable tokens for the next token. This can be useful for generating more coherent and less random text. For example, a `top_k` of 40 means the model will choose the next word from the 40 most likely words.
                "topP": 3.14, # Optional. Specifies the nucleus sampling threshold. The model considers only the smallest set of tokens whose cumulative probability is at least `top_p`. This helps generate more diverse and less repetitive responses. For example, a `top_p` of 0.9 means the model considers tokens until the cumulative probability of the tokens to select from reaches 0.9. It's recommended to adjust either temperature or `top_p`, but not both.
              },
              "samplingCount": 42, # 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.
            },
            "metricPromptTemplate": "A String", # Required. Template for the prompt sent to the judge model.
            "predefinedRubricGenerationSpec": { # The spec for a pre-defined metric. # Dynamically generate rubrics using a predefined spec.
              "metricSpecName": "A String", # Required. The name of a pre-defined metric, such as "instruction_following_v1" or "text_quality_v1".
              "metricSpecParameters": { # Optional. The parameters needed to run the pre-defined metric.
                "a_key": "", # Properties of the object.
              },
            },
            "resultParserConfig": { # Config for parsing LLM responses. It can be used to parse the LLM response to be evaluated, or the LLM response from LLM-based metrics/Autoraters. # Optional. The parser config for the metric result.
              "customCodeParserConfig": { # Configuration for parsing the LLM response using custom code. # Optional. Use custom code to parse the LLM response.
                "parsingFunction": "A String", # Required. Python function for parsing results. The function should be defined within this string. The function takes a list of strings (LLM responses) and should return either a list of dictionaries (for rubrics) or a single dictionary (for a metric result). Example function signature: def parse(responses: list[str]) -> list[dict[str, Any]] | dict[str, Any]: When parsing rubrics, return a list of dictionaries, where each dictionary represents a Rubric. Example for rubrics: [ { "content": {"property": {"description": "The response is factual."}}, "type": "FACTUALITY", "importance": "HIGH" }, { "content": {"property": {"description": "The response is fluent."}}, "type": "FLUENCY", "importance": "MEDIUM" } ] When parsing critique results, return a dictionary representing a MetricResult. Example for a metric result: { "score": 0.8, "explanation": "The model followed most instructions.", "rubric_verdicts": [...] } ... code for result extraction and aggregation
              },
            },
            "rubricGenerationSpec": { # Specification for how rubrics should be generated. # Dynamically generate rubrics using this specification.
              "modelConfig": { # The configs for autorater. This is applicable to both EvaluateInstances and EvaluateDataset. # Configuration for the model used in rubric generation. Configs including sampling count and base model can be specified here. Flipping is not supported for rubric generation.
                "autoraterModel": "A String", # 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}`
                "flipEnabled": True or False, # 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.
                "generationConfig": { # Configuration for content generation. This message contains all the parameters that control how the model generates content. It allows you to influence the randomness, length, and structure of the output. # Optional. Configuration options for model generation and outputs.
                  "audioTimestamp": True or False, # Optional. If enabled, audio timestamps will be included in the request to the model. This can be useful for synchronizing audio with other modalities in the response.
                  "candidateCount": 42, # Optional. The number of candidate responses to generate. A higher `candidate_count` can provide more options to choose from, but it also consumes more resources. This can be useful for generating a variety of responses and selecting the best one.
                  "enableAffectiveDialog": True or False, # Optional. If enabled, the model will detect emotions and adapt its responses accordingly. For example, if the model detects that the user is frustrated, it may provide a more empathetic response.
                  "frequencyPenalty": 3.14, # Optional. Penalizes tokens based on their frequency in the generated text. A positive value helps to reduce the repetition of words and phrases. Valid values can range from [-2.0, 2.0].
                  "imageConfig": { # Configuration for image generation. This message allows you to control various aspects of image generation, such as the output format, aspect ratio, and whether the model can generate images of people. # Optional. Config for image generation features.
                    "aspectRatio": "A String", # Optional. The desired aspect ratio for the generated images. The following aspect ratios are supported: "1:1" "2:3", "3:2" "3:4", "4:3" "4:5", "5:4" "9:16", "16:9" "21:9"
                    "imageOutputOptions": { # The image output format for generated images. # Optional. The image output format for generated images.
                      "compressionQuality": 42, # Optional. The compression quality of the output image.
                      "mimeType": "A String", # Optional. The image format that the output should be saved as.
                    },
                    "imageSize": "A String", # Optional. Specifies the size of generated images. Supported values are `1K`, `2K`, `4K`. If not specified, the model will use default value `1K`.
                    "personGeneration": "A String", # Optional. Controls whether the model can generate people.
                    "prominentPeople": "A String", # Optional. Controls whether prominent people (celebrities) generation is allowed. If used with personGeneration, personGeneration enum would take precedence. For instance, if ALLOW_NONE is set, all person generation would be blocked. If this field is unspecified, the default behavior is to allow prominent people.
                  },
                  "logprobs": 42, # Optional. The number of top log probabilities to return for each token. This can be used to see which other tokens were considered likely candidates for a given position. A higher value will return more options, but it will also increase the size of the response.
                  "maxOutputTokens": 42, # Optional. The maximum number of tokens to generate in the response. A token is approximately four characters. The default value varies by model. This parameter can be used to control the length of the generated text and prevent overly long responses.
                  "mediaResolution": "A String", # Optional. The token resolution at which input media content is sampled. This is used to control the trade-off between the quality of the response and the number of tokens used to represent the media. A higher resolution allows the model to perceive more detail, which can lead to a more nuanced response, but it will also use more tokens. This does not affect the image dimensions sent to the model.
                  "presencePenalty": 3.14, # Optional. Penalizes tokens that have already appeared in the generated text. A positive value encourages the model to generate more diverse and less repetitive text. Valid values can range from [-2.0, 2.0].
                  "responseJsonSchema": "", # Optional. When this field is set, response_schema must be omitted and response_mime_type must be set to `application/json`.
                  "responseLogprobs": True or False, # Optional. If set to true, the log probabilities of the output tokens are returned. Log probabilities are the logarithm of the probability of a token appearing in the output. A higher log probability means the token is more likely to be generated. This can be useful for analyzing the model's confidence in its own output and for debugging.
                  "responseMimeType": "A String", # Optional. The IANA standard MIME type of the response. The model will generate output that conforms to this MIME type. Supported values include 'text/plain' (default) and 'application/json'. The model needs to be prompted to output the appropriate response type, otherwise the behavior is undefined.
                  "responseModalities": [ # Optional. The modalities of the response. The model will generate a response that includes all the specified modalities. For example, if this is set to `[TEXT, IMAGE]`, the response will include both text and an image.
                    "A String",
                  ],
                  "responseSchema": { # Defines the schema of input and output data. This is a subset of the [OpenAPI 3.0 Schema Object](https://spec.openapis.org/oas/v3.0.3#schema-object). # Optional. Lets you to specify a schema for the model's response, ensuring that the output conforms to a particular structure. This is useful for generating structured data such as JSON. The schema is a subset of the [OpenAPI 3.0 schema object](https://spec.openapis.org/oas/v3.0.3#schema) object. When this field is set, you must also set the `response_mime_type` to `application/json`.
                    "additionalProperties": "", # Optional. If `type` is `OBJECT`, specifies how to handle properties not defined in `properties`. If it is a boolean `false`, no additional properties are allowed. If it is a schema, additional properties are allowed if they conform to the schema.
                    "anyOf": [ # Optional. The instance must be valid against any (one or more) of the subschemas listed in `any_of`.
                      # Object with schema name: GoogleCloudAiplatformV1Schema
                    ],
                    "default": "", # Optional. Default value to use if the field is not specified.
                    "defs": { # Optional. `defs` provides a map of schema definitions that can be reused by `ref` elsewhere in the schema. Only allowed at root level of the schema.
                      "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                    },
                    "description": "A String", # Optional. Describes the data. The model uses this field to understand the purpose of the schema and how to use it. It is a best practice to provide a clear and descriptive explanation for the schema and its properties here, rather than in the prompt.
                    "enum": [ # Optional. Possible values of the field. This field can be used to restrict a value to a fixed set of values. To mark a field as an enum, set `format` to `enum` and provide the list of possible values in `enum`. For example: 1. To define directions: `{type:STRING, format:enum, enum:["EAST", "NORTH", "SOUTH", "WEST"]}` 2. To define apartment numbers: `{type:INTEGER, format:enum, enum:["101", "201", "301"]}`
                      "A String",
                    ],
                    "example": "", # Optional. Example of an instance of this schema.
                    "format": "A String", # Optional. The format of the data. For `NUMBER` type, format can be `float` or `double`. For `INTEGER` type, format can be `int32` or `int64`. For `STRING` type, format can be `email`, `byte`, `date`, `date-time`, `password`, and other formats to further refine the data type.
                    "items": # Object with schema name: GoogleCloudAiplatformV1Schema # Optional. If type is `ARRAY`, `items` specifies the schema of elements in the array.
                    "maxItems": "A String", # Optional. If type is `ARRAY`, `max_items` specifies the maximum number of items in an array.
                    "maxLength": "A String", # Optional. If type is `STRING`, `max_length` specifies the maximum length of the string.
                    "maxProperties": "A String", # Optional. If type is `OBJECT`, `max_properties` specifies the maximum number of properties that can be provided.
                    "maximum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `maximum` specifies the maximum allowed value.
                    "minItems": "A String", # Optional. If type is `ARRAY`, `min_items` specifies the minimum number of items in an array.
                    "minLength": "A String", # Optional. If type is `STRING`, `min_length` specifies the minimum length of the string.
                    "minProperties": "A String", # Optional. If type is `OBJECT`, `min_properties` specifies the minimum number of properties that can be provided.
                    "minimum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `minimum` specifies the minimum allowed value.
                    "nullable": True or False, # Optional. Indicates if the value of this field can be null.
                    "pattern": "A String", # Optional. If type is `STRING`, `pattern` specifies a regular expression that the string must match.
                    "properties": { # Optional. If type is `OBJECT`, `properties` is a map of property names to schema definitions for each property of the object.
                      "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                    },
                    "propertyOrdering": [ # Optional. Order of properties displayed or used where order matters. This is not a standard field in OpenAPI specification, but can be used to control the order of properties.
                      "A String",
                    ],
                    "ref": "A String", # Optional. Allows referencing another schema definition to use in place of this schema. The value must be a valid reference to a schema in `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
                    "required": [ # Optional. If type is `OBJECT`, `required` lists the names of properties that must be present.
                      "A String",
                    ],
                    "title": "A String", # Optional. Title for the schema.
                    "type": "A String", # Optional. Data type of the schema field.
                  },
                  "routingConfig": { # The configuration for routing the request to a specific model. This can be used to control which model is used for the generation, either automatically or by specifying a model name. # Optional. Routing configuration.
                    "autoMode": { # The configuration for automated routing. When automated routing is specified, the routing will be determined by the pretrained routing model and customer provided model routing preference. # In this mode, the model is selected automatically based on the content of the request.
                      "modelRoutingPreference": "A String", # The model routing preference.
                    },
                    "manualMode": { # The configuration for manual routing. When manual routing is specified, the model will be selected based on the model name provided. # In this mode, the model is specified manually.
                      "modelName": "A String", # The name of the model to use. Only public LLM models are accepted.
                    },
                  },
                  "seed": 42, # Optional. A seed for the random number generator. By setting a seed, you can make the model's output mostly deterministic. For a given prompt and parameters (like temperature, top_p, etc.), the model will produce the same response every time. However, it's not a guaranteed absolute deterministic behavior. This is different from parameters like `temperature`, which control the *level* of randomness. `seed` ensures that the "random" choices the model makes are the same on every run, making it essential for testing and ensuring reproducible results.
                  "speechConfig": { # Configuration for speech generation. # Optional. The speech generation config.
                    "languageCode": "A String", # Optional. The language code (ISO 639-1) for the speech synthesis.
                    "multiSpeakerVoiceConfig": { # Configuration for a multi-speaker text-to-speech request. # The configuration for a multi-speaker text-to-speech request. This field is mutually exclusive with `voice_config`.
                      "speakerVoiceConfigs": [ # Required. A list of configurations for the voices of the speakers. Exactly two speaker voice configurations must be provided.
                        { # Configuration for a single speaker in a multi-speaker setup.
                          "speaker": "A String", # Required. The name of the speaker. This should be the same as the speaker name used in the prompt.
                          "voiceConfig": { # Configuration for a voice. # Required. The configuration for the voice of this speaker.
                            "prebuiltVoiceConfig": { # Configuration for a prebuilt voice. # The configuration for a prebuilt voice.
                              "voiceName": "A String", # The name of the prebuilt voice to use.
                            },
                            "replicatedVoiceConfig": { # The configuration for the replicated voice to use. # Optional. The configuration for a replicated voice. This enables users to replicate a voice from an audio sample.
                              "mimeType": "A String", # Optional. The mimetype of the voice sample. The only currently supported value is `audio/wav`. This represents 16-bit signed little-endian wav data, with a 24kHz sampling rate. `mime_type` will default to `audio/wav` if not set.
                              "voiceSampleAudio": "A String", # Optional. The sample of the custom voice.
                            },
                          },
                        },
                      ],
                    },
                    "voiceConfig": { # Configuration for a voice. # The configuration for the voice to use.
                      "prebuiltVoiceConfig": { # Configuration for a prebuilt voice. # The configuration for a prebuilt voice.
                        "voiceName": "A String", # The name of the prebuilt voice to use.
                      },
                      "replicatedVoiceConfig": { # The configuration for the replicated voice to use. # Optional. The configuration for a replicated voice. This enables users to replicate a voice from an audio sample.
                        "mimeType": "A String", # Optional. The mimetype of the voice sample. The only currently supported value is `audio/wav`. This represents 16-bit signed little-endian wav data, with a 24kHz sampling rate. `mime_type` will default to `audio/wav` if not set.
                        "voiceSampleAudio": "A String", # Optional. The sample of the custom voice.
                      },
                    },
                  },
                  "stopSequences": [ # Optional. A list of character sequences that will stop the model from generating further tokens. If a stop sequence is generated, the output will end at that point. This is useful for controlling the length and structure of the output. For example, you can use ["\n", "###"] to stop generation at a new line or a specific marker.
                    "A String",
                  ],
                  "temperature": 3.14, # Optional. Controls the randomness of the output. A higher temperature results in more creative and diverse responses, while a lower temperature makes the output more predictable and focused. The valid range is (0.0, 2.0].
                  "thinkingConfig": { # Configuration for the model's thinking features. "Thinking" is a process where the model breaks down a complex task into smaller, manageable steps. This allows the model to reason about the task, plan its approach, and execute the plan to generate a high-quality response. # Optional. Configuration for thinking features. An error will be returned if this field is set for models that don't support thinking.
                    "includeThoughts": True or False, # Optional. If true, the model will include its thoughts in the response. "Thoughts" are the intermediate steps the model takes to arrive at the final response. They can provide insights into the model's reasoning process and help with debugging. If this is true, thoughts are returned only when available.
                    "thinkingBudget": 42, # Optional. The token budget for the model's thinking process. The model will make a best effort to stay within this budget. This can be used to control the trade-off between response quality and latency.
                    "thinkingLevel": "A String", # Optional. The number of thoughts tokens that the model should generate.
                  },
                  "topK": 3.14, # Optional. Specifies the top-k sampling threshold. The model considers only the top k most probable tokens for the next token. This can be useful for generating more coherent and less random text. For example, a `top_k` of 40 means the model will choose the next word from the 40 most likely words.
                  "topP": 3.14, # Optional. Specifies the nucleus sampling threshold. The model considers only the smallest set of tokens whose cumulative probability is at least `top_p`. This helps generate more diverse and less repetitive responses. For example, a `top_p` of 0.9 means the model considers tokens until the cumulative probability of the tokens to select from reaches 0.9. It's recommended to adjust either temperature or `top_p`, but not both.
                },
                "samplingCount": 42, # 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.
              },
              "promptTemplate": "A String", # Template for the prompt used to generate rubrics. The details should be updated based on the most-recent recipe requirements.
              "rubricContentType": "A String", # The type of rubric content to be generated.
              "rubricTypeOntology": [ # 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.
                "A String",
              ],
            },
            "rubricGroupKey": "A String", # Use a pre-defined group of rubrics associated with the input. Refers to a key in the rubric_groups map of EvaluationInstance.
            "systemInstruction": "A String", # Optional. System instructions for the judge model.
          },
          "metadata": { # Metadata about the metric, used for visualization and organization. # Optional. Metadata about the metric, used for visualization and organization.
            "otherMetadata": { # Optional. Flexible metadata for user-defined attributes.
              "a_key": "", # Properties of the object.
            },
            "scoreRange": { # The range of possible scores for this metric, used for plotting. # Optional. The range of possible scores for this metric, used for plotting.
              "description": "A String", # Optional. The description of the score explaining the directionality etc.
              "max": 3.14, # Required. The maximum value of the score range (inclusive).
              "min": 3.14, # Required. The minimum value of the score range (inclusive).
              "step": 3.14, # Optional. The distance between discrete steps in the range. If unset, the range is assumed to be continuous.
            },
            "title": "A String", # Optional. The user-friendly name for the metric. If not set for a registered metric, it will default to the metric's display name.
          },
          "pairwiseMetricSpec": { # Spec for pairwise metric. # Spec for pairwise metric.
            "baselineResponseFieldName": "A String", # Optional. The field name of the baseline response.
            "candidateResponseFieldName": "A String", # Optional. The field name of the candidate response.
            "customOutputFormatConfig": { # Spec for custom output format configuration. # Optional. CustomOutputFormatConfig allows customization of metric output. When this config is set, the default output is replaced with the raw output string. If a custom format is chosen, the `pairwise_choice` and `explanation` fields in the corresponding metric result will be empty.
              "returnRawOutput": True or False, # Optional. Whether to return raw output.
            },
            "metricPromptTemplate": "A String", # Required. Metric prompt template for pairwise metric.
            "systemInstruction": "A String", # Optional. System instructions for pairwise metric.
          },
          "pointwiseMetricSpec": { # Spec for pointwise metric. # Spec for pointwise metric.
            "customOutputFormatConfig": { # Spec for custom output format configuration. # Optional. CustomOutputFormatConfig allows customization of metric output. By default, metrics return a score and explanation. When this config is set, the default output is replaced with either: - The raw output string. - A parsed output based on a user-defined schema. If a custom format is chosen, the `score` and `explanation` fields in the corresponding metric result will be empty.
              "returnRawOutput": True or False, # Optional. Whether to return raw output.
            },
            "metricPromptTemplate": "A String", # Required. Metric prompt template for pointwise metric.
            "systemInstruction": "A String", # Optional. System instructions for pointwise metric.
          },
          "predefinedMetricSpec": { # The spec for a pre-defined metric. # The spec for a pre-defined metric.
            "metricSpecName": "A String", # Required. The name of a pre-defined metric, such as "instruction_following_v1" or "text_quality_v1".
            "metricSpecParameters": { # Optional. The parameters needed to run the pre-defined metric.
              "a_key": "", # Properties of the object.
            },
          },
          "rougeSpec": { # 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. # Spec for rouge metric.
            "rougeType": "A String", # Optional. Supported rouge types are rougen[1-9], rougeL, and rougeLsum.
            "splitSummaries": True or False, # Optional. Whether to split summaries while using rougeLsum.
            "useStemmer": True or False, # Optional. Whether to use stemmer to compute rouge score.
          },
        },
      ],
      "metricxInput": { # Input for MetricX metric. # Input for Metricx metric.
        "instance": { # Spec for MetricX instance - The fields used for evaluation are dependent on the MetricX version. # Required. Metricx instance.
          "prediction": "A String", # Required. Output of the evaluated model.
          "reference": "A String", # Optional. Ground truth used to compare against the prediction.
          "source": "A String", # Optional. Source text in original language.
        },
        "metricSpec": { # Spec for MetricX metric. # Required. Spec for Metricx metric.
          "sourceLanguage": "A String", # Optional. Source language in BCP-47 format.
          "targetLanguage": "A String", # Optional. Target language in BCP-47 format. Covers both prediction and reference.
          "version": "A String", # Required. Which version to use for evaluation.
        },
      },
      "pairwiseMetricInput": { # Input for pairwise metric. # Input for pairwise metric.
        "instance": { # Pairwise metric instance. Usually one instance corresponds to one row in an evaluation dataset. # Required. Pairwise metric instance.
          "contentMapInstance": { # Map of placeholder in metric prompt template to contents of model input. # Key-value contents for the mutlimodality input, including text, image, video, audio, and pdf, etc. The key is placeholder in metric prompt template, and the value is the multimodal content.
            "values": { # Optional. Map of placeholder to contents.
              "a_key": { # Repeated Content type.
                "contents": [ # Optional. Repeated contents.
                  { # The structured data content of a message. A Content message contains a `role` field, which indicates the producer of the content, and a `parts` field, which contains the multi-part data of the message.
                    "parts": [ # Required. A list of Part objects that make up a single message. Parts of a message can have different MIME types. A Content message must have at least one Part.
                      { # 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`. For media types that are not text, `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.
                        "codeExecutionResult": { # Result of executing the ExecutableCode. Generated only when the `CodeExecution` tool is used. # Optional. The result of executing the ExecutableCode.
                          "outcome": "A String", # Required. Outcome of the code execution.
                          "output": "A String", # Optional. Contains stdout when code execution is successful, stderr or other description otherwise.
                        },
                        "executableCode": { # 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. # Optional. Code generated by the model that is intended to be executed.
                          "code": "A String", # Required. The code to be executed.
                          "language": "A String", # Required. Programming language of the `code`.
                        },
                        "fileData": { # URI-based data. A FileData message contains a URI pointing to data of a specific media type. It is used to represent images, audio, and video stored in Google Cloud Storage. # Optional. The URI-based data of the part. This can be used to include files from Google Cloud Storage.
                          "displayName": "A String", # Optional. The display name of the file. Used to provide a label or filename to distinguish files. This field is only returned in `PromptMessage` for prompt management. It is used in the Gemini calls only when server side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                          "fileUri": "A String", # Required. The URI of the file in Google Cloud Storage.
                          "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                        },
                        "functionCall": { # 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. # Optional. A predicted function call returned from the model. This contains the name of the function to call and the arguments to pass to the function.
                          "args": { # Optional. The function parameters and values in JSON object format. See FunctionDeclaration.parameters for parameter details.
                            "a_key": "", # Properties of the object.
                          },
                          "name": "A String", # Optional. The name of the function to call. Matches FunctionDeclaration.name.
                          "partialArgs": [ # Optional. The partial argument value of the function call. If provided, represents the arguments/fields that are streamed incrementally.
                            { # Partial argument value of the function call.
                              "boolValue": True or False, # Optional. Represents a boolean value.
                              "jsonPath": "A String", # Required. A JSON Path (RFC 9535) to the argument being streamed. https://datatracker.ietf.org/doc/html/rfc9535. e.g. "$.foo.bar[0].data".
                              "nullValue": "A String", # Optional. Represents a null value.
                              "numberValue": 3.14, # Optional. Represents a double value.
                              "stringValue": "A String", # Optional. Represents a string value.
                              "willContinue": True or False, # Optional. Whether this is not the last part of the same json_path. If true, another PartialArg message for the current json_path is expected to follow.
                            },
                          ],
                          "willContinue": True or False, # Optional. Whether this is the last part of the FunctionCall. If true, another partial message for the current FunctionCall is expected to follow.
                        },
                        "functionResponse": { # 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. # Optional. The result of a function call. This is used to provide the model with the result of a function call that it predicted.
                          "name": "A String", # Required. The name of the function to call. Matches FunctionDeclaration.name and FunctionCall.name.
                          "parts": [ # Optional. Ordered `Parts` that constitute a function response. Parts may have different IANA MIME types.
                            { # A datatype containing media that is part of a `FunctionResponse` message. A `FunctionResponsePart` consists of data which has an associated datatype. A `FunctionResponsePart` can only contain one of the accepted types in `FunctionResponsePart.data`. A `FunctionResponsePart` must have a fixed IANA MIME type identifying the type and subtype of the media if the `inline_data` field is filled with raw bytes.
                              "fileData": { # URI based data for function response. # URI based data.
                                "displayName": "A String", # 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.
                                "fileUri": "A String", # Required. URI.
                                "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                              },
                              "inlineData": { # Raw media bytes for function response. Text should not be sent as raw bytes, use the 'text' field. # Inline media bytes.
                                "data": "A String", # Required. Raw bytes.
                                "displayName": "A String", # 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.
                                "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                              },
                            },
                          ],
                          "response": { # 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.
                            "a_key": "", # Properties of the object.
                          },
                          "scheduling": "A String", # Optional. Specifies how the response should be scheduled in the conversation. Only applicable to NON_BLOCKING function calls, is ignored otherwise. Defaults to WHEN_IDLE.
                        },
                        "inlineData": { # A content blob. A Blob contains data of a specific media type. It is used to represent images, audio, and video. # Optional. The inline data content of the part. This can be used to include images, audio, or video in a request.
                          "data": "A String", # Required. The raw bytes of the data.
                          "displayName": "A String", # Optional. The 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 used in the Gemini calls only when server-side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                          "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                        },
                        "mediaResolution": { # per part media resolution. Media resolution for the input media. # per part media resolution. Media resolution for the input media.
                          "level": "A String", # The tokenization quality used for given media.
                        },
                        "text": "A String", # Optional. The text content of the part. When sent from the VSCode Gemini Code Assist extension, references to @mentioned items will be converted to markdown boldface text. For example `@my-repo` will be converted to and sent as `**my-repo**` by the IDE agent.
                        "thought": True or False, # Optional. Indicates whether the `part` represents the model's thought process or reasoning.
                        "thoughtSignature": "A String", # Optional. An opaque signature for the thought so it can be reused in subsequent requests.
                        "videoMetadata": { # Provides metadata for a video, including the start and end offsets for clipping and the frame rate. # Optional. Video metadata. The metadata should only be specified while the video data is presented in inline_data or file_data.
                          "endOffset": "A String", # Optional. The end offset of the video.
                          "fps": 3.14, # Optional. The frame rate of the video sent to the model. If not specified, the default value is 1.0. The valid range is (0.0, 24.0].
                          "startOffset": "A String", # Optional. The start offset of the video.
                        },
                      },
                    ],
                    "role": "A String", # Optional. The producer of the content. Must be either 'user' or 'model'. If not set, the service will default to 'user'.
                  },
                ],
              },
            },
          },
          "jsonInstance": "A String", # Instance specified as a json string. String key-value pairs are expected in the json_instance to render PairwiseMetricSpec.instance_prompt_template.
        },
        "metricSpec": { # Spec for pairwise metric. # Required. Spec for pairwise metric.
          "baselineResponseFieldName": "A String", # Optional. The field name of the baseline response.
          "candidateResponseFieldName": "A String", # Optional. The field name of the candidate response.
          "customOutputFormatConfig": { # Spec for custom output format configuration. # Optional. CustomOutputFormatConfig allows customization of metric output. When this config is set, the default output is replaced with the raw output string. If a custom format is chosen, the `pairwise_choice` and `explanation` fields in the corresponding metric result will be empty.
            "returnRawOutput": True or False, # Optional. Whether to return raw output.
          },
          "metricPromptTemplate": "A String", # Required. Metric prompt template for pairwise metric.
          "systemInstruction": "A String", # Optional. System instructions for pairwise metric.
        },
      },
      "pairwiseQuestionAnsweringQualityInput": { # Input for pairwise question answering quality metric. # Input for pairwise question answering quality metric.
        "instance": { # Spec for pairwise question answering quality instance. # Required. Pairwise question answering quality instance.
          "baselinePrediction": "A String", # Required. Output of the baseline model.
          "context": "A String", # Required. Text to answer the question.
          "instruction": "A String", # Required. Question Answering prompt for LLM.
          "prediction": "A String", # Required. Output of the candidate model.
          "reference": "A String", # Optional. Ground truth used to compare against the prediction.
        },
        "metricSpec": { # Spec for pairwise question answering quality score metric. # Required. Spec for pairwise question answering quality score metric.
          "useReference": True or False, # Optional. Whether to use instance.reference to compute question answering quality.
          "version": 42, # Optional. Which version to use for evaluation.
        },
      },
      "pairwiseSummarizationQualityInput": { # Input for pairwise summarization quality metric. # Input for pairwise summarization quality metric.
        "instance": { # Spec for pairwise summarization quality instance. # Required. Pairwise summarization quality instance.
          "baselinePrediction": "A String", # Required. Output of the baseline model.
          "context": "A String", # Required. Text to be summarized.
          "instruction": "A String", # Required. Summarization prompt for LLM.
          "prediction": "A String", # Required. Output of the candidate model.
          "reference": "A String", # Optional. Ground truth used to compare against the prediction.
        },
        "metricSpec": { # Spec for pairwise summarization quality score metric. # Required. Spec for pairwise summarization quality score metric.
          "useReference": True or False, # Optional. Whether to use instance.reference to compute pairwise summarization quality.
          "version": 42, # Optional. Which version to use for evaluation.
        },
      },
      "pointwiseMetricInput": { # Input for pointwise metric. # Input for pointwise metric.
        "instance": { # Pointwise metric instance. Usually one instance corresponds to one row in an evaluation dataset. # Required. Pointwise metric instance.
          "contentMapInstance": { # Map of placeholder in metric prompt template to contents of model input. # Key-value contents for the mutlimodality input, including text, image, video, audio, and pdf, etc. The key is placeholder in metric prompt template, and the value is the multimodal content.
            "values": { # Optional. Map of placeholder to contents.
              "a_key": { # Repeated Content type.
                "contents": [ # Optional. Repeated contents.
                  { # The structured data content of a message. A Content message contains a `role` field, which indicates the producer of the content, and a `parts` field, which contains the multi-part data of the message.
                    "parts": [ # Required. A list of Part objects that make up a single message. Parts of a message can have different MIME types. A Content message must have at least one Part.
                      { # 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`. For media types that are not text, `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.
                        "codeExecutionResult": { # Result of executing the ExecutableCode. Generated only when the `CodeExecution` tool is used. # Optional. The result of executing the ExecutableCode.
                          "outcome": "A String", # Required. Outcome of the code execution.
                          "output": "A String", # Optional. Contains stdout when code execution is successful, stderr or other description otherwise.
                        },
                        "executableCode": { # 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. # Optional. Code generated by the model that is intended to be executed.
                          "code": "A String", # Required. The code to be executed.
                          "language": "A String", # Required. Programming language of the `code`.
                        },
                        "fileData": { # URI-based data. A FileData message contains a URI pointing to data of a specific media type. It is used to represent images, audio, and video stored in Google Cloud Storage. # Optional. The URI-based data of the part. This can be used to include files from Google Cloud Storage.
                          "displayName": "A String", # Optional. The display name of the file. Used to provide a label or filename to distinguish files. This field is only returned in `PromptMessage` for prompt management. It is used in the Gemini calls only when server side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                          "fileUri": "A String", # Required. The URI of the file in Google Cloud Storage.
                          "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                        },
                        "functionCall": { # 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. # Optional. A predicted function call returned from the model. This contains the name of the function to call and the arguments to pass to the function.
                          "args": { # Optional. The function parameters and values in JSON object format. See FunctionDeclaration.parameters for parameter details.
                            "a_key": "", # Properties of the object.
                          },
                          "name": "A String", # Optional. The name of the function to call. Matches FunctionDeclaration.name.
                          "partialArgs": [ # Optional. The partial argument value of the function call. If provided, represents the arguments/fields that are streamed incrementally.
                            { # Partial argument value of the function call.
                              "boolValue": True or False, # Optional. Represents a boolean value.
                              "jsonPath": "A String", # Required. A JSON Path (RFC 9535) to the argument being streamed. https://datatracker.ietf.org/doc/html/rfc9535. e.g. "$.foo.bar[0].data".
                              "nullValue": "A String", # Optional. Represents a null value.
                              "numberValue": 3.14, # Optional. Represents a double value.
                              "stringValue": "A String", # Optional. Represents a string value.
                              "willContinue": True or False, # Optional. Whether this is not the last part of the same json_path. If true, another PartialArg message for the current json_path is expected to follow.
                            },
                          ],
                          "willContinue": True or False, # Optional. Whether this is the last part of the FunctionCall. If true, another partial message for the current FunctionCall is expected to follow.
                        },
                        "functionResponse": { # 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. # Optional. The result of a function call. This is used to provide the model with the result of a function call that it predicted.
                          "name": "A String", # Required. The name of the function to call. Matches FunctionDeclaration.name and FunctionCall.name.
                          "parts": [ # Optional. Ordered `Parts` that constitute a function response. Parts may have different IANA MIME types.
                            { # A datatype containing media that is part of a `FunctionResponse` message. A `FunctionResponsePart` consists of data which has an associated datatype. A `FunctionResponsePart` can only contain one of the accepted types in `FunctionResponsePart.data`. A `FunctionResponsePart` must have a fixed IANA MIME type identifying the type and subtype of the media if the `inline_data` field is filled with raw bytes.
                              "fileData": { # URI based data for function response. # URI based data.
                                "displayName": "A String", # 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.
                                "fileUri": "A String", # Required. URI.
                                "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                              },
                              "inlineData": { # Raw media bytes for function response. Text should not be sent as raw bytes, use the 'text' field. # Inline media bytes.
                                "data": "A String", # Required. Raw bytes.
                                "displayName": "A String", # 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.
                                "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                              },
                            },
                          ],
                          "response": { # 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.
                            "a_key": "", # Properties of the object.
                          },
                          "scheduling": "A String", # Optional. Specifies how the response should be scheduled in the conversation. Only applicable to NON_BLOCKING function calls, is ignored otherwise. Defaults to WHEN_IDLE.
                        },
                        "inlineData": { # A content blob. A Blob contains data of a specific media type. It is used to represent images, audio, and video. # Optional. The inline data content of the part. This can be used to include images, audio, or video in a request.
                          "data": "A String", # Required. The raw bytes of the data.
                          "displayName": "A String", # Optional. The 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 used in the Gemini calls only when server-side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                          "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                        },
                        "mediaResolution": { # per part media resolution. Media resolution for the input media. # per part media resolution. Media resolution for the input media.
                          "level": "A String", # The tokenization quality used for given media.
                        },
                        "text": "A String", # Optional. The text content of the part. When sent from the VSCode Gemini Code Assist extension, references to @mentioned items will be converted to markdown boldface text. For example `@my-repo` will be converted to and sent as `**my-repo**` by the IDE agent.
                        "thought": True or False, # Optional. Indicates whether the `part` represents the model's thought process or reasoning.
                        "thoughtSignature": "A String", # Optional. An opaque signature for the thought so it can be reused in subsequent requests.
                        "videoMetadata": { # Provides metadata for a video, including the start and end offsets for clipping and the frame rate. # Optional. Video metadata. The metadata should only be specified while the video data is presented in inline_data or file_data.
                          "endOffset": "A String", # Optional. The end offset of the video.
                          "fps": 3.14, # Optional. The frame rate of the video sent to the model. If not specified, the default value is 1.0. The valid range is (0.0, 24.0].
                          "startOffset": "A String", # Optional. The start offset of the video.
                        },
                      },
                    ],
                    "role": "A String", # Optional. The producer of the content. Must be either 'user' or 'model'. If not set, the service will default to 'user'.
                  },
                ],
              },
            },
          },
          "jsonInstance": "A String", # Instance specified as a json string. String key-value pairs are expected in the json_instance to render PointwiseMetricSpec.instance_prompt_template.
        },
        "metricSpec": { # Spec for pointwise metric. # Required. Spec for pointwise metric.
          "customOutputFormatConfig": { # Spec for custom output format configuration. # Optional. CustomOutputFormatConfig allows customization of metric output. By default, metrics return a score and explanation. When this config is set, the default output is replaced with either: - The raw output string. - A parsed output based on a user-defined schema. If a custom format is chosen, the `score` and `explanation` fields in the corresponding metric result will be empty.
            "returnRawOutput": True or False, # Optional. Whether to return raw output.
          },
          "metricPromptTemplate": "A String", # Required. Metric prompt template for pointwise metric.
          "systemInstruction": "A String", # Optional. System instructions for pointwise metric.
        },
      },
      "questionAnsweringCorrectnessInput": { # Input for question answering correctness metric. # Input for question answering correctness metric.
        "instance": { # Spec for question answering correctness instance. # Required. Question answering correctness instance.
          "context": "A String", # Optional. Text provided as context to answer the question.
          "instruction": "A String", # Required. The question asked and other instruction in the inference prompt.
          "prediction": "A String", # Required. Output of the evaluated model.
          "reference": "A String", # Optional. Ground truth used to compare against the prediction.
        },
        "metricSpec": { # Spec for question answering correctness metric. # Required. Spec for question answering correctness score metric.
          "useReference": True or False, # Optional. Whether to use instance.reference to compute question answering correctness.
          "version": 42, # Optional. Which version to use for evaluation.
        },
      },
      "questionAnsweringHelpfulnessInput": { # Input for question answering helpfulness metric. # Input for question answering helpfulness metric.
        "instance": { # Spec for question answering helpfulness instance. # Required. Question answering helpfulness instance.
          "context": "A String", # Optional. Text provided as context to answer the question.
          "instruction": "A String", # Required. The question asked and other instruction in the inference prompt.
          "prediction": "A String", # Required. Output of the evaluated model.
          "reference": "A String", # Optional. Ground truth used to compare against the prediction.
        },
        "metricSpec": { # Spec for question answering helpfulness metric. # Required. Spec for question answering helpfulness score metric.
          "useReference": True or False, # Optional. Whether to use instance.reference to compute question answering helpfulness.
          "version": 42, # Optional. Which version to use for evaluation.
        },
      },
      "questionAnsweringQualityInput": { # Input for question answering quality metric. # Input for question answering quality metric.
        "instance": { # Spec for question answering quality instance. # Required. Question answering quality instance.
          "context": "A String", # Required. Text to answer the question.
          "instruction": "A String", # Required. Question Answering prompt for LLM.
          "prediction": "A String", # Required. Output of the evaluated model.
          "reference": "A String", # Optional. Ground truth used to compare against the prediction.
        },
        "metricSpec": { # Spec for question answering quality score metric. # Required. Spec for question answering quality score metric.
          "useReference": True or False, # Optional. Whether to use instance.reference to compute question answering quality.
          "version": 42, # Optional. Which version to use for evaluation.
        },
      },
      "questionAnsweringRelevanceInput": { # Input for question answering relevance metric. # Input for question answering relevance metric.
        "instance": { # Spec for question answering relevance instance. # Required. Question answering relevance instance.
          "context": "A String", # Optional. Text provided as context to answer the question.
          "instruction": "A String", # Required. The question asked and other instruction in the inference prompt.
          "prediction": "A String", # Required. Output of the evaluated model.
          "reference": "A String", # Optional. Ground truth used to compare against the prediction.
        },
        "metricSpec": { # Spec for question answering relevance metric. # Required. Spec for question answering relevance score metric.
          "useReference": True or False, # Optional. Whether to use instance.reference to compute question answering relevance.
          "version": 42, # Optional. Which version to use for evaluation.
        },
      },
      "rougeInput": { # Input for rouge metric. # Instances and metric spec for rouge metric.
        "instances": [ # Required. Repeated rouge instances.
          { # Spec for rouge instance.
            "prediction": "A String", # Required. Output of the evaluated model.
            "reference": "A String", # Required. Ground truth used to compare against the prediction.
          },
        ],
        "metricSpec": { # 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. # Required. Spec for rouge score metric.
          "rougeType": "A String", # Optional. Supported rouge types are rougen[1-9], rougeL, and rougeLsum.
          "splitSummaries": True or False, # Optional. Whether to split summaries while using rougeLsum.
          "useStemmer": True or False, # Optional. Whether to use stemmer to compute rouge score.
        },
      },
      "rubricBasedInstructionFollowingInput": { # Instance and metric spec for RubricBasedInstructionFollowing metric. # Rubric Based Instruction Following metric.
        "instance": { # Instance for RubricBasedInstructionFollowing metric - one instance corresponds to one row in an evaluation dataset. # Required. Instance for RubricBasedInstructionFollowing metric.
          "jsonInstance": "A String", # Required. Instance specified as a json string. String key-value pairs are expected in the json_instance to render RubricBasedInstructionFollowing prompt templates.
        },
        "metricSpec": { # Spec for RubricBasedInstructionFollowing metric - returns rubrics and verdicts corresponding to rubrics along with overall score. # Required. Spec for RubricBasedInstructionFollowing metric.
        },
      },
      "safetyInput": { # Input for safety metric. # Input for safety metric.
        "instance": { # Spec for safety instance. # Required. Safety instance.
          "prediction": "A String", # Required. Output of the evaluated model.
        },
        "metricSpec": { # Spec for safety metric. # Required. Spec for safety metric.
          "version": 42, # Optional. Which version to use for evaluation.
        },
      },
      "summarizationHelpfulnessInput": { # Input for summarization helpfulness metric. # Input for summarization helpfulness metric.
        "instance": { # Spec for summarization helpfulness instance. # Required. Summarization helpfulness instance.
          "context": "A String", # Required. Text to be summarized.
          "instruction": "A String", # Optional. Summarization prompt for LLM.
          "prediction": "A String", # Required. Output of the evaluated model.
          "reference": "A String", # Optional. Ground truth used to compare against the prediction.
        },
        "metricSpec": { # Spec for summarization helpfulness score metric. # Required. Spec for summarization helpfulness score metric.
          "useReference": True or False, # Optional. Whether to use instance.reference to compute summarization helpfulness.
          "version": 42, # Optional. Which version to use for evaluation.
        },
      },
      "summarizationQualityInput": { # Input for summarization quality metric. # Input for summarization quality metric.
        "instance": { # Spec for summarization quality instance. # Required. Summarization quality instance.
          "context": "A String", # Required. Text to be summarized.
          "instruction": "A String", # Required. Summarization prompt for LLM.
          "prediction": "A String", # Required. Output of the evaluated model.
          "reference": "A String", # Optional. Ground truth used to compare against the prediction.
        },
        "metricSpec": { # Spec for summarization quality score metric. # Required. Spec for summarization quality score metric.
          "useReference": True or False, # Optional. Whether to use instance.reference to compute summarization quality.
          "version": 42, # Optional. Which version to use for evaluation.
        },
      },
      "summarizationVerbosityInput": { # Input for summarization verbosity metric. # Input for summarization verbosity metric.
        "instance": { # Spec for summarization verbosity instance. # Required. Summarization verbosity instance.
          "context": "A String", # Required. Text to be summarized.
          "instruction": "A String", # Optional. Summarization prompt for LLM.
          "prediction": "A String", # Required. Output of the evaluated model.
          "reference": "A String", # Optional. Ground truth used to compare against the prediction.
        },
        "metricSpec": { # Spec for summarization verbosity score metric. # Required. Spec for summarization verbosity score metric.
          "useReference": True or False, # Optional. Whether to use instance.reference to compute summarization verbosity.
          "version": 42, # Optional. Which version to use for evaluation.
        },
      },
      "toolCallValidInput": { # Input for tool call valid metric. # Tool call metric instances. Input for tool call valid metric.
        "instances": [ # Required. Repeated tool call valid instances.
          { # Spec for tool call valid instance.
            "prediction": "A String", # Required. Output of the evaluated model.
            "reference": "A String", # Required. Ground truth used to compare against the prediction.
          },
        ],
        "metricSpec": { # Spec for tool call valid metric. # Required. Spec for tool call valid metric.
        },
      },
      "toolNameMatchInput": { # Input for tool name match metric. # Input for tool name match metric.
        "instances": [ # Required. Repeated tool name match instances.
          { # Spec for tool name match instance.
            "prediction": "A String", # Required. Output of the evaluated model.
            "reference": "A String", # Required. Ground truth used to compare against the prediction.
          },
        ],
        "metricSpec": { # Spec for tool name match metric. # Required. Spec for tool name match metric.
        },
      },
      "toolParameterKeyMatchInput": { # Input for tool parameter key match metric. # Input for tool parameter key match metric.
        "instances": [ # Required. Repeated tool parameter key match instances.
          { # Spec for tool parameter key match instance.
            "prediction": "A String", # Required. Output of the evaluated model.
            "reference": "A String", # Required. Ground truth used to compare against the prediction.
          },
        ],
        "metricSpec": { # Spec for tool parameter key match metric. # Required. Spec for tool parameter key match metric.
        },
      },
      "toolParameterKvMatchInput": { # Input for tool parameter key value match metric. # Input for tool parameter key value match metric.
        "instances": [ # Required. Repeated tool parameter key value match instances.
          { # Spec for tool parameter key value match instance.
            "prediction": "A String", # Required. Output of the evaluated model.
            "reference": "A String", # Required. Ground truth used to compare against the prediction.
          },
        ],
        "metricSpec": { # Spec for tool parameter key value match metric. # Required. Spec for tool parameter key value match metric.
          "useStrictStringMatch": True or False, # Optional. Whether to use STRICT string match on parameter values.
        },
      },
      "trajectoryAnyOrderMatchInput": { # Instances and metric spec for TrajectoryAnyOrderMatch metric. # Input for trajectory match any order metric.
        "instances": [ # Required. Repeated TrajectoryAnyOrderMatch instance.
          { # Spec for TrajectoryAnyOrderMatch instance.
            "predictedTrajectory": { # Spec for trajectory. # Required. Spec for predicted tool call trajectory.
              "toolCalls": [ # Required. Tool calls in the trajectory.
                { # Spec for tool call.
                  "toolInput": "A String", # Optional. Spec for tool input
                  "toolName": "A String", # Required. Spec for tool name
                },
              ],
            },
            "referenceTrajectory": { # Spec for trajectory. # Required. Spec for reference tool call trajectory.
              "toolCalls": [ # Required. Tool calls in the trajectory.
                { # Spec for tool call.
                  "toolInput": "A String", # Optional. Spec for tool input
                  "toolName": "A String", # Required. Spec for tool name
                },
              ],
            },
          },
        ],
        "metricSpec": { # Spec for TrajectoryAnyOrderMatch metric - returns 1 if all tool calls in the reference trajectory appear in the predicted trajectory in any order, else 0. # Required. Spec for TrajectoryAnyOrderMatch metric.
        },
      },
      "trajectoryExactMatchInput": { # Instances and metric spec for TrajectoryExactMatch metric. # Input for trajectory exact match metric.
        "instances": [ # Required. Repeated TrajectoryExactMatch instance.
          { # Spec for TrajectoryExactMatch instance.
            "predictedTrajectory": { # Spec for trajectory. # Required. Spec for predicted tool call trajectory.
              "toolCalls": [ # Required. Tool calls in the trajectory.
                { # Spec for tool call.
                  "toolInput": "A String", # Optional. Spec for tool input
                  "toolName": "A String", # Required. Spec for tool name
                },
              ],
            },
            "referenceTrajectory": { # Spec for trajectory. # Required. Spec for reference tool call trajectory.
              "toolCalls": [ # Required. Tool calls in the trajectory.
                { # Spec for tool call.
                  "toolInput": "A String", # Optional. Spec for tool input
                  "toolName": "A String", # Required. Spec for tool name
                },
              ],
            },
          },
        ],
        "metricSpec": { # Spec for TrajectoryExactMatch metric - returns 1 if tool calls in the reference trajectory exactly match the predicted trajectory, else 0. # Required. Spec for TrajectoryExactMatch metric.
        },
      },
      "trajectoryInOrderMatchInput": { # Instances and metric spec for TrajectoryInOrderMatch metric. # Input for trajectory in order match metric.
        "instances": [ # Required. Repeated TrajectoryInOrderMatch instance.
          { # Spec for TrajectoryInOrderMatch instance.
            "predictedTrajectory": { # Spec for trajectory. # Required. Spec for predicted tool call trajectory.
              "toolCalls": [ # Required. Tool calls in the trajectory.
                { # Spec for tool call.
                  "toolInput": "A String", # Optional. Spec for tool input
                  "toolName": "A String", # Required. Spec for tool name
                },
              ],
            },
            "referenceTrajectory": { # Spec for trajectory. # Required. Spec for reference tool call trajectory.
              "toolCalls": [ # Required. Tool calls in the trajectory.
                { # Spec for tool call.
                  "toolInput": "A String", # Optional. Spec for tool input
                  "toolName": "A String", # Required. Spec for tool name
                },
              ],
            },
          },
        ],
        "metricSpec": { # Spec for TrajectoryInOrderMatch metric - returns 1 if tool calls in the reference trajectory appear in the predicted trajectory in the same order, else 0. # Required. Spec for TrajectoryInOrderMatch metric.
        },
      },
      "trajectoryPrecisionInput": { # Instances and metric spec for TrajectoryPrecision metric. # Input for trajectory precision metric.
        "instances": [ # Required. Repeated TrajectoryPrecision instance.
          { # Spec for TrajectoryPrecision instance.
            "predictedTrajectory": { # Spec for trajectory. # Required. Spec for predicted tool call trajectory.
              "toolCalls": [ # Required. Tool calls in the trajectory.
                { # Spec for tool call.
                  "toolInput": "A String", # Optional. Spec for tool input
                  "toolName": "A String", # Required. Spec for tool name
                },
              ],
            },
            "referenceTrajectory": { # Spec for trajectory. # Required. Spec for reference tool call trajectory.
              "toolCalls": [ # Required. Tool calls in the trajectory.
                { # Spec for tool call.
                  "toolInput": "A String", # Optional. Spec for tool input
                  "toolName": "A String", # Required. Spec for tool name
                },
              ],
            },
          },
        ],
        "metricSpec": { # Spec for TrajectoryPrecision metric - returns a float score based on average precision of individual tool calls. # Required. Spec for TrajectoryPrecision metric.
        },
      },
      "trajectoryRecallInput": { # Instances and metric spec for TrajectoryRecall metric. # Input for trajectory recall metric.
        "instances": [ # Required. Repeated TrajectoryRecall instance.
          { # Spec for TrajectoryRecall instance.
            "predictedTrajectory": { # Spec for trajectory. # Required. Spec for predicted tool call trajectory.
              "toolCalls": [ # Required. Tool calls in the trajectory.
                { # Spec for tool call.
                  "toolInput": "A String", # Optional. Spec for tool input
                  "toolName": "A String", # Required. Spec for tool name
                },
              ],
            },
            "referenceTrajectory": { # Spec for trajectory. # Required. Spec for reference tool call trajectory.
              "toolCalls": [ # Required. Tool calls in the trajectory.
                { # Spec for tool call.
                  "toolInput": "A String", # Optional. Spec for tool input
                  "toolName": "A String", # Required. Spec for tool name
                },
              ],
            },
          },
        ],
        "metricSpec": { # Spec for TrajectoryRecall metric - returns a float score based on average recall of individual tool calls. # Required. Spec for TrajectoryRecall metric.
        },
      },
      "trajectorySingleToolUseInput": { # Instances and metric spec for TrajectorySingleToolUse metric. # Input for trajectory single tool use metric.
        "instances": [ # Required. Repeated TrajectorySingleToolUse instance.
          { # Spec for TrajectorySingleToolUse instance.
            "predictedTrajectory": { # Spec for trajectory. # Required. Spec for predicted tool call trajectory.
              "toolCalls": [ # Required. Tool calls in the trajectory.
                { # Spec for tool call.
                  "toolInput": "A String", # Optional. Spec for tool input
                  "toolName": "A String", # Required. Spec for tool name
                },
              ],
            },
          },
        ],
        "metricSpec": { # Spec for TrajectorySingleToolUse metric - returns 1 if tool is present in the predicted trajectory, else 0. # Required. Spec for TrajectorySingleToolUse metric.
          "toolName": "A String", # Required. Spec for tool name to be checked for in the predicted trajectory.
        },
      },
    }

      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # Response message for EvaluationService.EvaluateInstances.
      "bleuResults": { # Results for bleu metric. # Results for bleu metric.
        "bleuMetricValues": [ # Output only. Bleu metric values.
          { # Bleu metric value for an instance.
            "score": 3.14, # Output only. Bleu score.
          },
        ],
      },
      "coherenceResult": { # Spec for coherence result. # Result for coherence metric.
        "confidence": 3.14, # Output only. Confidence for coherence score.
        "explanation": "A String", # Output only. Explanation for coherence score.
        "score": 3.14, # Output only. Coherence score.
      },
      "cometResult": { # Spec for Comet result - calculates the comet score for the given instance using the version specified in the spec. # Translation metrics. Result for Comet metric.
        "score": 3.14, # Output only. Comet score. Range depends on version.
      },
      "exactMatchResults": { # Results for exact match metric. # Auto metric evaluation results. Results for exact match metric.
        "exactMatchMetricValues": [ # Output only. Exact match metric values.
          { # Exact match metric value for an instance.
            "score": 3.14, # Output only. Exact match score.
          },
        ],
      },
      "fluencyResult": { # Spec for fluency result. # LLM-based metric evaluation result. General text generation metrics, applicable to other categories. Result for fluency metric.
        "confidence": 3.14, # Output only. Confidence for fluency score.
        "explanation": "A String", # Output only. Explanation for fluency score.
        "score": 3.14, # Output only. Fluency score.
      },
      "fulfillmentResult": { # Spec for fulfillment result. # Result for fulfillment metric.
        "confidence": 3.14, # Output only. Confidence for fulfillment score.
        "explanation": "A String", # Output only. Explanation for fulfillment score.
        "score": 3.14, # Output only. Fulfillment score.
      },
      "groundednessResult": { # Spec for groundedness result. # Result for groundedness metric.
        "confidence": 3.14, # Output only. Confidence for groundedness score.
        "explanation": "A String", # Output only. Explanation for groundedness score.
        "score": 3.14, # Output only. Groundedness score.
      },
      "metricResults": [ # 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.
        { # Result for a single metric on a single instance.
          "error": { # 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). # Output only. The error status for the metric result.
            "code": 42, # The status code, which should be an enum value of google.rpc.Code.
            "details": [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
              {
                "a_key": "", # Properties of the object. Contains field @type with type URL.
              },
            ],
            "message": "A String", # 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.
          },
          "explanation": "A String", # Output only. The explanation for the metric result.
          "rubricVerdicts": [ # Output only. For rubric-based metrics, the verdicts for each rubric.
            { # Represents the verdict of an evaluation against a single rubric.
              "evaluatedRubric": { # Message representing a single testable criterion for evaluation. One input prompt could have multiple rubrics. # Required. The full rubric definition that was evaluated. Storing this ensures the verdict is self-contained and understandable, especially if the original rubric definition changes or was dynamically generated.
                "content": { # Content of the rubric, defining the testable criteria. # Required. The actual testable criteria for the rubric.
                  "property": { # Defines criteria based on a specific property. # Evaluation criteria based on a specific property.
                    "description": "A String", # Description of the property being evaluated. Example: "The model's response is grammatically correct."
                  },
                },
                "importance": "A String", # Optional. The relative importance of this rubric.
                "rubricId": "A String", # Unique identifier for the rubric. This ID is used to refer to this rubric, e.g., in RubricVerdict.
                "type": "A String", # 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".
              },
              "reasoning": "A String", # 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.
              "verdict": True or False, # Required. Outcome of the evaluation against the rubric, represented as a boolean. `true` indicates a "Pass", `false` indicates a "Fail".
            },
          ],
          "score": 3.14, # Output only. The score for the metric. Please refer to each metric's documentation for the meaning of the score.
        },
      ],
      "metricxResult": { # Spec for MetricX result - calculates the MetricX score for the given instance using the version specified in the spec. # Result for Metricx metric.
        "score": 3.14, # Output only. MetricX score. Range depends on version.
      },
      "pairwiseMetricResult": { # Spec for pairwise metric result. # Result for pairwise metric.
        "customOutput": { # Spec for custom output. # Output only. Spec for custom output.
          "rawOutputs": { # Raw output. # Output only. List of raw output strings.
            "rawOutput": [ # Output only. Raw output string.
              "A String",
            ],
          },
        },
        "explanation": "A String", # Output only. Explanation for pairwise metric score.
        "pairwiseChoice": "A String", # Output only. Pairwise metric choice.
      },
      "pairwiseQuestionAnsweringQualityResult": { # Spec for pairwise question answering quality result. # Result for pairwise question answering quality metric.
        "confidence": 3.14, # Output only. Confidence for question answering quality score.
        "explanation": "A String", # Output only. Explanation for question answering quality score.
        "pairwiseChoice": "A String", # Output only. Pairwise question answering prediction choice.
      },
      "pairwiseSummarizationQualityResult": { # Spec for pairwise summarization quality result. # Result for pairwise summarization quality metric.
        "confidence": 3.14, # Output only. Confidence for summarization quality score.
        "explanation": "A String", # Output only. Explanation for summarization quality score.
        "pairwiseChoice": "A String", # Output only. Pairwise summarization prediction choice.
      },
      "pointwiseMetricResult": { # Spec for pointwise metric result. # Generic metrics. Result for pointwise metric.
        "customOutput": { # Spec for custom output. # Output only. Spec for custom output.
          "rawOutputs": { # Raw output. # Output only. List of raw output strings.
            "rawOutput": [ # Output only. Raw output string.
              "A String",
            ],
          },
        },
        "explanation": "A String", # Output only. Explanation for pointwise metric score.
        "score": 3.14, # Output only. Pointwise metric score.
      },
      "questionAnsweringCorrectnessResult": { # Spec for question answering correctness result. # Result for question answering correctness metric.
        "confidence": 3.14, # Output only. Confidence for question answering correctness score.
        "explanation": "A String", # Output only. Explanation for question answering correctness score.
        "score": 3.14, # Output only. Question Answering Correctness score.
      },
      "questionAnsweringHelpfulnessResult": { # Spec for question answering helpfulness result. # Result for question answering helpfulness metric.
        "confidence": 3.14, # Output only. Confidence for question answering helpfulness score.
        "explanation": "A String", # Output only. Explanation for question answering helpfulness score.
        "score": 3.14, # Output only. Question Answering Helpfulness score.
      },
      "questionAnsweringQualityResult": { # Spec for question answering quality result. # Question answering only metrics. Result for question answering quality metric.
        "confidence": 3.14, # Output only. Confidence for question answering quality score.
        "explanation": "A String", # Output only. Explanation for question answering quality score.
        "score": 3.14, # Output only. Question Answering Quality score.
      },
      "questionAnsweringRelevanceResult": { # Spec for question answering relevance result. # Result for question answering relevance metric.
        "confidence": 3.14, # Output only. Confidence for question answering relevance score.
        "explanation": "A String", # Output only. Explanation for question answering relevance score.
        "score": 3.14, # Output only. Question Answering Relevance score.
      },
      "rougeResults": { # Results for rouge metric. # Results for rouge metric.
        "rougeMetricValues": [ # Output only. Rouge metric values.
          { # Rouge metric value for an instance.
            "score": 3.14, # Output only. Rouge score.
          },
        ],
      },
      "rubricBasedInstructionFollowingResult": { # Result for RubricBasedInstructionFollowing metric. # Result for rubric based instruction following metric.
        "rubricCritiqueResults": [ # Output only. List of per rubric critique results.
          { # Rubric critique result.
            "rubric": "A String", # Output only. Rubric to be evaluated.
            "verdict": True or False, # Output only. Verdict for the rubric - true if the rubric is met, false otherwise.
          },
        ],
        "score": 3.14, # Output only. Overall score for the instruction following.
      },
      "safetyResult": { # Spec for safety result. # Result for safety metric.
        "confidence": 3.14, # Output only. Confidence for safety score.
        "explanation": "A String", # Output only. Explanation for safety score.
        "score": 3.14, # Output only. Safety score.
      },
      "summarizationHelpfulnessResult": { # Spec for summarization helpfulness result. # Result for summarization helpfulness metric.
        "confidence": 3.14, # Output only. Confidence for summarization helpfulness score.
        "explanation": "A String", # Output only. Explanation for summarization helpfulness score.
        "score": 3.14, # Output only. Summarization Helpfulness score.
      },
      "summarizationQualityResult": { # Spec for summarization quality result. # Summarization only metrics. Result for summarization quality metric.
        "confidence": 3.14, # Output only. Confidence for summarization quality score.
        "explanation": "A String", # Output only. Explanation for summarization quality score.
        "score": 3.14, # Output only. Summarization Quality score.
      },
      "summarizationVerbosityResult": { # Spec for summarization verbosity result. # Result for summarization verbosity metric.
        "confidence": 3.14, # Output only. Confidence for summarization verbosity score.
        "explanation": "A String", # Output only. Explanation for summarization verbosity score.
        "score": 3.14, # Output only. Summarization Verbosity score.
      },
      "toolCallValidResults": { # Results for tool call valid metric. # Tool call metrics. Results for tool call valid metric.
        "toolCallValidMetricValues": [ # Output only. Tool call valid metric values.
          { # Tool call valid metric value for an instance.
            "score": 3.14, # Output only. Tool call valid score.
          },
        ],
      },
      "toolNameMatchResults": { # Results for tool name match metric. # Results for tool name match metric.
        "toolNameMatchMetricValues": [ # Output only. Tool name match metric values.
          { # Tool name match metric value for an instance.
            "score": 3.14, # Output only. Tool name match score.
          },
        ],
      },
      "toolParameterKeyMatchResults": { # Results for tool parameter key match metric. # Results for tool parameter key match metric.
        "toolParameterKeyMatchMetricValues": [ # Output only. Tool parameter key match metric values.
          { # Tool parameter key match metric value for an instance.
            "score": 3.14, # Output only. Tool parameter key match score.
          },
        ],
      },
      "toolParameterKvMatchResults": { # Results for tool parameter key value match metric. # Results for tool parameter key value match metric.
        "toolParameterKvMatchMetricValues": [ # Output only. Tool parameter key value match metric values.
          { # Tool parameter key value match metric value for an instance.
            "score": 3.14, # Output only. Tool parameter key value match score.
          },
        ],
      },
      "trajectoryAnyOrderMatchResults": { # Results for TrajectoryAnyOrderMatch metric. # Result for trajectory any order match metric.
        "trajectoryAnyOrderMatchMetricValues": [ # Output only. TrajectoryAnyOrderMatch metric values.
          { # TrajectoryAnyOrderMatch metric value for an instance.
            "score": 3.14, # Output only. TrajectoryAnyOrderMatch score.
          },
        ],
      },
      "trajectoryExactMatchResults": { # Results for TrajectoryExactMatch metric. # Result for trajectory exact match metric.
        "trajectoryExactMatchMetricValues": [ # Output only. TrajectoryExactMatch metric values.
          { # TrajectoryExactMatch metric value for an instance.
            "score": 3.14, # Output only. TrajectoryExactMatch score.
          },
        ],
      },
      "trajectoryInOrderMatchResults": { # Results for TrajectoryInOrderMatch metric. # Result for trajectory in order match metric.
        "trajectoryInOrderMatchMetricValues": [ # Output only. TrajectoryInOrderMatch metric values.
          { # TrajectoryInOrderMatch metric value for an instance.
            "score": 3.14, # Output only. TrajectoryInOrderMatch score.
          },
        ],
      },
      "trajectoryPrecisionResults": { # Results for TrajectoryPrecision metric. # Result for trajectory precision metric.
        "trajectoryPrecisionMetricValues": [ # Output only. TrajectoryPrecision metric values.
          { # TrajectoryPrecision metric value for an instance.
            "score": 3.14, # Output only. TrajectoryPrecision score.
          },
        ],
      },
      "trajectoryRecallResults": { # Results for TrajectoryRecall metric. # Results for trajectory recall metric.
        "trajectoryRecallMetricValues": [ # Output only. TrajectoryRecall metric values.
          { # TrajectoryRecall metric value for an instance.
            "score": 3.14, # Output only. TrajectoryRecall score.
          },
        ],
      },
      "trajectorySingleToolUseResults": { # Results for TrajectorySingleToolUse metric. # Results for trajectory single tool use metric.
        "trajectorySingleToolUseMetricValues": [ # Output only. TrajectorySingleToolUse metric values.
          { # TrajectorySingleToolUse metric value for an instance.
            "score": 3.14, # Output only. TrajectorySingleToolUse score.
          },
        ],
      },
    }

`generateInstanceRubrics(location, body=None, x__xgafv=None)`

    Generates rubrics for a given prompt. A rubric represents a single testable criterion for evaluation. One input prompt could have multiple rubrics This RPC allows users to get suggested rubrics based on provided prompt, which can then be reviewed and used for subsequent evaluations.

    Args:
      location: string, Required. The resource name of the Location to generate rubrics from. Format: `projects/{project}/locations/{location}` (required)
      body: object, The request body.
        The object takes the form of:

    { # Request message for EvaluationService.GenerateInstanceRubrics.
      "agentConfig": { # Deprecated: Use `google.cloud.aiplatform.master.AgentConfig` in `agent_eval_data` instead. Configuration for an Agent. # Optional. Agent configuration, required for agent-based rubric generation.
        "agentId": "A String", # Optional. Unique identifier of the agent. This ID is used to refer to this agent, e.g., in AgentEvent.author, or in the `sub_agents` field. It must be unique within the `agents` map.
        "agentType": "A String", # Optional. The type or class of the agent (e.g., "LlmAgent", "RouterAgent", "ToolUseAgent"). Useful for the autorater to understand the expected behavior of the agent.
        "description": "A String", # Optional. A high-level description of the agent's role and responsibilities. Critical for evaluating if the agent is routing tasks correctly.
        "developerInstruction": { # Instance data used to populate placeholders in a metric prompt template. # Optional. Contains instructions from the developer for the agent. Can be static or a dynamic prompt template used with the `AgentEvent.state_delta` field.
          "contents": { # List of standard Content messages from Gemini API. # List of Gemini content data.
            "contents": [ # Optional. Repeated contents.
              { # The structured data content of a message. A Content message contains a `role` field, which indicates the producer of the content, and a `parts` field, which contains the multi-part data of the message.
                "parts": [ # Required. A list of Part objects that make up a single message. Parts of a message can have different MIME types. A Content message must have at least one Part.
                  { # 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`. For media types that are not text, `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.
                    "codeExecutionResult": { # Result of executing the ExecutableCode. Generated only when the `CodeExecution` tool is used. # Optional. The result of executing the ExecutableCode.
                      "outcome": "A String", # Required. Outcome of the code execution.
                      "output": "A String", # Optional. Contains stdout when code execution is successful, stderr or other description otherwise.
                    },
                    "executableCode": { # 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. # Optional. Code generated by the model that is intended to be executed.
                      "code": "A String", # Required. The code to be executed.
                      "language": "A String", # Required. Programming language of the `code`.
                    },
                    "fileData": { # URI-based data. A FileData message contains a URI pointing to data of a specific media type. It is used to represent images, audio, and video stored in Google Cloud Storage. # Optional. The URI-based data of the part. This can be used to include files from Google Cloud Storage.
                      "displayName": "A String", # Optional. The display name of the file. Used to provide a label or filename to distinguish files. This field is only returned in `PromptMessage` for prompt management. It is used in the Gemini calls only when server side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                      "fileUri": "A String", # Required. The URI of the file in Google Cloud Storage.
                      "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                    },
                    "functionCall": { # 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. # Optional. A predicted function call returned from the model. This contains the name of the function to call and the arguments to pass to the function.
                      "args": { # Optional. The function parameters and values in JSON object format. See FunctionDeclaration.parameters for parameter details.
                        "a_key": "", # Properties of the object.
                      },
                      "name": "A String", # Optional. The name of the function to call. Matches FunctionDeclaration.name.
                      "partialArgs": [ # Optional. The partial argument value of the function call. If provided, represents the arguments/fields that are streamed incrementally.
                        { # Partial argument value of the function call.
                          "boolValue": True or False, # Optional. Represents a boolean value.
                          "jsonPath": "A String", # Required. A JSON Path (RFC 9535) to the argument being streamed. https://datatracker.ietf.org/doc/html/rfc9535. e.g. "$.foo.bar[0].data".
                          "nullValue": "A String", # Optional. Represents a null value.
                          "numberValue": 3.14, # Optional. Represents a double value.
                          "stringValue": "A String", # Optional. Represents a string value.
                          "willContinue": True or False, # Optional. Whether this is not the last part of the same json_path. If true, another PartialArg message for the current json_path is expected to follow.
                        },
                      ],
                      "willContinue": True or False, # Optional. Whether this is the last part of the FunctionCall. If true, another partial message for the current FunctionCall is expected to follow.
                    },
                    "functionResponse": { # 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. # Optional. The result of a function call. This is used to provide the model with the result of a function call that it predicted.
                      "name": "A String", # Required. The name of the function to call. Matches FunctionDeclaration.name and FunctionCall.name.
                      "parts": [ # Optional. Ordered `Parts` that constitute a function response. Parts may have different IANA MIME types.
                        { # A datatype containing media that is part of a `FunctionResponse` message. A `FunctionResponsePart` consists of data which has an associated datatype. A `FunctionResponsePart` can only contain one of the accepted types in `FunctionResponsePart.data`. A `FunctionResponsePart` must have a fixed IANA MIME type identifying the type and subtype of the media if the `inline_data` field is filled with raw bytes.
                          "fileData": { # URI based data for function response. # URI based data.
                            "displayName": "A String", # 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.
                            "fileUri": "A String", # Required. URI.
                            "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                          },
                          "inlineData": { # Raw media bytes for function response. Text should not be sent as raw bytes, use the 'text' field. # Inline media bytes.
                            "data": "A String", # Required. Raw bytes.
                            "displayName": "A String", # 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.
                            "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                          },
                        },
                      ],
                      "response": { # 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.
                        "a_key": "", # Properties of the object.
                      },
                      "scheduling": "A String", # Optional. Specifies how the response should be scheduled in the conversation. Only applicable to NON_BLOCKING function calls, is ignored otherwise. Defaults to WHEN_IDLE.
                    },
                    "inlineData": { # A content blob. A Blob contains data of a specific media type. It is used to represent images, audio, and video. # Optional. The inline data content of the part. This can be used to include images, audio, or video in a request.
                      "data": "A String", # Required. The raw bytes of the data.
                      "displayName": "A String", # Optional. The 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 used in the Gemini calls only when server-side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                      "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                    },
                    "mediaResolution": { # per part media resolution. Media resolution for the input media. # per part media resolution. Media resolution for the input media.
                      "level": "A String", # The tokenization quality used for given media.
                    },
                    "text": "A String", # Optional. The text content of the part. When sent from the VSCode Gemini Code Assist extension, references to @mentioned items will be converted to markdown boldface text. For example `@my-repo` will be converted to and sent as `**my-repo**` by the IDE agent.
                    "thought": True or False, # Optional. Indicates whether the `part` represents the model's thought process or reasoning.
                    "thoughtSignature": "A String", # Optional. An opaque signature for the thought so it can be reused in subsequent requests.
                    "videoMetadata": { # Provides metadata for a video, including the start and end offsets for clipping and the frame rate. # Optional. Video metadata. The metadata should only be specified while the video data is presented in inline_data or file_data.
                      "endOffset": "A String", # Optional. The end offset of the video.
                      "fps": 3.14, # Optional. The frame rate of the video sent to the model. If not specified, the default value is 1.0. The valid range is (0.0, 24.0].
                      "startOffset": "A String", # Optional. The start offset of the video.
                    },
                  },
                ],
                "role": "A String", # Optional. The producer of the content. Must be either 'user' or 'model'. If not set, the service will default to 'user'.
              },
            ],
          },
          "text": "A String", # Text data.
        },
        "subAgents": [ # Optional. The list of valid agent IDs (names) that this agent can delegate to. This defines the directed edges in the agent system graph topology.
          "A String",
        ],
        "tools": { # Represents a list of tools for an agent. # List of tools.
          "tool": [ # Optional. List of tools: each tool can have multiple function declarations.
            { # 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).
              "codeExecution": { # 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. # Optional. CodeExecution tool type. Enables the model to execute code as part of generation.
              },
              "computerUse": { # Tool to support computer use. # Optional. Tool to support the model interacting directly with the computer. If enabled, it automatically populates computer-use specific Function Declarations.
                "environment": "A String", # Required. The environment being operated.
                "excludedPredefinedFunctions": [ # Optional. By default, [predefined functions](https://cloud.google.com/vertex-ai/generative-ai/docs/computer-use#supported-actions) are included in the final model call. Some of them can be explicitly excluded from being automatically included. This can serve two purposes: 1. Using a more restricted / different action space. 2. Improving the definitions / instructions of predefined functions.
                  "A String",
                ],
              },
              "enterpriseWebSearch": { # Tool to search public web data, powered by Vertex AI Search and Sec4 compliance. # Optional. Tool to support searching public web data, powered by Vertex AI Search and Sec4 compliance.
                "blockingConfidence": "A String", # Optional. Sites with confidence level chosen & above this value will be blocked from the search results.
                "excludeDomains": [ # Optional. List of domains to be excluded from the search results. The default limit is 2000 domains.
                  "A String",
                ],
              },
              "functionDeclarations": [ # 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.
                { # 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.
                  "behavior": "A String", # Optional. Specifies the function Behavior. If not specified, the system keeps the current function call behavior. This field is currently only supported by the BidiGenerateContent method.
                  "description": "A String", # Optional. Description and purpose of the function. Model uses it to decide how and whether to call the function.
                  "name": "A String", # 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, colons and dashes, with a maximum length of 128.
                  "parameters": { # Defines the schema of input and output data. This is a subset of the [OpenAPI 3.0 Schema Object](https://spec.openapis.org/oas/v3.0.3#schema-object). # Optional. Describes the parameters to this function in JSON Schema Object format. Reflects the Open API 3.03 Parameter Object. string Key: the name of the parameter. Parameter names are case sensitive. Schema Value: the Schema defining the type used for the parameter. For function with no parameters, this can be left unset. Parameter names must start with a letter or an underscore and must only contain chars a-z, A-Z, 0-9, or underscores with a maximum length of 64. Example with 1 required and 1 optional parameter: type: OBJECT properties: param1: type: STRING param2: type: INTEGER required: - param1
                    "additionalProperties": "", # Optional. If `type` is `OBJECT`, specifies how to handle properties not defined in `properties`. If it is a boolean `false`, no additional properties are allowed. If it is a schema, additional properties are allowed if they conform to the schema.
                    "anyOf": [ # Optional. The instance must be valid against any (one or more) of the subschemas listed in `any_of`.
                      # Object with schema name: GoogleCloudAiplatformV1Schema
                    ],
                    "default": "", # Optional. Default value to use if the field is not specified.
                    "defs": { # Optional. `defs` provides a map of schema definitions that can be reused by `ref` elsewhere in the schema. Only allowed at root level of the schema.
                      "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                    },
                    "description": "A String", # Optional. Describes the data. The model uses this field to understand the purpose of the schema and how to use it. It is a best practice to provide a clear and descriptive explanation for the schema and its properties here, rather than in the prompt.
                    "enum": [ # Optional. Possible values of the field. This field can be used to restrict a value to a fixed set of values. To mark a field as an enum, set `format` to `enum` and provide the list of possible values in `enum`. For example: 1. To define directions: `{type:STRING, format:enum, enum:["EAST", "NORTH", "SOUTH", "WEST"]}` 2. To define apartment numbers: `{type:INTEGER, format:enum, enum:["101", "201", "301"]}`
                      "A String",
                    ],
                    "example": "", # Optional. Example of an instance of this schema.
                    "format": "A String", # Optional. The format of the data. For `NUMBER` type, format can be `float` or `double`. For `INTEGER` type, format can be `int32` or `int64`. For `STRING` type, format can be `email`, `byte`, `date`, `date-time`, `password`, and other formats to further refine the data type.
                    "items": # Object with schema name: GoogleCloudAiplatformV1Schema # Optional. If type is `ARRAY`, `items` specifies the schema of elements in the array.
                    "maxItems": "A String", # Optional. If type is `ARRAY`, `max_items` specifies the maximum number of items in an array.
                    "maxLength": "A String", # Optional. If type is `STRING`, `max_length` specifies the maximum length of the string.
                    "maxProperties": "A String", # Optional. If type is `OBJECT`, `max_properties` specifies the maximum number of properties that can be provided.
                    "maximum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `maximum` specifies the maximum allowed value.
                    "minItems": "A String", # Optional. If type is `ARRAY`, `min_items` specifies the minimum number of items in an array.
                    "minLength": "A String", # Optional. If type is `STRING`, `min_length` specifies the minimum length of the string.
                    "minProperties": "A String", # Optional. If type is `OBJECT`, `min_properties` specifies the minimum number of properties that can be provided.
                    "minimum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `minimum` specifies the minimum allowed value.
                    "nullable": True or False, # Optional. Indicates if the value of this field can be null.
                    "pattern": "A String", # Optional. If type is `STRING`, `pattern` specifies a regular expression that the string must match.
                    "properties": { # Optional. If type is `OBJECT`, `properties` is a map of property names to schema definitions for each property of the object.
                      "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                    },
                    "propertyOrdering": [ # Optional. Order of properties displayed or used where order matters. This is not a standard field in OpenAPI specification, but can be used to control the order of properties.
                      "A String",
                    ],
                    "ref": "A String", # Optional. Allows referencing another schema definition to use in place of this schema. The value must be a valid reference to a schema in `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
                    "required": [ # Optional. If type is `OBJECT`, `required` lists the names of properties that must be present.
                      "A String",
                    ],
                    "title": "A String", # Optional. Title for the schema.
                    "type": "A String", # Optional. Data type of the schema field.
                  },
                  "parametersJsonSchema": "", # 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`.
                  "response": { # Defines the schema of input and output data. This is a subset of the [OpenAPI 3.0 Schema Object](https://spec.openapis.org/oas/v3.0.3#schema-object). # Optional. Describes the output from this function in JSON Schema format. Reflects the Open API 3.03 Response Object. The Schema defines the type used for the response value of the function.
                    "additionalProperties": "", # Optional. If `type` is `OBJECT`, specifies how to handle properties not defined in `properties`. If it is a boolean `false`, no additional properties are allowed. If it is a schema, additional properties are allowed if they conform to the schema.
                    "anyOf": [ # Optional. The instance must be valid against any (one or more) of the subschemas listed in `any_of`.
                      # Object with schema name: GoogleCloudAiplatformV1Schema
                    ],
                    "default": "", # Optional. Default value to use if the field is not specified.
                    "defs": { # Optional. `defs` provides a map of schema definitions that can be reused by `ref` elsewhere in the schema. Only allowed at root level of the schema.
                      "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                    },
                    "description": "A String", # Optional. Describes the data. The model uses this field to understand the purpose of the schema and how to use it. It is a best practice to provide a clear and descriptive explanation for the schema and its properties here, rather than in the prompt.
                    "enum": [ # Optional. Possible values of the field. This field can be used to restrict a value to a fixed set of values. To mark a field as an enum, set `format` to `enum` and provide the list of possible values in `enum`. For example: 1. To define directions: `{type:STRING, format:enum, enum:["EAST", "NORTH", "SOUTH", "WEST"]}` 2. To define apartment numbers: `{type:INTEGER, format:enum, enum:["101", "201", "301"]}`
                      "A String",
                    ],
                    "example": "", # Optional. Example of an instance of this schema.
                    "format": "A String", # Optional. The format of the data. For `NUMBER` type, format can be `float` or `double`. For `INTEGER` type, format can be `int32` or `int64`. For `STRING` type, format can be `email`, `byte`, `date`, `date-time`, `password`, and other formats to further refine the data type.
                    "items": # Object with schema name: GoogleCloudAiplatformV1Schema # Optional. If type is `ARRAY`, `items` specifies the schema of elements in the array.
                    "maxItems": "A String", # Optional. If type is `ARRAY`, `max_items` specifies the maximum number of items in an array.
                    "maxLength": "A String", # Optional. If type is `STRING`, `max_length` specifies the maximum length of the string.
                    "maxProperties": "A String", # Optional. If type is `OBJECT`, `max_properties` specifies the maximum number of properties that can be provided.
                    "maximum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `maximum` specifies the maximum allowed value.
                    "minItems": "A String", # Optional. If type is `ARRAY`, `min_items` specifies the minimum number of items in an array.
                    "minLength": "A String", # Optional. If type is `STRING`, `min_length` specifies the minimum length of the string.
                    "minProperties": "A String", # Optional. If type is `OBJECT`, `min_properties` specifies the minimum number of properties that can be provided.
                    "minimum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `minimum` specifies the minimum allowed value.
                    "nullable": True or False, # Optional. Indicates if the value of this field can be null.
                    "pattern": "A String", # Optional. If type is `STRING`, `pattern` specifies a regular expression that the string must match.
                    "properties": { # Optional. If type is `OBJECT`, `properties` is a map of property names to schema definitions for each property of the object.
                      "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
                    },
                    "propertyOrdering": [ # Optional. Order of properties displayed or used where order matters. This is not a standard field in OpenAPI specification, but can be used to control the order of properties.
                      "A String",
                    ],
                    "ref": "A String", # Optional. Allows referencing another schema definition to use in place of this schema. The value must be a valid reference to a schema in `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
                    "required": [ # Optional. If type is `OBJECT`, `required` lists the names of properties that must be present.
                      "A String",
                    ],
                    "title": "A String", # Optional. Title for the schema.
                    "type": "A String", # Optional. Data type of the schema field.
                  },
                  "responseJsonSchema": "", # 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`.
                },
              ],
              "googleMaps": { # Tool to retrieve public maps data for grounding, powered by Google. # Optional. GoogleMaps tool type. Tool to support Google Maps in Model.
                "enableWidget": True or False, # Optional. If true, include the widget context token in the response.
              },
              "googleSearch": { # GoogleSearch tool type. Tool to support Google Search in Model. Powered by Google. # Optional. GoogleSearch tool type. Tool to support Google Search in Model. Powered by Google.
                "blockingConfidence": "A String", # Optional. Sites with confidence level chosen & above this value will be blocked from the search results.
                "excludeDomains": [ # Optional. List of domains to be excluded from the search results. The default limit is 2000 domains. Example: ["amazon.com", "facebook.com"].
                  "A String",
                ],
                "searchTypes": { # Different types of search that can be enabled on the GoogleSearch tool. # Optional. The set of search types to enable. If not set, web search is enabled by default.
                  "imageSearch": { # Image search for grounding and related configurations. # Optional. Setting this field enables image search. Image bytes are returned.
                  },
                  "webSearch": { # Standard web search for grounding and related configurations. Only text results are returned. # Optional. Setting this field enables web search. Only text results are returned.
                  },
                },
              },
              "googleSearchRetrieval": { # Tool to retrieve public web data for grounding, powered by Google. # Optional. Specialized retrieval tool that is powered by Google Search.
                "dynamicRetrievalConfig": { # Describes the options to customize dynamic retrieval. # Specifies the dynamic retrieval configuration for the given source.
                  "dynamicThreshold": 3.14, # Optional. The threshold to be used in dynamic retrieval. If not set, a system default value is used.
                  "mode": "A String", # The mode of the predictor to be used in dynamic retrieval.
                },
              },
              "parallelAiSearch": { # ParallelAiSearch tool type. A tool that uses the Parallel.ai search engine for grounding. # Optional. If specified, Vertex AI will use Parallel.ai to search for information to answer user queries. The search results will be grounded on Parallel.ai and presented to the model for response generation
                "apiKey": "A String", # Optional. The API key for ParallelAiSearch. If an API key is not provided, the system will attempt to verify access by checking for an active Parallel.ai subscription through the Google Cloud Marketplace. See https://docs.parallel.ai/search/search-quickstart for more details.
                "customConfigs": { # Optional. Custom configs for ParallelAiSearch. This field can be used to pass any parameter from the Parallel.ai Search API. See the Parallel.ai documentation for the full list of available parameters and their usage: https://docs.parallel.ai/api-reference/search-beta/search Currently only `source_policy`, `excerpts`, `max_results`, `mode`, `fetch_policy` can be set via this field. For example: { "source_policy": { "include_domains": ["google.com", "wikipedia.org"], "exclude_domains": ["example.com"] }, "fetch_policy": { "max_age_seconds": 3600 } }
                  "a_key": "", # Properties of the object.
                },
              },
              "retrieval": { # Defines a retrieval tool that model can call to access external knowledge. # Optional. Retrieval tool type. System will always execute the provided retrieval tool(s) to get external knowledge to answer the prompt. Retrieval results are presented to the model for generation.
                "disableAttribution": True or False, # Optional. Deprecated. This option is no longer supported.
                "externalApi": { # 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. # Use data source powered by external API for grounding.
                  "apiAuth": { # The generic reusable api auth config. Deprecated. Please use AuthConfig (google/cloud/aiplatform/master/auth.proto) instead. # The authentication config to access the API. Deprecated. Please use auth_config instead.
                    "apiKeyConfig": { # The API secret. # The API secret.
                      "apiKeySecretVersion": "A String", # Required. The SecretManager secret version resource name storing API key. e.g. projects/{project}/secrets/{secret}/versions/{version}
                      "apiKeyString": "A String", # The API key string. Either this or `api_key_secret_version` must be set.
                    },
                  },
                  "apiSpec": "A String", # The API spec that the external API implements.
                  "authConfig": { # Auth configuration to run the extension. # The authentication config to access the API.
                    "apiKeyConfig": { # Config for authentication with API key. # Config for API key auth.
                      "apiKeySecret": "A String", # 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.
                      "apiKeyString": "A String", # Optional. The API key to be used in the request directly.
                      "httpElementLocation": "A String", # Optional. The location of the API key.
                      "name": "A String", # 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.
                    },
                    "authType": "A String", # Type of auth scheme.
                    "googleServiceAccountConfig": { # Config for Google Service Account Authentication. # Config for Google Service Account auth.
                      "serviceAccount": "A String", # 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.
                    },
                    "httpBasicAuthConfig": { # Config for HTTP Basic Authentication. # Config for HTTP Basic auth.
                      "credentialSecret": "A String", # 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.
                    },
                    "oauthConfig": { # Config for user oauth. # Config for user oauth.
                      "accessToken": "A String", # Access token for extension endpoint. Only used to propagate token from [[ExecuteExtensionRequest.runtime_auth_config]] at request time.
                      "serviceAccount": "A String", # 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.
                    },
                    "oidcConfig": { # Config for user OIDC auth. # Config for user OIDC auth.
                      "idToken": "A String", # OpenID Connect formatted ID token for extension endpoint. Only used to propagate token from [[ExecuteExtensionRequest.runtime_auth_config]] at request time.
                      "serviceAccount": "A String", # 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).
                    },
                  },
                  "elasticSearchParams": { # The search parameters to use for the ELASTIC_SEARCH spec. # Parameters for the elastic search API.
                    "index": "A String", # The ElasticSearch index to use.
                    "numHits": 42, # Optional. Number of hits (chunks) to request. When specified, it is passed to Elasticsearch as the `num_hits` param.
                    "searchTemplate": "A String", # The ElasticSearch search template to use.
                  },
                  "endpoint": "A String", # 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
                  "simpleSearchParams": { # The search parameters to use for SIMPLE_SEARCH spec. # Parameters for the simple search API.
                  },
                },
                "vertexAiSearch": { # Retrieve from Vertex AI Search datastore or engine for grounding. datastore and engine are mutually exclusive. See https://cloud.google.com/products/agent-builder # Set to use data source powered by Vertex AI Search.
                  "dataStoreSpecs": [ # 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.
                    { # 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
                      "dataStore": "A String", # Full resource name of DataStore, such as Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}`
                      "filter": "A String", # 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)
                    },
                  ],
                  "datastore": "A String", # Optional. Fully-qualified Vertex AI Search data store resource ID. Format: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{dataStore}`
                  "engine": "A String", # Optional. Fully-qualified Vertex AI Search engine resource ID. Format: `projects/{project}/locations/{location}/collections/{collection}/engines/{engine}`
                  "filter": "A String", # Optional. Filter strings to be passed to the search API.
                  "maxResults": 42, # Optional. Number of search results to return per query. The default value is 10. The maximumm allowed value is 10.
                },
                "vertexRagStore": { # Retrieve from Vertex RAG Store for grounding. # Set to use data source powered by Vertex RAG store. User data is uploaded via the VertexRagDataService.
                  "ragResources": [ # 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.
                    { # The definition of the Rag resource.
                      "ragCorpus": "A String", # Optional. RagCorpora resource name. Format: `projects/{project}/locations/{location}/ragCorpora/{rag_corpus}`
                      "ragFileIds": [ # Optional. rag_file_id. The files should be in the same rag_corpus set in rag_corpus field.
                        "A String",
                      ],
                    },
                  ],
                  "ragRetrievalConfig": { # Specifies the context retrieval config. # Optional. The retrieval config for the Rag query.
                    "filter": { # Config for filters. # Optional. Config for filters.
                      "metadataFilter": "A String", # Optional. String for metadata filtering.
                      "vectorDistanceThreshold": 3.14, # Optional. Only returns contexts with vector distance smaller than the threshold.
                      "vectorSimilarityThreshold": 3.14, # Optional. Only returns contexts with vector similarity larger than the threshold.
                    },
                    "ranking": { # Config for ranking and reranking. # Optional. Config for ranking and reranking.
                      "llmRanker": { # Config for LlmRanker. # Optional. Config for LlmRanker.
                        "modelName": "A String", # Optional. The model name used for ranking. See [Supported models](https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/inference#supported-models).
                      },
                      "rankService": { # Config for Rank Service. # Optional. Config for Rank Service.
                        "modelName": "A String", # Optional. The model name of the rank service. Format: `semantic-ranker-512@latest`
                      },
                    },
                    "topK": 42, # Optional. The number of contexts to retrieve.
                  },
                  "similarityTopK": 42, # Optional. Number of top k results to return from the selected corpora.
                  "vectorDistanceThreshold": 3.14, # Optional. Only return results with vector distance smaller than the threshold.
                },
              },
              "urlContext": { # Tool to support URL context. # Optional. Tool to support URL context retrieval.
              },
            },
          ],
        },
        "toolsText": "A String", # A JSON string containing a list of tools available to an agent with info such as name, description, parameters and required parameters.
      },
      "contents": [ # 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.
        { # The structured data content of a message. A Content message contains a `role` field, which indicates the producer of the content, and a `parts` field, which contains the multi-part data of the message.
          "parts": [ # Required. A list of Part objects that make up a single message. Parts of a message can have different MIME types. A Content message must have at least one Part.
            { # 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`. For media types that are not text, `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.
              "codeExecutionResult": { # Result of executing the ExecutableCode. Generated only when the `CodeExecution` tool is used. # Optional. The result of executing the ExecutableCode.
                "outcome": "A String", # Required. Outcome of the code execution.
                "output": "A String", # Optional. Contains stdout when code execution is successful, stderr or other description otherwise.
              },
              "executableCode": { # 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. # Optional. Code generated by the model that is intended to be executed.
                "code": "A String", # Required. The code to be executed.
                "language": "A String", # Required. Programming language of the `code`.
              },
              "fileData": { # URI-based data. A FileData message contains a URI pointing to data of a specific media type. It is used to represent images, audio, and video stored in Google Cloud Storage. # Optional. The URI-based data of the part. This can be used to include files from Google Cloud Storage.
                "displayName": "A String", # Optional. The display name of the file. Used to provide a label or filename to distinguish files. This field is only returned in `PromptMessage` for prompt management. It is used in the Gemini calls only when server side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                "fileUri": "A String", # Required. The URI of the file in Google Cloud Storage.
                "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
              },
              "functionCall": { # 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. # Optional. A predicted function call returned from the model. This contains the name of the function to call and the arguments to pass to the function.
                "args": { # Optional. The function parameters and values in JSON object format. See FunctionDeclaration.parameters for parameter details.
                  "a_key": "", # Properties of the object.
                },
                "name": "A String", # Optional. The name of the function to call. Matches FunctionDeclaration.name.
                "partialArgs": [ # Optional. The partial argument value of the function call. If provided, represents the arguments/fields that are streamed incrementally.
                  { # Partial argument value of the function call.
                    "boolValue": True or False, # Optional. Represents a boolean value.
                    "jsonPath": "A String", # Required. A JSON Path (RFC 9535) to the argument being streamed. https://datatracker.ietf.org/doc/html/rfc9535. e.g. "$.foo.bar[0].data".
                    "nullValue": "A String", # Optional. Represents a null value.
                    "numberValue": 3.14, # Optional. Represents a double value.
                    "stringValue": "A String", # Optional. Represents a string value.
                    "willContinue": True or False, # Optional. Whether this is not the last part of the same json_path. If true, another PartialArg message for the current json_path is expected to follow.
                  },
                ],
                "willContinue": True or False, # Optional. Whether this is the last part of the FunctionCall. If true, another partial message for the current FunctionCall is expected to follow.
              },
              "functionResponse": { # 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. # Optional. The result of a function call. This is used to provide the model with the result of a function call that it predicted.
                "name": "A String", # Required. The name of the function to call. Matches FunctionDeclaration.name and FunctionCall.name.
                "parts": [ # Optional. Ordered `Parts` that constitute a function response. Parts may have different IANA MIME types.
                  { # A datatype containing media that is part of a `FunctionResponse` message. A `FunctionResponsePart` consists of data which has an associated datatype. A `FunctionResponsePart` can only contain one of the accepted types in `FunctionResponsePart.data`. A `FunctionResponsePart` must have a fixed IANA MIME type identifying the type and subtype of the media if the `inline_data` field is filled with raw bytes.
                    "fileData": { # URI based data for function response. # URI based data.
                      "displayName": "A String", # 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.
                      "fileUri": "A String", # Required. URI.
                      "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                    },
                    "inlineData": { # Raw media bytes for function response. Text should not be sent as raw bytes, use the 'text' field. # Inline media bytes.
                      "data": "A String", # Required. Raw bytes.
                      "displayName": "A String", # 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.
                      "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                    },
                  },
                ],
                "response": { # 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.
                  "a_key": "", # Properties of the object.
                },
                "scheduling": "A String", # Optional. Specifies how the response should be scheduled in the conversation. Only applicable to NON_BLOCKING function calls, is ignored otherwise. Defaults to WHEN_IDLE.
              },
              "inlineData": { # A content blob. A Blob contains data of a specific media type. It is used to represent images, audio, and video. # Optional. The inline data content of the part. This can be used to include images, audio, or video in a request.
                "data": "A String", # Required. The raw bytes of the data.
                "displayName": "A String", # Optional. The 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 used in the Gemini calls only when server-side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
              },
              "mediaResolution": { # per part media resolution. Media resolution for the input media. # per part media resolution. Media resolution for the input media.
                "level": "A String", # The tokenization quality used for given media.
              },
              "text": "A String", # Optional. The text content of the part. When sent from the VSCode Gemini Code Assist extension, references to @mentioned items will be converted to markdown boldface text. For example `@my-repo` will be converted to and sent as `**my-repo**` by the IDE agent.
              "thought": True or False, # Optional. Indicates whether the `part` represents the model's thought process or reasoning.
              "thoughtSignature": "A String", # Optional. An opaque signature for the thought so it can be reused in subsequent requests.
              "videoMetadata": { # Provides metadata for a video, including the start and end offsets for clipping and the frame rate. # Optional. Video metadata. The metadata should only be specified while the video data is presented in inline_data or file_data.
                "endOffset": "A String", # Optional. The end offset of the video.
                "fps": 3.14, # Optional. The frame rate of the video sent to the model. If not specified, the default value is 1.0. The valid range is (0.0, 24.0].
                "startOffset": "A String", # Optional. The start offset of the video.
              },
            },
          ],
          "role": "A String", # Optional. The producer of the content. Must be either 'user' or 'model'. If not set, the service will default to 'user'.
        },
      ],
      "location": "A String", # Required. The resource name of the Location to generate rubrics from. Format: `projects/{project}/locations/{location}`
      "metricResourceName": "A String", # Optional. The resource name of a registered metric. Rubric generation using predefined metric spec or LLMBasedMetricSpec is supported. If this field is set, the configuration provided in this field is used for rubric generation. The `predefined_rubric_generation_spec` and `rubric_generation_spec` fields will be ignored.
      "predefinedRubricGenerationSpec": { # The spec for a pre-defined metric. # Optional. Specification for using the rubric generation configs of a pre-defined metric, e.g. "generic_quality_v1" and "instruction_following_v1". Some of the configs may be only used in rubric generation and not supporting evaluation, e.g. "fully_customized_generic_quality_v1". If this field is set, the `rubric_generation_spec` field will be ignored.
        "metricSpecName": "A String", # Required. The name of a pre-defined metric, such as "instruction_following_v1" or "text_quality_v1".
        "metricSpecParameters": { # Optional. The parameters needed to run the pre-defined metric.
          "a_key": "", # Properties of the object.
        },
      },
      "rubricGenerationSpec": { # Specification for how rubrics should be generated. # Optional. Specification for how the rubrics should be generated.
        "modelConfig": { # The configs for autorater. This is applicable to both EvaluateInstances and EvaluateDataset. # Configuration for the model used in rubric generation. Configs including sampling count and base model can be specified here. Flipping is not supported for rubric generation.
          "autoraterModel": "A String", # 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}`
          "flipEnabled": True or False, # 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.
          "generationConfig": { # Configuration for content generation. This message contains all the parameters that control how the model generates content. It allows you to influence the randomness, length, and structure of the output. # Optional. Configuration options for model generation and outputs.
            "audioTimestamp": True or False, # Optional. If enabled, audio timestamps will be included in the request to the model. This can be useful for synchronizing audio with other modalities in the response.
            "candidateCount": 42, # Optional. The number of candidate responses to generate. A higher `candidate_count` can provide more options to choose from, but it also consumes more resources. This can be useful for generating a variety of responses and selecting the best one.
            "enableAffectiveDialog": True or False, # Optional. If enabled, the model will detect emotions and adapt its responses accordingly. For example, if the model detects that the user is frustrated, it may provide a more empathetic response.
            "frequencyPenalty": 3.14, # Optional. Penalizes tokens based on their frequency in the generated text. A positive value helps to reduce the repetition of words and phrases. Valid values can range from [-2.0, 2.0].
            "imageConfig": { # Configuration for image generation. This message allows you to control various aspects of image generation, such as the output format, aspect ratio, and whether the model can generate images of people. # Optional. Config for image generation features.
              "aspectRatio": "A String", # Optional. The desired aspect ratio for the generated images. The following aspect ratios are supported: "1:1" "2:3", "3:2" "3:4", "4:3" "4:5", "5:4" "9:16", "16:9" "21:9"
              "imageOutputOptions": { # The image output format for generated images. # Optional. The image output format for generated images.
                "compressionQuality": 42, # Optional. The compression quality of the output image.
                "mimeType": "A String", # Optional. The image format that the output should be saved as.
              },
              "imageSize": "A String", # Optional. Specifies the size of generated images. Supported values are `1K`, `2K`, `4K`. If not specified, the model will use default value `1K`.
              "personGeneration": "A String", # Optional. Controls whether the model can generate people.
              "prominentPeople": "A String", # Optional. Controls whether prominent people (celebrities) generation is allowed. If used with personGeneration, personGeneration enum would take precedence. For instance, if ALLOW_NONE is set, all person generation would be blocked. If this field is unspecified, the default behavior is to allow prominent people.
            },
            "logprobs": 42, # Optional. The number of top log probabilities to return for each token. This can be used to see which other tokens were considered likely candidates for a given position. A higher value will return more options, but it will also increase the size of the response.
            "maxOutputTokens": 42, # Optional. The maximum number of tokens to generate in the response. A token is approximately four characters. The default value varies by model. This parameter can be used to control the length of the generated text and prevent overly long responses.
            "mediaResolution": "A String", # Optional. The token resolution at which input media content is sampled. This is used to control the trade-off between the quality of the response and the number of tokens used to represent the media. A higher resolution allows the model to perceive more detail, which can lead to a more nuanced response, but it will also use more tokens. This does not affect the image dimensions sent to the model.
            "presencePenalty": 3.14, # Optional. Penalizes tokens that have already appeared in the generated text. A positive value encourages the model to generate more diverse and less repetitive text. Valid values can range from [-2.0, 2.0].
            "responseJsonSchema": "", # Optional. When this field is set, response_schema must be omitted and response_mime_type must be set to `application/json`.
            "responseLogprobs": True or False, # Optional. If set to true, the log probabilities of the output tokens are returned. Log probabilities are the logarithm of the probability of a token appearing in the output. A higher log probability means the token is more likely to be generated. This can be useful for analyzing the model's confidence in its own output and for debugging.
            "responseMimeType": "A String", # Optional. The IANA standard MIME type of the response. The model will generate output that conforms to this MIME type. Supported values include 'text/plain' (default) and 'application/json'. The model needs to be prompted to output the appropriate response type, otherwise the behavior is undefined.
            "responseModalities": [ # Optional. The modalities of the response. The model will generate a response that includes all the specified modalities. For example, if this is set to `[TEXT, IMAGE]`, the response will include both text and an image.
              "A String",
            ],
            "responseSchema": { # Defines the schema of input and output data. This is a subset of the [OpenAPI 3.0 Schema Object](https://spec.openapis.org/oas/v3.0.3#schema-object). # Optional. Lets you to specify a schema for the model's response, ensuring that the output conforms to a particular structure. This is useful for generating structured data such as JSON. The schema is a subset of the [OpenAPI 3.0 schema object](https://spec.openapis.org/oas/v3.0.3#schema) object. When this field is set, you must also set the `response_mime_type` to `application/json`.
              "additionalProperties": "", # Optional. If `type` is `OBJECT`, specifies how to handle properties not defined in `properties`. If it is a boolean `false`, no additional properties are allowed. If it is a schema, additional properties are allowed if they conform to the schema.
              "anyOf": [ # Optional. The instance must be valid against any (one or more) of the subschemas listed in `any_of`.
                # Object with schema name: GoogleCloudAiplatformV1Schema
              ],
              "default": "", # Optional. Default value to use if the field is not specified.
              "defs": { # Optional. `defs` provides a map of schema definitions that can be reused by `ref` elsewhere in the schema. Only allowed at root level of the schema.
                "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
              },
              "description": "A String", # Optional. Describes the data. The model uses this field to understand the purpose of the schema and how to use it. It is a best practice to provide a clear and descriptive explanation for the schema and its properties here, rather than in the prompt.
              "enum": [ # Optional. Possible values of the field. This field can be used to restrict a value to a fixed set of values. To mark a field as an enum, set `format` to `enum` and provide the list of possible values in `enum`. For example: 1. To define directions: `{type:STRING, format:enum, enum:["EAST", "NORTH", "SOUTH", "WEST"]}` 2. To define apartment numbers: `{type:INTEGER, format:enum, enum:["101", "201", "301"]}`
                "A String",
              ],
              "example": "", # Optional. Example of an instance of this schema.
              "format": "A String", # Optional. The format of the data. For `NUMBER` type, format can be `float` or `double`. For `INTEGER` type, format can be `int32` or `int64`. For `STRING` type, format can be `email`, `byte`, `date`, `date-time`, `password`, and other formats to further refine the data type.
              "items": # Object with schema name: GoogleCloudAiplatformV1Schema # Optional. If type is `ARRAY`, `items` specifies the schema of elements in the array.
              "maxItems": "A String", # Optional. If type is `ARRAY`, `max_items` specifies the maximum number of items in an array.
              "maxLength": "A String", # Optional. If type is `STRING`, `max_length` specifies the maximum length of the string.
              "maxProperties": "A String", # Optional. If type is `OBJECT`, `max_properties` specifies the maximum number of properties that can be provided.
              "maximum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `maximum` specifies the maximum allowed value.
              "minItems": "A String", # Optional. If type is `ARRAY`, `min_items` specifies the minimum number of items in an array.
              "minLength": "A String", # Optional. If type is `STRING`, `min_length` specifies the minimum length of the string.
              "minProperties": "A String", # Optional. If type is `OBJECT`, `min_properties` specifies the minimum number of properties that can be provided.
              "minimum": 3.14, # Optional. If type is `INTEGER` or `NUMBER`, `minimum` specifies the minimum allowed value.
              "nullable": True or False, # Optional. Indicates if the value of this field can be null.
              "pattern": "A String", # Optional. If type is `STRING`, `pattern` specifies a regular expression that the string must match.
              "properties": { # Optional. If type is `OBJECT`, `properties` is a map of property names to schema definitions for each property of the object.
                "a_key": # Object with schema name: GoogleCloudAiplatformV1Schema
              },
              "propertyOrdering": [ # Optional. Order of properties displayed or used where order matters. This is not a standard field in OpenAPI specification, but can be used to control the order of properties.
                "A String",
              ],
              "ref": "A String", # Optional. Allows referencing another schema definition to use in place of this schema. The value must be a valid reference to a schema in `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
              "required": [ # Optional. If type is `OBJECT`, `required` lists the names of properties that must be present.
                "A String",
              ],
              "title": "A String", # Optional. Title for the schema.
              "type": "A String", # Optional. Data type of the schema field.
            },
            "routingConfig": { # The configuration for routing the request to a specific model. This can be used to control which model is used for the generation, either automatically or by specifying a model name. # Optional. Routing configuration.
              "autoMode": { # The configuration for automated routing. When automated routing is specified, the routing will be determined by the pretrained routing model and customer provided model routing preference. # In this mode, the model is selected automatically based on the content of the request.
                "modelRoutingPreference": "A String", # The model routing preference.
              },
              "manualMode": { # The configuration for manual routing. When manual routing is specified, the model will be selected based on the model name provided. # In this mode, the model is specified manually.
                "modelName": "A String", # The name of the model to use. Only public LLM models are accepted.
              },
            },
            "seed": 42, # Optional. A seed for the random number generator. By setting a seed, you can make the model's output mostly deterministic. For a given prompt and parameters (like temperature, top_p, etc.), the model will produce the same response every time. However, it's not a guaranteed absolute deterministic behavior. This is different from parameters like `temperature`, which control the *level* of randomness. `seed` ensures that the "random" choices the model makes are the same on every run, making it essential for testing and ensuring reproducible results.
            "speechConfig": { # Configuration for speech generation. # Optional. The speech generation config.
              "languageCode": "A String", # Optional. The language code (ISO 639-1) for the speech synthesis.
              "multiSpeakerVoiceConfig": { # Configuration for a multi-speaker text-to-speech request. # The configuration for a multi-speaker text-to-speech request. This field is mutually exclusive with `voice_config`.
                "speakerVoiceConfigs": [ # Required. A list of configurations for the voices of the speakers. Exactly two speaker voice configurations must be provided.
                  { # Configuration for a single speaker in a multi-speaker setup.
                    "speaker": "A String", # Required. The name of the speaker. This should be the same as the speaker name used in the prompt.
                    "voiceConfig": { # Configuration for a voice. # Required. The configuration for the voice of this speaker.
                      "prebuiltVoiceConfig": { # Configuration for a prebuilt voice. # The configuration for a prebuilt voice.
                        "voiceName": "A String", # The name of the prebuilt voice to use.
                      },
                      "replicatedVoiceConfig": { # The configuration for the replicated voice to use. # Optional. The configuration for a replicated voice. This enables users to replicate a voice from an audio sample.
                        "mimeType": "A String", # Optional. The mimetype of the voice sample. The only currently supported value is `audio/wav`. This represents 16-bit signed little-endian wav data, with a 24kHz sampling rate. `mime_type` will default to `audio/wav` if not set.
                        "voiceSampleAudio": "A String", # Optional. The sample of the custom voice.
                      },
                    },
                  },
                ],
              },
              "voiceConfig": { # Configuration for a voice. # The configuration for the voice to use.
                "prebuiltVoiceConfig": { # Configuration for a prebuilt voice. # The configuration for a prebuilt voice.
                  "voiceName": "A String", # The name of the prebuilt voice to use.
                },
                "replicatedVoiceConfig": { # The configuration for the replicated voice to use. # Optional. The configuration for a replicated voice. This enables users to replicate a voice from an audio sample.
                  "mimeType": "A String", # Optional. The mimetype of the voice sample. The only currently supported value is `audio/wav`. This represents 16-bit signed little-endian wav data, with a 24kHz sampling rate. `mime_type` will default to `audio/wav` if not set.
                  "voiceSampleAudio": "A String", # Optional. The sample of the custom voice.
                },
              },
            },
            "stopSequences": [ # Optional. A list of character sequences that will stop the model from generating further tokens. If a stop sequence is generated, the output will end at that point. This is useful for controlling the length and structure of the output. For example, you can use ["\n", "###"] to stop generation at a new line or a specific marker.
              "A String",
            ],
            "temperature": 3.14, # Optional. Controls the randomness of the output. A higher temperature results in more creative and diverse responses, while a lower temperature makes the output more predictable and focused. The valid range is (0.0, 2.0].
            "thinkingConfig": { # Configuration for the model's thinking features. "Thinking" is a process where the model breaks down a complex task into smaller, manageable steps. This allows the model to reason about the task, plan its approach, and execute the plan to generate a high-quality response. # Optional. Configuration for thinking features. An error will be returned if this field is set for models that don't support thinking.
              "includeThoughts": True or False, # Optional. If true, the model will include its thoughts in the response. "Thoughts" are the intermediate steps the model takes to arrive at the final response. They can provide insights into the model's reasoning process and help with debugging. If this is true, thoughts are returned only when available.
              "thinkingBudget": 42, # Optional. The token budget for the model's thinking process. The model will make a best effort to stay within this budget. This can be used to control the trade-off between response quality and latency.
              "thinkingLevel": "A String", # Optional. The number of thoughts tokens that the model should generate.
            },
            "topK": 3.14, # Optional. Specifies the top-k sampling threshold. The model considers only the top k most probable tokens for the next token. This can be useful for generating more coherent and less random text. For example, a `top_k` of 40 means the model will choose the next word from the 40 most likely words.
            "topP": 3.14, # Optional. Specifies the nucleus sampling threshold. The model considers only the smallest set of tokens whose cumulative probability is at least `top_p`. This helps generate more diverse and less repetitive responses. For example, a `top_p` of 0.9 means the model considers tokens until the cumulative probability of the tokens to select from reaches 0.9. It's recommended to adjust either temperature or `top_p`, but not both.
          },
          "samplingCount": 42, # 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.
        },
        "promptTemplate": "A String", # Template for the prompt used to generate rubrics. The details should be updated based on the most-recent recipe requirements.
        "rubricContentType": "A String", # The type of rubric content to be generated.
        "rubricTypeOntology": [ # 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.
          "A String",
        ],
      },
    }

      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # Response message for EvaluationService.GenerateInstanceRubrics.
      "generatedRubrics": [ # Output only. A list of generated rubrics.
        { # Message representing a single testable criterion for evaluation. One input prompt could have multiple rubrics.
          "content": { # Content of the rubric, defining the testable criteria. # Required. The actual testable criteria for the rubric.
            "property": { # Defines criteria based on a specific property. # Evaluation criteria based on a specific property.
              "description": "A String", # Description of the property being evaluated. Example: "The model's response is grammatically correct."
            },
          },
          "importance": "A String", # Optional. The relative importance of this rubric.
          "rubricId": "A String", # Unique identifier for the rubric. This ID is used to refer to this rubric, e.g., in RubricVerdict.
          "type": "A String", # 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".
        },
      ],
    }

`generateSyntheticData(location, body=None, x__xgafv=None)`

    Generates synthetic (artificial) data based on a description

    Args:
      location: string, Required. The geographic location where the synthetic data generation request is processed. This should be in the format `projects/{project}/locations/{location}`. For example, `projects/my-project/locations/us-central1`. (required)
      body: object, The request body.
        The object takes the form of:

    { # Request message for DataFoundryService.GenerateSyntheticData. It contains the settings and information needed to generate synthetic data.
      "count": 42, # Required. The number of synthetic examples to generate. For this stateless API, you can generate up to 50 examples in a single request.
      "examples": [ # Optional. A list of few-shot examples that help the model understand the desired style, tone, and format of the generated synthetic data. Providing these few-shot examples can significantly improve the quality and relevance of the output.
        { # A single instance of generated synthetic data. Each example is made up of one or more named fields, as defined in `OutputFieldSpec`. These examples are used as few-shot examples to show the model what you want (in `GenerateSyntheticDataRequest.examples`) and to return generated examples in the response (in `GenerateSyntheticDataResponse.synthetic_examples`).
          "fields": [ # Required. A list of fields that constitute an example.
            { # Represents a single named field within a synthetic example, consisting of a name and the actual content.
              "content": { # The structured data content of a message. A Content message contains a `role` field, which indicates the producer of the content, and a `parts` field, which contains the multi-part data of the message. # Required. The actual content or value for this field. This can be text, images, or other types of data.
                "parts": [ # Required. A list of Part objects that make up a single message. Parts of a message can have different MIME types. A Content message must have at least one Part.
                  { # 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`. For media types that are not text, `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.
                    "codeExecutionResult": { # Result of executing the ExecutableCode. Generated only when the `CodeExecution` tool is used. # Optional. The result of executing the ExecutableCode.
                      "outcome": "A String", # Required. Outcome of the code execution.
                      "output": "A String", # Optional. Contains stdout when code execution is successful, stderr or other description otherwise.
                    },
                    "executableCode": { # 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. # Optional. Code generated by the model that is intended to be executed.
                      "code": "A String", # Required. The code to be executed.
                      "language": "A String", # Required. Programming language of the `code`.
                    },
                    "fileData": { # URI-based data. A FileData message contains a URI pointing to data of a specific media type. It is used to represent images, audio, and video stored in Google Cloud Storage. # Optional. The URI-based data of the part. This can be used to include files from Google Cloud Storage.
                      "displayName": "A String", # Optional. The display name of the file. Used to provide a label or filename to distinguish files. This field is only returned in `PromptMessage` for prompt management. It is used in the Gemini calls only when server side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                      "fileUri": "A String", # Required. The URI of the file in Google Cloud Storage.
                      "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                    },
                    "functionCall": { # 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. # Optional. A predicted function call returned from the model. This contains the name of the function to call and the arguments to pass to the function.
                      "args": { # Optional. The function parameters and values in JSON object format. See FunctionDeclaration.parameters for parameter details.
                        "a_key": "", # Properties of the object.
                      },
                      "name": "A String", # Optional. The name of the function to call. Matches FunctionDeclaration.name.
                      "partialArgs": [ # Optional. The partial argument value of the function call. If provided, represents the arguments/fields that are streamed incrementally.
                        { # Partial argument value of the function call.
                          "boolValue": True or False, # Optional. Represents a boolean value.
                          "jsonPath": "A String", # Required. A JSON Path (RFC 9535) to the argument being streamed. https://datatracker.ietf.org/doc/html/rfc9535. e.g. "$.foo.bar[0].data".
                          "nullValue": "A String", # Optional. Represents a null value.
                          "numberValue": 3.14, # Optional. Represents a double value.
                          "stringValue": "A String", # Optional. Represents a string value.
                          "willContinue": True or False, # Optional. Whether this is not the last part of the same json_path. If true, another PartialArg message for the current json_path is expected to follow.
                        },
                      ],
                      "willContinue": True or False, # Optional. Whether this is the last part of the FunctionCall. If true, another partial message for the current FunctionCall is expected to follow.
                    },
                    "functionResponse": { # 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. # Optional. The result of a function call. This is used to provide the model with the result of a function call that it predicted.
                      "name": "A String", # Required. The name of the function to call. Matches FunctionDeclaration.name and FunctionCall.name.
                      "parts": [ # Optional. Ordered `Parts` that constitute a function response. Parts may have different IANA MIME types.
                        { # A datatype containing media that is part of a `FunctionResponse` message. A `FunctionResponsePart` consists of data which has an associated datatype. A `FunctionResponsePart` can only contain one of the accepted types in `FunctionResponsePart.data`. A `FunctionResponsePart` must have a fixed IANA MIME type identifying the type and subtype of the media if the `inline_data` field is filled with raw bytes.
                          "fileData": { # URI based data for function response. # URI based data.
                            "displayName": "A String", # 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.
                            "fileUri": "A String", # Required. URI.
                            "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                          },
                          "inlineData": { # Raw media bytes for function response. Text should not be sent as raw bytes, use the 'text' field. # Inline media bytes.
                            "data": "A String", # Required. Raw bytes.
                            "displayName": "A String", # 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.
                            "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                          },
                        },
                      ],
                      "response": { # 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.
                        "a_key": "", # Properties of the object.
                      },
                      "scheduling": "A String", # Optional. Specifies how the response should be scheduled in the conversation. Only applicable to NON_BLOCKING function calls, is ignored otherwise. Defaults to WHEN_IDLE.
                    },
                    "inlineData": { # A content blob. A Blob contains data of a specific media type. It is used to represent images, audio, and video. # Optional. The inline data content of the part. This can be used to include images, audio, or video in a request.
                      "data": "A String", # Required. The raw bytes of the data.
                      "displayName": "A String", # Optional. The 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 used in the Gemini calls only when server-side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                      "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                    },
                    "mediaResolution": { # per part media resolution. Media resolution for the input media. # per part media resolution. Media resolution for the input media.
                      "level": "A String", # The tokenization quality used for given media.
                    },
                    "text": "A String", # Optional. The text content of the part. When sent from the VSCode Gemini Code Assist extension, references to @mentioned items will be converted to markdown boldface text. For example `@my-repo` will be converted to and sent as `**my-repo**` by the IDE agent.
                    "thought": True or False, # Optional. Indicates whether the `part` represents the model's thought process or reasoning.
                    "thoughtSignature": "A String", # Optional. An opaque signature for the thought so it can be reused in subsequent requests.
                    "videoMetadata": { # Provides metadata for a video, including the start and end offsets for clipping and the frame rate. # Optional. Video metadata. The metadata should only be specified while the video data is presented in inline_data or file_data.
                      "endOffset": "A String", # Optional. The end offset of the video.
                      "fps": 3.14, # Optional. The frame rate of the video sent to the model. If not specified, the default value is 1.0. The valid range is (0.0, 24.0].
                      "startOffset": "A String", # Optional. The start offset of the video.
                    },
                  },
                ],
                "role": "A String", # Optional. The producer of the content. Must be either 'user' or 'model'. If not set, the service will default to 'user'.
              },
              "fieldName": "A String", # Optional. The name of the specific field, such as "product_name" or "review_text".
            },
          ],
        },
      ],
      "outputFieldSpecs": [ # Required. Defines the schema of each synthetic example to be generated, defined by a list of fields.
        { # Specifies the properties of a single field that are included in each generated synthetic example. This helps the model understand what kind of data to generate for each field.
          "fieldName": "A String", # Required. The name of this field in the generated synthetic data, such as "email_subject" or "customer_review".
          "fieldType": "A String", # Optional. The data type of the field. Defaults to CONTENT if not set.
          "guidance": "A String", # Optional. Specific instructions for the large language model on how to generate content for this particular field. While the LLM can sometimes infer content from the field name, providing explicit guidance is preferred. For example, for a field named "review", the guidance could be "A positive review about a coffee maker."
        },
      ],
      "taskDescription": { # Defines a generation strategy based on a general task description. # Generates synthetic data based on a high-level description of the task or data you want.
        "taskDescription": "A String", # Required. A general description of the type of synthetic data you want to generate. For example, "Generate customer reviews for a new smartphone."
      },
    }

      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # The response message for the `GenerateSyntheticData` method, containing the synthetic examples generated by the Gen AI evaluation service.
      "syntheticExamples": [ # A list of generated synthetic examples, each containing a complete synthetic data instance generated based on your request.
        { # A single instance of generated synthetic data. Each example is made up of one or more named fields, as defined in `OutputFieldSpec`. These examples are used as few-shot examples to show the model what you want (in `GenerateSyntheticDataRequest.examples`) and to return generated examples in the response (in `GenerateSyntheticDataResponse.synthetic_examples`).
          "fields": [ # Required. A list of fields that constitute an example.
            { # Represents a single named field within a synthetic example, consisting of a name and the actual content.
              "content": { # The structured data content of a message. A Content message contains a `role` field, which indicates the producer of the content, and a `parts` field, which contains the multi-part data of the message. # Required. The actual content or value for this field. This can be text, images, or other types of data.
                "parts": [ # Required. A list of Part objects that make up a single message. Parts of a message can have different MIME types. A Content message must have at least one Part.
                  { # 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`. For media types that are not text, `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.
                    "codeExecutionResult": { # Result of executing the ExecutableCode. Generated only when the `CodeExecution` tool is used. # Optional. The result of executing the ExecutableCode.
                      "outcome": "A String", # Required. Outcome of the code execution.
                      "output": "A String", # Optional. Contains stdout when code execution is successful, stderr or other description otherwise.
                    },
                    "executableCode": { # 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. # Optional. Code generated by the model that is intended to be executed.
                      "code": "A String", # Required. The code to be executed.
                      "language": "A String", # Required. Programming language of the `code`.
                    },
                    "fileData": { # URI-based data. A FileData message contains a URI pointing to data of a specific media type. It is used to represent images, audio, and video stored in Google Cloud Storage. # Optional. The URI-based data of the part. This can be used to include files from Google Cloud Storage.
                      "displayName": "A String", # Optional. The display name of the file. Used to provide a label or filename to distinguish files. This field is only returned in `PromptMessage` for prompt management. It is used in the Gemini calls only when server side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                      "fileUri": "A String", # Required. The URI of the file in Google Cloud Storage.
                      "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                    },
                    "functionCall": { # 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. # Optional. A predicted function call returned from the model. This contains the name of the function to call and the arguments to pass to the function.
                      "args": { # Optional. The function parameters and values in JSON object format. See FunctionDeclaration.parameters for parameter details.
                        "a_key": "", # Properties of the object.
                      },
                      "name": "A String", # Optional. The name of the function to call. Matches FunctionDeclaration.name.
                      "partialArgs": [ # Optional. The partial argument value of the function call. If provided, represents the arguments/fields that are streamed incrementally.
                        { # Partial argument value of the function call.
                          "boolValue": True or False, # Optional. Represents a boolean value.
                          "jsonPath": "A String", # Required. A JSON Path (RFC 9535) to the argument being streamed. https://datatracker.ietf.org/doc/html/rfc9535. e.g. "$.foo.bar[0].data".
                          "nullValue": "A String", # Optional. Represents a null value.
                          "numberValue": 3.14, # Optional. Represents a double value.
                          "stringValue": "A String", # Optional. Represents a string value.
                          "willContinue": True or False, # Optional. Whether this is not the last part of the same json_path. If true, another PartialArg message for the current json_path is expected to follow.
                        },
                      ],
                      "willContinue": True or False, # Optional. Whether this is the last part of the FunctionCall. If true, another partial message for the current FunctionCall is expected to follow.
                    },
                    "functionResponse": { # 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. # Optional. The result of a function call. This is used to provide the model with the result of a function call that it predicted.
                      "name": "A String", # Required. The name of the function to call. Matches FunctionDeclaration.name and FunctionCall.name.
                      "parts": [ # Optional. Ordered `Parts` that constitute a function response. Parts may have different IANA MIME types.
                        { # A datatype containing media that is part of a `FunctionResponse` message. A `FunctionResponsePart` consists of data which has an associated datatype. A `FunctionResponsePart` can only contain one of the accepted types in `FunctionResponsePart.data`. A `FunctionResponsePart` must have a fixed IANA MIME type identifying the type and subtype of the media if the `inline_data` field is filled with raw bytes.
                          "fileData": { # URI based data for function response. # URI based data.
                            "displayName": "A String", # 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.
                            "fileUri": "A String", # Required. URI.
                            "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                          },
                          "inlineData": { # Raw media bytes for function response. Text should not be sent as raw bytes, use the 'text' field. # Inline media bytes.
                            "data": "A String", # Required. Raw bytes.
                            "displayName": "A String", # 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.
                            "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                          },
                        },
                      ],
                      "response": { # 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.
                        "a_key": "", # Properties of the object.
                      },
                      "scheduling": "A String", # Optional. Specifies how the response should be scheduled in the conversation. Only applicable to NON_BLOCKING function calls, is ignored otherwise. Defaults to WHEN_IDLE.
                    },
                    "inlineData": { # A content blob. A Blob contains data of a specific media type. It is used to represent images, audio, and video. # Optional. The inline data content of the part. This can be used to include images, audio, or video in a request.
                      "data": "A String", # Required. The raw bytes of the data.
                      "displayName": "A String", # Optional. The 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 used in the Gemini calls only when server-side tools (`code_execution`, `google_search`, and `url_context`) are enabled.
                      "mimeType": "A String", # Required. The IANA standard MIME type of the source data.
                    },
                    "mediaResolution": { # per part media resolution. Media resolution for the input media. # per part media resolution. Media resolution for the input media.
                      "level": "A String", # The tokenization quality used for given media.
                    },
                    "text": "A String", # Optional. The text content of the part. When sent from the VSCode Gemini Code Assist extension, references to @mentioned items will be converted to markdown boldface text. For example `@my-repo` will be converted to and sent as `**my-repo**` by the IDE agent.
                    "thought": True or False, # Optional. Indicates whether the `part` represents the model's thought process or reasoning.
                    "thoughtSignature": "A String", # Optional. An opaque signature for the thought so it can be reused in subsequent requests.
                    "videoMetadata": { # Provides metadata for a video, including the start and end offsets for clipping and the frame rate. # Optional. Video metadata. The metadata should only be specified while the video data is presented in inline_data or file_data.
                      "endOffset": "A String", # Optional. The end offset of the video.
                      "fps": 3.14, # Optional. The frame rate of the video sent to the model. If not specified, the default value is 1.0. The valid range is (0.0, 24.0].
                      "startOffset": "A String", # Optional. The start offset of the video.
                    },
                  },
                ],
                "role": "A String", # Optional. The producer of the content. Must be either 'user' or 'model'. If not set, the service will default to 'user'.
              },
              "fieldName": "A String", # Optional. The name of the specific field, such as "product_name" or "review_text".
            },
          ],
        },
      ],
    }

`get(name, x__xgafv=None)`

    Gets information about a location.

    Args:
      name: string, Resource name for the location. (required)
      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # A resource that represents a Google Cloud location.
      "displayName": "A String", # The friendly name for this location, typically a nearby city name. For example, "Tokyo".
      "labels": { # Cross-service attributes for the location. For example {"cloud.googleapis.com/region": "us-east1"}
        "a_key": "A String",
      },
      "locationId": "A String", # The canonical id for this location. For example: `"us-east1"`.
      "metadata": { # Service-specific metadata. For example the available capacity at the given location.
        "a_key": "", # Properties of the object. Contains field @type with type URL.
      },
      "name": "A String", # Resource name for the location, which may vary between implementations. For example: `"projects/example-project/locations/us-east1"`
    }

`getRagEngineConfig(name, x__xgafv=None)`

    Gets a RagEngineConfig.

    Args:
      name: string, Required. The name of the RagEngineConfig resource. Format: `projects/{project}/locations/{location}/ragEngineConfig` (required)
      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # Config for RagEngine.
      "name": "A String", # Identifier. The name of the RagEngineConfig. Format: `projects/{project}/locations/{location}/ragEngineConfig`
      "ragManagedDbConfig": { # Configuration message for RagManagedDb used by RagEngine. # The config of the RagManagedDb used by RagEngine.
        "basic": { # 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 under Spanner mode if not explicitly chosen. # Deprecated: Use `mode` instead to set the tier under Spanner. Sets the RagManagedDb to the Basic tier.
        },
        "scaled": { # Scaled tier offers production grade performance along with autoscaling functionality. It is suitable for customers with large amounts of data or performance sensitive workloads. # Deprecated: Use `mode` instead to set the tier under Spanner. Sets the RagManagedDb to the Scaled tier.
        },
        "serverless": { # Message to configure the serverless mode offered by RAG Engine. # Sets the backend to be the serverless mode offered by RAG Engine.
        },
        "spanner": { # Message to configure the Spanner database used by RagManagedDb. # Sets the RAG Engine backend to be RagManagedDb, built on top of Spanner. NOTE: This is the default mode (w/ Basic Tier) if not explicitly chosen.
          "basic": { # 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 under Spanner mode if not explicitly chosen. # Sets the RagManagedDb to the Basic tier. This is the default tier for Spanner mode if not explicitly chosen.
          },
          "scaled": { # Scaled tier offers production grade performance along with autoscaling functionality. It is suitable for customers with large amounts of data or performance sensitive workloads. # Sets the RagManagedDb to the Scaled tier.
          },
          "unprovisioned": { # 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. # Sets the RagManagedDb to the Unprovisioned tier.
          },
        },
        "unprovisioned": { # 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. # Deprecated: Use `mode` instead to set the tier under Spanner. Sets the RagManagedDb to the Unprovisioned tier.
        },
      },
    }

`list(name, extraLocationTypes=None, filter=None, pageSize=None, pageToken=None, x__xgafv=None)`

    Lists information about the supported locations for this service. This method lists locations based on the resource scope provided in the ListLocationsRequest.name field: * **Global locations**: If `name` is empty, the method lists the public locations available to all projects. * **Project-specific locations**: If `name` follows the format `projects/{project}`, the method lists locations visible to that specific project. This includes public, private, or other project-specific locations enabled for the project. For gRPC and client library implementations, the resource name is passed as the `name` field. For direct service calls, the resource name is incorporated into the request path based on the specific service implementation and version.

    Args:
      name: string, The resource that owns the locations collection, if applicable. (required)
      extraLocationTypes: string, Optional. Do not use this field unless explicitly documented otherwise. This is primarily for internal usage. (repeated)
      filter: string, A filter to narrow down results to a preferred subset. The filtering language accepts strings like `"displayName=tokyo"`, and is documented in more detail in [AIP-160](https://google.aip.dev/160).
      pageSize: integer, The maximum number of results to return. If not set, the service selects a default.
      pageToken: string, A page token received from the `next_page_token` field in the response. Send that page token to receive the subsequent page.
      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # The response message for Locations.ListLocations.
      "locations": [ # A list of locations that matches the specified filter in the request.
        { # A resource that represents a Google Cloud location.
          "displayName": "A String", # The friendly name for this location, typically a nearby city name. For example, "Tokyo".
          "labels": { # Cross-service attributes for the location. For example {"cloud.googleapis.com/region": "us-east1"}
            "a_key": "A String",
          },
          "locationId": "A String", # The canonical id for this location. For example: `"us-east1"`.
          "metadata": { # Service-specific metadata. For example the available capacity at the given location.
            "a_key": "", # Properties of the object. Contains field @type with type URL.
          },
          "name": "A String", # Resource name for the location, which may vary between implementations. For example: `"projects/example-project/locations/us-east1"`
        },
      ],
      "nextPageToken": "A String", # The standard List next-page token.
    }

`list_next()`

    Retrieves the next page of results.

            Args:
              previous_request: The request for the previous page. (required)
              previous_response: The response from the request for the previous page. (required)

            Returns:
              A request object that you can call 'execute()' on to request the next
              page. Returns None if there are no more items in the collection.

`retrieveContexts(parent, body=None, x__xgafv=None)`

    Retrieves relevant contexts for a query.

    Args:
      parent: string, Required. The resource name of the Location from which to retrieve RagContexts. The users must have permission to make a call in the project. Format: `projects/{project}/locations/{location}`. (required)
      body: object, The request body.
        The object takes the form of:

    { # Request message for VertexRagService.RetrieveContexts.
      "query": { # A query to retrieve relevant contexts. # Required. Single RAG retrieve query.
        "ragRetrievalConfig": { # Specifies the context retrieval config. # Optional. The retrieval config for the query.
          "filter": { # Config for filters. # Optional. Config for filters.
            "metadataFilter": "A String", # Optional. String for metadata filtering.
            "vectorDistanceThreshold": 3.14, # Optional. Only returns contexts with vector distance smaller than the threshold.
            "vectorSimilarityThreshold": 3.14, # Optional. Only returns contexts with vector similarity larger than the threshold.
          },
          "ranking": { # Config for ranking and reranking. # Optional. Config for ranking and reranking.
            "llmRanker": { # Config for LlmRanker. # Optional. Config for LlmRanker.
              "modelName": "A String", # Optional. The model name used for ranking. See [Supported models](https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/inference#supported-models).
            },
            "rankService": { # Config for Rank Service. # Optional. Config for Rank Service.
              "modelName": "A String", # Optional. The model name of the rank service. Format: `semantic-ranker-512@latest`
            },
          },
          "topK": 42, # Optional. The number of contexts to retrieve.
        },
        "text": "A String", # Optional. The query in text format to get relevant contexts.
      },
      "vertexRagStore": { # The data source for Vertex RagStore. # The data source for Vertex RagStore.
        "ragResources": [ # 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.
          { # The definition of the Rag resource.
            "ragCorpus": "A String", # Optional. RagCorpora resource name. Format: `projects/{project}/locations/{location}/ragCorpora/{rag_corpus}`
            "ragFileIds": [ # Optional. rag_file_id. The files should be in the same rag_corpus set in rag_corpus field.
              "A String",
            ],
          },
        ],
        "vectorDistanceThreshold": 3.14, # Optional. Only return contexts with vector distance smaller than the threshold.
      },
    }

      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # Response message for VertexRagService.RetrieveContexts.
      "contexts": { # Relevant contexts for one query. # The contexts of the query.
        "contexts": [ # All its contexts.
          { # A context of the query.
            "chunk": { # A RagChunk includes the content of a chunk of a RagFile, and associated metadata. # Context of the retrieved chunk.
              "pageSpan": { # Represents where the chunk starts and ends in the document. # If populated, represents where the chunk starts and ends in the document.
                "firstPage": 42, # Page where chunk starts in the document. Inclusive. 1-indexed.
                "lastPage": 42, # Page where chunk ends in the document. Inclusive. 1-indexed.
              },
              "text": "A String", # The content of the chunk.
            },
            "score": 3.14, # 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.
            "sourceDisplayName": "A String", # The file display name.
            "sourceUri": "A String", # 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.
            "text": "A String", # The text chunk.
          },
        ],
      },
    }

`updateRagEngineConfig(name, body=None, x__xgafv=None)`

    Updates a RagEngineConfig.

    Args:
      name: string, Identifier. The name of the RagEngineConfig. Format: `projects/{project}/locations/{location}/ragEngineConfig` (required)
      body: object, The request body.
        The object takes the form of:

    { # Config for RagEngine.
      "name": "A String", # Identifier. The name of the RagEngineConfig. Format: `projects/{project}/locations/{location}/ragEngineConfig`
      "ragManagedDbConfig": { # Configuration message for RagManagedDb used by RagEngine. # The config of the RagManagedDb used by RagEngine.
        "basic": { # 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 under Spanner mode if not explicitly chosen. # Deprecated: Use `mode` instead to set the tier under Spanner. Sets the RagManagedDb to the Basic tier.
        },
        "scaled": { # Scaled tier offers production grade performance along with autoscaling functionality. It is suitable for customers with large amounts of data or performance sensitive workloads. # Deprecated: Use `mode` instead to set the tier under Spanner. Sets the RagManagedDb to the Scaled tier.
        },
        "serverless": { # Message to configure the serverless mode offered by RAG Engine. # Sets the backend to be the serverless mode offered by RAG Engine.
        },
        "spanner": { # Message to configure the Spanner database used by RagManagedDb. # Sets the RAG Engine backend to be RagManagedDb, built on top of Spanner. NOTE: This is the default mode (w/ Basic Tier) if not explicitly chosen.
          "basic": { # 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 under Spanner mode if not explicitly chosen. # Sets the RagManagedDb to the Basic tier. This is the default tier for Spanner mode if not explicitly chosen.
          },
          "scaled": { # Scaled tier offers production grade performance along with autoscaling functionality. It is suitable for customers with large amounts of data or performance sensitive workloads. # Sets the RagManagedDb to the Scaled tier.
          },
          "unprovisioned": { # 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. # Sets the RagManagedDb to the Unprovisioned tier.
          },
        },
        "unprovisioned": { # 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. # Deprecated: Use `mode` instead to set the tier under Spanner. Sets the RagManagedDb to the Unprovisioned tier.
        },
      },
    }

      x__xgafv: string, V1 error format.
        Allowed values
          1 - v1 error format
          2 - v2 error format

    Returns:
      An object of the form:

        { # This resource represents a long-running operation that is the result of a network API call.
      "done": True or False, # 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.
      "error": { # 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). # The error result of the operation in case of failure or cancellation.
        "code": 42, # The status code, which should be an enum value of google.rpc.Code.
        "details": [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
          {
            "a_key": "", # Properties of the object. Contains field @type with type URL.
          },
        ],
        "message": "A String", # 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.
      },
      "metadata": { # 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.
        "a_key": "", # Properties of the object. Contains field @type with type URL.
      },
      "name": "A String", # 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}`.
      "response": { # 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`.
        "a_key": "", # Properties of the object. Contains field @type with type URL.
      },
    }