Tune a model using your data (original) (raw)
Discover
Get started
Plan
Datasets
Tables
- External data sources
* Introduction
* External tables
* Introduction
* Create Apache Iceberg external tables
* Create Bigtable external tables
* Create Cloud Storage external tables
* Create Google Drive external tables
* Use metadata caching
* Manage Hive partitioned data
* Create a table definition file for external data - Apache Iceberg managed tables
- External data sources
Load, transform, and export
Migrate data
- Introduction
- BigQuery Migration Service
- Migration assessment
- Migrate schema and data
- Migrate data pipelines
- Use custom organization policies
- Migrate SQL
* Translate SQL queries interactively
* Translate SQL queries using the API
* Translate SQL queries in batch
* Generate metadata for translation and assessment
* Transform SQL translations with YAML
* Map SQL object names for batch translation
Load data
- Introduction
- Create data integration workflows using the BigQuery web UI
- Storage overview
- BigQuery Data Transfer Service
* Introduction
* Supported data sources
* Data location and transfers
* Authorize transfers
* Enable transfers
* Manage transfers
* Transfer run notifications
* Troubleshoot transfer configurations
* Use service accounts
* Use third-party transfers
* Use custom organization policies
* Data source change log
* Event-driven transfers
* Transfer data into Managed Iceberg tables - Batch load data
* Introduction
* Auto-detect schemas
* Load Avro data
* Load Parquet data
* Load ORC data
* Load CSV data
* Load JSON data
* Load externally partitioned data
* Load data from a Datastore export
* Load data from a Firestore export
* Load data using the Storage Write API
* Load data into partitioned tables - Load data from other Google services
- Discover and catalog Cloud Storage data
- Load data using third-party apps
- Load data using BigQuery Omni operations
- Optimize load jobs
Export data
Analyze
Analyze your data
- Run a query
- Write queries with Gemini
- Write query results
- Query data with SQL
* Introduction
* Arrays
* JSON data
* Multi-statement queries
* Parameterized queries
* Pipe syntax
* Analyze data using pipe syntax
* Recursive CTEs
* Sketches
* Table sampling
* Time series
* Transactions
* Wildcard tables - Use DataFrames
* Introduction
* Install DataFrames
* Manipulate data
* Customize Python functions
* Use ML and AI
* Use the data type system
* Manage sessions and I/O
* Visualize graphs
* Use DataFrames in dbt
* Optimize performance
* Migrate to DataFrames version 2.0
* Use the BigQuery JupyterLab plugin - Routines
* Introduction
* Manage routines
* User-defined functions
* User-defined functions in Python
* User-defined aggregate functions
* Table functions
* Remote functions
* SQL stored procedures
* Stored procedures for Apache Spark
* Analyze object tables by using remote functions
* Remote functions and Translation API tutorial - Run global queries
- Access historical data
- Use open source Python libraries
Use BigQuery Graph
Manage queries
- Use cached results
- Troubleshoot queries
- Optimize queries
* Introduction
* Use the query plan explanation
* Get query performance insights
* Optimize query computation
* Use history-based optimizations
* Optimize storage for query performance
* Use materialized views
* Use BI Engine
* Use nested and repeated data
* Optimize functions
* Use the advanced runtime
* Use primary and foreign keys - Paginate with the BigQuery API
Query external data sources
- Establish connections
* Introduction
* Create connections
* Create a Cloud resource connection
* Create a default Cloud resource connection
* AlloyDB connections
* Amazon S3 connections
* Apache Spark connections
* Azure Blob Storage connections
* Cloud SQL connections
* SAP Datasphere connections
* Spanner connections
* Manage connections
* Configure connections with network attachments - Run queries on external data
- Establish connections
BigQuery AI
Generative AI functions
- Overview
- End-to-end user journeys for generative AI models
- Choose a text generation function
- Set permissions for generative AI functions
- Optimize costs with model distillation
- Tutorials
* Generate text
* Generate text with Gemini
* Generate text with Gemma
* Generate text with any supported model
* Generate text using AI.GENERATE
* Handle quota errors
* Analyze images
* Perform semantic analysis
* Computer vision
* Annotate images
* Run inference on image data
* Analyze images with an imported classification model
* Analyze images with an imported feature vector model
Embeddings and vector search
- Overview
- Vector indexes
- Manage vector indexes
- Automate embedding generation
- Tutorials
* Generate embeddings
* Generate text embeddings using a remote model
* Generate text embeddings using an open model
* Generate image embeddings using an LLM
* Generate video embeddings using an LLM
* Handle quota errors by calling ML.GENERATE_EMBEDDING iteratively
* Generate and search multimodal embeddings
* Generate text embeddings using pretrained TensorFlow models
* Generate embeddings with transformer models in ONNX format
Machine learning
- Introduction
- ML models and MLOps
* Model creation
* Hyperparameter tuning overview
* Model evaluation overview
* Model inference overview
* Explainable AI overview
* Model weights overview
* ML pipelines overview
* Model monitoring overview
* Manage BigQueryML models in Agent Platform - Classification
- Regression
- Dimensionality reduction
- Clustering
- Recommendation
- Forecasting
- Anomaly detection
- Contribution analysis
- Tutorials
* Recommendation
* Create recommendations based on explicit feedback with a matrix factorization model
* Create recommendations based on implicit feedback with a matrix factorization model
* Augmented analytics
* Forecasting
* Forecast a single time series with an ARIMA_PLUS univariate model
* Forecast multiple time series with an ARIMA_PLUS univariate model
* Forecast time series with a TimesFM univariate model
* Scale an ARIMA_PLUS univariate model to millions of time series
* Forecast a single time series with a multivariate model
* Forecast multiple time series with a multivariate model
* Use custom holidays with an ARIMA_PLUS univariate model
* Limit forecasted values for an ARIMA_PLUS univariate model
* Forecast hierarchical time series with an ARIMA_PLUS univariate model
Administer
Monitor workloads
Govern
Share data
Audit
Develop
Version control with repositories and workspaces
This document shows you how to create a BigQuery MLremote modelthat references a Gemini Enterprise Agent Platform model, and then configure the model to perform supervised tuning. The Agent Platform model must be one of the following:
gemini-2.5-progemini-2.5-flash-litegemini-2.0-flash-001gemini-2.0-flash-lite-001
After you create the remote model, you use theML.EVALUATE functionto evaluate the model and confirm that the model's performance suits your use case. You can then use the model in conjunction with theAI.GENERATE_TEXT functionto analyze text in a BigQuery table.
For more information, seeVertex AI Gemini API model supervised tuning.
Required roles
To create and evaluate a tuned model, you need the following Identity and Access Management (IAM) roles:
- Create and use BigQuery datasets, tables, and models: BigQuery Data Editor (
roles/bigquery.dataEditor) on your project. - Create, delegate, and use BigQuery connections: BigQuery Connections Admin (
roles/bigquery.connectionsAdmin) on your project.
If you don't have a default connectionconfigured, you can create and set one as part of running theCREATE MODELstatement. To do so, you must have BigQuery Admin (roles/bigquery.admin) on your project. For more information, seeConfigure the default connection. - Grant permissions to the connection's service account: Project IAM Admin (
roles/resourcemanager.projectIamAdmin) on the project that contains the Gemini Enterprise Agent Platform endpoint. This is the current project for remote models that you create by specifying the model name as an endpoint. This is the project identified in the URL for remote models that you create by specifying a URL as an endpoint. - Create BigQuery jobs: BigQuery Job User (
roles/bigquery.jobUser) on your project.
These predefined roles contain the permissions required to perform the tasks in this document. To see the exact permissions that are required, expand theRequired permissions section:
Required permissions
- Create a dataset:
bigquery.datasets.create - Create, delegate, and use a connection:
bigquery.connections.* - Set service account permissions:
resourcemanager.projects.getIamPolicyandresourcemanager.projects.setIamPolicy - Create a model and run inference:
bigquery.jobs.createbigquery.models.createbigquery.models.getDatabigquery.models.updateDatabigquery.models.updateMetadata
You might also be able to get these permissions withcustom roles or otherpredefined roles.
Before you begin
- In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
- Create a project: To create a project, you need the Project Creator role (
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
Go to project selector
- Verify that billing is enabled for your Google Cloud project.
- Enable the BigQuery, BigQuery Connection,Agent Platform API, and Compute Engine APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
Enable the APIs
Create a dataset
Create a BigQuery dataset to contain your resources:
Console
- In the Google Cloud console, go to the BigQuery page.
Go to BigQuery - In the left pane, click Explorer:

If you don't see the left pane, click Expand left pane to open the pane. - In the Explorer pane, click your project name.
- Click View actions > Create dataset.
- On the Create dataset page, do the following:
- For Dataset ID, type a name for the dataset.
- For Location type, select Region or Multi-region.
- If you selected Region, then select a location from theRegion list.
- If you selected Multi-region, then select US or Europefrom the Multi-region list.
- Click Create dataset.
bq
- To create a new dataset, use thebq mk command with the
--locationflag:
bq --location=LOCATION mk -d DATASET_ID
Replace the following:LOCATION: the dataset's location.DATASET_IDis the ID of the dataset that you're creating.
- Confirm that the dataset was created:
bq ls
Create a connection
Create aCloud resource connectionand get the connection's service account. Create the connection in the same location as the dataset you created in the previous step.
You can skip this step if you either have a default connection configured, or you have the BigQuery Admin role.
Select one of the following options:
Console
- Go to the BigQuery page.
Go to BigQuery - In the left pane, click Explorer:

If you don't see the left pane, click Expand left pane to open the pane. - In the Explorer pane, expand your project name, and then clickConnections.
- On the Connections page, click Create connection.
- For Connection type, choose Vertex AI remote models, remote functions, BigLake and Spanner (Cloud Resource).
- In the Connection ID field, enter a name for your connection.
- For Location type, select a location for your connection. The connection should be colocated with your other resources such as datasets.
- Click Create connection.
- Click Go to connection.
- In the Connection info pane, copy the service account ID for use in a later step.
SQL
Use the CREATE CONNECTION statement:
- In the Google Cloud console, go to the BigQuery page.
Go to BigQuery - In the query editor, enter the following statement:
CREATE CONNECTION [IF NOT EXISTS]CONNECTION_NAME
OPTIONS (
connection_type = "CLOUD_RESOURCE",
friendly_name = "FRIENDLY_NAME",
description = "DESCRIPTION"
);
Replace the following:CONNECTION_NAME: the name of the connection in either thePROJECT_ID.LOCATION.CONNECTION_ID,LOCATION.CONNECTION_ID, orCONNECTION_IDformat. If the project or location are omitted, then they are inferred from the project and location where the statement is run.FRIENDLY_NAME(optional): a descriptive name for the connection.DESCRIPTION(optional): a description of the connection.
- Click Run.
For more information about how to run queries, see Run an interactive query.
bq
- In a command-line environment, create a connection:
bq mk --connection --location=REGION --project_id=PROJECT_ID \
--connection_type=CLOUD_RESOURCE CONNECTION_ID
The--project_idparameter overrides the default project.
Replace the following:REGION: yourconnection regionPROJECT_ID: your Google Cloud project IDCONNECTION_ID: an ID for your connection
When you create a connection resource, BigQuery creates a unique system service account and associates it with the connection.
Troubleshooting: If you get the following connection error,update the Google Cloud SDK:
Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
- Retrieve and copy the service account ID for use in a later step:
bq show --connection PROJECT_ID.REGION.CONNECTION_ID
The output is similar to the following:
name properties
1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
Python
Before trying this sample, follow the Python setup instructions in theBigQuery quickstart using client libraries. For more information, see theBigQuery Python API reference documentation.
To authenticate to BigQuery, set up Application Default Credentials. For more information, seeSet up authentication for client libraries.
Node.js
Before trying this sample, follow the Node.js setup instructions in theBigQuery quickstart using client libraries. For more information, see theBigQuery Node.js API reference documentation.
To authenticate to BigQuery, set up Application Default Credentials. For more information, seeSet up authentication for client libraries.
Terraform
Use thegoogle_bigquery_connectionresource.
To authenticate to BigQuery, set up Application Default Credentials. For more information, seeSet up authentication for client libraries.
The following example creates a Cloud resource connection namedmy_cloud_resource_connection in the US region:
To apply your Terraform configuration in a Google Cloud project, complete the steps in the following sections.
Prepare Cloud Shell
- Launch Cloud Shell.
- Set the default Google Cloud project where you want to apply your Terraform configurations.
You only need to run this command once per project, and you can run it in any directory.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Environment variables are overridden if you set explicit values in the Terraform configuration file.
Prepare the directory
Each Terraform configuration file must have its own directory (also called a root module).
- In Cloud Shell, create a directory and a new file within that directory. The filename must have the
.tfextension—for examplemain.tf. In this tutorial, the file is referred to asmain.tf.
mkdir DIRECTORY && cd DIRECTORY && touch main.tf - If you are following a tutorial, you can copy the sample code in each section or step.
Copy the sample code into the newly createdmain.tf.
Optionally, copy the code from GitHub. This is recommended when the Terraform snippet is part of an end-to-end solution. - Review and modify the sample parameters to apply to your environment.
- Save your changes.
- Initialize Terraform. You only need to do this once per directory.
terraform init
Optionally, to use the latest Google provider version, include the-upgradeoption:
terraform init -upgrade
Apply the changes
- Review the configuration and verify that the resources that Terraform is going to create or update match your expectations:
terraform plan
Make corrections to the configuration as necessary. - Apply the Terraform configuration by running the following command and entering
yesat the prompt:
terraform apply
Wait until Terraform displays the "Apply complete!" message. - Open your Google Cloud project to view the results. In the Google Cloud console, navigate to your resources in the UI to make sure that Terraform has created or updated them.
Give the connection's service account access
Grant the connection's service account the Vertex AI Service Agent role.
If you plan to specify the endpoint as a URL when you create the remote model, for example endpoint = 'https://us-central1-aiplatform.googleapis.com/v1/projects/myproject/locations/us-central1/publishers/google/models/gemini-2.0-flash', grant this role in the same project you specify in the URL.
If you plan to specify the endpoint by using the model name when you create the remote model, for example endpoint = 'gemini-2.0-flash', grant this role in the same project where you plan to create the remote model.
Granting the role in a different project results in the errorbqcx-1234567890-wxyz@gcp-sa-bigquery-condel.iam.gserviceaccount.com does not have the permission to access resource.
To grant the role, follow these steps:
Console
- Go to the IAM & Admin page.
Go to IAM & Admin - Click Grant Access.
- For New principals, enter the service account ID that you copied earlier.
- Click Select a role.
- In Filter, type
Vertex AI Service Agentand then select that role. - Click Save.
gcloud
Use thegcloud projects add-iam-policy-binding command:
gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/aiplatform.serviceAgent' --condition=None
Replace the following:
PROJECT_NUMBER: your project number.MEMBER: the service account ID that you copied earlier.
The service account associated with your connection is an instance of theBigQuery Connection Delegation Service Agent, so it is OK to assign a service agent role to it.
Create a model with supervised tuning
- In the Google Cloud console, go to the BigQuery page.
Go to BigQuery - In the query editor, run the following query to create aremote model:
CREATE OR REPLACE MODELPROJECT_ID.DATASET_ID.MODEL_NAME
REMOTE WITH CONNECTION {DEFAULT |PROJECT_ID.REGION.CONNECTION_ID}
OPTIONS (
ENDPOINT = 'ENDPOINT',
MAX_ITERATIONS = MAX_ITERATIONS,
LEARNING_RATE_MULTIPLIER = LEARNING_RATE_MULTIPLIER,
DATA_SPLIT_METHOD = 'DATA_SPLIT_METHOD',
DATA_SPLIT_EVAL_FRACTION = DATA_SPLIT_EVAL_FRACTION,
DATA_SPLIT_COL = 'DATA_SPLIT_COL',
EVALUATION_TASK = 'EVALUATION_TASK',
PROMPT_COL = 'INPUT_PROMPT_COL',
INPUT_LABEL_COLS = INPUT_LABEL_COLS)
AS SELECT PROMPT_COLUMN, LABEL_COLUMN
FROMTABLE_PROJECT_ID.TABLE_DATASET.TABLE_NAME;
Replace the following:PROJECT_ID: the project ID of the project in which to create the model.DATASET_ID: the ID of the dataset to contain the model. This dataset must be in asupported Gemini Enterprise Agent Platform region.MODEL_NAME: the name of the model.REGION: the region used by the connection.CONNECTION_ID: the ID of your BigQuery connection. This connection must be in the samelocation as the dataset that you are using.
When you view the connection details in the Google Cloud console, this is the value in the last section of the fully qualified connection ID that is shown inConnection ID—for example,projects/myproject/locations/connection_location/connections/_myconnection_.ENDPOINT: aSTRINGvalue that specifies the name of the model to use.MAX_ITERATIONS: anINT64value that specifies the number of steps to run for supervised tuning. TheMAX_ITERATIONSvalue must be between1and∞.
Gemini models train using epochs rather than steps, so BigQuery ML converts theMAX_ITERATIONSvalue to epochs. The default value forMAX_ITERATIONSis the number of rows in the input data, which is equivalent to one epoch. To use multiple epochs, specify a multiple of the number of rows in your training data. For example, if you have 100 rows of input data and you want to use two epochs, specify200for the argument value. If you provide a value that isn't a multiple of the number of rows in the input data, BigQuery ML rounds up to the nearest epoch. For example, if you have 100 rows of input data and you specify101for theMAX_ITERATIONSvalue, training is performed with two epochs.
For more information about the parameters used to tune Gemini models, seeCreate a tuning job.DATA_SPLIT_METHOD: aSTRINGvalue that specifies the method used to split input data into training and evaluation sets. The valid options are the following:
*AUTO_SPLIT: BigQuery ML automatically splits the data. The way in which the data is split varies depending on the number of rows in the input table. This is the default value.
*RANDOM: data is randomized before being split into sets. To customize the data split, you can use this option with theDATA_SPLIT_EVAL_FRACTIONoption.
*CUSTOM: data is split using the column provided in theDATA_SPLIT_COLoption. TheDATA_SPLIT_COLvalue must be the name of a column of typeBOOL. Rows with a value ofTRUEorNULLare used as evaluation data, and rows with a value ofFALSEare used as training data.
*SEQ: split data using the column provided in theDATA_SPLIT_COLoption. TheDATA_SPLIT_COLvalue must be the name of a column of one of the following types:
*NUMERIC
*BIGNUMERIC
*STRING
*TIMESTAMP
The data is sorted smallest to largest based on the specified column.
The first n rows are used as evaluation data, where n is the value specified forDATA_SPLIT_EVAL_FRACTION. The remaining rows are used as training data.
*NO_SPLIT: no data split; all input data is used as training data.
For more information about these data split options, seeDATA_SPLIT_METHOD.
DATA_SPLIT_EVAL_FRACTION: aFLOAT64value that specifies the fraction of the data to use as evaluation data when performing supervised tuning. Must be a value in the range[0, 1.0]. The default value is0.2.
Use this option when you specifyRANDOMorSEQas the value for theDATA_SPLIT_METHODoption. To customize the data split, you can use theDATA_SPLIT_METHODoption with theDATA_SPLIT_EVAL_FRACTIONoption.DATA_SPLIT_COL: aSTRINGvalue that specifies the name of the column to use to sort input data into the training or evaluation set. Use when you are specifyingCUSTOMorSEQas the value for theDATA_SPLIT_METHODoption.EVALUATION_TASK: aSTRINGvalue that specifies the type of task that you want to tune the model to perform. The valid options are:
*TEXT_GENERATION
*CLASSIFICATION
*SUMMARIZATION
*QUESTION_ANSWERING
*UNSPECIFIED
The default value is
UNSPECIFIED.INPUT_PROMPT_COL: aSTRINGvalue that contains the name of the prompt column in the training data table to use when performing supervised tuning. The default value isprompt.INPUT_LABEL_COLS: anARRAY<<STRING>value that contains the name of the label column in the training data table to use in supervised tuning. You can only specify one element in the array. The default value is an empty array. This causeslabelto be the default value of theLABEL_COLUMNargument.PROMPT_COLUMN: the column in the training data table that contains the prompt for evaluating the content in theLABEL_COLUMNcolumn. This column must be ofSTRINGtype or be cast toSTRING. If you specify a value for theINPUT_PROMPT_COLoption, you must specify the same value forPROMPT_COLUMN. Otherwise this value must beprompt. If your table does not have apromptcolumn, use an alias to specify an existing table column. For example,AS SELECT hint AS prompt, label FROM mydataset.mytable.LABEL_COLUMN: the column in the training data table that contains the examples to train the model with. This column must be ofSTRINGtype or be cast toSTRING. If you specify a value for theINPUT_LABEL_COLSoption, you must specify the same value forLABEL_COLUMN. Otherwise this value must belabel. If your table does not have alabelcolumn, use an alias to specify an existing table column. For example,AS SELECT prompt, feature AS label FROM mydataset.mytable.TABLE_PROJECT_ID: the project ID of the project that contains the training data table.TABLE_DATASET: the name of the dataset that contains the training data table.TABLE_NAME: the name of the table that contains the data to use to train the model.
Evaluate the tuned model
- In the Google Cloud console, go to the BigQuery page.
Go to BigQuery - In the query editor, run the following query to evaluate the tuned model:
SELECT
- FROM
ML.EVALUATE(
MODELPROJECT_ID.DATASET_ID.MODEL_NAME,
TABLETABLE_PROJECT_ID.TABLE_DATASET.TABLE_NAME,
STRUCT('TASK_TYPE' AS task_type, TOKENS AS max_output_tokens,
TEMPERATURE AS temperature, TOP_K AS top_k,
TOP_P AS top_p));
Replace the following:PROJECT_ID: the project ID of the project that contains the model.DATASET_ID: the ID of the dataset that contains the model.MODEL_NAME: the name of the model.TABLE_PROJECT_ID: the project ID of the project that contains the evaluation data table.TABLE_DATASET: the name of the dataset that contains the evaluation data table.TABLE_NAME: the name of the table that contains the evaluation data.
The table must have a column whose name matches the prompt column name that is provided during model training. You can provide this value by using theprompt_coloption during model training. Ifprompt_colis unspecified, the column namedpromptin the training data is used. An error is returned if there is no column namedprompt.
The table must have a column whose name matches the label column name that is provided during model training. You can provide this value by using theinput_label_colsoption during model training. Ifinput_label_colsis unspecified, the column namedlabelin the training data is used. An error is returned if there is no column namedlabel.TASK_TYPE: aSTRINGvalue that specifies the type of task that you want to evaluate the model for. The valid options are:
*TEXT_GENERATION
*CLASSIFICATION
*SUMMARIZATION
*QUESTION_ANSWERING
*UNSPECIFIEDTOKENS: anINT64value that sets the maximum number of tokens that can be generated in the response. This value must be in the range[1,1024]. Specify a lower value for shorter responses and a higher value for longer responses. The default is128.TEMPERATURE: aFLOAT64value in the range[0.0,1.0]that controls the degree of randomness in token selection. The default is0.
Lower values fortemperatureare good for prompts that require a more deterministic and less open-ended or creative response, while higher values fortemperaturecan lead to more diverse or creative results. A value of0fortemperatureis deterministic, meaning that the highest probability response is always selected.TOP_K: anINT64value in the range[1,40]that determines the initial pool of tokens the model considers for selection. Specify a lower value for less random responses and a higher value for more random responses. The default is40.TOP_P: aFLOAT64value in the range[0.0,1.0]helps determine which tokens from the pool determined byTOP_Kare selected. Specify a lower value for less random responses and a higher value for more random responses. The default is0.95.
Generate text
Generate text with theAI.GENERATE_TEXT function:
Prompt column
Generate text by using a table column to provide the prompt.
SELECT *
FROM AI.GENERATE_TEXT(
MODEL PROJECT_ID.DATASET_ID.MODEL_NAME,
TABLE PROJECT_ID.DATASET_ID.TABLE_NAME,
STRUCT(TOKENS AS max_output_tokens, TEMPERATURE AS temperature,
TOP_P AS top_p,
STOP_SEQUENCES AS stop_sequences)
);
Replace the following:
PROJECT_ID: your project ID.DATASET_ID: the ID of the dataset that contains the model.MODEL_NAME: the name of the model.TABLE_NAME: the name of the table that contains the prompt. This table must have a column whose name matches the name of the feature column in the tuned model. The feature column name in the model can be set by using thePROMPT_COLoption when creating the model. Otherwise, the feature column name in the model ispromptby default, or you can use an alias to use a differently named column.TOKENS: anINT64value that sets the maximum number of tokens that can be generated in the response. This value must be in the range[1,8192]. Specify a lower value for shorter responses and a higher value for longer responses. The default is128.TEMPERATURE: aFLOAT64value in the range[0.0,1.0]that controls the degree of randomness in token selection. The default is0.
Lower values fortemperatureare good for prompts that require a more deterministic and less open-ended or creative response, while higher values fortemperaturecan lead to more diverse or creative results. A value of0fortemperatureis deterministic, meaning that the highest probability response is always selected.TOP_P: aFLOAT64value in the range[0.0,1.0]helps determine the probability of the tokens selected. Specify a lower value for less random responses and a higher value for more random responses. The default is0.95.STOP_SEQUENCES: anARRAY<STRING>value that removes the specified strings if they are included in responses from the model. Strings are matched exactly, including capitalization. The default is an empty array.GROUND_WITH_GOOGLE_SEARCH: aBOOLvalue that determines whether the Gemini Enterprise Agent Platform model uses Grounding with Google Search when generating responses. Grounding lets the model use additional information from the internet when generating a response, in order to make model responses more specific and factual. When this field is set toTrue, an additionalgrounding_resultcolumn is included in the results, providing the sources that the model used to gather additional information. The default isFALSE.SAFETY_SETTINGS: anARRAY<STRUCT<STRING AS category, STRING AS threshold>>value that configures content safety thresholds to filter responses. The first element in the struct specifies a harm category, and the second element in the struct specifies a corresponding blocking threshold. The model filters out content that violate these settings. You can only specify each category once. For example, you can't specify bothSTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold)andSTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_ONLY_HIGH' AS threshold). If there is no safety setting for a given category, theBLOCK_MEDIUM_AND_ABOVEsafety setting is used.
Supported categories are as follows:HARM_CATEGORY_HATE_SPEECHHARM_CATEGORY_DANGEROUS_CONTENTHARM_CATEGORY_HARASSMENTHARM_CATEGORY_SEXUALLY_EXPLICIT
Supported thresholds are as follows:BLOCK_NONE(Restricted)BLOCK_LOW_AND_ABOVEBLOCK_MEDIUM_AND_ABOVE(Default)BLOCK_ONLY_HIGHHARM_BLOCK_THRESHOLD_UNSPECIFIED
For more information, refer to the definition of safety category and blocking threshold.
REQUEST_TYPE: aSTRINGvalue that specifies the type of inference request to send to the Gemini model. The request type determines what quota the request uses. Valid values are as follows:DEDICATED: TheAI.GENERATE_TEXTfunction only uses Provisioned Throughput quota. TheAI.GENERATE_TEXTfunction returns the errorProvisioned throughput is not purchased or is not activeif Provisioned Throughput quota isn't available.SHARED: TheAI.GENERATE_TEXTfunction only usesdynamic shared quota (DSQ), even if you have purchased Provisioned Throughput quota.UNSPECIFIED: TheAI.GENERATE_TEXTfunction uses quota as follows:
* If you haven't purchased Provisioned Throughput quota, theAI.GENERATE_TEXTfunction uses DSQ quota.
* If you have purchased Provisioned Throughput quota, theAI.GENERATE_TEXTfunction uses the Provisioned Throughput quota first. If requests exceed the Provisioned Throughput quota, the overflow traffic uses DSQ quota.
The default value is UNSPECIFIED.
For more information, seeUse Agent Platform Provisioned Throughput.
MODEL_PARAMS: a JSON-formatted string literal that provides parameters to the model. The value must conform to thegenerateContent request body format. You can provide a value for any field in the request body except for thecontents[]field. If you set this field, then you can't also specify any model parameters in the top-level struct argument to theAI.GENERATE_TEXTfunction. You must either specify every model parameter in theMODEL_PARAMSfield, or omit this field and specify each parameter separately.
The following example shows a request with these characteristics:
- Uses the
promptcolumn of thepromptstable for the prompt. - Returns a short and moderately probable response.
- Returns the generated text and the safety attributes in separate columns.
SELECT *
FROM
AI.GENERATE_TEXT(
MODEL mydataset.mymodel,
TABLE mydataset.prompts,
STRUCT(
0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p));
Prompt query
Generate text by using a query to provide the prompt.
SELECT *
FROM AI.GENERATE_TEXT(
MODEL PROJECT_ID.DATASET_ID.MODEL_NAME,
(PROMPT_QUERY),
STRUCT(TOKENS AS max_output_tokens, TEMPERATURE AS temperature,
TOP_P AS top_p,
STOP_SEQUENCES AS stop_sequences)
);
Replace the following:
PROJECT_ID: your project ID.DATASET_ID: the ID of the dataset that contains the model.MODEL_NAME: the name of the model.PROMPT_QUERY: a query that provides the prompt data.TOKENS: anINT64value that sets the maximum number of tokens that can be generated in the response. This value must be in the range[1,8192]. Specify a lower value for shorter responses and a higher value for longer responses. The default is128.TEMPERATURE: aFLOAT64value in the range[0.0,1.0]that controls the degree of randomness in token selection. The default is0.
Lower values fortemperatureare good for prompts that require a more deterministic and less open-ended or creative response, while higher values fortemperaturecan lead to more diverse or creative results. A value of0fortemperatureis deterministic, meaning that the highest probability response is always selected.TOP_P: aFLOAT64value in the range[0.0,1.0]helps determine the probability of the tokens selected. Specify a lower value for less random responses and a higher value for more random responses. The default is0.95.STOP_SEQUENCES: anARRAY<STRING>value that removes the specified strings if they are included in responses from the model. Strings are matched exactly, including capitalization. The default is an empty array.GROUND_WITH_GOOGLE_SEARCH: aBOOLvalue that determines whether the Gemini Enterprise Agent Platform model uses Grounding with Google Search when generating responses. Grounding lets the model use additional information from the internet when generating a response, in order to make model responses more specific and factual. When this field is set toTrue, an additionalgrounding_resultcolumn is included in the results, providing the sources that the model used to gather additional information. The default isFALSE.SAFETY_SETTINGS: anARRAY<STRUCT<STRING AS category, STRING AS threshold>>value that configures content safety thresholds to filter responses. The first element in the struct specifies a harm category, and the second element in the struct specifies a corresponding blocking threshold. The model filters out content that violate these settings. You can only specify each category once. For example, you can't specify bothSTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold)andSTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_ONLY_HIGH' AS threshold). If there is no safety setting for a given category, theBLOCK_MEDIUM_AND_ABOVEsafety setting is used.
Supported categories are as follows:HARM_CATEGORY_HATE_SPEECHHARM_CATEGORY_DANGEROUS_CONTENTHARM_CATEGORY_HARASSMENTHARM_CATEGORY_SEXUALLY_EXPLICIT
Supported thresholds are as follows:BLOCK_NONE(Restricted)BLOCK_LOW_AND_ABOVEBLOCK_MEDIUM_AND_ABOVE(Default)BLOCK_ONLY_HIGHHARM_BLOCK_THRESHOLD_UNSPECIFIED
For more information, refer to the definition of safety category and blocking threshold.
REQUEST_TYPE: aSTRINGvalue that specifies the type of inference request to send to the Gemini model. The request type determines what quota the request uses. Valid values are as follows:DEDICATED: TheAI.GENERATE_TEXTfunction only uses Provisioned Throughput quota. TheAI.GENERATE_TEXTfunction returns the errorProvisioned throughput is not purchased or is not activeif Provisioned Throughput quota isn't available.SHARED: TheAI.GENERATE_TEXTfunction only usesdynamic shared quota (DSQ), even if you have purchased Provisioned Throughput quota.UNSPECIFIED: TheAI.GENERATE_TEXTfunction uses quota as follows:
* If you haven't purchased Provisioned Throughput quota, theAI.GENERATE_TEXTfunction uses DSQ quota.
* If you have purchased Provisioned Throughput quota, theAI.GENERATE_TEXTfunction uses the Provisioned Throughput quota first. If requests exceed the Provisioned Throughput quota, the overflow traffic uses DSQ quota.
The default value is UNSPECIFIED.
For more information, seeUse Agent Platform Provisioned Throughput.
MODEL_PARAMS: a JSON-formatted string literal that provides parameters to the model. The value must conform to thegenerateContent request body format. You can provide a value for any field in the request body except for thecontents[]field. If you set this field, then you can't also specify any model parameters in the top-level struct argument to theAI.GENERATE_TEXTfunction. You must either specify every model parameter in theMODEL_PARAMSfield, or omit this field and specify each parameter separately.
Example 1
The following example shows a request with these characteristics:
- Prompts for a summary of the text in the
bodycolumn of thearticlestable. - Returns a moderately long and more probable response.
- Returns the generated text and the safety attributes in separate columns.
SELECT *
FROM
AI.GENERATE_TEXT(
MODEL mydataset.mymodel,
(
SELECT CONCAT('Summarize this text', body) AS prompt
FROM mydataset.articles
),
STRUCT(
0.2 AS temperature, 650 AS max_output_tokens, 0.2 AS top_p));
Example 2
The following example shows a request with these characteristics:
- Uses a query to create the prompt data by concatenating strings that provide prompt prefixes with table columns.
- Returns a short and moderately probable response.
- Doesn't return the generated text and the safety attributes in separate columns.
SELECT *
FROM
AI.GENERATE_TEXT(
MODEL mydataset.mytuned_model,
(
SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt
FROM mydataset.input_table
),
STRUCT(
0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p));
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2026-06-15 UTC.