Fungsi ML.GENERATE_TEXT

Dokumen ini menjelaskan fungsi ML.GENERATE_TEXT, yang memungkinkan Anda melakukan tugas natural language generatif pada teks yang disimpan dalam tabel BigQuery. Contoh tugas bahasa meliputi:

  • Klasifikasi
  • Analisis Sentimen
  • Ekstraksi entity
  • Question Answering Ekstraktif
  • Perangkuman
  • Menulis ulang teks dengan gaya yang berbeda
  • Pembuatan teks iklan
  • Proses memunculkan ide konsep

Fungsi ini bekerja dengan mengirim permintaan ke model jarak jauh ML BigQuery yang mewakili salah satu model dasar bahasa natural text-bison* Vertex AI (LLM), lalu menampilkan respons LLM. Beberapa argumen fungsi memberikan parameter yang membentuk respons LLM.

Parameter prompt menyediakan teks untuk dianalisis oleh model. Prompt Design dapat sangat memengaruhi respons yang ditampilkan oleh LLM. Untuk mengetahui informasi selengkapnya, lihat Mendesain prompt teks.

Sintaks

ML.GENERATE_TEXT(
MODEL `project_id.dataset.model`,
{ TABLE `project_id.dataset.table` | (query_statement) },
STRUCT(
  [number_of_output_tokens AS max_output_tokens]
  [, top_k_value AS top_k]
  [, top_p_value AS top_p]
  [, temperature AS temperature]
  [, flatten_json_output AS flatten_json_output])
)

Argumen

ML.GENERATE_TEXT menggunakan argumen berikut:

  • project_id: Project ID Anda.

  • dataset: Set data BigQuery yang berisi model.

  • model: Nama model jarak jauh yang menggunakan salah satu LLM Vertex AI text-bison*. Untuk mengetahui informasi selengkapnya tentang cara membuat jenis model jarak jauh ini, lihat ENDPOINT.

  • table: Nama tabel BigQuery yang berisi data perintah. Teks dalam kolom yang bernama prompt dikirim ke model. Jika tabel Anda tidak memiliki kolom prompt, gunakan pernyataan SELECT untuk argumen ini guna memberikan alias untuk kolom tabel yang ada. Error akan terjadi jika tidak ada kolom prompt yang tersedia.

  • query_statement : Kueri GoogleSQL yang digunakan untuk menghasilkan data perintah.

  • max_output_tokens: nilai INT64 dalam rentang [1,1024] yang menetapkan jumlah token maksimum yang dihasilkan oleh model. Tentukan nilai yang lebih rendah untuk respons yang lebih singkat dan nilai yang lebih tinggi untuk respons yang lebih panjang. Defaultnya adalah 50.

    Token mungkin lebih kecil dari kata dan kira-kira empat karakter. 100 token sesuai dengan sekitar 60-80 kata.

  • temperature: nilai FLOAT64 dalam rentang [0.0,1.0] yang digunakan untuk pengambilan sampel selama pembuatan respons, yang terjadi saat top_k dan top_p diterapkan. Model ini mengontrol tingkat keacakan dalam pemilihan token. Nilai temperature yang lebih rendah cocok untuk perintah yang memerlukan respons yang lebih deterministik dan tidak terlalu terbuka atau kreatif, sedangkan nilai temperature yang lebih tinggi dapat memberikan hasil yang lebih beragam atau kreatif. Nilai temperature dari 0 bersifat deterministik, yang berarti bahwa respons probabilitas tertinggi selalu dipilih. Defaultnya adalah 1.0.

  • top_k: nilai INT64 di rentang [1,40] yang mengubah cara model memilih token untuk output. Tentukan nilai yang lebih rendah untuk respons dengan tingkat keacakan yang lebih rendah dan nilai yang lebih tinggi untuk respons dengan tingkat keacakan yang lebih tinggi. Defaultnya adalah 40.

    Nilai top_k dari 1 berarti token yang dipilih berikutnya adalah yang memiliki kemungkinan paling besar di antara semua token dalam kosakata model, sedangkan nilai top_k 3 berarti bahwa token akan dipilih dari tiga token yang memiliki kemungkinan paling besar dengan menggunakan nilai temperature.

    Untuk setiap langkah pemilihan token, token top_k dengan probabilitas tertinggi akan diambil sampelnya. Lalu, token akan difilter lebih lanjut berdasarkan nilai top_p, dan token akhir dipilih menggunakan sampling suhu.

  • top_p: nilai FLOAT64 di rentang [0.0,1.0] yang mengubah cara model memilih token untuk output. Tentukan nilai yang lebih rendah untuk respons dengan tingkat keacakan yang lebih rendah dan nilai yang lebih tinggi untuk respons dengan tingkat keacakan yang lebih tinggi. Defaultnya adalah 1.0.

    Token dipilih dari yang terbanyak (berdasarkan nilai top_k) hingga yang probabilitasnya paling sedikit hingga jumlah probabilitasnya sama dengan nilai top_p. Misalnya, jika token A, B, dan C memiliki probabilitas 0.3, 0.2, dan 0.1 serta nilai top_p adalah 0.5, maka model akan memilih A atau B sebagai token berikutnya dengan menggunakan nilai temperature dan tidak mempertimbangkan C.

  • flatten_json_output: nilai BOOL yang menentukan apakah konten JSON yang ditampilkan oleh fungsi akan diuraikan menjadi kolom terpisah. Defaultnya adalah FALSE.

Output

ML.GENERATE_TEXT menampilkan tabel input dan kolom berikut:

  • ml_generate_text_result: respons JSON dari panggilan projects.locations.endpoints.predict ke model. Teks yang dihasilkan ada di elemen content. Atribut keamanan berada di elemen safetyAttributes. Kolom ini ditampilkan jika flatten_json_output adalah FALSE.
  • ml_generate_text_llm_result: nilai STRING yang berisi teks yang dihasilkan yang ditampilkan oleh panggilan projects.locations.endpoints.predict ke model. Kolom ini ditampilkan jika flatten_json_output adalah TRUE.
  • ml_generate_text_rai_result: nilai STRING yang berisi atribut keamanan yang ditampilkan oleh panggilan projects.locations.endpoints.predict ke model. Kolom ini ditampilkan jika flatten_json_output adalah TRUE.
  • ml_generate_text_status: nilai STRING yang berisi status respons API untuk baris yang sesuai. Nilai ini kosong jika operasi berhasil.

Lokasi

ML.GENERATE_TEXT harus berjalan di region yang sama dengan model jarak jauh yang direferensikan oleh fungsi tersebut. Anda hanya dapat membuat model jarak jauh berdasarkan model text-bison* di lokasi berikut:

  • asia-northeast3
  • asia-southeast1
  • eu
  • europe-west1
  • europe-west2
  • europe-west3
  • europe-west4
  • europe-west9
  • us
  • us-central1
  • us-west4

Kuota

Lihat Kuota dan batas fungsi bernilai tabel layanan Cloud AI.

Contoh

Contoh 1

Contoh ini menampilkan permintaan dengan karakteristik berikut:

  • Memberikan satu perintah.
  • Menampilkan respons teks yang dihasilkan lebih panjang.
  • Menampilkan respons teks yang dihasilkan dengan kemungkinan yang lebih kecil.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.llm_model`,
    (SELECT 'What is the purpose of dreams?' AS prompt),
    STRUCT(
      0.8 AS temperature,
      1024 AS max_output_tokens,
      0.95 AS top_p,
      40 AS top_k));

Contoh 2

Contoh ini menampilkan permintaan dengan karakteristik berikut:

  • Memberikan data perintah dari kolom tabel bernama prompt.
  • Menampilkan respons teks yang dihasilkan lebih pendek.
  • Menampilkan respons teks yang dihasilkan dengan kemungkinan yang lebih besar.
  • Meratakan respons JSON menjadi kolom terpisah.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL
      `mydataset.llm_model`
        TABLE `mydataset.prompt_table`,
    STRUCT(
      0.2 AS temperature, 75 AS max_output_tokens, 0.3 AS top_p, 15 AS top_k, TRUE AS flatten_json_output));

Contoh 3

Contoh ini menampilkan permintaan dengan karakteristik berikut:

  • Memberikan data perintah dari kolom tabel bernama question yang dialiaskan sebagai prompt.
  • Menampilkan respons teks yang dihasilkan dengan durasi yang cukup lama.
  • Menampilkan respons teks yang dihasilkan dengan kemungkinan yang cukup besar.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.llm_model`,
    (SELECT question AS prompt FROM `mydataset.prompt_table`),
    STRUCT(
      0.4 AS temperature, 750 AS max_output_tokens, 0.5 AS top_p, 30 AS top_k));

Contoh 4

Contoh ini menampilkan permintaan dengan karakteristik berikut:

  • Menggabungkan string dan kolom tabel untuk menyediakan data perintah.
  • Menampilkan respons teks yang dihasilkan lebih panjang.
  • Menampilkan respons teks yang dihasilkan dengan kemungkinan yang lebih besar.
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.llm_model`,
    (
      SELECT
        CONCAT(
          'Classify the sentiment of the following text as positive or negative.Text:',
          input_column,
          'Sentiment:') AS prompt
      FROM `mydataset.input_table`
    ),
    STRUCT(
      0.1 AS temperature,
      1000 AS max_output_tokens,
      0.1 AS top_p,
      10 AS top_k));

Langkah selanjutnya