Kursus
Google merilis 3 model Flash dalam 6 minggu: 3.6 di akhir Juli, lalu 3.7 Flash pada 13 Agustus, dan kini Gemini 3.8 Flash pada 2 September 2026. Jika Anda datang dari 3.7, pembaruannya hanya 1 baris, karena permukaan API-nya identik. Konfigurasi yang lebih lama dari itu tetap akan gagal jika Anda tidak menyesuaikan parameternya.
Alih-alih menambal kode lama, tutorial ini membangun penyiapan bersih dari nol. Kita akan menginisialisasi klien Python pada Interactions API, membandingkan 3 tingkat penalaran pada tugas debugging praktis dengan hitungan token nyata, mengekstrak JSON yang rapi sesuai skema dari faktur PDF, dan mengimplementasikan loop pemanggilan fungsi yang lengkap. Terakhir, kita akan membahas daftar periksa migrasi bagi pengembang yang meningkatkan dari 3.6 Flash atau sebelumnya.
Untuk mengikuti, Anda memerlukan Python 3.10+ dan kunci API Google AI Studio. Panduan ini berfokus pada implementasi kode alih-alih pengumuman fitur.
Ringkasnya
-
Gemini 3.8 Flash (
gemini-3.8-flash) menggunakan Interactions API melalui client.interactions.create() di SDKgoogle-genai. -
Kedalaman penalaran diatur menggunakan nilai string (
thinking_level:low,medium,high). -
Opsi sampling lama (
temperature,top_p,top_k) sudah tidak berlaku -
Status multi-giliran dikelola di sisi server menggunakan
previous_interaction_id. -
Harga perkenalan adalah $0,75 / $3,75 per satu juta token input/output hingga 31 Desember 2026.
-
Jika berasal dari 3.7 Flash, hanya string model yang berubah.
Apa Itu Gemini 3.8 Flash?
Gemini 3.8 Flash adalah model andalan Google, tersedia umum sejak 2 September 2026, dengan ID model gemini-3.8-flash. Model ini hadir 3 minggu setelah 3.7 Flash, dan diposisikan Google untuk penulisan kode horizon panjang, alur kerja agentic, dan penalaran multilangkah di domain khusus seperti keuangan dan pekerjaan hukum.
Spesifikasi yang penting untuk panggilan API tidak berubah dari 3.7:
- jendela konteks 1 juta token
- maksimal 64k token output
- input multimodal (teks, gambar, video, audio, PDF) dengan output teks
- Harga perkenalan yang sama $0,75 per 1M token input dan $3,75 per 1M token output hingga 31 Desember 2026 (naik menjadi $1,50 dan $7,50 mulai 1 Januari 2027)
Yang berubah adalah perilaku, bukan permukaan: Google mengatakan 3.8 bekerja lebih keras pada tugas kompleks, mengambil langkah penalaran ekstra dan memanggil alat secara iteratif, yang dapat menaikkan penggunaan token pada tingkat upaya yang lebih tinggi. 3.7 Flash tetap sepenuhnya didukung untuk beban kerja di mana efisiensi lebih penting daripada kedalaman.
Untuk tolok ukur dan rincian harga, lihat panduan Gemini 3.8 Flash kami, atau baca panduan What is Google Gemini? untuk gambaran platform.
Gemini 3.8 Flash vs. 3.8 Flash Cyber
Peluncuran ini mencakup 2 varian, dan hanya 1 yang memiliki ID model yang bisa Anda ketik.
- Gemini 3.8 Flash adalah model umum, tersedia di Google AI Studio dan Gemini API saat ini.
- Gemini 3.8 Flash Cyber adalah varian keamanan siber yang disetel untuk penemuan kerentanan dan patching otomatis.
Varian Cyber tidak tersedia di API publik: akses melalui Fairwind Program Google, yang dibatasi untuk otoritas pemerintah yang disetujui, operator infrastruktur kritis, dan pemelihara perangkat lunak.
Jika Anda mengikuti tutorial ini, ID model Anda adalah gemini-3.8-flash. Tidak ada bagian di bawah yang membutuhkan atau menggunakan varian Cyber.
Interactions API vs. generateContent
Untuk memanggil Gemini 3.8 Flash, gunakan client.interactions.create() di SDK google-genai. Google menjadikan Interactions API GA pada Juni 2026 dan merekomendasikannya untuk semua pekerjaan baru. Meski generateContent masih berfungsi, itu kini bersifat legacy. Fitur baru seperti riwayat sisi server, eksekusi latar belakang, dan langkah eksekusi yang dapat diamati hadir lebih dulu di Interactions.
Perubahan terbesar dalam praktik adalah manajemen status. Panggilan multi-giliran kini menggunakan previous_interaction_id di sisi server: Anda mengoper ID interaksi terakhir, dan server menangani pemulihan status. Anda tidak lagi perlu menambahkan atau mengirim ulang seluruh riwayat percakapan secara manual dari klien. Hindari juga mem-prefill giliran model; itu pola legacy generateContent dan akan gagal di Gemini 3.x.
Satu hal yang sering menjebak, dan akan muncul lagi di bagian PDF: previous_interaction_id hanya memulihkan riwayat percakapan dan tidak lain. tools, system_instruction, generation_config, dan response_format bersifat ruang lingkup interaksi, jadi setiap giliran yang membutuhkannya harus mengoper lagi.
thinking_level menggantikan tombol sampling
Pada model Gemini lama, pengembang menggunakan temperature, top_p, dan top_k untuk mengontrol keacakan output. Gemini 3.x menghapus tombol sampling ini dan menggantinya dengan thinking_level, yang kini menjadi satu-satunya pengatur.
Parameter ini menerima 3 nilai:
-
low: token penalaran paling sedikit, tercepat dan termurah. Cocok untuk ekstraksi, klasifikasi, dan apa pun yang akan Anda cek sendiri. -
medium: default, dan rekomendasi Google untuk kode dan pekerjaan agen. -
high: anggaran penalaran terbesar, untuk logika multilangkah yang sulit dan tugas yang berat alat.
Jangan kirim minimal. Nilai ini tidak valid sejak Gemini Flash 3.7 dan mengembalikan error validasi 400.
Aturan lain yang berlanjut dari 3.7: frequency_penalty, presence_penalty, dan candidate_count kini memunculkan error API aktif, jadi hapus juga dari konfigurasi lama.
Bagaimana Menyiapkan API Gemini 3.8 Flash?
Menyiapkan lingkungan Anda memakan waktu sekitar 2 menit. Anda memerlukan kunci API dari Google AI Studio dan pustaka Python google-genai yang diperbarui.
Dapatkan kunci API dari Google AI Studio
Kunjungi Google AI Studio di perangkat peramban Anda dan masuk dengan akun Google Anda. Klik Create API Key, pilih atau buat proyek Google Cloud, dan salin string kunci rahasia Anda.

Buka terminal Anda dan simpan kunci tersebut sebagai variabel lingkungan dengan export GEMINI_API_KEY=<your-key>.
Jangan pernah mengoper kunci sebagai parameter kueri ?key= dalam URL; string kueri berakhir di log server, riwayat peramban, dan cache proxy. Jika Anda ingin menjelajahi model di playground sebelum menulis kode, Tutorial Google AI Studio membahas mode Chat, Build, dan Stream; artikel ini tetap pada API.
Untuk sistem produksi, cerita autentikasi berubah: Vertex AI (kini bagian dari Gemini Enterprise Agent Platform) memberi Anda OAuth, peran IAM, dan endpoint regional alih-alih kunci API mentah. Semua di tutorial ini menggunakan kunci AI Studio karena itu jalur tercepat untuk belajar, tetapi rencanakan migrasi Vertex sebelum apa pun menyentuh data pengguna nyata.
Instal google-genai dan buat klien
Banyak tutorial masih menyarankan menginstal google-generativeai. Itu SDK lama, dan tidak memiliki Interactions API. Instal google-genai (versi 2.3.0 atau lebih baru):
pip install -U google-genai
Setelah terpasang, verifikasi bahwa Python memuat pustaka dan menginisialisasi klien Anda tanpa error:
from google import genai # reads GEMINI_API_KEY from the environment
client = genai.Client()
print("Client initialized successfully.")
Lakukan panggilan Interactions API pertama Anda
Setiap permintaan ke Interactions API membuat resource Interaction, yang merekam giliran penuh: input Anda, pemikiran model, panggilan alat apa pun, dan output akhir. SDK mengekspos teks akhir melalui properti kemudahan output_text, jadi Anda jarang perlu menelusuri langkah-langkah secara manual.
from google import genai
client = genai.Client()
interaction = client.interactions.create(
model="gemini-3.8-flash",
input=(
"Write a pandas one-liner that adds a 7-day rolling average "
"revenue column per store_id to a DataFrame with columns "
"date, store_id, revenue. Reply with only the code, no explanation."
),
generation_config={"thinking_level": "medium"},
)
print(interaction.output_text)
usage = interaction.usage
print(
f"input={usage.total_input_tokens} | output={usage.total_output_tokens} | "
f"thinking={usage.total_thought_tokens} | total={usage.total_tokens}"
)
Di mesin saya, model menjawab dengan satu baris pandas berantai, dan baris penggunaan ini:

Angka-angka tersebut menyembunyikan perbedaan nyata pertama dari 3.7. Saya menjalankan tugas yang sama lagi dengan prompt lebih panjang dan tanpa pembatasan output, dan 3.8 menghabiskan 1.436 token pemikiran melawan 870 token output. Dengan pembatasan, ia menghabiskan 1.515 melawan 42. Anggaran penalaran hampir tidak bergerak, yang berlawanan dengan 3.7, di mana 2 prompt yang sama mengayunkan pemikiran dari 838 ke 1.530.
Dengan kata lain, 3.8 memutuskan seberapa keras untuk berpikir berdasarkan tugasnya, bukan bagaimana Anda merumuskannya, yang sesuai dengan klaim Google bahwa model secara sengaja bernalar dan memverifikasi lebih banyak. Token penalaran ditagih pada tarif output, jadi pada panggilan yang dibatasi, sekitar 97% token yang ditagih adalah penalaran yang tidak pernah saya lihat. Itulah alasan bagian berikutnya ada.
Stream respons
Untuk antarmuka chat atau apa pun yang dilihat orang, menunggu beberapa detik untuk respons penuh terasa lambat. Oper stream=True ke client.interactions.create() dan cetak potongan saat tiba:
from google import genai
client = genai.Client()
stream = client.interactions.create(
model="gemini-3.8-flash",
input="Explain the difference between a JOIN and a correlated subquery in SQL.",
generation_config={"thinking_level": "low"},
stream=True,
)
for event in stream:
if event.event_type == "step.delta" and event.delta.type == "text":
print(event.delta.text, end="", flush=True)
print()
Saat saya menjalankannya, model mengembalikan jawaban panjang yang tertata rapi pada thinking_level: "low": perbandingan konseptual, tabel ringkasan, dan 2 contoh SQL untuk menemukan pesanan terbaru tiap pelanggan, 1 dengan derived-table join dan 1 dengan subkueri berkorelasi di daftar SELECT. Kata-kata pertama muncul hampir seketika, itulah intinya.
Pemanggilan print() terakhir itu ada alasannya. Tanpanya, potongan terakhir berakhir di tengah baris, dan zsh menampilkan tanda % nyasar sebelum prompt Anda, karena stream berhenti persis di tempat teks model berhenti. Juga, delta membawa teks hanya jika Anda mencatat jumlah token per permintaan, bacalah dari event penyelesaian akhir alih-alih menjumlahkan potongan.
Bagaimana thinking_level Mengubah Biaya dan Kualitas?
thinking_level menentukan seberapa banyak penalaran yang dilakukan Gemini 3.8 Flash sebelum menulis jawaban. Token penalaran ditagih pada tarif output $3,75 per 1M, jadi level yang Anda pilih secara langsung mengontrol biaya dan latensi, dan Google mengatakan 3.8 memang sengaja memanfaatkan ini: ia mengambil langkah penalaran ekstra pada tugas kompleks dan mungkin menghabiskan lebih banyak token pada tingkat upaya lebih tinggi daripada 3.7.
Jalankan satu prompt pada level low, medium, dan high
Tesnya adalah kondisi race pada fungsi pembayaran-ulang yang dikirim dengan prompt yang sama di ketiga level. Bug konkurensi menghukum baca-sepintas, jadi jika level berbeda, di sinilah itu akan terlihat. Jika Anda hanya menjalankan 1 blok kode dari artikel ini, jalankan yang ini, karena angka-angka berbicara lebih baik daripada prosa apa pun.
import time
from google import genai
client = genai.Client()
BUGGY_CODE = '''
import threading
payment_attempts = {}
def retry_payment(order_id, charge_fn, max_retries=3):
"""Retry a failed payment up to max_retries times."""
if order_id not in payment_attempts:
payment_attempts[order_id] = 0
while payment_attempts[order_id] < max_retries:
success = charge_fn(order_id)
if success:
del payment_attempts[order_id]
return True
payment_attempts[order_id] += 1
return False
'''
PROMPT = (
"Two worker threads can call retry_payment() with the same order_id "
"at the same time. Identify the concurrency bug that can double-charge "
"a customer, and rewrite the function to fix it.\n\n" + BUGGY_CODE
)
for level in ["low", "medium", "high"]:
start = time.perf_counter()
interaction = client.interactions.create(
model="gemini-3.8-flash",
input=PROMPT,
generation_config={"thinking_level": level},
)
elapsed = time.perf_counter() - start
usage = interaction.usage
print(f"\n=== thinking_level: {level} | {elapsed:.1f}s ===")
print(interaction.output_text)
print(
f"input={usage.total_input_tokens} | output={usage.total_output_tokens} | "
f"thinking={usage.total_thought_tokens}"
)
Sebagai konteks, kerentanannya adalah non-atomic check-then-act pada payment_attempts[order_id]. Dalam konkurensi, 2 thread dapat sama-sama melewati kondisi while, dan sama-sama memanggil charge_fn() sebelum salah satunya menambah penghitung. Perbaikannya berarti membungkus alur baca-cek-kenakan-tingkatkan dalam lock per-order, atau menggunakan kunci idempoten di gateway.
Membandingkan hasil
Hasil dari run saya:
|
|
Race tertangkap? |
Perbaikan benar? |
Desain perbaikan |
Latensi |
Token penalaran |
Token output |
Biaya |
|
|
Ya |
Ya |
Lock per-order + himpunan completed |
7,8 dtk |
0 |
791 |
$0,0031 |
|
|
Ya |
Ya |
Lock per-order + dict status per-order |
16,6 dtk |
3.158 |
627 |
$0,0143 |
|
|
Ya |
Ya |
Rekaman per-order (lock, attempts, completed) dengan jalur gagal terdokumentasi |
25,5 dtk |
4.512 |
896 |
$0,0204 |
Semua 3 level menemukan double-charge, dan ketiganya menerapkan locking per-order, sehingga pesanan yang tidak terkait berjalan paralel. Bagian kedua ini adalah sorotan jika Anda membandingkan ini di 3.7: di sana, low membungkus semuanya dalam 1 global lock yang dipegang selama panggilan jaringan, dan lock per-order baru muncul di medium. Pada 3.8, low menulis desain yang lebih baik itu pada 0 token penalaran, dalam 7,8 detik, kurang dari sepertiga sen.
Jadi apa yang dibeli level sekarang? Kedalaman audit. Kode ini memiliki 4 mode kegagalan berbeda (double-charge, KeyError pada delete bersamaan, penagihan ulang setelah jalur sukses menghapus status, dan increment penghitung yang non-atomik), dan high adalah satu-satunya level yang menyebut keempatnya; low melewatkan kasus penagihan ulang, dan medium melewatkan penghitung.
high juga satu-satunya yang merinci semantik jalur gagal dari perbaikannya: setelah upaya habis, pemanggil berikutnya mendapatkan False alih-alih menagih lagi.
Kolom thinking adalah klaim "3.8 bekerja lebih keras" dari Google yang muncul di terminal. Terhadap prompt yang sama pada 3.7, medium naik dari 2.343 token penalaran menjadi 3.158, dan high dari 2.217 menjadi 4.512, kira-kira dua kali lipat, dan token ekstra itu menghasilkan analisis yang lebih lengkap alih-alih putusan yang berbeda. Latensi naik seiring pada run ini (7,8 dtk, 16,6 dtk, 25,5 dtk), tetapi waktu sekali jalan pada model-model ini bisa bervariasi, jadi bandingkan jumlah token alih-alih detik.
Pilih default dan kapan meningkatkan level
Ini aturan praktis saya untuk level penalaran:
-
Pada 3.8,
lowmendapat peran lebih besar daripada default medium versi Google: level ini menghasilkan perbaikan yang benar dan berdesain baik pada 0 token penalaran, jadi mulailah dari sini untuk apa pun yang dibaca manusia sebelum menjadi penting (triase, draf, ringkasan, kode yang akan Anda review). -
Pertahankan
mediumdi mana output dikirim tanpa dibaca, karena pemikiran ekstra membawa analisis mode kegagalan yang lebih lengkap, dan pipeline tanpa pembaca adalah tempat tepat di mana mode kegagalan yang tidak Anda cantumkan yang akan terjadi. -
Cadangkan
highuntuk output di mana jalur gagal itu sendiri adalah produknya, seperti alur pembayaran, migrasi, atau apa pun yang akan diaudit peninjau baris demi baris. Pada run saya, ini satu-satunya level yang menangkap keempat bug dan mendokumentasikan apa yang terjadi setelah upaya habis.
Dengan biaya 6.6x dari low untuk high, pertukaran itu terasa sangat berbeda pada $3,75 per 1M token output sekarang dibanding $7,50 setelah 31 Desember 2026, jadi tingkatkan per permintaan, bukan secara global.
Satu celah yang patut diketahui adalah Google menyatakan 3.7 Flash tetap sepenuhnya didukung untuk beban kerja yang mengutamakan efisiensi. Jika ketelitian ekstra 3.8 berbiaya lebih tinggi daripada yang dibutuhkan tugas Anda, tetap pada gemini-3.7-flash untuk beban kerja tersebut adalah pilihan yang didukung, bukan akal-akalan.
Bagaimana Mengekstrak Data Terstruktur dari PDF?
Gemini 3.8 Flash membaca PDF langsung sebagai input, jadi Anda dapat mengirim faktur atau laporan dan mengajukan pertanyaan tentangnya. Saya menggunakan faktur vendor 1 halaman dengan nomor faktur, tanggal, 4 item baris, dan total.
Lampirkan PDF ke prompt
Mari unggah PDF faktur lokal menggunakan Files API. Files API menangani penyimpanan dan caching file pada infrastruktur Google:
from google import genai
client = genai.Client()
print("Uploading invoice...")
doc = client.files.upload(file="invoice_aug_2026.pdf")
print(f"File uploaded: {doc.uri}\n")
interaction = client.interactions.create(
model="gemini-3.8-flash",
input=[
{
"type": "text",
"text": "Extract the invoice number, total amount due, and due date.",
},
{"type": "document", "uri": doc.uri, "mime_type": doc.mime_type},
],
)
print(interaction.output_text)
Output dari faktur saya:

Ketiga nilai benar. Unggah terjadi sekali, dan file tetap tersedia untuk permintaan berikutnya, yang penting saat Anda mengajukan lebih dari 1 pertanyaan tentang dokumen yang sama. Jawaban kembali sebagai bullet markdown, yang baik untuk dibaca namun tidak ideal untuk dimasukkan ke pipeline.
Paksa JSON dengan skema respons
Untuk mendapatkan JSON alih-alih prosa, oper skema di response_format. Pada Interactions API, ini adalah parameter tingkat atas; pengaturan responseMimeType di dalam generationConfig yang akan Anda lihat di tutorial lama adalah milik endpoint legacy generateContent.
import json
from google import genai
from pydantic import BaseModel
client = genai.Client()
class Invoice(BaseModel):
invoice_number: str
total_due_usd: float
due_date: str # ISO 8601
doc = client.files.upload(file="invoice_aug_2026.pdf")
interaction = client.interactions.create(
model="gemini-3.8-flash",
input=[
{
"type": "text",
"text": "Extract the invoice number, total amount due in USD, and due date.",
},
{"type": "document", "uri": doc.uri, "mime_type": doc.mime_type},
],
response_format={
"type": "text",
"mime_type": "application/json",
"schema": Invoice.model_json_schema(),
},
)
invoice = json.loads(interaction.output_text)
print(invoice)
Ini output yang saya terima:

Kelas Pydantic Anda mendefinisikan field wajib dan tipe data, sementara model_json_schema() menghasilkan skema JSON yang diperlukan oleh Gemini API. Setelah diproses, json.loads() mengonversi output model menjadi dictionary Python standar. Mulai titik ini, data terstruktur siap diubah menjadi baris DataFrame, dikomit ke database, atau ditambahkan ke Google Sheet.
Ajukan pertanyaan lanjutan dengan previous_interaction_id
Untuk pertanyaan ke-2 tentang dokumen yang sama, oper id interaksi pertama sebagai previous_interaction_id. Server sudah memiliki PDF dan percakapan pertama, jadi Anda tidak mengirim keduanya lagi:
follow_up = client.interactions.create(
model="gemini-3.8-flash",
previous_interaction_id=interaction.id,
input="List each line item on the invoice with its amount.",
)
print(follow_up.output_text)

Ia mengembalikan semua 4 item berurutan, termasuk baris compute yang berulang, tanpa mengomentari pengulangan. Itu perilaku yang tepat untuk pertanyaan yang diajukan; jika Anda ingin menandai anomali, minta secara eksplisit.
Sebagai catatan, 3.7 berperilaku identik di sini, jadi ketelitian ekstra 3.8 berlaku pada penalarannya sendiri, bukan untuk menawarkan audit yang tidak Anda minta.
Ada 2 hal yang perlu diketahui tentang panggilan ini:
-
response_formattidak terbawa, karena ruang lingkupnya interaksi, jadi giliran ini mengembalikan prosa. -
Dan interaksi disimpan secara default (
store=True) selama 55 hari pada tier berbayar dan 1 hari pada tier gratis;store=Falsemembuat panggilan tanpa status, tetapi Anda kemudian tidak dapat merangkaikanprevious_interaction_iddarinya.
Bagaimana Menambahkan Function Calling ke Gemini 3.8 Flash?
Function calling pada Gemini 3.8 Flash adalah satu loop, di mana model meminta alat, kode Anda menjalankannya, Anda mengirimkan hasilnya kembali, dan model menulis jawaban akhir. Bagian ini membangun loop itu secara manual.
Jika Anda ingin Google menjalankan loop untuk Anda dengan agen multi-alat terkelola, baca tutorial kami tentang "Managed Agents" di Gemini API berikutnya. Dan jika tujuan jangka panjang Anda adalah agen, kursus Building AI Agents with Google ADK membangun asisten dukungan pelanggan lengkap di atas primitive yang sama.
Definisikan alat dan jalankan loop interaksi
Alatnya adalah lookup_exchange_rate(currency, date), didukung oleh dict kecil dalam memori, sehingga contoh berjalan tanpa API eksternal. Deklarasinya adalah skema JSON. Model tidak pernah menjalankan fungsinya; ia mengembalikan langkah function_call yang meminta kode Anda untuk:
import json
from google import genai
client = genai.Client()
# Local "data source" standing in for a real FX API
RATES = {
("USD", "2026-08-03"): 87.42,
("USD", "2026-08-10"): 87.15,
("EUR", "2026-08-03"): 95.08,
}
def lookup_exchange_rate(currency: str, date: str) -> dict:
rate = RATES.get((currency.upper(), date))
if rate is None:
return {"error": f"No rate for {currency} on {date}"}
return {"currency": currency.upper(), "date": date, "inr_rate": rate}
rate_tool = {
"type": "function",
"name": "lookup_exchange_rate",
"description": "Look up the INR exchange rate for a currency on a date (YYYY-MM-DD).",
"parameters": {
"type": "object",
"properties": {
"currency": {"type": "string", "description": "ISO code, e.g. USD"},
"date": {"type": "string", "description": "YYYY-MM-DD"},
},
"required": ["currency", "date"],
},
}
# Turn 1: the model decides to call the tool
interaction = client.interactions.create(
model="gemini-3.8-flash",
input="What was the USD to INR exchange rate on 2026-08-03?",
tools=[rate_tool],
)
fc_step = next(s for s in interaction.steps if s.type == "function_call")
print(f"Model requested: {fc_step.name}({fc_step.arguments})")
# Your code executes the function locally
result = lookup_exchange_rate(**fc_step.arguments)
# Turn 2: send the result back; tools must be re-specified (interaction-scoped)
final = client.interactions.create(
model="gemini-3.8-flash",
previous_interaction_id=interaction.id,
input=[
{
"type": "function_result",
"name": fc_step.name,
"call_id": fc_step.id,
"result": [{"type": "text", "text": json.dumps(result)}],
}
],
tools=[rate_tool],
)
print(final.output_text)
Outputnya:

Terjadi 3 hal di sini:
-
Giliran 1 mengembalikan langkah
function_calldengan nama, argumen terstruktur, dan sebuahid. -
Python Anda menjalankan lookup.
-
Giliran 2 mengirim blok
function_resultyang mereferensikan panggilan tersebut.
Parameter tools dioper lagi pada giliran 2 dengan alasan yang sama seperti response_format harus dioper ulang di bagian PDF: previous_interaction_id membawa riwayat, bukan konfigurasi.
Kesalahan function-calling pada Gemini 3.x
Jika loop alat rusak, hampir selalu salah satu dari 2 hal.
Pertama, setiap hasil harus dipetakan kembali ke panggilannya. Pada Interactions API, itu adalah call_id dan name pada blok function_result; pada API legacy generateContent, FunctionResponse harus cocok dengan id dan name dari FunctionCall sebelumnya. Keduanya tidak opsional pada Gemini 3.x.
Kedua, error Malformed_Function_Call biasanya terjadi ketika model mengeluarkan komentar sebelum panggilan alat. Panduan pengembang 3.8 Google mengatakan untuk membersihkan teks pra-alat, format instruksi inline dengan \n\n, dan bungkus catatan kerja dalam panggilan fungsi khusus alih-alih teks mentah. Perketat system instruction; jangan sekadar retry membabi buta.
Apa yang Rusak Saat Beralih ke Gemini 3.8 Flash?
Itu tergantung dari mana Anda memulai.
-
Dari Gemini 3.7 Flash: tidak ada. Ubah string model ke
gemini-3.8-flash, dan setiap cuplikan di artikel ini berjalan tanpa modifikasi, karena permukaan API identik. -
Dari Gemini 3.6 Flash atau sebelumnya, konfigurasi model memerlukan audit 15 menit yang sama seperti sebelumnya.
Daftar periksa migrasi (dari 3.6 Flash atau sebelumnya)
Kerjakan ini berurutan. Butir 1 sampai 3 menyebabkan 400 langsung; butir 4 dan 5 menyebabkan masalah kualitas yang sunyi.
-
Ubah ID model ke
gemini-3.8-flash. -
Hapus parameter sampling yang sudah mati:
temperature,top_p, dantop_kdiabaikan atau ditolak pada Gemini 3.x, danfrequency_penalty,presence_penalty, dancandidate_countmemunculkan error API aktif. Hapus keenamnya dari konfigurasi lama. -
Ganti
thinking_budgetdenganthinking_level: gunakan hanyalow,medium, atauhigh. Nilai minimal lama mengembalikan error validasi. Mengirimthinking_budgetdanthinking_levelsekaligus dalam satu permintaan mengembalikan 400. -
Hapus giliran model yang dipraisi: singkirkan ini dari percakapan yang Anda bangun, dan pastikan giliran pengguna terakhir memiliki teks tidak kosong. Payload riwayat tidak boleh diakhiri dengan giliran model.
-
Standarkan alur multi-giliran: andalkan
previous_interaction_idalih-alih pemutaran ulang riwayat sisi klien. Anda harus menyebutkan lagi tools,system_instruction, dangeneration_configpada setiap giliran saat itu penting.
Google menerbitkan versi otoritatif di dokumentasi model Gemini API, termasuk jalur otomatis jika agen coding Anda mendukung skills. Tetap bacalah sendiri sekali; migrasi otomatis tidak akan memberi tahu Anda mengapa temperature=0.2 ada sejak awal.
Error yang akan Anda temui di produksi
Berikut 4 kode status yang layak Anda tangani, dan apa arti masing-masing pada API ini:
|
Status |
Penyebab tipikal |
Apa yang harus dilakukan |
|
|
Field legacy tersisa: |
Perbaiki permintaan; retry tidak ada gunanya |
|
|
|
Ekspor ulang kunci; periksa apakah disetel, tidak dibatasi untuk API ini, dan tidak dikomit ke git |
|
|
Batas laju pada tier Anda, sering muncul saat pekerjaan ekstraksi batch |
Retry dengan exponential backoff dan jitter; pertimbangkan menyebarkan beban |
|
|
Beban sementara di sisi Google |
Backoff berjitter yang sama; beri peringatan hanya jika berlanjut lebih dari beberapa menit |
Ada 2 hal lagi di sini:
-
Atur timeout klien secara eksplisit saat menggabungkan
thinking_level: "high"dengan loop alat yang panjang, karena permintaan yang menggantung lebih buruk daripada yang gagal, dan ketelitian ekstra 3.8 membuat run penalaran panjang lebih mungkin, bukan kurang. -
Dan catat
interaction.idpada setiap permintaan; itu pegangan Anda untuk mengambil, men-debug, atau menghapus interaksi yang disimpan nanti.
Penutup
Semua dalam artikel ini bermuara pada 3 pergeseran. Interactions API mengubah konvensi pemanggilan, thinking_level menggantikan semua tombol sampling yang dulu Anda atur, dan status sisi server melalui previous_interaction_id adalah yang membuat tindak lanjut PDF dan loop alat menjadi giliran satu-baris alih-alih latihan pemutaran riwayat. Gemini 3.8 Flash tidak mengubah permukaan itu; yang berubah adalah seberapa keras model bekerja di dalamnya, itulah mengapa pengukuran di artikel ini diambil baru pada 3.8 alih-alih dibawa dari 3.7.
Sebelum Anda menerima rekomendasi level saya mentah-mentah, arahkan skrip perbandingan ke tugas dari backlog Anda sendiri; level yang menang pada race pembayaran-ulang mungkin kalah pada beban kerja pembuatan SQL Anda.
Saat satu panggilan API tidak lagi cukup, dan Anda menginginkan sistem AI produksi, trek Associate AI Engineer for Developers kami mencakup jalur penuh, dan trek Associate AI Engineer for Data Scientists melakukan hal yang sama dari sisi data.
FAQs
Paket Python mana yang saya instal untuk Gemini 3.8 Flash?
Instal google-genai menggunakan pip (pip install -U google-genai). Pustaka google-generativeai yang lebih lama bersifat legacy dan gagal saat Anda mengoper argumen konfigurasi Gemini 3.x.
Apakah Gemini 3.8 Flash mendukung temperature, top_p, atau top_k?
Tidak. Parameter sampling sudah tidak berlaku pada Gemini 3.x, dan 3.8 juga menimbulkan error API aktif untuk frequency_penalty, presence_penalty, dan candidate_count. Anda mengontrol perilaku output dengan thinking_level sebagai gantinya.
Nilai thinking_level apa yang diterima Gemini 3.8 Flash?
Menerima low, medium (default), dan high. Nilai minimal tidak valid dan mengembalikan error validasi API.
Bagaimana Google menagihkan token penalaran pada Gemini 3.8 Flash?
Google menghitung token penalaran sebagai token output standar sebesar $3,75 per 1M token selama periode harga perkenalan, yang berakhir 31 Desember 2026. Google juga mencatat bahwa 3.8 mungkin menghabiskan lebih banyak token penalaran pada tingkat upaya lebih tinggi, sehingga Anda membayar siklus verifikasi ekstra.
Apa itu Gemini 3.8 Flash Cyber, dan bisakah saya menggunakannya?
Ini adalah varian keamanan siber yang disetel untuk penemuan kerentanan dan patching otomatis. Tidak tersedia di API publik; akses dibatasi untuk pihak pembela yang disetujui melalui Fairwind Program Google. Pengembang umum menggunakan gemini-3.8-flash.
Saya menulis dan berkarya di internet. Google Developer Expert untuk Google Workspace, lulusan Ilmu Komputer dari NMIMS, serta pembangun yang antusias di bidang otomasi dan Kecerdasan Buatan Generatif.

