Kirim permintaan perintah chat (Gemini)

Halaman ini menunjukkan cara mengirim perintah chat ke model Gemini 1.0 Pro (gemini-1.0-pro) menggunakan Konsol Google Cloud, REST API, dan SDK yang didukung. Gemini 1.0 Pro mendukung perintah dengan input hanya teks, termasuk tugas natural language, chat teks dan kode multi-giliran, serta pembuatan kode. Dapat menghasilkan teks dan kode.

Model dasar Gemini 1.0 Pro adalah model bahasa besar yang mahir dalam memahami dan menghasilkan bahasa. Anda dapat berinteraksi dengan Gemini Pro menggunakan perintah dan respons satu giliran atau chat dengannya dalam percakapan multi-giliran dan berkelanjutan, bahkan untuk memahami dan membuat kode.

Untuk daftar bahasa yang didukung oleh Gemini 1.0 Pro, lihat informasi model Dukungan bahasa.


Untuk menjelajahi model ini di konsol, pilih kartu model gemini-1.0-pro di Model Garden.

Pergi ke Model Garden


Jika Anda mencari cara untuk menggunakan Gemini langsung dari aplikasi seluler dan web, lihat Google AI SDK untuk Android, Swift, dan web.

Kirim perintah chat

Untuk menguji dan melakukan iterasi pada perintah chat, sebaiknya gunakan Konsol Google Cloud. Untuk mengirim perintah secara terprogram ke model, Anda dapat menggunakan REST API, Vertex AI SDK untuk Python, atau salah satu library dan SDK yang didukung lainnya yang ditampilkan di tab berikut.

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 Vertex AI SDK untuk Python API.

Respons streaming dan non-streaming

Anda dapat memilih apakah model akan menghasilkan respons streaming atau respons non-streaming. Streaming melibatkan penerimaan respons terhadap perintah saat dihasilkan. Artinya, segera setelah model menghasilkan token output, token output akan dikirim. Respons non-streaming terhadap perintah hanya dikirim setelah semua token output dibuat.

Untuk respons streaming, gunakan parameter stream di generate_content.

  response = model.generate_content(contents=[...], stream = True)
  

Untuk respons non-streaming, hapus parameter, atau tetapkan parameter ke False.

Kode contoh

import vertexai
from vertexai.generative_models import GenerativeModel, ChatSession

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# location = "us-central1"
vertexai.init(project=project_id, location=location)
model = GenerativeModel("gemini-1.0-pro")
chat = model.start_chat()

def get_chat_response(chat: ChatSession, prompt: str) -> str:
    text_response = []
    responses = chat.send_message(prompt, stream=True)
    for chunk in responses:
        text_response.append(chunk.text)
    return "".join(text_response)

prompt = "Hello."
print(get_chat_response(chat, prompt))

prompt = "What are all the colors in a rainbow?"
print(get_chat_response(chat, prompt))

prompt = "Why does it appear when it rains?"
print(get_chat_response(chat, prompt))

C#

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

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


using Google.Cloud.AIPlatform.V1;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

public class MultiTurnChatSample
{
    public async Task<string> GenerateContent(
        string projectId = "your-project-id",
        string location = "us-central1",
        string publisher = "google",
        string model = "gemini-1.0-pro"
    )
    {
        // Create a chat session to keep track of the context
        ChatSession chatSession = new ChatSession($"projects/{projectId}/locations/{location}/publishers/{publisher}/models/{model}", location);

        string prompt = "Hello.";
        Console.WriteLine($"\nUser: {prompt}");

        string response = await chatSession.SendMessageAsync(prompt);
        Console.WriteLine($"Response: {response}");

        prompt = "What are all the colors in a rainbow?";
        Console.WriteLine($"\nUser: {prompt}");

        response = await chatSession.SendMessageAsync(prompt);
        Console.WriteLine($"Response: {response}");

        prompt = "Why does it appear when it rains?";
        Console.WriteLine($"\nUser: {prompt}");

        response = await chatSession.SendMessageAsync(prompt);
        Console.WriteLine($"Response: {response}");

        return response;
    }

    private class ChatSession
    {
        private readonly string _modelPath;
        private readonly PredictionServiceClient _predictionServiceClient;

        private readonly List<Content> _contents;

        public ChatSession(string modelPath, string location)
        {
            _modelPath = modelPath;

            // Create a prediction service client.
            _predictionServiceClient = new PredictionServiceClientBuilder
            {
                Endpoint = $"{location}-aiplatform.googleapis.com"
            }.Build();

            // Initialize contents to send over in every request.
            _contents = new List<Content>();
        }

        public async Task<string> SendMessageAsync(string prompt)
        {
            // Initialize the content with the prompt.
            var content = new Content
            {
                Role = "USER"
            };
            content.Parts.AddRange(new List<Part>()
            {
                new() {
                    Text = prompt
                }
            });
            _contents.Add(content);

            // Create a request to generate content.
            var generateContentRequest = new GenerateContentRequest
            {
                Model = _modelPath,
                GenerationConfig = new GenerationConfig
                {
                    Temperature = 0.9f,
                    TopP = 1,
                    TopK = 32,
                    CandidateCount = 1,
                    MaxOutputTokens = 2048
                }
            };
            generateContentRequest.Contents.AddRange(_contents);

            // Make a non-streaming request, get a response.
            GenerateContentResponse response = await _predictionServiceClient.GenerateContentAsync(generateContentRequest);

            // Save the content from the response.
            _contents.Add(response.Candidates[0].Content);

            // Return the text
            return response.Candidates[0].Content.Parts[0].Text;
        }
    }
}

Node.js

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai AI Generatif menggunakan Node.js SDK. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Node.js SDK untuk Gemini.

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

Respons streaming dan non-streaming

Anda dapat memilih apakah model akan menghasilkan respons streaming atau respons non-streaming. Streaming melibatkan penerimaan respons terhadap perintah setelah dihasilkan. Artinya, segera setelah model menghasilkan token output, token output akan dikirim. Respons non-streaming terhadap perintah hanya dikirim setelah semua token output dibuat.

Untuk respons streaming, gunakan metode generateContentStream.

  const streamingResp = await generativeModel.generateContentStream(request);
  

Untuk respons non-streaming, gunakan metode generateContent.

  const streamingResp = await generativeModel.generateContent(request);
  

Kode contoh

const {VertexAI} = require('@google-cloud/vertexai');

/**
 * TODO(developer): Update these variables before running the sample.
 */
async function createStreamChat(
  projectId = 'PROJECT_ID',
  location = 'us-central1',
  model = 'gemini-1.0-pro'
) {
  // Initialize Vertex with your Cloud project and location
  const vertexAI = new VertexAI({project: projectId, location: location});

  // Instantiate the model
  const generativeModel = vertexAI.getGenerativeModel({
    model: model,
  });

  const chat = generativeModel.startChat({});
  const chatInput1 = 'How can I learn more about that?';

  console.log(`User: ${chatInput1}`);

  const result1 = await chat.sendMessageStream(chatInput1);
  for await (const item of result1.stream) {
    console.log(item.candidates[0].content.parts[0].text);
  }
}

Java

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di panduan memulai Vertex AI. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Vertex AI Java SDK untuk Gemini.

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

Respons streaming dan non-streaming

Anda dapat memilih apakah model akan menghasilkan respons streaming atau respons non-streaming. Streaming melibatkan penerimaan respons terhadap perintah setelah dihasilkan. Artinya, segera setelah model menghasilkan token output, token output akan dikirim. Respons non-streaming terhadap perintah hanya dikirim setelah semua token output dibuat.

Untuk respons streaming, gunakan metode generateContentStream.

  public ResponseStream generateContentStream(Content content)
  

Untuk respons non-streaming, gunakan metode generateContent.

  public GenerateContentResponse generateContent(Content content)
  

Kode contoh

import com.google.cloud.vertexai.VertexAI;
import com.google.cloud.vertexai.api.GenerateContentResponse;
import com.google.cloud.vertexai.generativeai.ChatSession;
import com.google.cloud.vertexai.generativeai.GenerativeModel;
import com.google.cloud.vertexai.generativeai.ResponseHandler;
import java.io.IOException;

public class ChatDiscussion {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-google-cloud-project-id";
    String location = "us-central1";
    String modelName = "gemini-1.0-pro";

    chatDiscussion(projectId, location, modelName);
  }

  // Ask interrelated questions in a row using a ChatSession object.
  public static void chatDiscussion(String projectId, String location, String modelName)
      throws IOException {
    // 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 (VertexAI vertexAI = new VertexAI(projectId, location)) {
      GenerateContentResponse response;

      GenerativeModel model = new GenerativeModel(modelName, vertexAI);
      // Create a chat session to be used for interactive conversation.
      ChatSession chatSession = new ChatSession(model);

      response = chatSession.sendMessage("Hello.");
      System.out.println(ResponseHandler.getText(response));

      response = chatSession.sendMessage("What are all the colors in a rainbow?");
      System.out.println(ResponseHandler.getText(response));

      response = chatSession.sendMessage("Why does it appear when it rains?");
      System.out.println(ResponseHandler.getText(response));
      System.out.println("Chat Ended.");
    }
  }
}

Go

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di panduan memulai Vertex AI. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Vertex AI Go SDK untuk Gemini.

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

Respons streaming dan non-streaming

Anda dapat memilih apakah model akan menghasilkan respons yang di-streaming atau respons non-stream. Streaming melibatkan penerimaan respons terhadap perintah setelah dihasilkan. Artinya, segera setelah model menghasilkan token output, token output akan dikirim. Respons non-streaming terhadap perintah hanya dikirim setelah semua token output dibuat.

Untuk respons streaming, gunakan metode GenerateContentStream.

  iter := model.GenerateContentStream(ctx, genai.Text("Tell me a story about a lumberjack and his giant ox. Keep it very short."))
  

Untuk respons non-streaming, gunakan metode GenerateContent.

  resp, err := model.GenerateContent(ctx, genai.Text("What is the average size of a swallow?"))
  

Kode contoh

import (
	"context"
	"encoding/json"
	"fmt"

	"cloud.go888ogle.com.fqhub.com/go/vertexai/genai"
)

var projectId = "PROJECT_ID"
var region = "us-central1"
var modelName = "gemini-1.0-pro-vision"

func makeChatRequests(projectId string, region string, modelName string) error {
	ctx := context.Background()
	client, err := genai.NewClient(ctx, projectId, region)
	if err != nil {
		return fmt.Errorf("error creating client: %v", err)
	}
	defer client.Close()

	gemini := client.GenerativeModel(modelName)
	chat := gemini.StartChat()

	r, err := chat.SendMessage(
		ctx,
		genai.Text("Hello"))
	if err != nil {
		return err
	}
	rb, _ := json.MarshalIndent(r, "", "  ")
	fmt.Println(string(rb))

	r, err = chat.SendMessage(
		ctx,
		genai.Text("What are all the colors in a rainbow?"))
	if err != nil {
		return err
	}
	rb, _ = json.MarshalIndent(r, "", "  ")
	fmt.Println(string(rb))

	r, err = chat.SendMessage(
		ctx,
		genai.Text("Why does it appear when it rains?"))
	if err != nil {
		return err
	}
	rb, _ = json.MarshalIndent(r, "", "  ")
	fmt.Println(string(rb))

	return nil
}

REST

Anda dapat menggunakan REST untuk mengirim prompt chat dengan menggunakan Vertex AI API untuk mengirimkan permintaan POST ke endpoint model penayang.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • GENERATE_RESPONSE_METHOD: Jenis respons yang Anda inginkan untuk dibuat oleh model. Pilih metode yang menghasilkan cara menampilkan respons model yang Anda inginkan:
    • streamGenerateContent: Respons di-streaming saat dihasilkan untuk mengurangi persepsi latensi kepada audiens manusia.
    • generateContent: Respons ditampilkan setelah dibuat sepenuhnya.
  • LOCATION: Region untuk memproses permintaan. Opsi yang tersedia mencakup hal berikut:

    Klik untuk meluaskan wilayah yang tersedia

    • us-central1
    • us-west4
    • northamerica-northeast1
    • us-east4
    • us-west1
    • asia-northeast3
    • asia-southeast1
    • asia-northeast1
  • PROJECT_ID: Project ID Anda.
  • MODEL_ID: ID model dari model multimodal yang ingin Anda gunakan. Opsinya adalah:
    • gemini-1.0-pro-002
    • gemini-1.0-pro-vision-001
    • gemini-1.5-pro-preview-0409
  • ROLE: Peran dalam percakapan yang terkait dengan konten. Penentuan peran diperlukan bahkan dalam kasus penggunaan satu giliran. Nilai yang dapat diterima mencakup:
    • USER: Menentukan konten yang Anda kirimkan.
    • MODEL: Menentukan respons model.
  • TEXT: Teks petunjuk yang akan disertakan dalam perintah.
  • SAFETY_CATEGORY: Kategori keamanan yang batasnya akan dikonfigurasi. Nilai yang dapat diterima mencakup:

    Klik untuk memperluas kategori keamanan

    • HARM_CATEGORY_SEXUALLY_EXPLICIT
    • HARM_CATEGORY_HATE_SPEECH
    • HARM_CATEGORY_HARASSMENT
    • HARM_CATEGORY_DANGEROUS_CONTENT
  • THRESHOLD: Nilai minimum untuk respons pemblokiran yang dapat termasuk dalam kategori keamanan yang ditentukan berdasarkan probabilitas. Nilai yang dapat diterima mencakup:

    Klik untuk memperluas nilai minimum pemblokiran

    • BLOCK_NONE
    • BLOCK_ONLY_HIGH
    • BLOCK_MEDIUM_AND_ABOVE (default)
    • BLOCK_LOW_AND_ABOVE
    BLOCK_LOW_AND_ABOVE memblokir paling banyak, sedangkan BLOCK_ONLY_HIGH memblokir paling sedikit.
  • SYSTEM_INSTRUCTION: (Opsional) Tersedia untuk gemini-1.0-pro-002 dan gemini-1.5-pro-preview-0409. Petunjuk bagi model untuk mengarahkannya agar menghasilkan performa yang lebih baik. Misalnya, "Jawab sesingkat mungkin" atau "Cetak hasil dalam format JSON".
  • 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.

  • TOP_P: 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 adalah 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.

  • TOP_K: Top-K mengubah cara model memilih token untuk output. Top-K dari 1 berarti token yang dipilih berikutnya adalah yang paling mungkin di antara semua token dalam kosakata model (juga disebut decoding greedy), sedangkan nilai top-K dari 3 berarti token berikutnya dipilih di antara tiga token yang paling mungkin 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.

  • MAX_OUTPUT_TOKENS: 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.

  • STOP_SEQUENCES: 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 berikut adalah respons yang ditampilkan ketika stopSequences tidak ditentukan:

    public static string reverse(string myString)

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

    public static string

Metode HTTP dan URL:

POST http://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD

Isi JSON permintaan:

{
  "contents": {
    "role": "ROLE",
    "parts": { "text": "TEXT" }
  },
  "system_instruction":
  {
    "parts": [
      {
        "text": "SYSTEM_INSTRUCTION"
      }
    ]
  },
  "safety_settings": {
    "category": "SAFETY_CATEGORY",
    "threshold": "THRESHOLD"
  },
  "generation_config": {
    "temperature": TEMPERATURE,
    "topP": TOP_P,
    "topK": TOP_K,
    "candidateCount": 1,
    "maxOutputTokens": MAX_OUTPUT_TOKENS,
    "stopSequences": STOP_SEQUENCES,
  }
}

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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD"

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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD" | Select-Object -Expand Content

Anda akan melihat respons JSON yang mirip seperti berikut:

Contoh perintah curl

LOCATION="us-central1"
MODEL_ID="gemini-1.0-pro"
PROJECT_ID="test-project"
GENERATE_RESPONSE_METHOD="generateContent"

curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
http://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}:${GENERATE_RESPONSE_METHOD} -d \
$'{
  "contents": [
    {
    "role": "user",
    "parts": { "text": "Hello!" }
    },
    {
    "role": "model",
    "parts": { "text": "Argh! What brings ye to my ship?" }
    },
    {
    "role": "user",
    "parts": { "text": "Wow! You are a real-life pirate!" }
    }
  ],
  "safety_settings": {
    "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
    "threshold": "BLOCK_LOW_AND_ABOVE"
  },
  "generation_config": {
    "temperature": 0.9,
    "topP": 1,
    "candidateCount": 1,
    "maxOutputTokens": 2048
  }
}'

Konsol

Untuk menggunakan Vertex AI Studio guna mengirim prompt chat di Konsol Google Cloud, lakukan hal berikut:

  1. Di bagian Vertex AI pada Konsol Google Cloud, buka bagian Language di Vertex AI Studio.

    Buka Vertex AI Studio

  2. Klik Chat teks.
  3. Konfigurasi model dan parameter:

    • Region: Pilih region yang ingin Anda gunakan.
    • Model: Pilih Gemini Pro.
    • Suhu: Gunakan penggeser atau kotak teks untuk memasukkan nilai suhu.

      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.

    • Batas token: Gunakan penggeser atau kotak teks untuk memasukkan nilai batas output maksimum.

      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.

    • Menambahkan urutan perhentian: Masukkan urutan perhentian, yang merupakan serangkaian karakter (termasuk spasi) yang menghentikan pembuatan respons jika model menemuinya. Urutan tidak disertakan sebagai bagian dari respons. Anda dapat menambahkan hingga lima urutan perhentian.
  4. Opsional: Untuk mengonfigurasi parameter lanjutan, klik Advanced lalu konfigurasikan sebagai berikut:

    Klik untuk meluaskan konfigurasi lanjutan

    • Top-K: Gunakan penggeser atau kotak teks untuk memasukkan nilai untuk top-K.

      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.

    • Top-P: Gunakan penggeser atau kotak teks untuk memasukkan nilai untuk top-P. Token dipilih dari yang paling mungkin ke yang terkecil hingga jumlah probabilitasnya sama dengan nilai top-P. Untuk hasil variabel terkecil, tetapkan top-P ke 0.
  5. Konsol Google Cloud hanya mendukung streaming, yang melibatkan penerimaan respons terhadap perintah saat dibuat. Anda siap memasukkan pesan di kotak pesan untuk memulai percakapan dengan model.

    Model ini menggunakan pesan sebelumnya sebagai konteks untuk respons baru.

  6. Opsional: Untuk menyimpan perintah ke Perintah saya, klik Simpan.
  7. Opsional: Untuk mendapatkan kode Python atau perintah curl untuk perintah Anda, klik Get code.
  8. Opsional: Untuk menghapus semua pesan sebelumnya, klik Hapus percakapan

Gunakan petunjuk sistem

Petunjuk sistem memungkinkan pengguna mengatur perilaku model berdasarkan kebutuhan dan kasus penggunaan spesifik mereka. Saat menyetel petunjuk sistem, Anda memberikan konteks tambahan kepada model untuk memahami tugas, memberikan respons yang lebih disesuaikan, dan mematuhi panduan khusus terkait interaksi pengguna secara penuh dengan model. Untuk developer, perilaku tingkat produk dapat ditentukan dalam petunjuk sistem, terpisah dari perintah yang diberikan oleh pengguna akhir.

Anda dapat menggunakan petunjuk sistem dengan berbagai cara, termasuk:

  • Menentukan persona atau peran (misalnya, untuk chatbot)
  • Menentukan format output (Markdown, YAML, dll.)
  • Menentukan gaya dan nuansa output (misalnya panjang, formalitas, dan tingkat bacaan target)
  • Menentukan sasaran atau aturan tugas (misalnya, menampilkan cuplikan kode tanpa penjelasan lebih lanjut)
  • Memberikan konteks tambahan untuk perintah (misalnya, batas pengetahuan)

Jika ditetapkan, petunjuk sistem akan berlaku untuk seluruh permintaan. Ini berfungsi di beberapa putaran pengguna dan model saat disertakan dalam perintah.

Contoh kode petunjuk sistem

Berikut adalah contoh penetapan petunjuk sistem sederhana dalam menggunakan Vertex AI Python SDK.

from vertexai.generative_models import GenerativeModel
model = GenerativeModel(
    "gemini-1.0-pro-002",
    system_instruction=[
        "Don't use technical terms in your response",
    ],
)
print(model.generate_content("Explain gravity"))

Berikut adalah contoh penyertaan petunjuk sistem sederhana dalam perintah curl.

LOCATION="us-central1"
MODEL_ID="gemini-1.0-pro-002"
PROJECT_ID="test-project"
GENERATE_RESPONSE_METHOD="generateContent"

curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"http://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models:generateContent" -d \
{
  "contents": [
    {
      "role": "user",
      "parts": [
        {
          "text": "randomly select 10 words from a history book"
        }
      ]
    }
  ],
  "system_instruction":
    {
      "parts": [
        {
          "text": "please print the results in json format."
        }
      ]
    },
  "generation_config": {
    "maxOutputTokens": 2048,
    "temperature": 0.4,
    "topP": 1,
    "topK": 32
  }
}

Contoh petunjuk sistem

Berikut adalah contoh perintah sistem yang menentukan perilaku model yang diharapkan. Yang pertama adalah perintah sistem untuk pembuatan kode front-end, yang kedua adalah contoh kasus penggunaan analisis sentimen pasar, dan yang ketiga adalah chatbot konsumen.

Pembuatan kode

  • Sistem: Anda adalah pakar coding yang mengkhususkan diri dalam merender kode untuk antarmuka frontend. Ketika saya menjelaskan komponen situs web yang ingin saya buat, harap tampilkan HTML dan CSS yang dibutuhkan untuk melakukannya. Jangan berikan penjelasan tentang kode ini. Juga tawarkan beberapa saran desain UI.
  • Pengguna: Buat kotak di tengah halaman yang berisi pilihan gambar yang berputar, masing-masing disertai teks. Gambar di tengah halaman harus memiliki bayangan di belakangnya agar menonjol. Tautan juga harus tertaut ke halaman lain dari situs. Kosongkan URL agar saya dapat mengisinya.

Analisis sentimen pasar

  • Sistem: Anda adalah seorang analis pasar saham yang menganalisis sentimen pasar dengan sebuah cuplikan berita. Berdasarkan cuplikan berita, Anda mengekstrak pernyataan yang memengaruhi sentimen investor.

    Berikan respons dalam format JSON dan untuk setiap pernyataan:

    • Berikan skor 1 - 10 untuk memberi tahu apakah sentimen itu negatif atau positif (1 berarti paling negatif, 10 paling positif, 5 berarti netral).
    • Ulangi pernyataan tersebut.
    • Berikan penjelasan dalam satu kalimat.
  • Pengguna: Mobileye melaporkan tumpukan kelebihan inventaris oleh pelanggan tingkat atas mengikuti kendala supply-chain dalam beberapa tahun terakhir. Pendapatan untuk kuartal pertama diperkirakan turun sekitar 50% dari $458 juta yang dihasilkan setahun sebelumnya, sebelum melakukan normalisasi selama sisa tahun 2024, ujar Mobileye. Mobileye memperkirakan pendapatan untuk setahun penuh 2024 antara $1,83 miliar dan $1,96 miliar, turun dari sekitar $2,08 miliar yang diharapkan pada tahun 2023.

Chatbot musik

  • Sistem: Anda akan menanggapi sebagai sejarawan musik, yang menunjukkan pengetahuan komprehensif di seluruh genre musik yang beragam, dan memberikan contoh yang relevan. Suasana Anda akan penuh semangat dan antusias, yang menyebarkan kegembiraan musik. Jika pertanyaan tidak terkait dengan musik, responsnya seharusnya, "Itu di luar pengetahuan saya".
  • Pengguna: Jika seseorang lahir pada tahun enam puluhan, apa genre musik yang paling populer yang pernah dimainkan? Cantumkan lima lagu berdasarkan poin-poin.

Langkah selanjutnya