Membuat konten dengan Vertex AI Gemini API

Gunakan generateContent atau streamGenerateContent untuk membuat konten dengan Gemini.

Rangkaian model Gemini mencakup model yang berfungsi dengan permintaan perintah multimodal. Istilah multimodal menunjukkan bahwa Anda dapat menggunakan lebih dari satu modalitas, atau jenis input, dalam perintah. Model yang tidak multimodal hanya menerima perintah dengan teks. Modalitas dapat mencakup teks, audio, video, dan lainnya.

Buat akun Google Cloud untuk memulai

Untuk mulai menggunakan Vertex AI Gemini API, buat Google Cloud akun.

Setelah membuat akun, gunakan dokumen ini untuk meninjau isi permintaan, parameter model, isi respons, dan beberapa contoh permintaan model Gemini.

Jika sudah siap, lihat panduan memulai Vertex AI Gemini API untuk mempelajari cara mengirim permintaan ke Vertex AI Gemini API menggunakan SDK bahasa pemrograman atau REST API.

Model yang didukung

Semua model Gemini mendukung pembuatan konten.

Daftar parameter

Lihat contoh untuk mengetahui detail penerapan.

Isi permintaan

{
  "cachedContent": string,
  "contents": [
    {
      "role": string,
      "parts": [
        {
          // Union field data can be only one of the following:
          "text": string,
          "inlineData": {
            "mimeType": string,
            "data": string
          },
          "fileData": {
            "mimeType": string,
            "fileUri": string
          },
          // End of list of possible types for union field data.

          "videoMetadata": {
            "startOffset": {
              "seconds": integer,
              "nanos": integer
            },
            "endOffset": {
              "seconds": integer,
              "nanos": integer
            }
          }
        }
      ]
    }
  ],
  "systemInstruction": {
    "role": string,
    "parts": [
      {
        "text": string
      }
    ]
  },
  "tools": [
    {
      "functionDeclarations": [
        {
          "name": string,
          "description": string,
          "parameters": {
            object (OpenAPI Object Schema)
          }
        }
      ]
    }
  ],
  "safetySettings": [
    {
      "category": enum (HarmCategory),
      "threshold": enum (HarmBlockThreshold)
    }
  ],
  "generationConfig": {
    "temperature": number,
    "topP": number,
    "topK": number,
    "candidateCount": integer,
    "maxOutputTokens": integer,
    "presencePenalty": float,
    "frequencyPenalty": float,
    "stopSequences": [
      string
    ],
    "responseMimeType": string,
    "responseSchema": schema,
    "seed": integer,
    "responseLogprobs": boolean,
    "logprobs": integer,
    "audioTimestamp": boolean
  },
  "labels": {
    string: string
  }
}

Isi permintaan berisi data dengan parameter berikut:

Parameter

cachedContent

Opsional: string

Nama konten yang di-cache yang digunakan sebagai konteks untuk menayangkan prediksi. Format: projects/{project}/locations/{location}/cachedContents/{cachedContent}

contents

Wajib: Content

Konten percakapan saat ini dengan model.

Untuk kueri satu giliran, ini adalah satu instance. Untuk kueri multi-giliran, ini adalah kolom berulang yang berisi histori percakapan dan permintaan terbaru.

systemInstruction

Opsional: Content

Tersedia untuk gemini-2.0-flash dan gemini-2.0-flash-lite.

Petunjuk untuk model agar mengarahkannya ke performa yang lebih baik. Misalnya, "Jawab seringkas mungkin" atau "Jangan gunakan istilah teknis dalam respons Anda".

String text dihitung dalam batas token.

Kolom role dari systemInstruction diabaikan dan tidak memengaruhi performa model.

tools

Opsional. Potongan kode yang memungkinkan sistem berinteraksi dengan sistem eksternal untuk melakukan tindakan, atau serangkaian tindakan, di luar pengetahuan dan cakupan model. Lihat Panggilan fungsi.

toolConfig

Opsional. Lihat Panggilan fungsi.

safetySettings

Opsional: SafetySetting

Setelan per permintaan untuk memblokir konten tidak aman.

Diberlakukan pada GenerateContentResponse.candidates.

generationConfig

Opsional: GenerationConfig

Setelan konfigurasi pembuatan.

labels

Opsional: string

Metadata yang dapat Anda tambahkan ke panggilan API dalam format key-value pair.

contents

Jenis data terstruktur dasar yang berisi konten multibagian dari pesan.

Class ini terdiri dari dua properti utama: role dan parts. Properti role menunjukkan individu yang memproduksi konten, sedangkan properti parts berisi beberapa elemen, yang masing-masing mewakili segmen data dalam pesan.

Parameter

role

Opsional: string

Identitas entitas yang membuat pesan. Nilai-nilai berikut didukung:

  • user: Ini menunjukkan bahwa pesan dikirim oleh orang sungguhan, biasanya pesan buatan pengguna.
  • model: Hal ini menunjukkan bahwa pesan dihasilkan oleh model.

Nilai model digunakan untuk menyisipkan pesan dari model ke dalam percakapan selama percakapan multi-giliran.

Untuk percakapan non-multi-giliran, kolom ini dapat dikosongkan atau tidak ditetapkan.

parts

Part

Daftar bagian yang diurutkan yang membentuk satu pesan. Bagian yang berbeda mungkin memiliki jenis MIME IANA yang berbeda.

Untuk mengetahui batas input, seperti jumlah maksimum token atau jumlah gambar, lihat spesifikasi model di halaman Model Google.

Untuk menghitung jumlah token dalam permintaan Anda, lihat Mendapatkan jumlah token.

parts

Jenis data yang berisi media yang merupakan bagian dari pesan Content multibagian.

Parameter

text

Opsional: string

Dialog teks atau cuplikan kode.

inlineData

Opsional: Blob

Data inline dalam byte mentah.

Untuk gemini-2.0-flash-lite dan gemini-2.0-flash, Anda dapat menentukan hingga 3.000 gambar menggunakan inlineData.

fileData

Opsional: fileData

Data yang disimpan dalam file.

functionCall

Opsional: FunctionCall.

Ini berisi string yang mewakili kolom FunctionDeclaration.name dan objek JSON terstruktur yang berisi parameter apa pun untuk panggilan fungsi yang diprediksi oleh model.

Lihat Panggilan fungsi.

functionResponse

Opsional: FunctionResponse.

Output hasil FunctionCall yang berisi string yang mewakili kolom FunctionDeclaration.name dan objek JSON terstruktur yang berisi output apa pun dari panggilan fungsi. Ini digunakan sebagai konteks untuk model.

Lihat Panggilan fungsi.

videoMetadata

Opsional: VideoMetadata

Untuk input video, offset awal dan akhir video dalam format Durasi. Misalnya, untuk menentukan klip 10 detik yang dimulai pada 1:00, tetapkan "startOffset": { "seconds": 60 } dan "endOffset": { "seconds": 70 }.

Metadata hanya boleh ditentukan saat data video ditampilkan di inlineData atau fileData.

blob

Blob konten. Jika memungkinkan, kirim sebagai teks, bukan byte mentah.

Parameter

mimeType

string

Jenis media file yang ditentukan di kolom data atau fileUri. Nilai yang dapat diterima mencakup hal berikut:

Klik untuk meluaskan jenis MIME

  • application/pdf
  • audio/mpeg
  • audio/mp3
  • audio/wav
  • image/png
  • image/jpeg
  • image/webp
  • text/plain
  • video/mov
  • video/mpeg
  • video/mp4
  • video/mpg
  • video/avi
  • video/wmv
  • video/mpegps
  • video/flv

Untuk gemini-2.0-flash-lite dan gemini-2.0-flash, durasi maksimum file audio adalah 8,4 jam dan durasi maksimum file video (tanpa audio) adalah satu jam. Untuk informasi selengkapnya, lihat persyaratan audio dan video Gemini.

File teks harus berenkode UTF-8. Konten file teks dihitung dalam batas token.

Tidak ada batasan resolusi gambar.

data

bytes

Encoding base64 gambar, PDF, atau video untuk disertakan secara inline dalam perintah. Saat menyertakan media secara inline, Anda juga harus menentukan jenis media (mimeType) data.

Batas ukuran: 20 MB

FileData

Data URI atau URL web.

Parameter

mimeType

string

Jenis MIME IANA data.

fileUri

string

URI atau URL file yang akan disertakan dalam perintah. Nilai yang dapat diterima mencakup hal berikut:

  • URI bucket Cloud Storage: Objek harus dapat dibaca secara publik atau berada di project Google Cloud yang sama dengan yang mengirim permintaan. Untuk gemini-2.0-flash dan gemini-2.0-flash-lite, batas ukurannya adalah 2 GB.
  • URL HTTP: URL file harus dapat dibaca secara publik. Anda dapat menentukan satu file video, satu file audio, dan maksimal 10 file gambar per permintaan. File audio, file video, dan dokumen tidak boleh melebihi 15 MB.
  • URL video YouTube: Video YouTube harus dimiliki oleh akun yang Anda gunakan untuk login ke konsol Google Cloud atau bersifat publik. Hanya satu URL video YouTube yang didukung per permintaan.

Saat menentukan fileURI, Anda juga harus menentukan jenis media (mimeType) file. Jika Kontrol Layanan VPC diaktifkan, menentukan URL file media untuk fileURI tidak didukung.

functionCall

functionCall yang diprediksi ditampilkan dari model yang berisi string yang mewakili functionDeclaration.name dan objek JSON terstruktur yang berisi parameter dan nilainya.

Parameter

name

string

Nama fungsi yang akan dipanggil.

args

Struct

Parameter dan nilai fungsi dalam format objek JSON.

Lihat Panggilan fungsi untuk mengetahui detail parameter.

functionResponse

Output yang dihasilkan dari FunctionCall yang berisi string yang mewakili FunctionDeclaration.name. Juga berisi objek JSON terstruktur dengan output dari fungsi (dan menggunakannya sebagai konteks untuk model). File ini harus berisi hasil FunctionCall yang dibuat berdasarkan prediksi model.

Parameter

name

string

Nama fungsi yang akan dipanggil.

response

Struct

Respons fungsi dalam format objek JSON.

videoMetadata

Metadata yang menjelaskan konten video input.

Parameter

startOffset

Opsional: google.protobuf.Duration

Offset awal video.

endOffset

Opsional: google.protobuf.Duration

Offset akhir video.

safetySetting

Setelan keamanan.

Parameter

category

Opsional: HarmCategory

Kategori keamanan yang akan dikonfigurasi batasnya. Nilai yang dapat diterima mencakup hal berikut:

Klik untuk meluaskan kategori keamanan

  • HARM_CATEGORY_SEXUALLY_EXPLICIT
  • HARM_CATEGORY_HATE_SPEECH
  • HARM_CATEGORY_HARASSMENT
  • HARM_CATEGORY_DANGEROUS_CONTENT

threshold

Opsional: HarmBlockThreshold

Nilai minimum untuk memblokir respons yang mungkin termasuk dalam kategori keamanan yang ditentukan berdasarkan probabilitas.

  • OFF
  • BLOCK_NONE
  • BLOCK_LOW_AND_ABOVE
  • BLOCK_MEDIUM_AND_ABOVE
  • BLOCK_ONLY_HIGH

method

Opsional: HarmBlockMethod

Tentukan apakah nilai minimum digunakan untuk skor probabilitas atau keparahan. Jika tidak ditentukan, nilai minimum akan digunakan untuk skor probabilitas.

harmCategory

Kategori berbahaya yang memblokir konten.

Parameter

HARM_CATEGORY_UNSPECIFIED

Kategori bahaya tidak ditentukan.

HARM_CATEGORY_HATE_SPEECH

Kategori bahaya adalah ujaran kebencian.

HARM_CATEGORY_DANGEROUS_CONTENT

Kategori bahaya adalah konten berbahaya.

HARM_CATEGORY_HARASSMENT

Kategori bahayanya adalah pelecehan.

HARM_CATEGORY_SEXUALLY_EXPLICIT

Kategori bahaya adalah konten seksual vulgar.

harmBlockThreshold

Tingkat nilai minimum probabilitas yang digunakan untuk memblokir respons.

Parameter

HARM_BLOCK_THRESHOLD_UNSPECIFIED

Batas pemblokiran bahaya tidak ditentukan.

BLOCK_LOW_AND_ABOVE

Blokir nilai minimum rendah dan yang lebih tinggi (yaitu, blokir lebih banyak).

BLOCK_MEDIUM_AND_ABOVE

Blokir nilai minimum sedang dan lebih tinggi.

BLOCK_ONLY_HIGH

Block only high threshold (yaitu memblokir lebih sedikit).

BLOCK_NONE

Tidak memblokir komponen apa pun.

OFF

Menonaktifkan perlindungan jika semua kategori dinonaktifkan

harmBlockMethod

Batas probabilitas yang memblokir respons berdasarkan kombinasi probabilitas dan tingkat keparahan.

Parameter

HARM_BLOCK_METHOD_UNSPECIFIED

Metode pemblokiran bahaya tidak ditentukan.

SEVERITY

Metode pemblokiran konten berbahaya menggunakan skor probabilitas dan keparahan.

PROBABILITY

Metode pemblokiran konten berbahaya menggunakan skor probabilitas.

generationConfig

Setelan konfigurasi yang digunakan saat membuat perintah.

Parameter

temperature

Opsional: float

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 pengganti, coba tingkatkan suhunya.

  • Rentang untuk gemini-2.0-flash-lite: 0.0 - 2.0 (default: 1.0)
  • Rentang untuk gemini-2.0-flash: 0.0 - 2.0 (default: 1.0)

Untuk mengetahui informasi selengkapnya, lihat Parameter pembuatan konten.

topP

Opsional: float

Jika ditentukan, sampling nukleus akan digunakan.

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.

  • Rentang: 0.0 - 1.0
  • Default untuk gemini-2.0-flash-lite: 0.95
  • Default untuk gemini-2.0-flash: 0.95

candidateCount

Opsional: int

Jumlah variasi respons yang akan ditampilkan. Untuk setiap permintaan, Anda dikenai biaya untuk token output dari semua kandidat, tetapi hanya dikenai biaya satu kali untuk token input.

Menentukan beberapa kandidat adalah fitur Pratinjau yang berfungsi dengan generateContent (streamGenerateContent tidak didukung). Model berikut didukung:

  • gemini-2.0-flash-lite: 1-8, default: 1
  • gemini-2.0-flash: 1-8, default: 1

maxOutputTokens

Opsional: int

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 singkat dan nilai yang lebih tinggi untuk respons yang berpotensi lebih panjang.

Untuk mengetahui informasi selengkapnya, lihat Parameter pembuatan konten.

stopSequences

Opsional: List[string]

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

Maksimum 5 item dalam daftar.

Untuk mengetahui informasi selengkapnya, lihat Parameter pembuatan konten.

presencePenalty

Opsional: float

Penalti positif.

Nilai positif akan menghukum token yang sudah muncul dalam teks yang dihasilkan, sehingga meningkatkan probabilitas untuk menghasilkan konten yang lebih beragam.

Nilai maksimum untuk presencePenalty adalah hingga, tetapi tidak termasuk, 2.0. Nilai minimumnya adalah -2.0.

Didukung oleh gemini-2.0-flash-lite-001 dan gemini-2.0-flash-001.

frequencyPenalty

Opsional: float

Nilai positif akan menghukum token yang berulang kali muncul dalam teks yang dihasilkan, sehingga mengurangi kemungkinan konten berulang.

Nilai maksimum ini untuk frequencyPenalty maksimal, tetapi tidak termasuk, 2.0. Nilai minimumnya adalah -2.0.

Didukung oleh gemini-2.0-flash-lite-001 dan gemini-2.0-flash-001.

responseMimeType

Opsional: string (enum)

Tersedia untuk model berikut:

  • gemini-2.0-flash-lite-001
  • gemini-2.0-flash-001

Jenis MIME respons output dari teks kandidat yang dihasilkan.

Jenis MIME berikut didukung:

  • application/json: Respons JSON di kandidat.
  • text/plain (default): Output teks biasa.
  • text/x.enum: Untuk tugas klasifikasi, hasilkan nilai enum seperti yang ditentukan dalam skema respons.

Tentukan jenis respons yang sesuai untuk menghindari perilaku yang tidak diinginkan. Misalnya, jika Anda memerlukan respons berformat JSON, tentukan application/json, bukan text/plain.

responseSchema

Opsional: schema

Skema yang menghasilkan teks kandidat harus diikuti. Untuk mengetahui informasi selengkapnya, lihat Mengontrol output yang dihasilkan.

Anda harus menentukan parameter responseMimeType untuk menggunakan parameter ini.

Tersedia untuk model berikut:

  • gemini-2.0-flash-lite-001
  • gemini-2.0-flash-001

seed

Opsional: int

Jika seed ditetapkan ke nilai tertentu, model akan berusaha sebaik mungkin untuk memberikan respons yang sama untuk permintaan berulang. Output deterministik tidak dijamin. Selain itu, mengubah setelan model atau parameter, seperti suhu, dapat menyebabkan variasi respons meskipun Anda menggunakan nilai seed yang sama. Secara default, nilai seed acak akan digunakan.

Tersedia untuk model berikut:

  • gemini-2.0-flash-lite-001
  • gemini-2.0-flash-001

Ini adalah fitur pratinjau.

responseLogprobs

Opsional: boolean

Jika true, menampilkan log probabilitas token yang dipilih oleh model pada setiap langkah. Secara default, parameter ini ditetapkan ke false. Batas harian untuk permintaan yang menggunakan responseLogprobs adalah 1.

Tersedia untuk model berikut:

  • gemini-2.0-flash-lite-001
  • gemini-2.0-flash-001

Ini adalah fitur pratinjau.

logprobs

Opsional: int

Menampilkan log probabilitas token kandidat teratas pada setiap langkah pembuatan. Token yang dipilih model mungkin tidak sama dengan token kandidat teratas di setiap langkah. Tentukan jumlah kandidat yang akan ditampilkan menggunakan nilai bilangan bulat dalam rentang 1-5.

Anda harus mengaktifkan responseLogprobs untuk menggunakan parameter ini. Batas harian untuk permintaan yang menggunakan logprobs adalah 1.

Ini adalah fitur pratinjau.

audioTimestamp

Opsional: boolean

Tersedia untuk model berikut:

  • gemini-2.0-flash-lite-001
  • gemini-2.0-flash-001

Mengaktifkan pemahaman stempel waktu untuk file khusus audio.

Ini adalah fitur pratinjau.

Isi respons

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "text": string
          }
        ]
      },
      "finishReason": enum (FinishReason),
      "safetyRatings": [
        {
          "category": enum (HarmCategory),
          "probability": enum (HarmProbability),
          "blocked": boolean
        }
      ],
      "citationMetadata": {
        "citations": [
          {
            "startIndex": integer,
            "endIndex": integer,
            "uri": string,
            "title": string,
            "license": string,
            "publicationDate": {
              "year": integer,
              "month": integer,
              "day": integer
            }
          }
        ]
      },
      "avgLogprobs": double,
      "logprobsResult": {
        "topCandidates": [
          {
            "candidates": [
              {
                "token": string,
                "logProbability": float
              }
            ]
          }
        ],
        "chosenCandidates": [
          {
            "token": string,
            "logProbability": float
          }
        ]
      }
    }
  ],
  "usageMetadata": {
    "promptTokenCount": integer,
    "candidatesTokenCount": integer,
    "totalTokenCount": integer
  },
  "modelVersion": string
}
Elemen respons Deskripsi
modelVersion Model dan versi yang digunakan untuk pembuatan. Contoh: gemini-1.5-flash-002.
text Teks yang dihasilkan.
finishReason Alasan model berhenti menghasilkan token. Jika kosong, model belum berhenti membuat token. Karena respons menggunakan perintah untuk konteks, Anda tidak dapat mengubah perilaku cara model berhenti membuat token.
  • FINISH_REASON_STOP: Titik perhentian alami model atau urutan perhentian yang diberikan.
  • FINISH_REASON_MAX_TOKENS: Jumlah maksimum token seperti yang ditentukan dalam permintaan telah tercapai.
  • FINISH_REASON_SAFETY: Pembuatan token dihentikan karena respons ditandai karena alasan keamanan. Perhatikan bahwa Candidate.content kosong jika filter konten memblokir output.
  • FINISH_REASON_RECITATION: Pembuatan token dihentikan karena respons ditandai untuk kutipan yang tidak sah.
  • FINISH_REASON_BLOCKLIST: Pembuatan token dihentikan karena respons menyertakan istilah yang diblokir.
  • FINISH_REASON_PROHIBITED_CONTENT: Pembuatan token dihentikan karena respons ditandai untuk konten yang dilarang, seperti materi pelecehan seksual terhadap anak-anak (CSAM).
  • FINISH_REASON_SPII: Pembuatan token dihentikan karena respons ditandai untuk informasi identitas pribadi yang sensitif (SPII).
  • FINISH_REASON_MALFORMED_FUNCTION_CALL: Kandidat diblokir karena panggilan fungsi yang salah format dan tidak dapat diuraikan.
  • FINISH_REASON_OTHER: Semua alasan lain yang menghentikan token
  • FINISH_REASON_UNSPECIFIED: Alasan penyelesaian tidak ditentukan.
category Kategori keamanan yang akan dikonfigurasi batasnya. Nilai yang dapat diterima mencakup hal berikut:

Klik untuk meluaskan kategori keamanan

  • HARM_CATEGORY_SEXUALLY_EXPLICIT
  • HARM_CATEGORY_HATE_SPEECH
  • HARM_CATEGORY_HARASSMENT
  • HARM_CATEGORY_DANGEROUS_CONTENT
probability Tingkat kemungkinan bahaya dalam konten.
  • HARM_PROBABILITY_UNSPECIFIED
  • NEGLIGIBLE
  • LOW
  • MEDIUM
  • HIGH
blocked Flag boolean yang terkait dengan atribut keamanan yang menunjukkan apakah input atau output model diblokir.
startIndex Bilangan bulat yang menentukan tempat kutipan dimulai dalam content.
endIndex Bilangan bulat yang menentukan tempat kutipan diakhiri dalam content.
url URL sumber kutipan. Contoh sumber URL dapat berupa situs berita atau repositori GitHub.
title Judul sumber kutipan. Contoh judul sumber mungkin dari artikel berita atau buku.
license Lisensi yang terkait dengan kutipan.
publicationDate Tanggal penerbitan kutipan. Formatnya yang valid adalah YYYY, YYYY-MM, dan YYYY-MM-DD.
avgLogprobs Probabilitas log rata-rata kandidat.
logprobsResult Menampilkan token kandidat teratas (topCandidates) dan token yang sebenarnya dipilih (chosenCandidates) di setiap langkah.
token Model AI generatif menguraikan data teks menjadi token untuk diproses, yang dapat berupa karakter, kata, atau frasa.
logProbability Nilai log probabilitas yang menunjukkan keyakinan model untuk token tertentu.
promptTokenCount Jumlah token dalam permintaan.
candidatesTokenCount Jumlah token dalam respons.
totalTokenCount Jumlah token dalam permintaan dan respons.

Contoh

Pembuatan Teks

Buat respons teks dari input teks.

Gen AI SDK untuk Python

from google import genai
from google.genai.types import HttpOptions

client = genai.Client(http_options=HttpOptions(api_version="v1"))
response = client.models.generate_content(
    model="gemini-2.0-flash-001",
    contents="How does AI work?",
)
print(response.text)
# Example response:
# Okay, let's break down how AI works. It's a broad field, so I'll focus on the ...
#
# Here's a simplified overview:
# ...

Python (OpenAI)

Anda dapat memanggil Inference API menggunakan library OpenAI. Untuk mengetahui informasi selengkapnya, lihat Memanggil model Vertex AI menggunakan library OpenAI.

from google.auth import default
import google.auth.transport.requests

import openai

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# location = "us-central1"

# Programmatically get an access token
credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
credentials.refresh(google.auth.transport.requests.Request())

# OpenAI Client
client = openai.OpenAI(
    base_url=f"https://{location}-aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi",
    api_key=credentials.token,
)

response = client.chat.completions.create(
    model="google/gemini-2.0-flash-001",
    messages=[{"role": "user", "content": "Why is the sky blue?"}],
)

print(response)

Go

import (
	"context"
	"fmt"
	"io"

	"google.golang.org/genai"
)

// generateWithText shows how to generate text using a text prompt.
func generateWithText(w io.Writer) error {
	ctx := context.Background()

	client, err := genai.NewClient(ctx, &genai.ClientConfig{
		HTTPOptions: genai.HTTPOptions{APIVersion: "v1"},
	})
	if err != nil {
		return fmt.Errorf("failed to create genai client: %w", err)
	}

	resp, err := client.Models.GenerateContent(ctx,
		"gemini-2.0-flash-001",
		genai.Text("How does AI work?"),
		nil,
	)
	if err != nil {
		return fmt.Errorf("failed to generate content: %w", err)
	}

	respText, err := resp.Text()
	if err != nil {
		return fmt.Errorf("failed to convert model response to text: %w", err)
	}
	fmt.Fprintln(w, respText)
	// Example response:
	// That's a great question! Understanding how AI works can feel like ...
	// ...
	// **1. The Foundation: Data and Algorithms**
	// ...

	return nil
}

Menggunakan perintah multimodal

Membuat respons teks dari input multimodal, seperti teks dan gambar.

Gen AI SDK untuk Python

from google import genai
from google.genai.types import HttpOptions, Part

client = genai.Client(http_options=HttpOptions(api_version="v1"))
response = client.models.generate_content(
    model="gemini-2.0-flash-001",
    contents=[
        "What is shown in this image?",
        Part.from_uri(
            file_uri="gs://cloud-samples-data/generative-ai/image/scones.jpg",
            mime_type="image/jpeg",
        ),
    ],
)
print(response.text)
# Example response:
# The image shows a flat lay of blueberry scones arranged on parchment paper. There are ...

Python (OpenAI)

Anda dapat memanggil Inference API menggunakan library OpenAI. Untuk mengetahui informasi selengkapnya, lihat Memanggil model Vertex AI menggunakan library OpenAI.


from google.auth import default
import google.auth.transport.requests

import openai

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# location = "us-central1"

# Programmatically get an access token
credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
credentials.refresh(google.auth.transport.requests.Request())

# OpenAI Client
client = openai.OpenAI(
    base_url=f"https://{location}-aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi",
    api_key=credentials.token,
)

response = client.chat.completions.create(
    model="google/gemini-2.0-flash-001",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "Describe the following image:"},
                {
                    "type": "image_url",
                    "image_url": "gs://cloud-samples-data/generative-ai/image/scones.jpg",
                },
            ],
        }
    ],
)

print(response)

Go

import (
	"context"
	"fmt"
	"io"

	genai "google.golang.org/genai"
)

// generateWithTextImage shows how to generate text using both text and image input
func generateWithTextImage(w io.Writer) error {
	ctx := context.Background()

	client, err := genai.NewClient(ctx, &genai.ClientConfig{
		HTTPOptions: genai.HTTPOptions{APIVersion: "v1"},
	})
	if err != nil {
		return fmt.Errorf("failed to create genai client: %w", err)
	}

	modelName := "gemini-2.0-flash-001"
	contents := []*genai.Content{
		{Parts: []*genai.Part{
			{Text: "What is shown in this image?"},
			{FileData: &genai.FileData{
				// Image source: https://storage.googleapis.com/cloud-samples-data/generative-ai/image/scones.jpg
				FileURI:  "gs://cloud-samples-data/generative-ai/image/scones.jpg",
				MIMEType: "image/jpeg",
			}},
		}},
	}

	resp, err := client.Models.GenerateContent(ctx, modelName, contents, nil)
	if err != nil {
		return fmt.Errorf("failed to generate content: %w", err)
	}

	respText, err := resp.Text()
	if err != nil {
		return fmt.Errorf("failed to convert model response to text: %w", err)
	}
	fmt.Fprintln(w, respText)

	// Example response:
	// The image shows an overhead shot of a rustic, artistic arrangement on a surface that ...

	return nil
}

Streaming respons teks

Buat respons model streaming dari input teks.

Gen AI SDK untuk Python

from google import genai
from google.genai.types import HttpOptions

client = genai.Client(http_options=HttpOptions(api_version="v1"))
response_text = ""
for chunk in client.models.generate_content_stream(
    model="gemini-2.0-flash-001",
    contents="Why is the sky blue?",
):
    print(chunk.text, end="")
    response_text += chunk.text
# Example response:
# The
#  sky appears blue due to a phenomenon called **Rayleigh scattering**. Here's
#  a breakdown of why:
# ...

Python (OpenAI)

Anda dapat memanggil Inference API menggunakan library OpenAI. Untuk mengetahui informasi selengkapnya, lihat Memanggil model Vertex AI menggunakan library OpenAI.

from google.auth import default
import google.auth.transport.requests

import openai

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# location = "us-central1"

# Programmatically get an access token
credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
credentials.refresh(google.auth.transport.requests.Request())

# OpenAI Client
client = openai.OpenAI(
    base_url=f"https://{location}-aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi",
    api_key=credentials.token,
)

response = client.chat.completions.create(
    model="google/gemini-2.0-flash-001",
    messages=[{"role": "user", "content": "Why is the sky blue?"}],
    stream=True,
)
for chunk in response:
    print(chunk)

Go

import (
	"context"
	"fmt"
	"io"

	genai "google.golang.org/genai"
)

// generateWithTextStream shows how to generate text stream using a text prompt.
func generateWithTextStream(w io.Writer) error {
	ctx := context.Background()

	client, err := genai.NewClient(ctx, &genai.ClientConfig{
		HTTPOptions: genai.HTTPOptions{APIVersion: "v1"},
	})
	if err != nil {
		return fmt.Errorf("failed to create genai client: %w", err)
	}

	modelName := "gemini-2.0-flash-001"
	contents := genai.Text("Why is the sky blue?")

	for resp, err := range client.Models.GenerateContentStream(ctx, modelName, contents, nil) {
		if err != nil {
			return fmt.Errorf("failed to generate content: %w", err)
		}

		chunk, err := resp.Text()
		if err != nil {
			return fmt.Errorf("failed to convert model response to text: %w", err)
		}
		fmt.Fprintln(w, chunk)
	}

	// Example response:
	// The
	//  sky is blue
	//  because of a phenomenon called **Rayleigh scattering**. Here's the breakdown:
	// ...

	return nil
}

Versi model

Untuk menggunakan versi yang diupdate secara otomatis, tentukan nama model tanpa nomor versi di akhir, misalnya gemini-2.0-flash, bukan gemini-2.0-flash-001.

Untuk mengetahui informasi selengkapnya, lihat Versi dan siklus proses model Gemini.

Langkah berikutnya