Gemini 3.8 Flash diluncurkan pada 2 September 2026, dan Google membangunnya untuk "memanggil alat secara iteratif": pada tugas yang sulit, ia melakukan panggilan, memeriksa hasilnya, dan melakukan panggilan lain, alih-alih menebak semuanya dalam sekali coba. Ini adalah kabar baik bagi agen dan masalah baru bagi siapa pun yang loop alatnya disetel untuk 3.7 Flash. Dua detail API lebih penting dari yang lainnya. Setiap hasil fungsi harus membawa call_id dan name, dan Interactions API, bukan generateContent, kini menjadi cara utama untuk menjalankan loop.
Panduan ini membahas alur dua putaran penuh pada Interactions API, menunjukkan bentuk generateContent lama yang mungkin masih Anda jalankan, menjelaskan mengapa model baru menghabiskan lebih banyak putaran dan token untuk alat, dan diakhiri dengan pengaturan pengujian yang dapat Anda jalankan setiap hari: membuat mock backend alat, merangkai kedua putaran, dan memastikan call_id bolak-balik. Jika Anda memerlukan gambaran umum model terlebih dahulu, mulailah dengan apa itu Gemini 3.8 Flash. Nama-nama kolom di bawah ini berasal dari dokumen pemanggilan fungsi Google.
Setiap permintaan di sini adalah HTTP biasa dengan JSON, sehingga Anda dapat membangun dan men-debugnya di Apidog sebelum masuk ke kode aplikasi.
Pemanggilan fungsi di Gemini 3.8 Flash sekilas
| Item | Gemini 3.8 Flash |
|---|---|
| ID Model | gemini-3.8-flash (stabil, tanpa sufiks pratinjau) |
| API Utama | Interactions API (POST /v1beta/interactions); generateContent adalah warisan tetapi didukung sepenuhnya |
| Deklarasi Alat | tools: [{"type": "function", "name", "description", "parameters"}] |
| Panggilan Model | Langkah function_call dengan id, name, arguments |
| Balasan Anda | function_result dengan call_id + name (keduanya wajib) ditambah previous_interaction_id |
| Pemikiran | thinking_level rendah / sedang (default) / tinggi; minimal mengembalikan kesalahan validasi |
| Skor Penggunaan Alat | Tau3-Banking 45%, +12 poin di atas 3.7 Flash (Artificial Analysis, independen) |
| Biaya Token | ~48 ribu token keluaran per tugas pada indeks AA, +30% vs 3.7 Flash |
| Harga | $0.75 masuk / $3.75 keluar per 1 juta hingga 31-12-2026; pemikiran ditagih sebagai keluaran |
Langkah 1: mendeklarasikan alat
Pada Interactions API, alat adalah objek datar: sebuah type function, sebuah name, sebuah description yang dibaca model untuk memutuskan kapan akan memanggilnya, dan Skema JSON di bawah parameters. Jaga agar deskripsi tetap spesifik. "Cari status pengiriman pesanan saat ini berdasarkan ID-nya" dipanggil pada saat yang tepat; "pembantu pesanan" dipanggil secara acak.
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3.8-flash",
"input": "Where is order A1029 right now?",
"generation_config": {"thinking_level": "low"},
"tools": [{
"type": "function",
"name": "get_order_status",
"description": "Look up the current shipping status of an order by its ID.",
"parameters": {
"type": "object",
"properties": {"order_id": {"type": "string"}},
"required": ["order_id"]
}
}]
}'
Dua pilihan dalam permintaan ini disengaja. thinking_level adalah low karena pencarian tunggal tidak memerlukan medium default; panduan tingkat pemikiran mencakup kapan harus meningkatkannya. Dan tidak ada temperature. Panduan Gemini 3 dari Google adalah membiarkannya pada default 1.0, karena menurunkannya dapat menyebabkan pengulangan (looping), yang merupakan hal terakhir yang Anda inginkan di dalam loop alat.
Langkah 2: membaca langkah function_call
Interactions API tidak merespons dengan satu pesan. Ia mengembalikan id interaksi itu sendiri ditambah daftar langkah eksekusi: pemikiran model, panggilan alat, dan akhirnya langkah model_output setelah model memiliki jawaban. Ketika model memutuskan bahwa ia membutuhkan alat Anda, daftar tersebut berisi langkah function_call alih-alih model_output:
{
"type": "function_call",
"id": "call_8f2d...",
"name": "get_order_status",
"arguments": {"order_id": "A1029"}
}
Tiga kolom, dan Anda membutuhkan ketiganya. id adalah pegangan yang Anda kirim kembali sebagai call_id. name memberi tahu Anda fungsi mana yang harus dijalankan dan juga harus digemakan kembali. arguments sudah JSON yang di-parsing, jadi validasi terhadap aturan Anda sendiri sebelum Anda menjalankan apa pun; model mengisi bentuk yang Anda deklarasikan, tetapi tidak tahu bahwa ID pesanan Anda memiliki panjang lima karakter.
Simpan id interaksi dari bagian atas respons secara bersamaan. Itu menjadi previous_interaction_id pada giliran berikutnya.
Langkah 3: mengembalikan hasil dengan call_id dan name
Jalankan fungsi Anda, lalu kirim permintaan kedua yang input-nya adalah function_result. Baik call_id maupun name wajib pada Gemini 3.8 Flash. Hilangkan salah satunya dan panggilan akan gagal, yang merupakan kerusakan paling umum ketika tim memindahkan loop yang ditulis untuk model lama.
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3.8-flash",
"previous_interaction_id": "<interaction id from step 2>",
"input": [{
"type": "function_result",
"name": "get_order_status",
"call_id": "call_8f2d...",
"result": [{"type": "text", "text": "{\"status\":\"in_transit\",\"eta\":\"2026-09-05\"}"}]
}]
}'
result adalah daftar bagian konten, dan bagian teks membawa JSON Anda sebagai string. Karena previous_interaction_id menunjuk ke giliran sebelumnya, server sudah menyimpan prompt asli, deklarasi alat, dan alasan model; Anda tidak mengirim ulang apa pun. Responsnya adalah daftar langkah lain. Jika berakhir dengan model_output, Anda selesai, dan SDK mengekspos teks sebagai interaction.output_text. Jika berisi function_call lain, kembali ke langkah 2. Loop itulah seluruh polanya.
Dalam Python, alurnya adalah client.interactions.create(model="gemini-3.8-flash", input=..., ...) dengan kolom JSON yang sama seperti argumen kata kunci, lalu create kedua dengan previous_interaction_id dan daftar function_result sebagai input. Cara menggunakan API Gemini 3.8 Flash mencakup kunci, streaming, dan membaca penggunaan token jika endpoint baru bagi Anda.
Ekivalen generateContent lama
Sebagian besar kode Gemini yang ada masih memanggil models/gemini-3.8-flash:generateContent, dan Google mengatakan bahwa itu "tetap didukung sepenuhnya" tanpa tanggal penghentian. Kosakata yang berbeda; aturannya sama. Alat dideklarasikan di bawah functionDeclarations, model merespons dengan bagian functionCall, dan Anda menjawab dengan bagian functionResponse. Pada bentuk lama, bagian functionCall model membawa id, dan bagian functionResponse Anda harus menggemakan nilai yang sama di kolom id-nya sendiri di samping name dan response. Ini adalah kontrak yang sama dengan call_id pada Interactions API di bawah nama kolom yang berbeda, dan panduan Gemini 3 Google secara eksplisit menyatakan bahwa baik id maupun name diperlukan.
Dua perbedaan praktis. Pertama, generateContent tanpa status, jadi Anda membawa percakapan itu sendiri: seluruh riwayat contents kembali pada setiap giliran, termasuk bagian functionCall model dan tanda tangan pemikiran apa pun yang dikembalikannya. Kedua, pemikiran dikonfigurasi di bawah generationConfig.thinkingConfig.thinkingLevel alih-alih generation_config.thinking_level:
{"generationConfig": {"thinkingConfig": {"thinkingLevel": "low"}}}
Token pemikiran muncul sebagai usageMetadata.thoughtsTokenCount dalam respons dan ditagih sebagai keluaran. Jika Anda memilih antara dua API untuk proyek baru, pilih Interactions: status sisi server menghilangkan kelas bug di mana riwayat yang dikirim ulang kehilangan tanda tangan atau call_id.
Mengapa 3.8 Flash memanggil alat secara iteratif, dan cara membatasi loop
Posting peluncuran Google mengatakan model "bekerja lebih keras": pada tugas yang kompleks ia "menjalankan langkah-langkah penalaran tambahan, dan memanggil alat secara iteratif", mengambil "langkah-langkah penalaran yang lebih kecil" dan memverifikasi pekerjaannya di sepanjang jalan. Google juga mengatakan bahwa "dapat menggunakan lebih banyak token pada tugas yang berjalan lebih lama dan kompleks, sesuai desain". Artificial Analysis mengukur efeknya: sekitar 48 ribu token keluaran per tugas pada indeks mereka, +30% dibandingkan 3.7 Flash, dan biaya per tugas sebesar $0.58 pada high dibandingkan $0.40 untuk 3.7 Flash pada harga per token yang sama. Sedang mencapai $0.41 dan rendah $0.24.
Untuk loop alat, ini berarti lebih banyak langkah function_call per tugas. Keuntungannya nyata: Tau3-Banking, evaluasi penggunaan alat AA, naik 12 poin menjadi 45%. Kerugiannya adalah loop tanpa batas sekarang berjalan lebih lama daripada di bulan Agustus. Empat kontrol, dalam urutan penerapannya:
- Giliran maksimal dalam harness Anda. Hitung langkah
function_callper tugas dan berhenti pada batas yang Anda pilih; 6 hingga 10 adalah rentang awal yang masuk akal untuk pencarian, lebih tinggi untuk pengkodean agen. Ketika batas tercapai, kirim giliran terakhir tanpa alat, atau kembalikan kesalahan kepada pengguna. Model tidak akan membatasi dirinya sendiri. thinking_levelper rute.lowuntuk pencarian dan alat satu langkah,medium(default) untuk pekerjaan multi-langkah,highhanya di mana verifikasi tambahan memberikan hasil. Jangan kirimminimal; 3.8 Flash mengembalikan kesalahan validasi.- Timeout di kedua sisi. Batas waktu per permintaan pada panggilan Gemini dan jam dinding per tugas pada loop. Proses penalaran tinggi AA rata-rata 2.5 menit per tugas, 0.8 menit pada tingkat rendah.
- Alat yang idempoten. Model iteratif mencoba kembali. Buat
get_order_statusaman untuk dipanggil dua kali, dan buat apa pun yang memiliki efek samping (pengembalian dana, pengiriman) memerlukan langkah konfirmasi.
Jika anggaran Anda tidak dapat menyerap giliran ekstra, panduan migrasi 3.7 ke 3.8 Flash mencakup menjaga 3.7 Flash, yang tetap didukung penuh, di balik bendera konfigurasi.
Tanda tangan pemikiran, panggilan paralel, dan keluaran terstruktur
Tanda tangan pemikiran. Model Gemini 3 melampirkan tanda tangan pada penalaran mereka. Dengan alur Interactions yang disimpan secara default, previous_interaction_id menanganinya untuk Anda. Jika Anda mengatur store: false untuk pengaturan tanpa status, atau Anda menggunakan generateContent, Anda harus mengirim blok pemikiran dan tanda tangan kembali persis seperti yang diterima, pada setiap jenis bagian. Jangan memangkas, menyusun ulang, atau melakukan serialisasi ulang; tanda tangan adalah buram dan setiap pengeditan membatalkannya. Dokumen Interactions API Google mencakup pertukaran antara yang disimpan dan tanpa status.
Panggilan paralel. Respons adalah daftar, jadi dapat menampung lebih dari satu langkah function_call ketika model menginginkan beberapa pencarian independen sekaligus. Dokumen pemanggilan fungsi Google mengonfirmasi bahwa model Gemini 3 mengembalikan ID unik dengan setiap panggilan secara tepat agar hasilnya dapat kembali dalam urutan apa pun. Tangani ini dengan mengembalikan satu function_result per panggilan dalam array input yang sama, masing-masing dicocokkan oleh call_id-nya sendiri. Pencocokan hanya dengan name tidak cukup; dua panggilan ke fungsi yang sama memerlukan dua nilai call_id yang berbeda.
Keluaran terstruktur. 3.8 Flash mendukung keluaran terstruktur dan pemanggilan fungsi pada model yang sama. Pola yang bersih adalah alat untuk loop dan skema JSON untuk jawaban akhir, sehingga model_output yang menutup loop dapat dibaca oleh mesin alih-alih prosa. Halaman pemanggilan fungsi dan keluaran terstruktur Google mendokumentasikan konfigurasi. Jangan memalsukannya dengan mendeklarasikan alat dummy dan membaca arguments-nya; itu akan rusak saat model memutuskan tidak ada yang perlu dipanggil.
Semua di atas mengasumsikan model mencapai sistem Anda melalui fungsi yang dideklarasikan. Google juga mencantumkan Penggunaan Komputer (Pratinjau) untuk 3.8 Flash; untuk kasus ketika API terstruktur mengalahkan agen yang dikendalikan layar, lihat penggunaan komputer vs API terstruktur.
Menguji loop alat di Apidog
Loop alat memiliki tiga titik kegagalan: deklarasi, perjalanan bolak-balik ID, dan jawaban akhir. Anda dapat mencakup ketiganya di Apidog tanpa menyentuh backend Anda yang sebenarnya.
1. Mock backend alat. Definisikan GET /orders/{order_id} sebagai endpoint dan aktifkan server mock-nya. Berikan badan respons tetap, {"status": "in_transit", "eta": "2026-09-05"}, sehingga setiap eksekusi mendapatkan input yang identik dan setiap perubahan dalam jawaban akhir model adalah hasil kerja model, bukan database Anda. Harness Anda menunjuk ke URL mock di lingkungan pengujian dan ke layanan sebenarnya di produksi.
2. Rangkai kedua putaran dalam skenario pengujian. Simpan GEMINI_API_KEY sebagai variabel lingkungan dan referensikan sebagai {{GEMINI_API_KEY}} di header x-goog-api-key. Kemudian bangun skenario dengan tiga langkah:
- Langkah A: POST ke
/v1beta/interactionsdengan prompt dan deklarasiget_order_status. Ekstrakidinteraksi danidlangkahfunction_call,name, sertaarguments.order_idke dalam variabel. - Langkah B: GET endpoint mock dengan
{{order_id}}. Ini adalah langkah "jalankan fungsi" Anda. - Langkah C: POST
function_resultdengancall_iddiatur ke{{call_id}},namediatur ke{{tool_name}},previous_interaction_iddiatur ke{{interaction_id}}, dan badan Langkah B sebagai bagian teks.
3. Nyatakan apa yang penting.
- Langkah A mengembalikan 200 dan berisi langkah yang
type-nya adalahfunction_calldengannamesama denganget_order_status. arguments.order_idyang diekstrak sama denganA1029, yang membuktikan model mem-parsing prompt dan mematuhi skema.- Langkah C mengembalikan 200 dan berakhir pada langkah yang
type-nya adalahmodel_outputtanpafunction_callkedua, yang membuktikancall_iddannameyang Anda kirim diterima dan loop ditutup dalam satu putaran. - Teks akhir berisi
in_transit, yang membuktikan model menggunakan hasil alat alih-alih tebakannya sendiri. - Jika Anda menjalankan skenario yang sama terhadap
generateContent, tambahkan batas atas padausageMetadata.thoughtsTokenCountperthinking_level. Itu menangkap peningkatan biaya "bekerja lebih keras" sebelum mencapai tagihan Anda.
Jadwalkan skenario untuk berjalan setiap hari. Perilaku model bergeser melintasi pembaruan diam-diam, dan loop yang ditutup dalam satu putaran minggu lalu dapat mulai membutuhkan dua. Panduan pengujian API agen AI membahas lebih dalam tentang pernyataan multi-langkah, dan Anda dapat Mengunduh Apidog untuk membangun skenario terhadap tingkat gratis sebelum Anda mengeluarkan sepeser pun.
FAQ
Apakah call_id wajib pada Gemini 3.8 Flash? Ya. Pada Interactions API, setiap function_result membutuhkan call_id dan name; pada generateContent, setiap functionResponse membutuhkan id dan name panggilan. Kode lama yang hanya mengirimkan nama akan gagal pada model Gemini 3.
Mengapa loop alat saya berjalan lebih banyak putaran pada 3.8 Flash daripada pada 3.7? Sesuai desain. Google mengatakan model "memanggil alat secara iteratif" dan "dapat menggunakan lebih banyak token pada tugas yang berjalan lebih lama dan kompleks". Batasi putaran dalam harness Anda dan turunkan thinking_level; panduan tingkat pemikiran memiliki biaya terukur per tingkat.
Bisakah saya masih menggunakan generateContent untuk pemanggilan fungsi? Ya. Google menyebutnya lama tetapi mengatakan "tetap didukung sepenuhnya" tanpa tanggal penghentian. Anda membawa riwayat itu sendiri, termasuk tanda tangan pemikiran, dan ID panggilan (dieja id pada API ini) ditambah name masih berlaku.
Apakah thinking_level "minimal" berfungsi dengan alat? Tidak. Ini mengembalikan kesalahan validasi pada 3.8 Flash. Gunakan low.
Berapa biaya tugas yang banyak menggunakan alat? Harga per token adalah $0.75 input dan $3.75 output per 1 juta token hingga 31 Desember 2026, dengan pemikiran ditagih sebagai output. Artificial Analysis mengukur $0.58 per tugas pada high, $0.41 pada medium, dan $0.24 pada low pada indeks mereka. Tugas Anda akan berbeda, jadi pastikan jumlah token dan ukur.
Kirim loop dengan batas
Deklarasikan alat, baca langkah function_call, dan kembalikan function_result dengan call_id dan name di bawah previous_interaction_id. Itulah seluruh kontraknya. Yang berubah pada Gemini 3.8 Flash adalah kesediaan model untuk melakukan loop, sehingga harness memerlukan batasan giliran, thinking_level per rute, dan batas waktu sebelum masuk ke produksi. Mock backend, rantai dua putaran, pastikan ID bolak-balik, dan jadwalkan eksekusi. Halaman Apa yang baru di Gemini 3.8 Flash Google memiliki catatan migrasi; panduan pilar memiliki segala hal lain tentang model.
