API Inference

Vertex AI Gemini API mendukung perintah multimodal sebagai teks atau kode input dan output.

Model yang Didukung:

  • Gemini 1.0 Pro
    • gemini-1.0-pro
    • gemini-1.0-pro-001
    • gemini-1.0-pro-002
  • Gemini 1.0 Pro Vision
    • gemini-1.0-pro-vision
    • gemini-1.0-pro-vision-001
  • Gemini 1.0 Ultra
    • gemini-1,0-ultra
    • gemini-1.0-ultra-001
  • Gemini 1.0 Ultra Vision
    • gemini-1.0-ultra-vision
    • gemini-1.0-ultra-vision-001
  • Gemini 1.5 Pro
    • gemini-1.5-pro-preview-0409
  • Eksperimental Gemini
    • gemini-eksperimental

Batasan:

  • Latensi tinggi jika menyediakan terlalu banyak gambar

Sintaksis

  • ID_PROJECT = PROJECT_ID
  • WILAYAH = us-central1
  • MODEL_ID = gemini-1.5-pro-preview-0409

Non-Streaming

curl

https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/publishers/google/models/${MODEL_ID}:generateContent \
  -d '{
    "contents": [{
      ...
    }],
    "generation_config": {
      ...
    },
    "safety_settings": {
      ...
    }
  }'

Python

gemini_model = GenerativeModel(MODEL_ID)
generation_config = GenerationConfig(...)

model_response = gemini_model.generate_content([...], generation_config, safety_settings={...})

Streaming

curl

https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/publishers/google/models/${MODEL_ID}:streamGenerateContent \
  -d '{
    "contents": [{
      ...
    }],
    "generation_config": {
      ...
    },
    "safety_settings": {
      ...
    }
  }'

Python

gemini_model = GenerativeModel(MODEL_ID)
model_response = gemini_model.generate_content([...], generation_config, safety_settings={...}, stream=True)

Daftar parameter

Parameter

contents

Content

Konten percakapan saat ini dengan model.

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

system_instruction

Opsional: Content

Pengguna memberikan petunjuk sistem untuk model tersebut.

Catatan: hanya teks yang boleh digunakan dalam bagian dan konten di setiap bagian akan berada dalam paragraf terpisah.

tools

Opsional. Lihat Function Calling API

tool_config

Opsional. Lihat Function Calling API

safety_settings

Opsional: SafetySetting

Setelan sesuai permintaan untuk memblokir konten yang tidak aman.

Diberlakukan pada GenerateContentResponse.candidates.

generation_config

Opsional: GenerationConfig

Konfigurasi pembuatan

Konten

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

Parameter

role

Opsional: string

Identitas entity yang membuat pesan dan harus berupa user atau model.

  • user: Hal 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-giliran banyak giliran, kolom ini dapat dibiarkan kosong atau tidak ditetapkan.

parts

Part

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

Bagian

Parameter

text

Opsional: string

Dialog teks atau cuplikan kode.

inline_data

Opsional: Blob

Data inline dalam byte mentah.

file_data

Opsional: FileData

Data yang disimpan dalam file.

function_call

Opsional: FunctionCall.

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

Lihat Function Calling API.

function_response

Opsional: FunctionResponse.

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

Lihat Function Calling API.

video_metadata

Opsional: VideoMetadata

Metadata video. Metadata hanya boleh ditentukan saat data video disajikan dalam inline_data atau file_data.

Blob

Parameter

mime_type

string

Jenis MIME IANA untuk data.

data

bytes

Byte mentah.

FileData

Parameter

mime_type

string

Jenis MIME IANA untuk data.

file_uri

string

URI Cloud Storage ke file yang menyimpan data

FunctionCall

Parameter

name

string

Nama fungsi yang akan dipanggil.

args

Struct

Parameter dan nilai fungsi dalam format objek JSON.

Lihat Function Calling API untuk detail parameter.

FunctionResponse

Parameter

name

string

Nama fungsi yang akan dipanggil.

response

Struct

Respons fungsi dalam format objek JSON.

VideoMetadata

Parameter

start_offset

Opsional: google.protobuf.Duration

Offset awal video

end_offset

Opsional: google.protobuf.Duration

Offset akhir video

SafetySetting

Parameter

category

Opsional: HarmCategory

Kategori bahaya.

threshold

Opsional: HarmBlockThreshold

Ambang batas bahaya

max_influential_terms

Opsional: int

Jumlah maksimum istilah berpengaruh yang paling berkontribusi pada skor keamanan, yang dapat menyebabkan potensi pemblokiran.

method

Opsional: HarmBlockMethod

Menentukan apakah ambang batas digunakan untuk skor probabilitas atau tingkat keparahan. Jika tidak ditentukan, nilai minimum akan digunakan untuk skor probabilitas.

HarmCategory

Parameter

HARM_CATEGORY_UNSPECIFIED

Kategori bahaya tidak disebutkan.

HARM_CATEGORY_HATE_SPEECH

Kategori kerugian adalah ujaran kebencian.

HARM_CATEGORY_DANGEROUS_CONTENT

Kategori kerugian adalah konten berbahaya.

HARM_CATEGORY_HARASSMENT

Kategori kerugian adalah pelecehan.

HARM_CATEGORY_SEXUALLY_EXPLICIT

Kategori bahaya adalah konten seksual vulgar.

HarmBlockThreshold

Parameter

HARM_BLOCK_THRESHOLD_UNSPECIFIED

Ambang batas pemblokiran bahaya belum ditetapkan.

BLOCK_LOW_AND_ABOVE

Blokir batas bawah dan yang lebih tinggi (yaitu, blokir lainnya).

BLOCK_MEDIUM_AND_ABOVE

Blokir ambang batas sedang ke atas.

BLOCK_ONLY_HIGH

Hanya blokir nilai minimum tinggi (yaitu lebih sedikit pemblokiran).

BLOCK_NONE

Tidak ada yang diblokir.

HarmBlockMethod

Parameter

HARM_BLOCK_METHOD_UNSPECIFIED

Metode blok berbahaya tidak ditentukan.

SEVERITY

Metode blok bahaya menggunakan skor probabilitas dan tingkat keparahan.

PROBABILITY

Metode blok kerusakan menggunakan skor probabilitas.

GenerationConfig

Parameter

temperature

Opsional: float

Mengontrol keacakan prediksi.

top_p

Opsional: float

Jika ditentukan, pengambilan sampel nukleus akan digunakan.

top_k

Opsional: float

Jika ditentukan, sampling top-k akan digunakan.

candidate_count

Opsional: int

Jumlah kandidat yang akan dibuat.

max_output_tokens

Opsional: int

Jumlah maksimum token output yang akan dihasilkan per pesan.

stop_sequences

Opsional: List[string]

Menghentikan urutan.

presence_penalty

Opsional: float

Sanksi positif.

frequency_penalty

Opsional: float

Sanksi frekuensi.

echo

Opsional: bool

echo

seed

Opsional: int

bibit

response_mime_type

Opsional: string (enum)

mimetype respons output dari teks kandidat yang dihasilkan.

mimetype yang didukung:

  • text/plain: (default) Output teks.
  • application/json: Respons JSON pada kandidat.
  • Model perlu diminta untuk menghasilkan output jenis respons yang sesuai. Jika tidak, perilaku tidak akan ditentukan.

Ini adalah fitur pratinjau.

Contoh

  • ID_PROJECT = PROJECT_ID
  • WILAYAH = us-central1
  • MODEL_ID = gemini-1.0-pro

Inferensi teks

curl

curl -X POST \
 -H "Authorization: Bearer $(gcloud auth print-access-token)" \
 -H "Content-Type: application/json" \
 https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/publishers/google/models/${MODEL_ID}:generateContent \
 -d '{
   "contents": [{
     "role": "user",
     "parts": [{
       "text": "Write a story about a magic backpack."
     }]
   }]
 }'

Python

import vertexai
from vertexai.generative_models import GenerativeModel

vertexai.init(project=PROJECT_ID, location=REGION)

gemini_model = GenerativeModel(MODEL_ID)
model_response = gemini_model.generate_content("Write a story about a magic backpack.")

print(model_response)

Multi-Modalitas

curl

curl -X POST \
 -H "Authorization: Bearer $(gcloud auth print-access-token)" \
 -H "Content-Type: application/json" \
 https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/publishers/google/models/${MODEL_ID}:generateContent \
 -d '{
   "contents": [{
     "role": "user",
     "parts": [
      {
        "text": "Are following video and image correlated?"
      },
      {
        "file_data": {"file_uri": "gs://cloud-samples-data/video/animals.mp4", "mime_type":"video/mp4"}
      },
      {
        "file_data": {"file_uri": "gs://generativeai-downloads/images/character.jpg", "mime_type":"image/jpeg"}
      }
     ]
   }]
 }'

Python

import vertexai
from vertexai.generative_models import GenerativeModel,Part

vertexai.init(project=PROJECT_ID, location=REGION)

gemini_model = GenerativeModel(MODEL_ID)
model_response = gemini_model.generate_content([
   "Are following video and image correlated?",
   Part.from_uri("gs://cloud-samples-data/video/animals.mp4", "video/mp4"),
   Part.from_uri("gs://generativeai-downloads/images/character.jpg", "image/jpeg")
])

print(model_response)

Teks Streaming

curl

curl -X POST \
 -H "Authorization: Bearer $(gcloud auth print-access-token)" \
 -H "Content-Type: application/json" \
 https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/publishers/google/models/${MODEL_ID}:streamGenerateContent \
 -d '{
   "contents": [{
     "role": "user",
     "parts": [{
       "text": "Write a story about a magic backpack."
     }]
   }]
 }'

Python

import vertexai
from vertexai.generative_models import GenerativeModel

vertexai.init(project=PROJECT_ID, location=REGION)

gemini_model = GenerativeModel(MODEL_ID)
model_response = gemini_model.generate_content("Write a story about a magic backpack.", stream=True)

for resp in model_response:
  print(resp)

Multi-Modalitas Streaming

curl

curl -X POST \
 -H "Authorization: Bearer $(gcloud auth print-access-token)" \
 -H "Content-Type: application/json" \
 https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/publishers/google/models/${MODEL_ID}:streamGenerateContent \
 -d '{
   "contents": [{
     "role": "user",
     "parts": [
      {
        "text": "Are following video and image correlated?"
      },
      {
        "file_data": {"file_uri": "gs://cloud-samples-data/video/animals.mp4", "mime_type":"video/mp4"}
      },
      {
        "file_data": {"file_uri": "gs://generativeai-downloads/images/character.jpg", "mime_type":"image/jpeg"}
      }
     ]
   }]
 }'

Python

import vertexai
from vertexai.generative_models import GenerativeModel,Part

vertexai.init(project=PROJECT_ID, location=REGION)

gemini_model = GenerativeModel(MODEL_ID)
model_response = gemini_model.generate_content([
   "Are following video and image correlated?",
   Part.from_uri("gs://cloud-samples-data/video/animals.mp4", "video/mp4"),
   Part.from_uri("gs://generativeai-downloads/images/character.jpg", "image/jpeg")
], stream=True)

for resp in model_response:
  print(resp)

Jelajahi lebih lanjut

Untuk mempelajari lebih lanjut, lihat: