Membuat teks menggunakan fungsi ML.GENERATE_TEXT

Dokumen ini menunjukkan cara membuat model jarak jauh BigQuery ML yang mereferensikan model dasar Vertex AI. Anda kemudian dapat menggunakan model tersebut bersama dengan fungsi ML.GENERATE_TEXT untuk menganalisis teks atau konten visual dalam tabel BigQuery.

Izin yang diperlukan

  • Untuk membuat koneksi, Anda memerlukan keanggotaan dalam peran Identity and Access Management (IAM) berikut:

    • roles/bigquery.connectionAdmin
  • Untuk memberikan izin ke akun layanan koneksi, Anda memerlukan izin berikut:

    • resourcemanager.projects.setIamPolicy
  • Untuk membuat model menggunakan BigQuery ML, Anda memerlukan izin IAM berikut:

    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
    • bigquery.models.updateMetadata
  • Untuk menjalankan inferensi, Anda memerlukan izin berikut:

    • bigquery.tables.getData pada tabel
    • bigquery.models.getData pada model
    • bigquery.jobs.create

Sebelum memulai

  1. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  2. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  3. Enable the BigQuery, BigQuery Connection, and Vertex AI APIs.

    Enable the APIs

Jika ingin menggunakan ML.GENERATE_TEXT dengan model gemini-pro-vision untuk menganalisis konten visual dalam tabel objek, Anda harus memiliki reservasi Enterprise atau Enterprise Plus. Untuk mengetahui informasi selengkapnya, lihat Membuat reservasi.

Membuat koneksi

Buat koneksi resource Cloud dan dapatkan akun layanan koneksi.

Pilih salah satu opsi berikut:

Konsol

  1. Buka halaman BigQuery.

    Buka BigQuery

  2. Untuk membuat koneksi, klik Add, lalu klik Connections to external data sources.

  3. Dalam daftar Connection type, pilih Vertex AI remote models, remote functions and BigLake (Cloud Resource).

  4. Di kolom Connection ID, masukkan nama untuk koneksi Anda.

  5. Klik Create connection.

  6. Klik Go to connection.

  7. Di panel Connection info, salin ID akun layanan untuk digunakan di langkah berikutnya.

bq

  1. Di lingkungan command line, buat koneksi:

    bq mk --connection --location=REGION --project_id=PROJECT_ID \
        --connection_type=CLOUD_RESOURCE CONNECTION_ID
    

    Parameter --project_id akan mengganti project default.

    Ganti kode berikut:

    • REGION: region koneksi Anda
    • PROJECT_ID: project ID Google Cloud Anda
    • CONNECTION_ID: ID untuk koneksi Anda

    Saat Anda membuat resource koneksi, BigQuery akan membuat akun layanan sistem unik dan mengaitkannya dengan koneksi.

    Pemecahan masalah: Jika Anda mendapatkan error koneksi berikut, update Google Cloud SDK:

    Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
    
  2. Ambil dan salin ID akun layanan untuk digunakan di langkah berikutnya:

    bq show --connection PROJECT_ID.REGION.CONNECTION_ID
    

    Outputnya mirip dengan hal berikut ini:

    name                          properties
    1234.REGION.CONNECTION_ID     {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
    

Terraform

Tambahkan bagian berikut ke dalam file main.tf Anda.

 ## This creates a cloud resource connection.
 ## Note: The cloud resource nested object has only one output only field - serviceAccountId.
 resource "google_bigquery_connection" "connection" {
    connection_id = "CONNECTION_ID"
    project = "PROJECT_ID"
    location = "REGION"
    cloud_resource {}
}        
Ganti kode berikut:

  • CONNECTION_ID: ID untuk koneksi Anda
  • PROJECT_ID: project ID Google Cloud Anda
  • REGION: region koneksi Anda

Memberikan akses pada akun layanan

Berikan izin pada akun layanan Anda untuk menggunakan koneksi ini. Kegagalan memberikan izin akan menyebabkan error. Pilih salah satu opsi berikut:

Konsol

  1. Buka halaman IAM & Admin.

    Buka IAM & Admin

  2. Klik Add.

    Dialog Add principals akan terbuka.

  3. Di kolom Akun utama baru, masukkan ID akun layanan yang Anda salin sebelumnya.

  4. Di kolom Pilih peran, pilih Vertex AI, lalu pilih Pengguna Vertex AI.

  5. Klik Save.

gcloud

Gunakan perintah gcloud projects add-iam-policy-binding:

gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/aiplatform.user' --condition=None

Ganti kode berikut:

  • PROJECT_NUMBER: nomor project Anda
  • MEMBER: ID akun layanan yang Anda salin sebelumnya

Membuat model

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Dengan menggunakan editor SQL, buat model jarak jauh:

    CREATE OR REPLACE MODEL
    `PROJECT_ID.DATASET_ID.MODEL_NAME`
    REMOTE WITH CONNECTION `PROJECT_ID.REGION.CONNECTION_ID`
    OPTIONS (ENDPOINT = 'ENDPOINT');
    

    Ganti kode berikut:

    • PROJECT_ID: project ID Anda
    • DATASET_ID: ID set data yang akan berisi model. Set data ini harus berada di lokasi yang sama dengan koneksi yang Anda gunakan
    • MODEL_NAME: nama model
    • REGION: region yang digunakan oleh koneksi
    • CONNECTION_ID: ID koneksi BigQuery Anda

      Saat Anda melihat detail koneksi di Konsol Google Cloud, ini adalah nilai di bagian terakhir dari ID koneksi yang sepenuhnya memenuhi syarat yang ditampilkan dalam Connection ID, misalnya projects/myproject/locations/connection_location/connections/myconnection

    • ENDPOINT: nama model Vertex AI yang didukung untuk digunakan. Misalnya, ENDPOINT='gemini-pro'.

      Untuk beberapa jenis model, Anda dapat menentukan versi model tertentu dengan menambahkan @version ke nama model. Misalnya, text-bison@001. Untuk mengetahui informasi tentang versi model yang didukung untuk berbagai jenis model, lihat ENDPOINT.

Membuat teks dari data teks dengan menggunakan perintah dari tabel

Buat teks menggunakan fungsi ML.GENERATE_TEXT dengan model jarak jauh berdasarkan model teks Vertex AI Gemini API atau Vertex AI PaLM API yang didukung dan perintah dari kolom tabel:

gemini-pro

SELECT *
FROM ML.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_K AS top_k, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output,
  STOP_SEQUENCES AS stop_sequences)
);

Ganti kode berikut:

  • PROJECT_ID: project ID Anda.
  • DATASET_ID: ID set data yang berisi model.
  • MODEL_NAME: nama model.
  • TABLE_NAME: nama tabel yang berisi prompt. Tabel ini harus memiliki kolom yang bernama prompt, atau Anda dapat menggunakan alias untuk menggunakan kolom dengan nama yang berbeda.
  • TOKENS: nilai INT64 yang menetapkan jumlah maksimum token yang dapat dibuat dalam respons. Nilai ini harus berada dalam rentang [1,8192]. Tentukan nilai yang lebih rendah untuk respons yang lebih pendek dan nilai yang lebih tinggi untuk respons yang lebih lama. Defaultnya adalah 128.
  • TEMPERATURE: nilai FLOAT64 dalam rentang [0.0,1.0] yang mengontrol tingkat keacakan dalam pemilihan token. Defaultnya adalah 0.

    Nilai yang lebih rendah untuk temperature cocok untuk prompt yang memerlukan respons yang lebih deterministik dan kurang terbuka atau kreatif, sedangkan nilai yang lebih tinggi untuk temperature dapat memberikan hasil yang lebih beragam atau kreatif. Nilai 0 untuk temperature bersifat deterministik, yang berarti bahwa respons probabilitas tertinggi selalu dipilih.

  • TOP_K: nilai INT64 dalam rentang [1,40] yang menentukan kumpulan awal token yang dipertimbangkan model untuk dipilih. Tentukan nilai yang lebih rendah untuk respons dengan tingkat keacakan lebih rendah, dan nilai yang lebih tinggi untuk respons dengan tingkat keacakan lebih tinggi Defaultnya adalah 40.
  • TOP_P: nilai FLOAT64 dalam rentang [0.0,1.0] membantu menentukan token mana dari kumpulan yang ditentukan oleh TOP_K yang dipilih. Tentukan nilai yang lebih rendah untuk respons dengan tingkat keacakan lebih rendah, dan nilai yang lebih tinggi untuk respons dengan tingkat keacakan lebih tinggi Defaultnya adalah 0.95.
  • FLATTEN_JSON: nilai BOOL yang menentukan apakah akan menampilkan teks yang dihasilkan dan atribut keamanan di kolom terpisah. Defaultnya adalah FALSE.
  • STOP_SEQUENCES: nilai ARRAY<STRING> yang menghapus string yang ditentukan jika string tersebut disertakan dalam respons dari model. String dicocokkan secara persis, termasuk kapitalisasi. Defaultnya adalah array kosong.

Contoh

Contoh berikut menunjukkan permintaan dengan karakteristik ini:

  • Menggunakan kolom prompt dari tabel prompts untuk prompt.
  • Menampilkan respons singkat dan kemungkinannya sedang.
  • Menampilkan teks yang dihasilkan dan atribut keamanan dalam kolom terpisah.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.llm_model`,
    TABLE mydataset.prompts,
    STRUCT(
      0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p,
      40 AS top_k, TRUE AS flatten_json_output));

text-bison

SELECT *
FROM ML.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_K AS top_k, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output,
  STOP_SEQUENCES AS stop_sequences)
);

Ganti kode berikut:

  • PROJECT_ID: project ID Anda.
  • DATASET_ID: ID set data yang berisi model.
  • MODEL_NAME: nama model.
  • TABLE_NAME: nama tabel yang berisi prompt. Tabel ini harus memiliki kolom yang bernama prompt, atau Anda dapat menggunakan alias untuk menggunakan kolom dengan nama yang berbeda.
  • TOKENS: nilai INT64 yang menetapkan jumlah maksimum token yang dapat dibuat dalam respons. Nilai ini harus berada dalam rentang [1,1024]. Tentukan nilai yang lebih rendah untuk respons yang lebih pendek dan nilai yang lebih tinggi untuk respons yang lebih lama. Defaultnya adalah 128.
  • TEMPERATURE: nilai FLOAT64 dalam rentang [0.0,1.0] yang mengontrol tingkat keacakan dalam pemilihan token. Defaultnya adalah 0.

    Nilai yang lebih rendah untuk temperature cocok untuk prompt yang memerlukan respons yang lebih deterministik dan kurang terbuka atau kreatif, sedangkan nilai yang lebih tinggi untuk temperature dapat memberikan hasil yang lebih beragam atau kreatif. Nilai 0 untuk temperature bersifat deterministik, yang berarti bahwa respons probabilitas tertinggi selalu dipilih.

  • TOP_K: nilai INT64 dalam rentang [1,40] yang menentukan kumpulan awal token yang dipertimbangkan model untuk dipilih. Tentukan nilai yang lebih rendah untuk respons dengan tingkat keacakan lebih rendah, dan nilai yang lebih tinggi untuk respons dengan tingkat keacakan lebih tinggi Defaultnya adalah 40.
  • TOP_P: nilai FLOAT64 dalam rentang [0.0,1.0] membantu menentukan token mana dari kumpulan yang ditentukan oleh TOP_K yang dipilih. Tentukan nilai yang lebih rendah untuk respons dengan tingkat keacakan lebih rendah, dan nilai yang lebih tinggi untuk respons dengan tingkat keacakan lebih tinggi Defaultnya adalah 0.95.
  • FLATTEN_JSON: nilai BOOL yang menentukan apakah akan menampilkan teks yang dihasilkan dan atribut keamanan di kolom terpisah. Defaultnya adalah FALSE.
  • STOP_SEQUENCES: nilai ARRAY<STRING> yang menghapus string yang ditentukan jika string tersebut disertakan dalam respons dari model. String dicocokkan secara persis, termasuk kapitalisasi. Defaultnya adalah array kosong.

Contoh

Contoh berikut menunjukkan permintaan dengan karakteristik ini:

  • Menggunakan kolom prompt dari tabel prompts untuk prompt.
  • Menampilkan respons singkat dan kemungkinannya sedang.
  • Menampilkan teks yang dihasilkan dan atribut keamanan dalam kolom terpisah.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.llm_model`,
    TABLE mydataset.prompts,
    STRUCT(
      0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p,
      40 AS top_k, TRUE AS flatten_json_output));

text-bison32

SELECT *
FROM ML.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_K AS top_k, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output,
  STOP_SEQUENCES AS stop_sequences)
);

Ganti kode berikut:

  • PROJECT_ID: project ID Anda.
  • DATASET_ID: ID set data yang berisi model.
  • MODEL_NAME: nama model.
  • TABLE_NAME: nama tabel yang berisi prompt. Tabel ini harus memiliki kolom yang bernama prompt, atau Anda dapat menggunakan alias untuk menggunakan kolom dengan nama yang berbeda.
  • TOKENS: nilai INT64 yang menetapkan jumlah maksimum token yang dapat dibuat dalam respons. Nilai ini harus berada dalam rentang [1,8192]. Tentukan nilai yang lebih rendah untuk respons yang lebih pendek dan nilai yang lebih tinggi untuk respons yang lebih lama. Defaultnya adalah 128.
  • TEMPERATURE: nilai FLOAT64 dalam rentang [0.0,1.0] yang mengontrol tingkat keacakan dalam pemilihan token. Defaultnya adalah 0.

    Nilai yang lebih rendah untuk temperature cocok untuk prompt yang memerlukan respons yang lebih deterministik dan kurang terbuka atau kreatif, sedangkan nilai yang lebih tinggi untuk temperature dapat memberikan hasil yang lebih beragam atau kreatif. Nilai 0 untuk temperature bersifat deterministik, yang berarti bahwa respons probabilitas tertinggi selalu dipilih.

  • TOP_K: nilai INT64 dalam rentang [1,40] yang menentukan kumpulan awal token yang dipertimbangkan model untuk dipilih. Tentukan nilai yang lebih rendah untuk respons dengan tingkat keacakan lebih rendah, dan nilai yang lebih tinggi untuk respons dengan tingkat keacakan lebih tinggi Defaultnya adalah 40.
  • TOP_P: nilai FLOAT64 dalam rentang [0.0,1.0] membantu menentukan token mana dari kumpulan yang ditentukan oleh TOP_K yang dipilih. Tentukan nilai yang lebih rendah untuk respons dengan tingkat keacakan lebih rendah, dan nilai yang lebih tinggi untuk respons dengan tingkat keacakan lebih tinggi Defaultnya adalah 0.95.
  • FLATTEN_JSON: nilai BOOL yang menentukan apakah akan menampilkan teks yang dihasilkan dan atribut keamanan di kolom terpisah. Defaultnya adalah FALSE.
  • STOP_SEQUENCES: nilai ARRAY<STRING> yang menghapus string yang ditentukan jika string tersebut disertakan dalam respons dari model. String dicocokkan secara persis, termasuk kapitalisasi. Defaultnya adalah array kosong.

Contoh

Contoh berikut menunjukkan permintaan dengan karakteristik ini:

  • Menggunakan kolom prompt dari tabel prompts untuk prompt.
  • Menampilkan respons singkat dan kemungkinannya sedang.
  • Menampilkan teks yang dihasilkan dan atribut keamanan dalam kolom terpisah.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.llm_model`,
    TABLE mydataset.prompts,
    STRUCT(
      0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p,
      40 AS top_k, TRUE AS flatten_json_output));

text-unicorn

SELECT *
FROM ML.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_K AS top_k, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output,
  STOP_SEQUENCES AS stop_sequences)
);

Ganti kode berikut:

  • PROJECT_ID: project ID Anda.
  • DATASET_ID: ID set data yang berisi model.
  • MODEL_NAME: nama model.
  • TABLE_NAME: nama tabel yang berisi prompt. Tabel ini harus memiliki kolom yang bernama prompt, atau Anda dapat menggunakan alias untuk menggunakan kolom dengan nama yang berbeda.
  • TOKENS: nilai INT64 yang menetapkan jumlah maksimum token yang dapat dibuat dalam respons. Nilai ini harus berada dalam rentang [1,1024]. Tentukan nilai yang lebih rendah untuk respons yang lebih pendek dan nilai yang lebih tinggi untuk respons yang lebih lama. Defaultnya adalah 128.
  • TEMPERATURE: nilai FLOAT64 dalam rentang [0.0,1.0] yang mengontrol tingkat keacakan dalam pemilihan token. Defaultnya adalah 0.

    Nilai yang lebih rendah untuk temperature cocok untuk prompt yang memerlukan respons yang lebih deterministik dan kurang terbuka atau kreatif, sedangkan nilai yang lebih tinggi untuk temperature dapat memberikan hasil yang lebih beragam atau kreatif. Nilai 0 untuk temperature bersifat deterministik, yang berarti bahwa respons probabilitas tertinggi selalu dipilih.

  • TOP_K: nilai INT64 dalam rentang [1,40] yang menentukan kumpulan awal token yang dipertimbangkan model untuk dipilih. Tentukan nilai yang lebih rendah untuk respons dengan tingkat keacakan lebih rendah, dan nilai yang lebih tinggi untuk respons dengan tingkat keacakan lebih tinggi Defaultnya adalah 40.
  • TOP_P: nilai FLOAT64 dalam rentang [0.0,1.0] membantu menentukan token mana dari kumpulan yang ditentukan oleh TOP_K yang dipilih. Tentukan nilai yang lebih rendah untuk respons dengan tingkat keacakan lebih rendah, dan nilai yang lebih tinggi untuk respons dengan tingkat keacakan lebih tinggi Defaultnya adalah 0.95.
  • FLATTEN_JSON: nilai BOOL yang menentukan apakah akan menampilkan teks yang dihasilkan dan atribut keamanan di kolom terpisah. Defaultnya adalah FALSE.
  • STOP_SEQUENCES: nilai ARRAY<STRING> yang menghapus string yang ditentukan jika string tersebut disertakan dalam respons dari model. String dicocokkan secara persis, termasuk kapitalisasi. Defaultnya adalah array kosong.

Contoh

Contoh berikut menunjukkan permintaan dengan karakteristik ini:

  • Menggunakan kolom prompt dari tabel prompts untuk prompt.
  • Menampilkan respons singkat dan kemungkinannya sedang.
  • Menampilkan teks yang dihasilkan dan atribut keamanan dalam kolom terpisah.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.llm_model`,
    TABLE mydataset.prompts,
    STRUCT(
      0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p,
      40 AS top_k, TRUE AS flatten_json_output));

Membuat teks dari data teks dengan menggunakan perintah dari kueri

Buat teks menggunakan fungsi ML.GENERATE_TEXT dengan model jarak jauh berdasarkan model teks Gemini API atau PaLM API yang didukung dan kueri yang menyediakan perintah:

gemini-pro

SELECT *
FROM ML.GENERATE_TEXT(
  MODEL `PROJECT_ID.DATASET_ID.MODEL_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,
  STOP_SEQUENCES AS stop_sequences)
);

Ganti kode berikut:

  • PROJECT_ID: project ID Anda.
  • DATASET_ID: ID set data yang berisi model.
  • MODEL_NAME: nama model.
  • PROMPT_QUERY: kueri yang menyediakan data prompt.
  • TOKENS: nilai INT64 yang menetapkan jumlah maksimum token yang dapat dibuat dalam respons. Nilai ini harus berada dalam rentang [1,8192]. Tentukan nilai yang lebih rendah untuk respons yang lebih pendek dan nilai yang lebih tinggi untuk respons yang lebih lama. Defaultnya adalah 128.
  • TEMPERATURE: nilai FLOAT64 dalam rentang [0.0,1.0] yang mengontrol tingkat keacakan dalam pemilihan token. Defaultnya adalah 0.

    Nilai yang lebih rendah untuk temperature cocok untuk prompt yang memerlukan respons yang lebih deterministik dan kurang terbuka atau kreatif, sedangkan nilai yang lebih tinggi untuk temperature dapat memberikan hasil yang lebih beragam atau kreatif. Nilai 0 untuk temperature bersifat deterministik, yang berarti bahwa respons probabilitas tertinggi selalu dipilih.

  • TOP_K: nilai INT64 dalam rentang [1,40] yang menentukan kumpulan awal token yang dipertimbangkan model untuk dipilih. Tentukan nilai yang lebih rendah untuk respons dengan tingkat keacakan lebih rendah, dan nilai yang lebih tinggi untuk respons dengan tingkat keacakan lebih tinggi Defaultnya adalah 40.
  • TOP_P: nilai FLOAT64 dalam rentang [0.0,1.0] membantu menentukan token mana dari kumpulan yang ditentukan oleh TOP_K yang dipilih. Tentukan nilai yang lebih rendah untuk respons dengan tingkat keacakan lebih rendah, dan nilai yang lebih tinggi untuk respons dengan tingkat keacakan lebih tinggi Defaultnya adalah 0.95.
  • FLATTEN_JSON: nilai BOOL yang menentukan apakah akan menampilkan teks yang dihasilkan dan atribut keamanan di kolom terpisah. Defaultnya adalah FALSE.
  • STOP_SEQUENCES: nilai ARRAY<STRING> yang menghapus string yang ditentukan jika string tersebut disertakan dalam respons dari model. String dicocokkan secara persis, termasuk kapitalisasi. Defaultnya adalah array kosong.

Contoh 1

Contoh berikut menunjukkan permintaan dengan karakteristik ini:

  • Meminta ringkasan teks di kolom body pada tabel articles.
  • Menampilkan respons yang cukup panjang dan kemungkinannya lebih besar.
  • Menampilkan teks yang dihasilkan dan atribut keamanan dalam kolom terpisah.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.llm_model`,
    (
      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,
      15 AS top_k, TRUE AS flatten_json_output));

Contoh 2

Contoh berikut menunjukkan permintaan dengan karakteristik ini:

  • Menggunakan kueri untuk membuat data prompt dengan menyambungkan string yang memberikan awalan prompt dengan kolom tabel.
  • Menampilkan respons singkat dan kemungkinannya sedang.
  • Tidak menampilkan teks yang dihasilkan dan atribut keamanan dalam kolom terpisah.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.llm_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,
      30 AS top_k, FALSE AS flatten_json_output));

text-bison

SELECT *
FROM ML.GENERATE_TEXT(
  MODEL `PROJECT_ID.DATASET_ID.MODEL_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,
  STOP_SEQUENCES AS stop_sequences)
);

Ganti kode berikut:

  • PROJECT_ID: project ID Anda.
  • DATASET_ID: ID set data yang berisi model.
  • MODEL_NAME: nama model.
  • PROMPT_QUERY: kueri yang menyediakan data prompt.
  • TOKENS: nilai INT64 yang menetapkan jumlah maksimum token yang dapat dibuat dalam respons. Nilai ini harus berada dalam rentang [1,1024]. Tentukan nilai yang lebih rendah untuk respons yang lebih pendek dan nilai yang lebih tinggi untuk respons yang lebih lama. Defaultnya adalah 128.
  • TEMPERATURE: nilai FLOAT64 dalam rentang [0.0,1.0] yang mengontrol tingkat keacakan dalam pemilihan token. Defaultnya adalah 0.

    Nilai yang lebih rendah untuk temperature cocok untuk prompt yang memerlukan respons yang lebih deterministik dan kurang terbuka atau kreatif, sedangkan nilai yang lebih tinggi untuk temperature dapat memberikan hasil yang lebih beragam atau kreatif. Nilai 0 untuk temperature bersifat deterministik, yang berarti bahwa respons probabilitas tertinggi selalu dipilih.

  • TOP_K: nilai INT64 dalam rentang [1,40] yang menentukan kumpulan awal token yang dipertimbangkan model untuk dipilih. Tentukan nilai yang lebih rendah untuk respons dengan tingkat keacakan lebih rendah, dan nilai yang lebih tinggi untuk respons dengan tingkat keacakan lebih tinggi Defaultnya adalah 40.
  • TOP_P: nilai FLOAT64 dalam rentang [0.0,1.0] membantu menentukan token mana dari kumpulan yang ditentukan oleh TOP_K yang dipilih. Tentukan nilai yang lebih rendah untuk respons dengan tingkat keacakan lebih rendah, dan nilai yang lebih tinggi untuk respons dengan tingkat keacakan lebih tinggi Defaultnya adalah 0.95.
  • FLATTEN_JSON: nilai BOOL yang menentukan apakah akan menampilkan teks yang dihasilkan dan atribut keamanan di kolom terpisah. Defaultnya adalah FALSE.
  • STOP_SEQUENCES: nilai ARRAY<STRING> yang menghapus string yang ditentukan jika string tersebut disertakan dalam respons dari model. String dicocokkan secara persis, termasuk kapitalisasi. Defaultnya adalah array kosong.

Contoh 1

Contoh berikut menunjukkan permintaan dengan karakteristik ini:

  • Meminta ringkasan teks di kolom body pada tabel articles.
  • Menampilkan respons yang cukup panjang dan kemungkinannya lebih besar.
  • Menampilkan teks yang dihasilkan dan atribut keamanan dalam kolom terpisah.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.llm_model`,
    (
      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,
      15 AS top_k, TRUE AS flatten_json_output));

Contoh 2

Contoh berikut menunjukkan permintaan dengan karakteristik ini:

  • Menggunakan kueri untuk membuat data prompt dengan menyambungkan string yang memberikan awalan prompt dengan kolom tabel.
  • Menampilkan respons singkat dan kemungkinannya sedang.
  • Tidak menampilkan teks yang dihasilkan dan atribut keamanan dalam kolom terpisah.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.llm_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,
      30 AS top_k, FALSE AS flatten_json_output));

text-bison32

SELECT *
FROM ML.GENERATE_TEXT(
  MODEL `PROJECT_ID.DATASET_ID.MODEL_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,
  STOP_SEQUENCES AS stop_sequences)
);

Ganti kode berikut:

  • PROJECT_ID: project ID Anda.
  • DATASET_ID: ID set data yang berisi model.
  • MODEL_NAME: nama model.
  • PROMPT_QUERY: kueri yang menyediakan data prompt.
  • TOKENS: nilai INT64 yang menetapkan jumlah maksimum token yang dapat dibuat dalam respons. Nilai ini harus berada dalam rentang [1,8192]. Tentukan nilai yang lebih rendah untuk respons yang lebih pendek dan nilai yang lebih tinggi untuk respons yang lebih lama. Defaultnya adalah 128.
  • TEMPERATURE: nilai FLOAT64 dalam rentang [0.0,1.0] yang mengontrol tingkat keacakan dalam pemilihan token. Defaultnya adalah 0.

    Nilai yang lebih rendah untuk temperature cocok untuk prompt yang memerlukan respons yang lebih deterministik dan kurang terbuka atau kreatif, sedangkan nilai yang lebih tinggi untuk temperature dapat memberikan hasil yang lebih beragam atau kreatif. Nilai 0 untuk temperature bersifat deterministik, yang berarti bahwa respons probabilitas tertinggi selalu dipilih.

  • TOP_K: nilai INT64 dalam rentang [1,40] yang menentukan kumpulan awal token yang dipertimbangkan model untuk dipilih. Tentukan nilai yang lebih rendah untuk respons dengan tingkat keacakan lebih rendah, dan nilai yang lebih tinggi untuk respons dengan tingkat keacakan lebih tinggi Defaultnya adalah 40.
  • TOP_P: nilai FLOAT64 dalam rentang [0.0,1.0] membantu menentukan token mana dari kumpulan yang ditentukan oleh TOP_K yang dipilih. Tentukan nilai yang lebih rendah untuk respons dengan tingkat keacakan lebih rendah, dan nilai yang lebih tinggi untuk respons dengan tingkat keacakan lebih tinggi Defaultnya adalah 0.95.
  • FLATTEN_JSON: nilai BOOL yang menentukan apakah akan menampilkan teks yang dihasilkan dan atribut keamanan di kolom terpisah. Defaultnya adalah FALSE.
  • STOP_SEQUENCES: nilai ARRAY<STRING> yang menghapus string yang ditentukan jika string tersebut disertakan dalam respons dari model. String dicocokkan secara persis, termasuk kapitalisasi. Defaultnya adalah array kosong.

Contoh 1

Contoh berikut menunjukkan permintaan dengan karakteristik ini:

  • Meminta ringkasan teks di kolom body pada tabel articles.
  • Menampilkan respons yang cukup panjang dan kemungkinannya lebih besar.
  • Menampilkan teks yang dihasilkan dan atribut keamanan dalam kolom terpisah.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.llm_model`,
    (
      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,
      15 AS top_k, TRUE AS flatten_json_output));

Contoh 2

Contoh berikut menunjukkan permintaan dengan karakteristik ini:

  • Menggunakan kueri untuk membuat data prompt dengan menyambungkan string yang memberikan awalan prompt dengan kolom tabel.
  • Menampilkan respons singkat dan kemungkinannya sedang.
  • Tidak menampilkan teks yang dihasilkan dan atribut keamanan dalam kolom terpisah.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.llm_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,
      30 AS top_k, FALSE AS flatten_json_output));

text-unicorn

SELECT *
FROM ML.GENERATE_TEXT(
  MODEL `PROJECT_ID.DATASET_ID.MODEL_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,
  STOP_SEQUENCES AS stop_sequences)
);

Ganti kode berikut:

  • PROJECT_ID: project ID Anda.
  • DATASET_ID: ID set data yang berisi model.
  • MODEL_NAME: nama model.
  • PROMPT_QUERY: kueri yang menyediakan data prompt.
  • TOKENS: nilai INT64 yang menetapkan jumlah maksimum token yang dapat dibuat dalam respons. Nilai ini harus berada dalam rentang [1,1024]. Tentukan nilai yang lebih rendah untuk respons yang lebih pendek dan nilai yang lebih tinggi untuk respons yang lebih lama. Defaultnya adalah 128.
  • TEMPERATURE: nilai FLOAT64 dalam rentang [0.0,1.0] yang mengontrol tingkat keacakan dalam pemilihan token. Defaultnya adalah 0.

    Nilai yang lebih rendah untuk temperature cocok untuk prompt yang memerlukan respons yang lebih deterministik dan kurang terbuka atau kreatif, sedangkan nilai yang lebih tinggi untuk temperature dapat memberikan hasil yang lebih beragam atau kreatif. Nilai 0 untuk temperature bersifat deterministik, yang berarti bahwa respons probabilitas tertinggi selalu dipilih.

  • TOP_K: nilai INT64 dalam rentang [1,40] yang menentukan kumpulan awal token yang dipertimbangkan model untuk dipilih. Tentukan nilai yang lebih rendah untuk respons dengan tingkat keacakan lebih rendah, dan nilai yang lebih tinggi untuk respons dengan tingkat keacakan lebih tinggi Defaultnya adalah 40.
  • TOP_P: nilai FLOAT64 dalam rentang [0.0,1.0] membantu menentukan token mana dari kumpulan yang ditentukan oleh TOP_K yang dipilih. Tentukan nilai yang lebih rendah untuk respons dengan tingkat keacakan lebih rendah, dan nilai yang lebih tinggi untuk respons dengan tingkat keacakan lebih tinggi Defaultnya adalah 0.95.
  • FLATTEN_JSON: nilai BOOL yang menentukan apakah akan menampilkan teks yang dihasilkan dan atribut keamanan di kolom terpisah. Defaultnya adalah FALSE.
  • STOP_SEQUENCES: nilai ARRAY<STRING> yang menghapus string yang ditentukan jika string tersebut disertakan dalam respons dari model. String dicocokkan secara persis, termasuk kapitalisasi. Defaultnya adalah array kosong.

Contoh 1

Contoh berikut menunjukkan permintaan dengan karakteristik ini:

  • Meminta ringkasan teks di kolom body pada tabel articles.
  • Menampilkan respons yang cukup panjang dan kemungkinannya lebih besar.
  • Menampilkan teks yang dihasilkan dan atribut keamanan dalam kolom terpisah.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.llm_model`,
    (
      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,
      15 AS top_k, TRUE AS flatten_json_output));

Contoh 2

Contoh berikut menunjukkan permintaan dengan karakteristik ini:

  • Menggunakan kueri untuk membuat data prompt dengan menyambungkan string yang memberikan awalan prompt dengan kolom tabel.
  • Menampilkan respons singkat dan kemungkinannya sedang.
  • Tidak menampilkan teks yang dihasilkan dan atribut keamanan dalam kolom terpisah.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.llm_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,
      30 AS top_k, FALSE AS flatten_json_output));

Membuat teks yang mendeskripsikan konten visual

Buat teks menggunakan fungsi ML.GENERATE_TEXT dengan model jarak jauh berdasarkan model multimodal gemini-pro-vision:

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_K AS top_k,
  TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output,
  STOP_SEQUENCES AS stop_sequences)
);

Ganti kode berikut:

  • PROJECT_ID: project ID Anda.
  • DATASET_ID: ID set data yang berisi model.
  • MODEL_NAME: nama model.
  • TABLE_NAME: nama tabel objek yang berisi konten visual yang akan dianalisis. Untuk mengetahui informasi selengkapnya tentang jenis konten visual yang dapat Anda analisis, lihat Konten visual yang didukung.

    Bucket Cloud Storage yang digunakan oleh tabel objek harus berada dalam project yang sama tempat Anda membuat model dan tempat Anda memanggil fungsi ML.GENERATE_TEXT.

  • PROMPT: prompt yang akan digunakan untuk menganalisis konten visual.
  • TOKENS: nilai INT64 yang menetapkan jumlah maksimum token yang dapat dibuat dalam respons. Nilai ini harus berada dalam rentang [1,2048]. Tentukan nilai yang lebih rendah untuk respons yang lebih pendek dan nilai yang lebih tinggi untuk respons yang lebih lama. Defaultnya adalah 2048.
  • TEMPERATURE: nilai FLOAT64 dalam rentang [0.0,1.0] yang mengontrol tingkat keacakan dalam pemilihan token. Defaultnya adalah 0.4.

    Nilai yang lebih rendah untuk temperature cocok untuk perintah yang memerlukan respons yang lebih deterministik dan tidak terlalu terbuka atau kreatif, sedangkan nilai yang lebih tinggi untuk temperature dapat memberikan hasil yang lebih beragam atau kreatif. Nilai 0 untuk temperature bersifat deterministik, yang berarti bahwa respons probabilitas tertinggi selalu dipilih.

  • TOP_K: nilai INT64 dalam rentang [1,40] yang menentukan kumpulan token awal yang dipertimbangkan model untuk dipilih. Tentukan nilai yang lebih rendah untuk respons yang lebih sedikit acak dan nilai yang lebih tinggi untuk respons acak yang lebih banyak. Defaultnya adalah 32.
  • TOP_P: nilai FLOAT64 dalam rentang [0.0,1.0] membantu menentukan token mana dari kumpulan yang ditentukan oleh TOP_K yang dipilih. Tentukan nilai yang lebih rendah untuk respons yang lebih sedikit acak dan nilai yang lebih tinggi untuk respons acak yang lebih banyak. Defaultnya adalah 0.95.
  • FLATTEN_JSON: nilai BOOL yang menentukan apakah akan menampilkan teks yang dihasilkan dan atribut keamanan di kolom terpisah. Defaultnya adalah FALSE.
  • STOP_SEQUENCES: nilai ARRAY<STRING> yang menghapus string yang ditentukan jika string tersebut disertakan dalam respons dari model. String dicocokkan secara persis, termasuk kapitalisasi. Defaultnya adalah array kosong.

Contoh

Contoh ini menganalisis konten visual dari tabel objek yang bernama videos dan menjelaskan konten dalam setiap video:

SELECT
  uri,
  ml_generate_text_llm_result
FROM
  ML.GENERATE_TEXT(
    MODEL
      `mydataset.gemini_pro_vision_model`
        TABLE `mydataset.videos`
          STRUCT('What is happening in this video?' AS PROMPT,
          TRUE AS FLATTEN_JSON_OUTPUT));