使用 ML.GENERATE_TEXT 函式生成文字
本文說明如何建立代表 Vertex AI 模型的 BigQuery ML 遠端模型,然後使用該遠端模型搭配 ML.GENERATE_TEXT 函式生成文字。
支援的遠端模型類型如下:
- 遠端模型 透過任何正式發布 或預先發布 的 Gemini 模型。
- 遠端模型,例如 Anthropic Claude 模型。
- 遠端模型 透過 Llama 模型
- 遠端模型 透過 Mistral AI 模型
- 遠端模型 超過 支援的開放式模型。
視所選的 Vertex AI 模型而定,您可以根據物件表格的非結構化資料輸入內容,或標準表格的文字輸入內容生成文字。
必要的角色
如要建立遠端模型並生成文字,您需要下列 Identity and Access Management (IAM) 角色:
- 建立及使用 BigQuery 資料集、資料表和模型:
專案中的 BigQuery 資料編輯者 (
roles/bigquery.dataEditor)。 建立、委派及使用 BigQuery 連線:專案的 BigQuery 連線管理員 (
roles/bigquery.connectionsAdmin)。如果沒有設定預設連線,您可以在執行
CREATE MODEL陳述式時建立並設定連線。如要這麼做,您必須具備專案的 BigQuery 管理員角色 (roles/bigquery.admin)。詳情請參閱「設定預設連線」。將權限授予連線的服務帳戶:在包含 Vertex AI 端點的專案中,授予專案 IAM 管理員 (
roles/resourcemanager.projectIamAdmin) 權限。這是您透過將模型名稱指定為端點所建立遠端模型的目前專案。這是您透過指定網址做為端點所建立遠端模型網址中識別的專案。如果您使用遠端模型分析物件資料表中的非結構化資料,且物件資料表使用的 Cloud Storage 值區與 Vertex AI 端點位於不同專案,您也必須擁有物件資料表所用 Cloud Storage 值區的 Storage 管理員 (
roles/storage.admin) 權限。建立 BigQuery 工作:專案中的 BigQuery 工作使用者 (
roles/bigquery.jobUser)。
這些預先定義的角色具備執行本文中工作所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
- 建立資料集:
bigquery.datasets.create - 建立、委派及使用連線:
bigquery.connections.* - 設定服務帳戶權限:
resourcemanager.projects.getIamPolicy和resourcemanager.projects.setIamPolicy - 建立模型並執行推論:
bigquery.jobs.createbigquery.models.createbigquery.models.getDatabigquery.models.updateDatabigquery.models.updateMetadata
事前準備
-
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
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection, and Vertex AI 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.
建立資料集
建立 BigQuery 資料集來存放資源:
控制台
前往 Google Cloud 控制台的「BigQuery」頁面。
在左側窗格中,按一下「Explorer」:

如果沒有看到左側窗格,請按一下「展開左側窗格」圖示 開啟窗格。
在「Explorer」窗格中,按一下專案名稱。
依序點按 「View actions」(查看動作) >「Create dataset」(建立資料集)。
在「建立資料集」頁面中,執行下列操作:
在「Dataset ID」(資料集 ID) 部分,輸入資料集的名稱。
在「位置類型」部分,選取「區域」或「多區域」。
- 如果選取「區域」,請從「區域」清單中選取位置。
- 如果選取「多區域」,請從「多區域」清單中選取「美國」或「歐洲」。
點選「建立資料集」。
bq
建立連線
如果您已設定預設連線,或具備 BigQuery 管理員角色,可以略過這個步驟。
建立供遠端模型使用的 Cloud 資源連線,並取得連線的服務帳戶。在與上一步建立的資料集相同的位置中建立連線。
選取下列選項之一:
主控台
前往「BigQuery」頁面
在「Explorer」窗格中,按一下 「新增資料」:
「新增資料」對話方塊隨即開啟。
在「Filter By」(篩選依據) 窗格的「Data Source Type」(資料來源類型) 區段中,選取「Business Applications」(商務應用程式)。
或者,您也可以在「Search for data sources」(搜尋資料來源) 欄位中輸入
Vertex AI。在「精選資料來源」部分,點選「Vertex AI」。
按一下「Vertex AI Models: BigQuery Federation」解決方案資訊卡。
在「連線類型」清單中,選取「Vertex AI 遠端模型、遠端函式、BigLake 和 Spanner (Cloud 資源)」。
在「連線 ID」欄位中,輸入連線名稱。
點選「建立連線」。
點選「前往連線」。
在「連線資訊」窗格中,複製服務帳戶 ID,以供後續步驟使用。
bq
在指令列環境中建立連線:
bq mk --connection --location=REGION --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE CONNECTION_ID
--project_id參數會覆寫預設專案。更改下列內容:
REGION:您的連線區域PROJECT_ID:您的 Google Cloud 專案 IDCONNECTION_ID:連線的 ID
建立連線資源時,BigQuery 會建立專屬的系統服務帳戶,並將其與連線建立關聯。
疑難排解:如果收到下列連線錯誤訊息,請更新 Google Cloud SDK:
Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
擷取並複製服務帳戶 ID,以供後續步驟使用:
bq show --connection PROJECT_ID.REGION.CONNECTION_ID
輸出結果會與下列內容相似:
name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
Terraform
使用 google_bigquery_connection 資源。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
下列範例會在 US 地區中建立名為 my_cloud_resource_connection 的 Cloud 資源連線:
如要在 Google Cloud 專案中套用 Terraform 設定,請完成下列各節的步驟。
準備 Cloud Shell
- 啟動 Cloud Shell。
-
設定要套用 Terraform 設定的預設 Google Cloud 專案。
每項專案只需要執行一次這個指令,且可以在任何目錄中執行。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
如果您在 Terraform 設定檔中設定明確值,環境變數就會遭到覆寫。
準備目錄
每個 Terraform 設定檔都必須有自己的目錄 (也稱為根模組)。
-
在 Cloud Shell 中建立目錄,並在該目錄中建立新檔案。檔案名稱的副檔名必須是
.tf,例如main.tf。在本教學課程中,這個檔案稱為main.tf。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
如果您正在學習教學課程,可以複製每個章節或步驟中的範例程式碼。
將範例程式碼複製到新建立的
main.tf。視需要從 GitHub 複製程式碼。如果 Terraform 代码片段是端對端解決方案的一部分,建議使用這個方法。
- 查看並修改範例參數,套用至您的環境。
- 儲存變更。
-
初始化 Terraform。每個目錄只需執行一次這項操作。
terraform init
如要使用最新版 Google 供應商,請加入
-upgrade選項:terraform init -upgrade
套用變更
-
檢查設定,確認 Terraform 即將建立或更新的資源符合您的預期:
terraform plan
視需要修正設定。
-
執行下列指令並在提示中輸入
yes,即可套用 Terraform 設定:terraform apply
等待 Terraform 顯示「Apply complete!」訊息。
- 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台中,前往 UI 中的資源,確認 Terraform 已建立或更新這些資源。
將角色指派給遠端模型連線的服務帳戶
您必須為遠端模型使用的連線服務帳戶授予 Vertex AI 使用者角色。
如果您打算將遠端模型的端點指定為網址 (例如 endpoint = 'https://us-central1-aiplatform.googleapis.com/v1/projects/myproject/locations/us-central1/publishers/google/models/gemini-2.0-flash'),請在您於網址中指定的專案中授予這個角色。
如果打算使用模型名稱 (例如 endpoint = 'gemini-2.0-flash') 指定遠端模型的端點,請在您打算建立遠端模型的專案中授予這個角色。
在其他專案中授予角色會導致錯誤 bqcx-1234567890-wxyz@gcp-sa-bigquery-condel.iam.gserviceaccount.com does not have the permission to access resource。
如要授予 Vertex AI 使用者角色,請按照下列步驟操作:
主控台
前往「IAM & Admin」(IAM 與管理) 頁面。
按一下「新增」。
「新增主體」對話方塊隨即開啟。
在「新增主體」欄位,輸入先前複製的服務帳戶 ID。
在「請選擇角色」欄位中,依序選取「Vertex AI」和「Vertex AI 使用者」。
按一下 [儲存]。
gcloud
使用 gcloud projects add-iam-policy-binding 指令。
gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/aiplatform.user' --condition=None
請替換下列項目:
PROJECT_NUMBER:您的專案編號MEMBER:您先前複製的服務帳戶 ID
將角色授予物件資料表連線的服務帳戶
如果您要使用遠端模型從物件表格資料生成文字,請在您打算建立遠端模型的專案中,為物件表格連線的服務帳戶授予 Vertex AI 使用者角色。您也可以略過這個步驟。
如要找出物件資料表連線的服務帳戶,請按照下列步驟操作:
前往「BigQuery」頁面
在左側窗格中,按一下「Explorer」:

如果沒有看到左側窗格,請按一下「展開左側窗格」圖示 開啟窗格。
在「Explorer」窗格中,按一下「資料集」,然後選取包含物件資料表的資料集。
依序按一下「總覽」>「表格」,然後選取物件表格。
在編輯器窗格中,按一下「詳細資料」分頁標籤。
記下「連線 ID」欄位中的連線名稱。
在「Explorer」窗格中,按一下「Connections」。
選取與物件表格「連線 ID」欄位相符的連線。
複製「服務帳戶 ID」欄位中的值。
如要授予角色,請按照下列步驟操作:
主控台
前往「IAM & Admin」(IAM 與管理) 頁面。
按一下「新增」。
「新增主體」對話方塊隨即開啟。
在「新增主體」欄位,輸入先前複製的服務帳戶 ID。
在「請選擇角色」欄位中,依序選取「Vertex AI」和「Vertex AI 使用者」。
按一下 [儲存]。
gcloud
使用 gcloud projects add-iam-policy-binding 指令。
gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/aiplatform.user' --condition=None
請替換下列項目:
PROJECT_NUMBER:您的專案編號MEMBER:您先前複製的服務帳戶 ID
啟用合作夥伴模型
如要使用 Anthropic Claude、Llama 或 Mistral AI 模型,才需要執行這個步驟。
前往 Google Cloud 控制台的 Vertex AI Model Garden 頁面。
搜尋或瀏覽要使用的合作夥伴模型。
按一下模型資訊卡。
在模型頁面中,按一下「啟用」。
填寫要求的啟用資訊,然後按一下「下一步」。
在「條款及細則」部分中,勾選核取方塊。
按一下「同意」,同意條款及細則並啟用模型。
選擇開放模型部署方式
如果您要透過支援的開放式模型建立遠端模型,可以在 CREATE MODEL 陳述式中指定 Vertex AI Model Garden 或 Hugging Face 模型 ID,在建立遠端模型的同時自動部署開放式模型。或者,您也可以先手動部署開放模型,然後在 CREATE MODEL 陳述式中指定模型端點,將該開放模型與遠端模型搭配使用。詳情請參閱「部署開放模型」。
建立 BigQuery ML 遠端模型
建立遠端模型:
全新開放式模型
前往 Google Cloud 控制台的「BigQuery」頁面。
使用 SQL 編輯器建立遠端模型:
CREATE OR REPLACE MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME` REMOTE WITH CONNECTION {DEFAULT | `PROJECT_ID.REGION.CONNECTION_ID`} OPTIONS ( {HUGGING_FACE_MODEL_ID = 'HUGGING_FACE_MODEL_ID' | MODEL_GARDEN_MODEL_NAME = 'MODEL_GARDEN_MODEL_NAME'} [, HUGGING_FACE_TOKEN = 'HUGGING_FACE_TOKEN' ] [, MACHINE_TYPE = 'MACHINE_TYPE' ] [, MIN_REPLICA_COUNT = MIN_REPLICA_COUNT ] [, MAX_REPLICA_COUNT = MAX_REPLICA_COUNT ] [, RESERVATION_AFFINITY_TYPE = {'NO_RESERVATION' | 'ANY_RESERVATION' | 'SPECIFIC_RESERVATION'} ] [, RESERVATION_AFFINITY_KEY = 'compute.googleapis.com/reservation-name' ] [, RESERVATION_AFFINITY_VALUES = RESERVATION_AFFINITY_VALUES ] [, ENDPOINT_IDLE_TTL = ENDPOINT_IDLE_TTL ] );
請替換下列項目:
PROJECT_ID:您的專案 ID。DATASET_ID:要包含模型的資料集 ID。這個資料集必須與您使用的連線位於相同的位置。MODEL_NAME:模型名稱。REGION:連線使用的區域。CONNECTION_ID:BigQuery 連線的 ID。如要取得這個值,請在 Google Cloud 控制台中查看連線詳細資料,然後複製「連線 ID」中顯示的完整連線 ID 最後一個部分的值。例如:
projects/myproject/locations/connection_location/connections/myconnection。HUGGING_FACE_MODEL_ID:STRING值,指定支援的 Hugging Face 模型的 ID, 格式為provider_name/model_name。例如deepseek-ai/DeepSeek-R1。如要取得模型 ID,請在 Hugging Face Model Hub 中按一下模型名稱,然後從模型資訊卡的頂端複製模型 ID。MODEL_GARDEN_MODEL_NAME:STRING值,指定支援的 Vertex AI Model Garden 模型的模型 ID 和模型版本,格式為publishers/publisher/models/model_name@model_version。例如:publishers/openai/models/gpt-oss@gpt-oss-120b。如要取得模型 ID,請在 Vertex AI Model Garden 中點選模型資訊卡,然後從「模型 ID」欄位複製模型 ID。如要取得預設模型版本,請從模型資訊卡上的「版本」欄位複製。如要查看其他可用的模型版本,請按一下「部署模型」,然後點選「資源 ID」欄位。HUGGING_FACE_TOKEN:指定要使用的 Hugging Face User Access Token 的STRING值。只有在同時指定HUGGING_FACE_MODEL_ID選項的值時,才能為這個選項指定值。權杖至少須具備
read角色,但範圍較廣的權杖也適用。如果HUGGING_FACE_MODEL_ID值所識別的模型是 Hugging Face 封閉式或私人模型,則必須使用這個選項。部分受限模型需要明確同意服務條款,才能取得存取權。如要同意這些條款,請按照下列步驟操作:
- 前往 Hugging Face 網站上的模型頁面。
- 找出並詳閱模型服務條款。服務協議的連結通常會顯示在模型資訊卡上。
- 按照頁面上的提示接受條款。
MACHINE_TYPE:STRING值,用於指定將模型部署至 Vertex AI 時要使用的機器類型。如要瞭解支援的機器類型,請參閱「機器類型」。如果未指定MACHINE_TYPE選項的值,系統會使用模型的 Vertex AI Model Garden 預設機器類型。MIN_REPLICA_COUNT:INT64值,用於指定在 Vertex AI 端點上部署模型時使用的最少機器副本數。服務會視端點的推論負載,增加或減少副本數量。使用的副本數量絕不會低於MIN_REPLICA_COUNT值,也不會高於MAX_REPLICA_COUNT值。MIN_REPLICA_COUNT值必須介於[1, 4096]之間。預設值為1。MAX_REPLICA_COUNT:INT64值,用於指定在 Vertex AI 端點上部署模型時使用的機器副本數量上限。服務會視端點的推論負載,增加或減少副本數量。使用的副本數量絕不會低於MIN_REPLICA_COUNT值,也不會高於MAX_REPLICA_COUNT值。MAX_REPLICA_COUNT值必須介於[1, 4096]之間。預設值為MIN_REPLICA_COUNT值。RESERVATION_AFFINITY_TYPE:判斷已部署的模型是否使用 Compute Engine 預留項目,確保在提供預測時虛擬機器 (VM) 可用性,並指定模型是否使用所有可用預留項目的 VM,或僅使用特定預留項目的 VM。詳情請參閱「Compute Engine 預留資源親和性」。您只能使用與 Vertex AI 共用的 Compute Engine 預留項目。詳情請參閱「允許使用預留項目」。
支援的值如下:
NO_RESERVATION:將模型部署至 Vertex AI 端點時,不會消耗任何預留項目。指定NO_RESERVATION的效果等同於未指定預訂項目親和性。ANY_RESERVATION:Vertex AI 模型部署會從目前專案中或與專案共用的 Compute Engine 預留項目,取用虛擬機器 (VM),且這些預留項目已設定為自動取用。只有符合下列資格的 VM 才會使用:- 並使用
MACHINE_TYPE值指定的機器類型。 - 如果您要在單一區域的 BigQuery 資料集中建立遠端模型,保留項目必須位於相同區域。如果資料集位於
US多區域,預留位置就必須位於us-central1區域。如果資料集位於EU多區域,預留位置必須位於europe-west4區域。
如果可用預留容量不足,或找不到合適的預留項目,系統會佈建隨選 Compute Engine VM,以滿足資源需求。
- 並使用
SPECIFIC_RESERVATION:Vertex AI 模型部署作業只會使用您在RESERVATION_AFFINITY_VALUES值中指定的預留項目 VM。這項預留項目必須設定為明確指定的用量。如果指定的預留項目容量不足,部署作業就會失敗。
RESERVATION_AFFINITY_KEY:字串compute.googleapis.com/reservation-name。當RESERVATION_AFFINITY_TYPE值為SPECIFIC_RESERVATION時,您必須指定這個選項。RESERVATION_AFFINITY_VALUES:ARRAY<STRING>值,指定 Compute Engine 預留項目的完整資源名稱,格式如下:
projects/myproject/zones/reservation_zone/reservations/reservation_name例如:
RESERVATION_AFFINITY_values = ['projects/myProject/zones/us-central1-a/reservations/myReservationName']。您可以從 Google Cloud 控制台的「預留項目」頁面取得預留項目名稱和區域。詳情請參閱「查看預留項目」。
當
RESERVATION_AFFINITY_TYPE值為SPECIFIC_RESERVATION時,您必須指定這個選項。ENDPOINT_IDLE_TTL:INTERVAL值,指定開放模型在閒置多久後,會自動從 Vertex AI 端點取消部署。如要啟用自動取消部署,請指定介於 390 分鐘 (6.5 小時) 至 7 天之間的間隔常值值。舉例來說,指定
INTERVAL 8 HOUR可讓模型在閒置 8 小時後解除部署。預設值為 390 分鐘 (6.5 小時)。模型閒置時間是指自對模型執行下列任一項操作後經過的時間:
- 正在執行
CREATE MODEL陳述式。 - 執行
ALTER MODEL陳述式,並將DEPLOY_MODEL引數設為TRUE。 - 向模型端點傳送推論要求。舉例來說,您可以執行
ML.GENERATE_EMBEDDING或ML.GENERATE_TEXT函式。
這些作業都會將閒置計時器重設為零。在執行作業的 BigQuery 工作開始時,系統會觸發重設作業。
取消部署模型後,傳送至模型的推論要求會傳回錯誤。BigQuery 模型物件維持不變,包括模型中繼資料。如要再次使用模型進行推論,請對模型執行
ALTER MODEL陳述式,並將DEPLOY_MODEL選項設為TRUE,重新部署模型。- 正在執行
已部署的開放式模型
前往 Google Cloud 控制台的「BigQuery」頁面。
使用 SQL 編輯器建立遠端模型:
CREATE OR REPLACE MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME` REMOTE WITH CONNECTION {DEFAULT | `PROJECT_ID.REGION.CONNECTION_ID`} OPTIONS ( ENDPOINT = 'https://ENDPOINT_REGION-aiplatform.googleapis.com/v1/projects/ENDPOINT_PROJECT_ID/locations/ENDPOINT_REGION/endpoints/ENDPOINT_ID' );
請替換下列項目:
PROJECT_ID:您的專案 ID。DATASET_ID:要包含模型的資料集 ID。這個資料集必須與您使用的連線位於相同的位置。MODEL_NAME:模型名稱。REGION:連線使用的區域。CONNECTION_ID:BigQuery 連線的 ID。如要取得這個值,請在 Google Cloud 控制台中查看連線詳細資料,然後複製「連線 ID」中顯示的完整連線 ID 最後一個部分的值。例如:
projects/myproject/locations/connection_location/connections/myconnection。ENDPOINT_REGION:部署開放式模型的區域。ENDPOINT_PROJECT_ID:部署開放式模型的專案。ENDPOINT_ID:開放式模型使用的 HTTPS 端點 ID。如要取得端點 ID,請在「線上預測」頁面中找到開啟的模型,然後複製「ID」欄位中的值。
所有其他型號
前往 Google Cloud 控制台的「BigQuery」頁面。
使用 SQL 編輯器建立遠端模型:
CREATE OR REPLACE MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME` REMOTE WITH CONNECTION {DEFAULT | `PROJECT_ID.REGION.CONNECTION_ID`} OPTIONS (ENDPOINT = 'ENDPOINT');
請替換下列項目:
PROJECT_ID:您的專案 ID。DATASET_ID:要包含模型的資料集 ID。這個資料集必須與您使用的連線位於相同的位置。MODEL_NAME:模型名稱。REGION:連線使用的區域。CONNECTION_ID:BigQuery 連線的 ID。如要取得這個值,請在 Google Cloud 控制台中查看連線詳細資料,然後複製「連線 ID」中顯示的完整連線 ID 最後一個部分的值。例如:
projects/myproject/locations/connection_location/connections/myconnection。ENDPOINT:要使用的 Vertex AI 模型端點。如果是預先訓練的 Vertex AI 模型、Claude 模型和 Mistral AI 模型,請指定模型名稱。對於部分模型,您可以在名稱中指定特定版本。對於支援的 Gemini 模型,您可以指定全域端點,以提高可用性。
如果是 Llama 模型,請以
openapi/<publisher_name>/<model_name>格式指定 OpenAI API 端點。例如:openapi/meta/llama-3.1-405b-instruct-maas。如要瞭解支援的模型名稱和版本,請參閱
ENDPOINT。您指定的 Vertex AI 模型必須位於建立遠端模型的位置。詳情請參閱位置。
從標準表格資料生成文字
使用 ML.GENERATE_TEXT 函式和標準資料表的提示資料生成文字:
Gemini
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, {TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (PROMPT_QUERY)}, STRUCT(TOKENS AS max_output_tokens, TEMPERATURE AS temperature, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output, STOP_SEQUENCES AS stop_sequences, GROUND_WITH_GOOGLE_SEARCH AS ground_with_google_search, SAFETY_SETTINGS AS safety_settings, REQUEST_TYPE AS request_type) );
請替換下列項目:
PROJECT_ID:您的專案 ID。DATASET_ID:包含模型的資料集 ID。MODEL_NAME:模型名稱。TABLE_NAME:包含提示的資料表名稱。這個資料表必須有名為prompt的資料欄,您也可以使用別名來使用名稱不同的資料欄。PROMPT_QUERY:提供提示資料的查詢。這項查詢必須產生名為prompt的資料欄。TOKENS:INT64值,用於設定回覆中可生成的詞元數量上限。 這個值必須介於[1,8192]的範圍之間。 如要取得較短的回覆,請指定較低的值;如要取得較長的回覆,請調高此值。預設值為128。TEMPERATURE: 介於[0.0,1.0]之間的FLOAT64值, 可控制選取詞元時的隨機程度。 預設值為0。如果您想藉由提示生成更具確定性、較不具開放性和創意性的回覆,建議調低
temperature。另一方面,如果temperature較高,則可能產生較多元或有創意的結果。如果值為0,則temperature具有確定性,即模型一律會選取可能性最高的回覆。TOP_P:[0.0,1.0]範圍內的FLOAT64值有助於判斷所選符記的機率。如要取得較不隨機的回覆,請指定較低的值;如要取得較隨機的回覆,請調高此值。預設值為0.95。FLATTEN_JSON:BOOL值,用於判斷是否要將生成的文字和安全性屬性分別傳回至不同資料欄。預設值為FALSE。STOP_SEQUENCES:ARRAY<STRING>值,可移除模型回應中包含的指定字串。字串必須完全相符,包括大小寫。預設值為空陣列。GROUND_WITH_GOOGLE_SEARCH:這個BOOL值會決定 Vertex AI 模型在生成回覆時,是否要使用 [以 Google 搜尋為依據](/vertex-ai/generative-ai/docs/grounding/overview#ground-public)。建立基準後,模型就能在生成回覆時使用網路上其他資訊,讓回覆內容更具體且符合事實。如果flatten_json_output和這個欄位都設為True,結果中會包含額外的ml_generate_text_grounding_result欄,提供模型用來收集額外資訊的來源。預設值為FALSE。SAFETY_SETTINGS:ARRAY<STRUCT<STRING AS category, STRING AS threshold>>值,可設定內容安全門檻來篩選回應。結構體中的第一個元素會指定有害類別,第二個元素則會指定對應的封鎖門檻。模型會篩除違反這些設定的內容。每個類別只能指定一次。舉例來說,您無法同時指定STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold)和STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_ONLY_HIGH' AS threshold)。如果特定類別沒有安全設定,系統會使用BLOCK_MEDIUM_AND_ABOVE安全設定。 支援的類別如下:HARM_CATEGORY_HATE_SPEECHHARM_CATEGORY_DANGEROUS_CONTENTHARM_CATEGORY_HARASSMENTHARM_CATEGORY_SEXUALLY_EXPLICIT
BLOCK_NONE(受限)BLOCK_LOW_AND_ABOVEBLOCK_MEDIUM_AND_ABOVE(預設)BLOCK_ONLY_HIGHHARM_BLOCK_THRESHOLD_UNSPECIFIED
REQUEST_TYPE:STRING值,指定要傳送至 Gemini 模型的推論要求類型。要求類型會決定要求使用的配額。有效值如下:DEDICATED:ML.GENERATE_TEXT函式只會使用佈建輸送量配額。如果沒有可用的佈建輸送量配額,ML.GENERATE_TEXT函式會傳回Provisioned throughput is not purchased or is not active錯誤。SHARED:即使您已購買佈建輸送量配額,ML.GENERATE_TEXT函式也只會使用動態共用配額 (DSQ)。UNSPECIFIED:ML.GENERATE_TEXT函式會依下列方式使用配額:- 如果您尚未購買佈建傳輸量配額,
ML.GENERATE_TEXT函式會使用 DSQ 配額。 - 如果您已購買佈建傳輸量配額,
ML.GENERATE_TEXT函式會優先使用該配額。如果要求超出佈建處理量配額,溢出的流量會使用 DSQ 配額。
- 如果您尚未購買佈建傳輸量配額,
預設值為
UNSPECIFIED。詳情請參閱「使用 Vertex AI 佈建輸送量」。
範例 1
以下範例顯示具有這些特性的要求:
- 提示:要求提供
articles表格中body欄的文字摘要。 - 將模型傳回的 JSON 回應剖析為個別欄位。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT(TRUE AS flatten_json_output));
示例 2
以下範例顯示具有這些特性的要求:
- 使用查詢串連提供提示前置字元的字串和資料表欄,藉此建立提示資料。
- 傳回簡短回覆。
- 不會將模型傳回的 JSON 回應剖析為個別欄位。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 100 AS max_output_tokens, FALSE AS flatten_json_output));
範例 3
以下範例顯示具有這些特性的要求:
- 使用
prompts資料表的prompt資料欄做為提示。 - 將模型傳回的 JSON 回應剖析為個別欄位。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT(TRUE AS flatten_json_output));
示例 4
以下範例顯示具有這些特性的要求:
- 使用
prompts資料表的prompt資料欄做為提示。 - 傳回簡短回覆。
- 將 JSON 回應攤平至不同資料欄。
- 擷取並傳回公開網路資料,做為回覆的依據。
- 使用兩項安全設定,篩除不安全的回覆。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT( 100 AS max_output_tokens, 0.5 AS top_p, TRUE AS flatten_json_output, TRUE AS ground_with_google_search, [STRUCT('HARM_CATEGORY_HATE_SPEECH' AS category, 'BLOCK_LOW_AND_ABOVE' AS threshold), STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold)] AS safety_settings));
範例 5
以下範例顯示具有這些特性的要求:
- 使用
prompts資料表的prompt資料欄做為提示。 - 傳回較長的回覆。
- 將 JSON 回應攤平至不同資料欄。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.flash_2_model`, TABLE mydataset.prompts, STRUCT( 0.4 AS temperature, 8192 AS max_output_tokens, TRUE AS flatten_json_output));
示例 6
以下範例顯示具有這些特性的要求:
- 提示:要求提供
articles表格中body欄的文字摘要。 - 將 JSON 回應攤平至不同資料欄。
- 擷取並傳回公開網路資料,做為回覆的依據。
- 使用兩項安全設定,篩除不安全的回覆。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT( .1 AS TEMPERATURE, TRUE AS flatten_json_output, TRUE AS ground_with_google_search, [STRUCT('HARM_CATEGORY_HATE_SPEECH' AS category, 'BLOCK_LOW_AND_ABOVE' AS threshold), STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold)] AS safety_settings));
Claude
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, {TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (PROMPT_QUERY)}, STRUCT(TOKENS AS max_output_tokens, TOP_K AS top_k, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output) );
請替換下列項目:
PROJECT_ID:您的專案 ID。DATASET_ID:包含模型的資料集 ID。MODEL_NAME:模型名稱。TABLE_NAME:包含提示的資料表名稱。這個資料表必須有名為prompt的資料欄,您也可以使用別名來使用名稱不同的資料欄。PROMPT_QUERY:提供提示資料的查詢。這項查詢必須產生名為prompt的資料欄。TOKENS:INT64值,用於設定回覆中可生成的詞元數量上限。這個值必須介於[1,4096]的範圍之間。 如要取得較短的回覆,請指定較低的值;如要取得較長的回覆,請調高此值。預設值為128。TOP_K:介於[1,40]之間的INT64值,用於決定模型選取時考量的初始詞元集區。如要取得較不隨機的回覆,請指定較低的值;如要取得較隨機的回覆,請調高此值。如未指定值,模型會判斷適當的值。TOP_P:[0.0,1.0]範圍內的FLOAT64值有助於判斷所選符記的機率。如要取得較不隨機的回覆,請指定較低的值;如要取得較隨機的回覆,請調高此值。如未指定值,模型會判斷適當的值。FLATTEN_JSON:BOOL值,用於判斷是否要將生成的文字和安全性屬性分別傳回至不同資料欄。預設值為FALSE。
範例 1
以下範例顯示具有這些特性的要求:
- 提示:要求提供
articles表格中body欄的文字摘要。 - 將模型傳回的 JSON 回應剖析為個別欄位。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT(TRUE AS flatten_json_output));
示例 2
以下範例顯示具有這些特性的要求:
- 使用查詢串連提供提示前置字元的字串和資料表欄,藉此建立提示資料。
- 傳回簡短回覆。
- 不會將模型傳回的 JSON 回應剖析為個別欄位。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 100 AS max_output_tokens, FALSE AS flatten_json_output));
範例 3
以下範例顯示具有這些特性的要求:
- 使用
prompts資料表的prompt資料欄做為提示。 - 將模型傳回的 JSON 回應剖析為個別欄位。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT(TRUE AS flatten_json_output));
Llama
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, {TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (PROMPT_QUERY)}, STRUCT(TOKENS AS max_output_tokens, TEMPERATURE AS temperature, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output, STOP_SEQUENCES AS stop_sequences) );
請替換下列項目:
PROJECT_ID:您的專案 ID。DATASET_ID:包含模型的資料集 ID。MODEL_NAME:模型名稱。TABLE_NAME:包含提示的資料表名稱。這個資料表必須有名為prompt的資料欄,您也可以使用別名來使用名稱不同的資料欄。PROMPT_QUERY:提供提示資料的查詢。這項查詢必須產生名為prompt的資料欄。TOKENS:INT64值,用於設定回覆中可生成的詞元數量上限。這個值必須介於[1,4096]的範圍之間。 如要取得較短的回覆,請指定較低的值;如要取得較長的回覆,請調高此值。預設值為128。TEMPERATURE: 介於[0.0,1.0]之間的FLOAT64值, 可控制選取詞元時的隨機程度。 預設值為0。如果您想藉由提示生成更具確定性、較不具開放性和創意性的回覆,建議調低
temperature。另一方面,如果temperature較高,則可能產生較多元或有創意的結果。如果值為0,則temperature具有確定性,即模型一律會選取可能性最高的回覆。TOP_P:[0.0,1.0]範圍內的FLOAT64值有助於判斷所選符記的機率。如要取得較不隨機的回覆,請指定較低的值;如要取得較隨機的回覆,請調高此值。預設值為0.95。FLATTEN_JSON:BOOL值,用於判斷是否要將生成的文字和安全性屬性分別傳回至不同資料欄。預設值為FALSE。STOP_SEQUENCES:ARRAY<STRING>值,可移除模型回應中包含的指定字串。字串必須完全相符,包括大小寫。預設值為空陣列。
範例 1
以下範例顯示具有這些特性的要求:
- 提示:要求提供
articles表格中body欄的文字摘要。 - 將模型傳回的 JSON 回應剖析為個別欄位。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT(TRUE AS flatten_json_output));
示例 2
以下範例顯示具有這些特性的要求:
- 使用查詢串連提供提示前置字元的字串和資料表欄,藉此建立提示資料。
- 傳回簡短回覆。
- 不會將模型傳回的 JSON 回應剖析為個別欄位。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 100 AS max_output_tokens, FALSE AS flatten_json_output));
範例 3
以下範例顯示具有這些特性的要求:
- 使用
prompts資料表的prompt資料欄做為提示。 - 將模型傳回的 JSON 回應剖析為個別欄位。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT(TRUE AS flatten_json_output));
Mistral AI
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, {TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (PROMPT_QUERY)}, STRUCT(TOKENS AS max_output_tokens, TEMPERATURE AS temperature, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output, STOP_SEQUENCES AS stop_sequences) );
請替換下列項目:
PROJECT_ID:您的專案 ID。DATASET_ID:包含模型的資料集 ID。MODEL_NAME:模型名稱。TABLE_NAME:包含提示的資料表名稱。這個資料表必須有名為prompt的資料欄,您也可以使用別名來使用名稱不同的資料欄。PROMPT_QUERY:提供提示資料的查詢。這項查詢必須產生名為prompt的資料欄。TOKENS:INT64值,用於設定回覆中可生成的詞元數量上限。這個值必須介於[1,4096]的範圍之間。 如要取得較短的回覆,請指定較低的值;如要取得較長的回覆,請調高此值。預設值為128。TEMPERATURE: 介於[0.0,1.0]之間的FLOAT64值, 可控制選取詞元時的隨機程度。 預設值為0。如果您想藉由提示生成更具確定性、較不具開放性和創意性的回覆,建議調低
temperature。另一方面,如果temperature較高,則可能產生較多元或有創意的結果。如果值為0,則temperature具有確定性,即模型一律會選取可能性最高的回覆。TOP_P:[0.0,1.0]範圍內的FLOAT64值有助於判斷所選符記的機率。如要取得較不隨機的回覆,請指定較低的值;如要取得較隨機的回覆,請調高此值。預設值為0.95。FLATTEN_JSON:BOOL值,用於判斷是否要將生成的文字和安全性屬性分別傳回至不同資料欄。預設值為FALSE。STOP_SEQUENCES:ARRAY<STRING>值,可移除模型回應中包含的指定字串。字串必須完全相符,包括大小寫。預設值為空陣列。
範例 1
以下範例顯示具有這些特性的要求:
- 提示:要求提供
articles表格中body欄的文字摘要。 - 將模型傳回的 JSON 回應剖析為個別欄位。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT(TRUE AS flatten_json_output));
示例 2
以下範例顯示具有這些特性的要求:
- 使用查詢串連提供提示前置字元的字串和資料表欄,藉此建立提示資料。
- 傳回簡短回覆。
- 不會將模型傳回的 JSON 回應剖析為個別欄位。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 100 AS max_output_tokens, FALSE AS flatten_json_output));
範例 3
以下範例顯示具有這些特性的要求:
- 使用
prompts資料表的prompt資料欄做為提示。 - 將模型傳回的 JSON 回應剖析為個別欄位。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT(TRUE AS flatten_json_output));
開放式模型
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, {TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (PROMPT_QUERY)}, STRUCT(TOKENS AS max_output_tokens, TEMPERATURE AS temperature, TOP_K AS top_k, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output) );
請替換下列項目:
PROJECT_ID:您的專案 ID。DATASET_ID:包含模型的資料集 ID。MODEL_NAME:模型名稱。TABLE_NAME:包含提示的資料表名稱。這個資料表必須有名為prompt的資料欄,您也可以使用別名來使用名稱不同的資料欄。PROMPT_QUERY:提供提示資料的查詢。這項查詢必須產生名為prompt的資料欄。TOKENS:INT64值,用於設定回覆中可生成的詞元數量上限。這個值必須介於[1,4096]的範圍之間。 如要取得較短的回覆,請指定較低的值;如要取得較長的回覆,請調高此值。如未指定值,模型會判斷適當的值。TEMPERATURE: 介於[0.0,1.0]範圍內的FLOAT64值, 可控制選取詞元時的隨機程度。 如未指定值,模型會判斷適當的值。如果您想藉由提示生成更具確定性、較不具開放性和創意性的回覆,建議調低
temperature。另一方面,如果temperature較高,則可能產生較多元或有創意的結果。如果值為0,則temperature具有確定性,即模型一律會選取可能性最高的回覆。TOP_K:介於[1,40]之間的INT64值,用於決定模型選取時考量的初始詞元集區。如要取得較不隨機的回覆,請指定較低的值;如要取得較隨機的回覆,請調高此值。如未指定值,模型會判斷適當的值。TOP_P:[0.0,1.0]範圍內的FLOAT64值有助於判斷所選符記的機率。如要取得較不隨機的回覆,請指定較低的值;如要取得較隨機的回覆,請調高此值。如未指定值,模型會判斷適當的值。FLATTEN_JSON:BOOL值,用於判斷是否要將生成的文字和安全性屬性分別傳回至不同資料欄。預設值為FALSE。
範例 1
以下範例顯示具有這些特性的要求:
- 提示:要求提供
articles表格中body欄的文字摘要。 - 將模型傳回的 JSON 回應剖析為個別欄位。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT(TRUE AS flatten_json_output));
示例 2
以下範例顯示具有這些特性的要求:
- 使用查詢串連提供提示前置字元的字串和資料表欄,藉此建立提示資料。
- 傳回簡短回覆。
- 不會將模型傳回的 JSON 回應剖析為個別欄位。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 100 AS max_output_tokens, FALSE AS flatten_json_output));
範例 3
以下範例顯示具有這些特性的要求:
- 使用
prompts資料表的prompt資料欄做為提示。 - 將模型傳回的 JSON 回應剖析為個別欄位。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT(TRUE AS flatten_json_output));
根據物件資料表資料生成文字
使用 ML.GENERATE_TEXT 函式和 Gemini 模型生成文字,分析物件資料表中的非結構化資料。您可以在 prompt 參數中提供提示資料。
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, TABLE PROJECT_ID.DATASET_ID.TABLE_NAME, STRUCT(PROMPT AS prompt, TOKENS AS max_output_tokens, TEMPERATURE AS temperature, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output, STOP_SEQUENCES AS stop_sequences, SAFETY_SETTINGS AS safety_settings) );
請替換下列項目:
PROJECT_ID:您的專案 ID。DATASET_ID:包含模型的資料集 ID。MODEL_NAME:模型名稱。這必須是 Gemini 模型。TABLE_NAME:物件表格的名稱,其中包含要分析的內容。如要進一步瞭解可分析的內容類型,請參閱「輸入」。物件資料表使用的 Cloud Storage 值區,應與您建立模型和呼叫
ML.GENERATE_TEXT函式的專案相同。如要呼叫的ML.GENERATE_TEXT函式與物件表格使用的 Cloud Storage 值區所在專案不同,則必須在值區層級授予service-A@gcp-sa-aiplatform.iam.gserviceaccount.com服務帳戶「Storage 管理員」角色。PROMPT:用於分析內容的提示。TOKENS:INT64值,用於設定回覆中可生成的詞元數量上限。這個值必須介於[1,4096]的範圍之間。 如要取得較短的回覆,請指定較低的值;如要取得較長的回覆,請調高此值。如未指定值,模型會判斷適當的值。TEMPERATURE: 介於[0.0,1.0]範圍內的FLOAT64值, 可控制選取詞元時的隨機程度。 如未指定值,模型會判斷適當的值。如果您想藉由提示生成更具確定性、較不具開放性和創意性的回覆,建議調低
temperature。另一方面,如果temperature較高,則可能產生較多元或有創意的結果。如果值為0,則temperature具有確定性,即模型一律會選取可能性最高的回覆。TOP_K:介於[1,40]之間的INT64值,用於決定模型選取時考量的初始詞元集區。如要取得較不隨機的回覆,請指定較低的值;如要取得較隨機的回覆,請調高此值。如未指定值,模型會判斷適當的值。TOP_P:[0.0,1.0]範圍內的FLOAT64值有助於判斷所選符記的機率。如要取得較不隨機的回覆,請指定較低的值;如要取得較隨機的回覆,請調高此值。如未指定值,模型會判斷適當的值。FLATTEN_JSON:BOOL值,用於判斷是否要將生成的文字和安全性屬性分別傳回至不同資料欄。預設值為FALSE。
範例
這個範例會翻譯並轉錄名為 feedback 的物件資料表中的音訊內容:
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.audio_model`, TABLE `mydataset.feedback`, STRUCT('What is the content of this audio clip, translated into Spanish?' AS PROMPT, TRUE AS FLATTEN_JSON_OUTPUT));
這個範例會分類名為 invoices 的物件資料表中的 PDF 內容:
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.classify_model`, TABLE `mydataset.invoices`, STRUCT('Classify this document based on the invoice total, using the following categories: 0 to 100, 101 to 200, greater than 200' AS PROMPT, TRUE AS FLATTEN_JSON_OUTPUT));