Text

Model dasar PaLM 2 for Text (text-bison, text-unicorn) dioptimalkan untuk berbagai tugas natural language seperti analisis sentimen, ekstraksi entity, dan pembuatan konten. Jenis konten yang dapat dibuat oleh model PaLM 2 untuk Teks mencakup ringkasan dokumen, jawaban atas pertanyaan, dan label yang mengklasifikasikan konten.

Model PaLM 2 untuk Teks ideal untuk tugas yang dapat diselesaikan dengan satu respons API, tanpa perlu percakapan berkelanjutan. Untuk tugas teks yang memerlukan interaksi dua arah, gunakan Generative AI di Vertex AI API untuk chat.

Untuk mengeksplorasi model di konsol, pilih kartu model PaLM 2 for Text di Model Garden.
Pergi ke Model Garden

Kasus penggunaan

  • Rangkum: Membuat versi dokumen yang lebih pendek yang menyertakan informasi terkait dari teks aslinya. Misalnya, Anda mungkin ingin meringkas bab dari buku teks. Atau, Anda dapat membuat deskripsi produk singkat dari paragraf panjang yang menjelaskan produk secara mendetail.

  • Penjawaban pertanyaan: Memberikan jawaban atas pertanyaan dalam teks. Misalnya, Anda dapat mengotomatiskan pembuatan dokumen Pertanyaan Umum (FAQ) dari konten pusat informasi.

  • Klasifikasi: Menetapkan label ke teks yang disediakan. Misalnya, label mungkin diterapkan pada teks yang menjelaskan seberapa benar tata bahasa teks tersebut.

  • Analisis sentimen: Ini adalah bentuk klasifikasi yang mengidentifikasi sentimen teks. Sentimen diubah menjadi label yang diterapkan ke teks. Misalnya, sentimen teks mungkin berupa polaritas seperti positif atau negatif, atau sentimen seperti kemarahan atau kebahagiaan.

  • Ekstraksi entitas: Mengekstrak informasi dari teks. Misalnya, Anda dapat mengekstrak nama film dari teks sebuah artikel.

Untuk mengetahui informasi selengkapnya tentang cara mendesain perintah teks, lihat Mendesain perintah teks.

Permintaan HTTP

POST http://us-central1-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/us-central1/publishers/google/models/text-bison:predict

Lihat metode predict untuk informasi selengkapnya.

Versi model

Untuk menggunakan versi model terbaru, tentukan nama model tanpa nomor versi, misalnya text-bison.

Untuk menggunakan versi model stabil, tentukan nomor versi model, misalnya text-bison@002. Setiap versi stabil tersedia selama enam bulan setelah tanggal rilis versi stabil berikutnya.

Tabel berikut berisi versi model stabil yang tersedia:

model teks-bison Tanggal rilis Tanggal penghentian
teks-bison@002 6 Desember 2023 9 Oktober 2024
text-bison@001 7 Juni 2023 6 Juli 2024
model teks-unicorn Tanggal rilis Tanggal penghentian
teks-unicorn@001 30 November 2023 Paling lambat 30 November 2024

Untuk mengetahui informasi selengkapnya, baca Versi dan siklus proses model.

Isi permintaan

{
  "instances": [
    {
      "prompt": string
    }
  ],
  "parameters": {
    "temperature": number,
    "maxOutputTokens": integer,
    "topK": integer,
    "topP": number,
    "groundingConfig": string,
    "stopSequences": [ string ],
    "candidateCount": integer,
    "logprobs": integer,
    "presencePenalty": float,
    "frequencyPenalty": float,
    "echo": boolean,
    "seed": integer
  }
}

Gunakan parameter berikut untuk model teks text-bison. Untuk mengetahui informasi selengkapnya, lihat Mendesain perintah teks.

Parameter Deskripsi Nilai yang dapat diterima

prompt

Input teks untuk menghasilkan respons model. Perintah dapat mencakup field preamble, pertanyaan, saran, instruksi, atau contoh. Text

temperature

Suhu digunakan untuk pengambilan sampel selama pembuatan respons, yang terjadi saat topP dan topK diterapkan. Suhu mengontrol tingkat keacakan dalam pemilihan token. Suhu yang lebih rendah cocok untuk perintah yang memerlukan respons yang kurang terbuka atau kreatif, sedangkan suhu yang lebih tinggi dapat memberikan hasil yang lebih beragam atau kreatif. Suhu 0 berarti token probabilitas tertinggi selalu dipilih. Dalam hal ini, respons untuk permintaan tertentu sebagian besar deterministik, tetapi sedikit variasi masih dapat dilakukan.

Jika model menampilkan respons yang terlalu umum, terlalu pendek, atau model memberikan respons penggantian, coba tingkatkan suhu.

0.0–1.0

Default: 0.0

maxOutputTokens

Jumlah maksimum token yang dapat dibuat dalam respons. Token terdiri dari sekitar empat karakter. 100 token setara dengan sekitar 60-80 kata.

Tentukan nilai yang lebih rendah untuk respons yang lebih pendek dan nilai yang lebih tinggi untuk respons yang berpotensi lebih lama.

1–2048 untuk text-bison (terbaru)

1–1024 untuk text-bison@002

Default: 1024

topK

Top-K mengubah cara model memilih token untuk output. Top-K 1 berarti token yang dipilih berikutnya adalah yang paling mungkin di antara semua token dalam kosakata model (juga disebut decoding greedy), sedangkan top-K 3 berarti token berikutnya dipilih di antara tiga token yang paling mungkin dengan menggunakan suhu.

Untuk setiap langkah pemilihan token, token top-K dengan probabilitas tertinggi akan diambil sampelnya. Kemudian token akan difilter lebih lanjut berdasarkan top-P dengan token akhir yang dipilih menggunakan pengambilan sampel suhu.

Tentukan nilai yang lebih rendah untuk respons acak yang lebih sedikit dan nilai yang lebih tinggi untuk respons acak yang lebih banyak.

1–40

Default: 40

topP

Top-P mengubah cara model memilih token untuk output. Token dipilih dari yang paling mungkin (lihat top-K) hingga yang paling tidak mungkin sampai jumlah probabilitasnya sama dengan nilai top-P. Misalnya, jika token A, B, dan C memiliki probabilitas 0,3, 0,2, dan 0,1 dengan nilai top-P 0.5, model akan memilih A atau B sebagai token berikutnya dengan menggunakan suhu dan mengecualikan C sebagai kandidat.

Tentukan nilai yang lebih rendah untuk respons acak yang lebih sedikit dan nilai yang lebih tinggi untuk respons acak yang lebih banyak.

0.0–1.0

Default: 0.95

stopSequence

Menentukan daftar string yang memberi tahu model untuk berhenti menghasilkan teks jika salah satu string ditemukan dalam respons. Jika string muncul beberapa kali dalam respons, respons akan dipotong di tempatnya pertama kali ditemukan. String peka huruf besar/kecil.

Misalnya, jika respons berikut adalah respons yang ditampilkan saat stopSequences tidak ditentukan:

public static string reverse(string myString)

Kemudian respons yang ditampilkan dengan stopSequences ditetapkan ke ["Str", "reverse"] adalah:

public static string

default: []

groundingConfig

Grounding memungkinkan Anda mereferensikan data tertentu saat menggunakan model bahasa. Saat Anda menempatkan model, model dapat mereferensikan data internal, rahasia, dan spesifik dari repositori Anda serta menyertakan data dalam responsnya. Hanya penyimpanan data dari Vertex AI Search yang didukung.

Jalur harus mengikuti format: projects/{project_number_or_id}/locations/global/collections/{collection_name}/dataStores/{DATA_STORE_ID}

candidateCount

Jumlah variasi respons yang akan ditampilkan.

1–4

Default: 1

logprobs

Menampilkan token kandidat logprobs teratas yang kemungkinan besar beserta probabilitas lognya pada setiap langkah pembuatan. Token yang dipilih dan probabilitas lognya di setiap langkah akan selalu ditampilkan. Token yang dipilih mungkin termasuk atau tidak termasuk dalam kandidat logprobs teratas.

0-5

frequencyPenalty

Nilai positif akan berdampak terhadap token yang berulang kali muncul dalam teks yang dihasilkan, sehingga mengurangi kemungkinan pengulangan konten. Nilai yang dapat diterima adalah -2.02.0.

Minimum value: -2.0

Maximum value: 2.0

presencePenalty

Nilai positif akan merugikan token yang sudah muncul dalam teks yang dihasilkan, sehingga meningkatkan kemungkinan menghasilkan konten yang lebih beragam. Nilai yang dapat diterima adalah -2.02.0.

Minimum value: -2.0

Maximum value: 2.0

echo

Jika true (benar), perintah akan diulangi dalam teks yang dihasilkan.

Optional

seed

Decoder menghasilkan derau acak dengan generator angka acak semu, derau suhu * ditambahkan ke logits sebelum pengambilan sampel. Generator angka acak semu (prng) mengambil seed sebagai input, dan menghasilkan output yang sama dengan seed yang sama.

Jika seed tidak ditetapkan, seed yang digunakan dalam decoder tidak akan bersifat determenistik, sehingga derau acak yang dihasilkan tidak akan deterministik. Jika seed ditetapkan, derau acak yang dihasilkan akan bersifat deterministik.

Optional

Permintaan sampel

REST

Untuk menguji prompt teks menggunakan Vertex AI API, kirim permintaan POST ke endpoint model penayang.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

Untuk kolom lainnya, lihat tabel Isi permintaan.

Metode HTTP dan URL:

POST http://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/text-bison:predict

Isi JSON permintaan:

{
  "instances": [
    { "prompt": "Give me ten interview questions for the role of program manager."}
  ],
  "parameters": {
    "temperature": 0.2,
    "maxOutputTokens": 256,
    "topK": 40,
    "topP": 0.95,
    "logprobs": 2
  }
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"http://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/text-bison:predict"

PowerShell

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "http://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/text-bison:predict" | Select-Object -Expand Content

Anda akan menerima respons JSON yang mirip seperti contoh respons.

Python

Untuk mempelajari cara menginstal atau mengupdate Vertex AI SDK untuk Python, lihat Menginstal Vertex AI SDK untuk Python. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Python API.

import vertexai
from vertexai.language_models import TextGenerationModel

def interview(
    temperature: float,
    project_id: str,
    location: str,
) -> str:
    """Ideation example with a Large Language Model"""

    vertexai.init(project=project_id, location=location)
    # TODO developer - override these parameters as needed:
    parameters = {
        "temperature": temperature,  # Temperature controls the degree of randomness in token selection.
        "max_output_tokens": 256,  # Token limit determines the maximum amount of text output.
        "top_p": 0.8,  # Tokens are selected from most probable to least until the sum of their probabilities equals the top_p value.
        "top_k": 40,  # A top_k of 1 means the selected token is the most probable among all tokens.
    }

    model = TextGenerationModel.from_pretrained("text-bison@002")
    response = model.predict(
        "Give me ten interview questions for the role of program manager.",
        **parameters,
    )
    print(f"Response from Model: {response.text}")

    return response.text

Node.js

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai Vertex AI menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Node.js Vertex AI.

Untuk melakukan autentikasi ke Vertex AI, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

/**
 * TODO(developer): Uncomment these variables before running the sample.\
 * (Not necessary if passing values as arguments)
 */
// const project = 'YOUR_PROJECT_ID';
// const location = 'YOUR_PROJECT_LOCATION';
const aiplatform = require('@google-cloud/aiplatform');

// Imports the Google Cloud Prediction service client
const {PredictionServiceClient} = aiplatform.v1;

// Import the helper module for converting arbitrary protobuf.Value objects.
const {helpers} = aiplatform;

// Specifies the location of the api endpoint
const clientOptions = {
  apiEndpoint: 'us-central1-aiplatform.googleapis.com',
};

const publisher = 'google';
const model = 'text-bison@001';

// Instantiates a client
const predictionServiceClient = new PredictionServiceClient(clientOptions);

async function callPredict() {
  // Configure the parent resource
  const endpoint = `projects/${project}/locations/${location}/publishers/${publisher}/models/${model}`;

  const prompt = {
    prompt:
      'Give me ten interview questions for the role of program manager.',
  };
  const instanceValue = helpers.toValue(prompt);
  const instances = [instanceValue];

  const parameter = {
    temperature: 0.2,
    maxOutputTokens: 256,
    topP: 0.95,
    topK: 40,
  };
  const parameters = helpers.toValue(parameter);

  const request = {
    endpoint,
    instances,
    parameters,
  };

  // Predict request
  const response = await predictionServiceClient.predict(request);
  console.log('Get text prompt response');
  console.log(response);
}

callPredict();

Java

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai Vertex AI menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Java Vertex AI.

Untuk melakukan autentikasi ke Vertex AI, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.


import com.google.cloud.aiplatform.v1beta1.EndpointName;
import com.google.cloud.aiplatform.v1beta1.PredictResponse;
import com.google.cloud.aiplatform.v1beta1.PredictionServiceClient;
import com.google.cloud.aiplatform.v1beta1.PredictionServiceSettings;
import com.google.protobuf.Value;
import com.google.protobuf.util.JsonFormat;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class PredictTextPromptSample {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    // Details of designing text prompts for supported large language models:
    // http://cloud.go888ogle.com.fqhub.com/vertex-ai/docs/generative-ai/text/text-overview
    String instance =
        "{ \"prompt\": " + "\"Give me ten interview questions for the role of program manager.\"}";
    String parameters =
        "{\n"
            + "  \"temperature\": 0.2,\n"
            + "  \"maxOutputTokens\": 256,\n"
            + "  \"topP\": 0.95,\n"
            + "  \"topK\": 40\n"
            + "}";
    String project = "YOUR_PROJECT_ID";
    String location = "us-central1";
    String publisher = "google";
    String model = "text-bison@001";

    predictTextPrompt(instance, parameters, project, location, publisher, model);
  }

  // Get a text prompt from a supported text model
  public static void predictTextPrompt(
      String instance,
      String parameters,
      String project,
      String location,
      String publisher,
      String model)
      throws IOException {
    String endpoint = String.format("%s-aiplatform.googleapis.com:443", location);
    PredictionServiceSettings predictionServiceSettings =
        PredictionServiceSettings.newBuilder().setEndpoint(endpoint).build();

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (PredictionServiceClient predictionServiceClient =
        PredictionServiceClient.create(predictionServiceSettings)) {
      final EndpointName endpointName =
          EndpointName.ofProjectLocationPublisherModelName(project, location, publisher, model);

      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      Value.Builder instanceValue = Value.newBuilder();
      JsonFormat.parser().merge(instance, instanceValue);
      List<Value> instances = new ArrayList<>();
      instances.add(instanceValue.build());

      // Use Value.Builder to convert instance to a dynamically typed value that can be
      // processed by the service.
      Value.Builder parameterValueBuilder = Value.newBuilder();
      JsonFormat.parser().merge(parameters, parameterValueBuilder);
      Value parameterValue = parameterValueBuilder.build();

      PredictResponse predictResponse =
          predictionServiceClient.predict(endpointName, instances, parameterValue);
      System.out.println("Predict Response");
      System.out.println(predictResponse);
    }
  }
}

Isi respons

{
  "predictions":[
    {
      "content": string,
      "citationMetadata": {
        "citations": [
          {
            "startIndex": integer,
            "endIndex": integer,
            "url": string,
            "title": string,
            "license": string,
            "publicationDate": string
          }
        ]
      },
      "logprobs": {
        "tokenLogProbs": [ float ],
        "tokens": [ string ],
        "topLogProbs": [ { map<string, float> } ]
      },
      "safetyAttributes": {
        "categories": [ string ],
        "blocked": boolean,
        "scores": [ float ],
        "errors": [ int ]
      }
    }
  ],
  "metadata": {
    "tokenMetadata": {
      "input_token_count": {
        "total_tokens": integer,
        "total_billable_characters": integer
      },
      "output_token_count": {
        "total_tokens": integer,
        "total_billable_characters": integer
      }
    }
  }
}
Elemen respons Deskripsi
content Hasil yang dihasilkan dari teks input.
categories Nama tampilan kategori Atribut Keamanan terkait dengan konten yang dibuat. Urutan cocok dengan Skor.
scores Skor keyakinan setiap kategori, nilai yang lebih tinggi berarti keyakinan yang lebih tinggi.
blocked Flag yang menunjukkan apakah input atau output model diblokir.
errors Kode error yang mengidentifikasi alasan input atau output diblokir. Untuk mengetahui daftar kode error, lihat Atribut dan filter keamanan.
startIndex Indeks dalam output prediksi tempat kutipan dimulai (inklusif). Harus >= 0 dan < end_index.
endIndex Indeks dalam output prediksi tempat kutipan berakhir (eksklusif). Harus > start_index dan < len(output).
url URL yang terkait dengan kutipan ini. Jika ada, URL ini akan ditautkan ke halaman web sumber kutipan ini. URL yang memungkinkan mencakup situs berita, repositori GitHub, dll.
title Judul yang terkait dengan kutipan ini. Jika ada, judul tersebut merujuk pada judul sumber kutipan ini. Judul yang memungkinkan mencakup judul berita, judul buku, dll.
license Lisensi yang terkait dengan kutipan ini. Jika ada, lisensi tersebut merujuk pada lisensi sumber kutipan ini. Lisensi yang memungkinkan mencakup lisensi kode, misalnya, lisensi mit.
publicationDate Tanggal terbit yang terkait dengan kutipan ini. Jika ada, tanggal terbit tersebut mengacu pada tanggal sumber kutipan ini dipublikasikan. Format yang memungkinkan adalah YYYY, YYYY-MM, YYYY-MM-DD.
input_token_count Jumlah token input. Ini adalah jumlah total token di seluruh perintah, awalan, dan akhiran.
output_token_count Jumlah token output. Ini adalah jumlah total token dalam content di seluruh prediksi.
tokens Token yang diambil sampelnya.
tokenLogProbs Probabilitas log token yang diambil sampelnya.
topLogProb Token kandidat yang paling mungkin dan probabilitas lognya di setiap langkah.
logprobs Hasil parameter `logprobs`. Pemetaan 1-1 ke `kandidat`.

Contoh respons

{
  "predictions": [
    {
      "citationMetadata":{
        "citations": [ ]
      },
      "safetyAttributes":{
        "scores": [
          0.1
        ],
        "categories": [
          "Finance"
        ],
        "blocked": false
      },
      "content":"1. What is your experience with project management?\n2. What are your strengths and weaknesses as a project manager?\n3. How do you handle conflict and difficult situations?\n4. How do you communicate with stakeholders?\n5. How do you stay organized and on track?\n6. How do you manage your time effectively?\n7. What are your goals for your career?\n8. Why are you interested in this position?\n9. What are your salary expectations?\n10. What are your availability and start date?",
      "logprobs": {
        "tokenLogProbs": [
          -0.1,
          -0.2
        ],
        "tokens": [
          "vertex",
          " rocks!"
        ],
        "topLogProbs": [
          {
            "vertex": -0.1,
            "hello": -0.2
          },
          {
            " rocks!": -0.2,
            " world!": -0.3
          }
        ]
      }
    },
    "metadata": {
      "tokenMetadata": {
        "outputTokenCount": {
          "totalTokens": 153,
          "totalBillableCharacters": 537
        },
        "inputTokenCount": {
          "totalBillableCharacters": 54,
          "totalTokens": 12
        }
      }
    }
  ]
}

Streaming respons dari model AI Generatif

Parameternya sama untuk permintaan streaming dan non-streaming ke API.

Untuk melihat contoh permintaan dan respons kode menggunakan REST API, lihat Contoh menggunakan REST API.

Untuk melihat contoh permintaan dan respons kode menggunakan Vertex AI SDK untuk Python, lihat Contoh penggunaan Vertex AI SDK untuk Python.