Anda dapat menggunakan REST API atau Python SDK untuk mereferensikan konten yang disimpan dalam cache konteks dalam aplikasi AI generatif. Sebelum dapat digunakan, Anda harus membuat cache konteks terlebih dahulu.
Objek cache konteks yang Anda gunakan dalam kode menyertakan properti berikut:
name
- Nama resource cache konteks. Formatnya adalahprojects/PROJECT_NUMBER/locations/LOCATION/cachedContents/CACHE_ID
. Saat membuat cache konteks, Anda dapat menemukan nama resource-nya dalam respons. Nomor project adalah ID unik untuk project Anda. ID cache adalah ID untuk cache Anda. Saat menentukan cache konteks dalam kode, Anda harus menggunakan nama resource cache konteks lengkap. Berikut adalah contoh yang menunjukkan cara menentukan nama resource konten yang di-cache dalam isi permintaan:"cached_content": "projects/123456789012/locations/us-central1/123456789012345678"
model
- Nama resource untuk model yang digunakan untuk membuat cache. Formatnya adalahprojects/PROJECT_NUMBER/locations/LOCATION/publishers/PUBLISHER_NAME/models/MODEL_ID
.createTime
-Timestamp
yang menentukan waktu pembuatan cache konteks.updateTime
-Timestamp
yang menentukan waktu pembaruan terbaru cache konteks. Setelah cache konteks dibuat, dan sebelum diupdate,createTime
danupdateTime
-nya sama.expireTime
-Timestamp
yang menentukan kapan cache konteks berakhir masa berlakunya.expireTime
default adalah 60 menit setelahcreateTime
. Anda dapat memperbarui cache dengan waktu habis masa berlaku baru. Untuk informasi selengkapnya, lihat Memperbarui cache konteks.
Setelah masa berlakunya habis, cache akan ditandai untuk dihapus dan Anda tidak boleh berasumsi bahwa cache tersebut dapat digunakan atau diperbarui. Jika perlu menggunakan cache konteks yang sudah tidak berlaku, Anda harus membuatnya ulang dengan waktu habis masa berlaku yang sesuai.
Pembatasan penggunaan cache konteks
Fitur berikut dapat ditentukan saat Anda membuat cache konteks. Anda tidak boleh menentukannya lagi dalam permintaan:
Properti
GenerativeModel.system_instructions
. Properti ini digunakan untuk menentukan petunjuk ke model sebelum model menerima petunjuk dari pengguna. Untuk mengetahui informasi selengkapnya, lihat Petunjuk sistem.Properti
GenerativeModel.tool_config
. Propertitool_config
digunakan untuk menentukan alat yang digunakan oleh model Gemini, seperti alat yang digunakan oleh fitur panggilan fungsi.Properti
GenerativeModel.tools
. PropertiGenerativeModel.tools
digunakan untuk menentukan fungsi guna membuat aplikasi panggilan fungsi. Untuk mengetahui informasi selengkapnya, lihat Panggilan fungsi.
Menggunakan contoh cache konteks
Berikut ini cara menggunakan cache konteks. Saat menggunakan cache konteks, Anda tidak dapat menentukan properti berikut:
GenerativeModel.system_instructions
GenerativeModel.tool_config
GenerativeModel.tools
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 API Vertex AI SDK untuk Python.
Respons streaming dan non-streaming
Anda dapat memilih apakah model menghasilkan respons streaming atau respons non-streaming. Untuk respons streaming, Anda akan menerima setiap respons segera setelah token output-nya dibuat. Untuk respons non-streaming, Anda akan menerima semua respons 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
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 informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Respons streaming dan non-streaming
Anda dapat memilih apakah model menghasilkan respons streaming atau respons non-streaming. Untuk respons streaming, Anda akan menerima setiap respons segera setelah token output-nya dibuat. Untuk respons non-streaming, Anda akan menerima semua respons 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
REST
Anda dapat menggunakan REST untuk menggunakan cache konteks dengan perintah menggunakan Vertex AI API untuk mengirim permintaan POST ke endpoint model penayang.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: Project ID Anda.
- LOCATION: Region tempat permintaan untuk membuat cache konteks diproses.
- MIME_TYPE: Perintah teks yang akan dikirim ke model.
Metode HTTP dan URL:
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-pro-002:generateContent
Isi JSON permintaan:
{ "cachedContent": "projects/PROJECT_NUMBER/locations/LOCATION/cachedContents/CACHE_ID", "contents": [ {"role":"user","parts":[{"text":"PROMPT_TEXT"}]} ], "generationConfig": { "maxOutputTokens": 8192, "temperature": 1, "topP": 0.95, }, "safetySettings": [ { "category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_MEDIUM_AND_ABOVE" }, { "category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_MEDIUM_AND_ABOVE" }, { "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "BLOCK_MEDIUM_AND_ABOVE" }, { "category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_MEDIUM_AND_ABOVE" } ], }
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 \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-pro-002:generateContent"
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 "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-pro-002:generateContent" | Select-Object -Expand Content
Anda akan melihat respons JSON yang mirip seperti berikut:
Contoh perintah curl
LOCATION="us-central1"
MODEL_ID="gemini-1.5-pro-002"
PROJECT_ID="test-project"
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}:generateContent" -d \
'{
"cachedContent": "projects/${PROJECT_NUMBER}/locations/${LOCATION}/cachedContents/${CACHE_ID}",
"contents": [
{"role":"user","parts":[{"text":"What are the benefits of exercise?"}]}
],
"generationConfig": {
"maxOutputTokens": 8192,
"temperature": 1,
"topP": 0.95,
},
"safetySettings": [
{
"category": "HARM_CATEGORY_HATE_SPEECH",
"threshold": "BLOCK_MEDIUM_AND_ABOVE"
},
{
"category": "HARM_CATEGORY_DANGEROUS_CONTENT",
"threshold": "BLOCK_MEDIUM_AND_ABOVE"
},
{
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
"threshold": "BLOCK_MEDIUM_AND_ABOVE"
},
{
"category": "HARM_CATEGORY_HARASSMENT",
"threshold": "BLOCK_MEDIUM_AND_ABOVE"
}
],
}'
- Pelajari cara memperbarui waktu habis masa berlaku cache konteks.
- Pelajari cara membuat cache konteks baru.
- Pelajari cara mendapatkan informasi tentang semua cache konteks yang terkait dengan project Google Cloud.
- Pelajari cara menghapus cache konteks.