Catatan Penulis: Analisis mendalam mengenai esensi bidang thoughtSignature dalam respons API Nano Banana 2: ini bukanlah gambar, melainkan tanda tangan pemikiran terenkripsi. Artikel ini akan mengupas tuntas struktur respons mode Thinking, cara penanganan yang benar, dan kesalahan umum yang sering terjadi.
Banyak pengembang yang saat memanggil API Nano Banana 2 untuk menghasilkan gambar, menemukan bidang thoughtSignature di dalam respons selain data gambar—bidang ini juga berupa deretan panjang kode base64 yang sekilas tampak seperti data gambar. Setelah mencoba melakukan dekode, ternyata data tersebut tidak bisa diubah menjadi gambar. Sebenarnya apa ini? Artikel ini akan menjelaskan secara tuntas esensi dari thoughtSignature, mengapa ia bukan gambar, dan bagaimana cara menanganinya dengan benar dalam percakapan multi-putaran.
Nilai Inti: Setelah membaca artikel ini, Anda akan memahami prinsip teknis thoughtSignature, menghindari kesalahan dalam memperlakukannya sebagai gambar, serta menguasai metode pengiriman tanda tangan yang tepat dalam percakapan multi-putaran.

Poin Utama thoughtSignature API Nano Banana 2
Mari kita langsung jawab pertanyaan yang paling sering muncul: thoughtSignature bukanlah gambar dan tidak bisa didekode menjadi gambar. Ini adalah tanda tangan terenkripsi dari proses berpikir model.
| Poin | Penjelasan | Catatan untuk Pengembang |
|---|---|---|
| Esensi | Data biner yang dikodekan dalam base64 sebagai tanda tangan terenkripsi | Tidak dapat didekode, diubah, atau dipalsukan |
| Konten | Snapshot status internal proses penalaran model | Sepenuhnya tidak transparan bagi pengembang |
| Kegunaan | Menjaga kesinambungan penalaran dalam percakapan multi-putaran | Harus dikirim kembali apa adanya ke permintaan berikutnya |
| Format | Terlihat seperti gambar base64, padahal bukan | Tidak memiliki magic bytes, tidak bisa dikenali sebagai format gambar apa pun |
| Kewajiban | Wajib disertakan dalam skenario pemanggilan alat (jika tidak, muncul error 400) | Bisa dilewati dalam skenario teks murni, namun akan menurunkan kualitas |
Seperti apa tampilan thoughtSignature dalam respons API Nano Banana 2?
Saat Anda memanggil Nano Banana 2 untuk membuat gambar, array parts dalam respons API mungkin berisi beberapa elemen. Struktur respons yang umum adalah seperti ini:
{
"candidates": [{
"content": {
"role": "model",
"parts": [
{
"text": "Izinkan saya berpikir tentang cara membuat gambar ini...",
"thought": true
},
{
"text": "",
"thoughtSignature": "CpcHAdHtim9+q4rstcbvQC0ic4x1/vqQlCJ..."
},
{
"inlineData": {
"mime_type": "image/png",
"data": "iVBORw0KGgoAAAANSUhEUg..."
}
}
]
}
}]
}
Ada tiga part di sini, yaitu:
- Ringkasan pemikiran (
thought: true): Ringkasan teks dari proses penalaran model. - Tanda tangan pemikiran (
thoughtSignature): Snapshot status penalaran yang terenkripsi. - Data gambar (
inlineData): Data base64 gambar yang sebenarnya.
Masalah utamanya adalah part ke-2 dan ke-3 sama-sama berisi data yang dikodekan dalam base64. Jika kode Anda tidak membedakannya dengan benar, Anda akan salah mengira thoughtSignature sebagai data gambar dan mencoba mendekodenya—lalu bingung mengapa gambar tersebut tidak pernah muncul.

Prinsip Teknis thoughtSignature pada API Nano Banana 2
Setelah memahami bahwa thoughtSignature bukanlah sebuah gambar, mari kita bedah apa sebenarnya komponen ini.
Hakikat thoughtSignature
Berdasarkan definisi resmi dari dokumentasi Google:
thoughtSignature (string, opsional): "Tanda tangan buram (opaque) untuk pemikiran agar dapat digunakan kembali dalam permintaan berikutnya. String yang dikodekan dalam base64."
Dalam bahasa yang lebih sederhana: thoughtSignature adalah "snapshot memori" dari proses berpikir model, yang dikembalikan dalam bentuk string base64 setelah melalui tanda tangan kriptografis. Fungsinya adalah agar model dapat "mengingat" proses penalaran sebelumnya dalam percakapan multi-putaran, sehingga menjaga alur pemikiran tetap koheren.
Beberapa karakteristik utama:
- Buram (Opaque): Pengembang tidak dapat membaca isinya dan tidak perlu memedulikan struktur internalnya.
- Tanda Tangan Kriptografis: Ditandatangani oleh server Google, sehingga tidak dapat dipalsukan—mengirimkan string base64 acak akan menghasilkan kesalahan "tanda tangan tidak valid".
- Stateful: Berisi rantai penalaran dan hasil perhitungan antara yang digunakan model saat menghasilkan jawaban saat ini.
Perbedaan antara thoughtSignature dan thought
Kedua kolom ini sering tertukar, padahal fungsinya sangat berbeda:
| Kolom | Tipe | Arti | Keterbacaan | Kegunaan |
|---|---|---|---|---|
| thought | boolean | Menandai apakah bagian saat ini adalah ringkasan pemikiran | Dapat dibaca (teks) | Menampilkan proses penalaran model |
| thoughtSignature | string (base64) | Snapshot status penalaran terenkripsi | Tidak dapat dibaca (ciphertext) | Meneruskan status penalaran dalam percakapan multi-putaran |
thought adalah ringkasan penalaran untuk dibaca manusia, sedangkan thoughtSignature adalah memori penalaran untuk "dibaca" oleh model.
Mengapa API Nano Banana 2 Memerlukan thoughtSignature
Nano Banana 2 termasuk dalam seri Gemini 3.1 yang mendukung mode Thinking (berpikir). Sebelum menghasilkan gambar, model akan melakukan penalaran internal—menganalisis niat petunjuk, merencanakan komposisi, memilih skema warna, dan sebagainya.
Status lengkap dari proses penalaran ini dikompresi dan dienkripsi menjadi thoughtSignature. Saat Anda melakukan pengeditan gambar dalam percakapan multi-putaran (misalnya, "ubah latar belakang menjadi biru"), model perlu memulihkan status penalaran sebelumnya agar dapat memahami niat perubahan Anda dengan akurat.
Jika Anda tidak mengirimkan kembali thoughtSignature:
- Skenario teks murni: Tidak ada kesalahan, tetapi kualitas dan koherensi penalaran akan menurun.
- Skenario pemanggilan alat/fungsi: Langsung mengembalikan kesalahan HTTP 400.
- Percakapan multi-putaran pengeditan gambar: Konteks mungkin hilang, dan hasil pengeditan menjadi tidak akurat.
🎯 Saran Pengembangan: Dalam skenario percakapan multi-putaran apa pun, Anda harus menyimpan dan mengirimkan kembali
thoughtSignaturesecara utuh.
Saat menggunakan APIYI (apiyi.com), platform akan menangani pengiriman tanda tangan dan kompatibilitas format secara otomatis, sehingga pengembang tidak perlu mengelolanya secara manual.
Cara Menangani thoughtSignature API Nano Banana 2 dengan Benar
Contoh Sederhana: Mengurai respons dan membedakan gambar dengan tanda tangan
Kode berikut menunjukkan cara mengekstrak gambar dari respons Nano Banana 2 dengan benar, sekaligus menyimpan thoughtSignature untuk penggunaan selanjutnya:
from google import genai
from google.genai import types
client = genai.Client(api_key="KUNCI_API_ANDA")
response = client.models.generate_content(
model="gemini-3.1-flash-image-preview",
contents=["Gambar seekor kucing putih di bawah pohon sakura"],
config=types.GenerateContentConfig(
response_modalities=["TEXT", "IMAGE"],
image_config=types.ImageConfig(image_size="2K"),
thinking_config=types.ThinkingConfig(
include_thoughts=True
),
)
)
saved_signature = None
for part in response.parts:
if hasattr(part, 'thought') and part.thought:
print(f"Proses berpikir: {part.text[:100]}...")
elif hasattr(part, 'thought_signature') and part.thought_signature:
saved_signature = part.thought_signature # Simpan, jangan didekode!
print("thoughtSignature berhasil disimpan (bukan gambar)")
elif image := part.as_image():
image.save("kucing_sakura.png", format="PNG")
print("Gambar berhasil disimpan")
Lihat kode lengkap untuk mengirim kembali thoughtSignature dalam percakapan multi-putaran
from google import genai
from google.genai import types
client = genai.Client(api_key="KUNCI_API_ANDA")
# Putaran pertama: Menghasilkan gambar
response1 = client.models.generate_content(
model="gemini-3.1-flash-image-preview",
contents=["Gambar seekor kucing putih di bawah pohon sakura"],
config=types.GenerateContentConfig(
response_modalities=["TEXT", "IMAGE"],
image_config=types.ImageConfig(image_size="2K"),
thinking_config=types.ThinkingConfig(
include_thoughts=True
),
)
)
# Ekstrak gambar dan tanda tangan
image_data = None
thought_signature = None
model_parts = []
for part in response1.parts:
model_parts.append(part) # Simpan parts lengkap
if hasattr(part, 'thought_signature') and part.thought_signature:
thought_signature = part.thought_signature
elif image := part.as_image():
image.save("putaran1.png", format="PNG")
# Putaran kedua: Mengedit berdasarkan hasil sebelumnya
# Kunci: Masukkan parts lengkap dari putaran sebelumnya (termasuk thoughtSignature) sebagai riwayat
history = [
{"role": "user", "parts": [{"text": "Gambar seekor kucing putih di bawah pohon sakura"}]},
{"role": "model", "parts": model_parts}, # Berisi thoughtSignature
]
response2 = client.models.generate_content(
model="gemini-3.1-flash-image-preview",
contents=history + [
{"role": "user", "parts": [{"text": "Ubah latar belakang menjadi langit malam, tambahkan bulan"}]}
],
config=types.GenerateContentConfig(
response_modalities=["TEXT", "IMAGE"],
image_config=types.ImageConfig(image_size="2K"),
)
)
for part in response2.parts:
if image := part.as_image():
image.save("putaran2_edit.png", format="PNG")
print("Gambar hasil edit berhasil disimpan")
Saran: Saat memanggil Nano Banana 2 melalui APIYI (apiyi.com), platform menyediakan antarmuka format yang kompatibel dengan OpenAI, yang secara otomatis menangani pengiriman
thoughtSignaturesehingga Anda tidak perlu mengelola status tanda tangan dalam percakapan multi-putaran secara manual.
Jebakan Umum dan Solusi thoughtSignature pada API Nano Banana 2
Ringkasan Skenario Masalah
| Skenario | Masalah | Penyebab | Solusi |
|---|---|---|---|
| Dekode tanda tangan sebagai gambar | Gagal dekode base64 | thoughtSignature adalah data terenkripsi, bukan gambar |
Periksa apakah ada field inlineData sebelum dekode |
| Tanda tangan hilang di percakapan multi-turn | Kualitas jawaban menurun atau error 400 | Tidak mengirim ulang thoughtSignature |
Simpan seluruh parts termasuk tanda tangan untuk putaran berikutnya |
| Pemalsuan tanda tangan | Error "invalid signature" | Tanda tangan divalidasi oleh server | Harus menggunakan nilai yang dikembalikan asli dari API |
| Nama field tidak konsisten | Perbedaan antara Python dan REST | REST menggunakan camelCase, SDK menggunakan snake_case | REST: thoughtSignature, Python: thought_signature |
| Data terlewat saat streaming | Tanda tangan hilang | Tanda tangan mungkin ada di part teks kosong pada chunk terakhir | Periksa field tanda tangan meskipun teks kosong |
Perbandingan Penamaan Field thoughtSignature pada API Nano Banana 2
Penamaan field yang berbeda tergantung metode pemanggilan sering menjadi jebakan:
| Metode Pemanggilan | Nama Field | Lokasi |
|---|---|---|
| REST API (JSON mentah) | thoughtSignature |
parts[].thoughtSignature |
| Python SDK | thought_signature |
part.thought_signature |
| Format Kompatibel OpenAI (Proksi) | thought_signature |
provider_specific_fields.thought_signature |
Solusi Darurat API Nano Banana 2: Tanda tangan dummy
Jika Anda sedang memigrasikan riwayat percakapan lama dan tidak memiliki thoughtSignature yang valid, Google menyediakan nilai bypass khusus:
# Nilai dummy untuk bypass validasi tanda tangan
DUMMY_SIGNATURE = "context_engineering_is_the_way_to_go"
Menggunakan string ini sebagai nilai thoughtSignature dapat mencegah error 400. Namun, ini hanya solusi darurat dan dapat memengaruhi koherensi penalaran model.
🎯 Praktik Terbaik: Simpan semua
thoughtSignaturesecara lengkap sejak pemanggilan pertama untuk membangun rantai riwayat percakapan yang benar.
Jika manajemen manual terasa rumit, gunakan antarmuka yang kompatibel dengan OpenAI melalui APIYI (apiyi.com) untuk menyederhanakan prosesnya.

Pertanyaan Umum
Q1: Apa isi dari data base64 thoughtSignature jika didekode?
Anda tidak akan mendapatkan konten yang berarti. Ini adalah data biner yang telah ditandatangani secara kriptografis dan memang dirancang agar tidak transparan (opaque). Anda bisa melakukan dekode base64 untuk mendapatkan deretan byte biner, tetapi byte tersebut bukan format file yang dikenal—bukan gambar, bukan teks, dan bukan JSON. Satu-satunya cara penanganan yang benar adalah dengan menyimpan dan mengirimkannya kembali apa adanya.
Q2: Apa yang terjadi jika thoughtSignature tidak dikirim kembali?
Ada dua skenario: 1) Dalam skenario percakapan teks murni, tidak akan muncul pesan kesalahan, tetapi konsistensi penalaran model akan menurun dan kualitas jawaban berikutnya mungkin tidak sesuai harapan; 2) Dalam skenario pemanggilan fungsi (function calling), model seri Gemini 3 akan langsung mengembalikan kesalahan HTTP 400. Untuk percakapan multi-putaran pengeditan gambar Nano Banana 2, hilangnya tanda tangan akan menyebabkan model gagal memulihkan konteks dengan benar, sehingga hasil pengeditan mungkin tidak akurat. Disarankan untuk menggunakan antarmuka yang kompatibel dengan OpenAI melalui APIYI (apiyi.com), karena platform tersebut menangani pengiriman tanda tangan secara otomatis.
Q3: Bagaimana cara membedakan mana gambar dan mana tanda tangan dalam respons?
Cukup periksa tipe field-nya: part yang memiliki inlineData (berisi mime_type dan data) adalah data gambar; part yang memiliki field thoughtSignature / thought_signature adalah tanda tangan; dan part dengan thought: true adalah teks ringkasan pemikiran. Saat melakukan pengecekan dengan kode, prioritaskan pengecekan keberadaan inlineData, baru kemudian periksa field lainnya.
Q4: Bagaimana cara melengkapi riwayat percakapan lama yang tidak memiliki thoughtSignature?
Google menyediakan nilai tanda tangan dummy khusus yaitu "context_engineering_is_the_way_to_go" yang dapat digunakan sebagai nilai sementara untuk thoughtSignature guna menghindari kesalahan 400. Namun, ini hanyalah solusi kompatibilitas dan tidak memiliki kemampuan pemulihan penalaran yang sesungguhnya. Untuk jangka panjang, disarankan agar menyimpan semua tanda tangan secara lengkap sejak awal percakapan baru.
Kesimpulan
Poin-poin utama mengenai thoughtSignature dalam API Nano Banana 2:
- Bukan gambar:
thoughtSignatureadalah tanda tangan proses penalaran yang terenkripsi, bukan data gambar base64, dan tidak dapat didekode menjadi format gambar apa pun. - Harus dikirim kembali apa adanya: Simpan dan kirim kembali
thoughtSignatureapa adanya dalam percakapan multi-putaran. Jika tidak, pemanggilan fungsi akan menghasilkan kesalahan 400 dan kualitas percakapan teks akan menurun. - Bedakan tiga jenis part dengan benar: Part dengan
inlineDataadalah gambar, part denganthoughtSignatureadalah tanda tangan, dan part denganthought: trueadalah ringkasan pemikiran.
Setelah memahami esensi field ini, Anda tidak akan lagi terjebak dalam kesalahan "mendekode tanda tangan sebagai gambar" saat mengurai respons API Nano Banana 2.
Direkomendasikan untuk menggunakan APIYI (apiyi.com) guna memvalidasi fitur pengeditan gambar multi-putaran Nano Banana 2 dengan cepat. Platform ini menangani pengiriman thoughtSignature secara otomatis, menyediakan kuota gratis, dan antarmuka yang terpadu.
📚 Referensi
-
Dokumentasi Resmi Thought Signatures: Penjelasan lengkap Google mengenai mekanisme thoughtSignature
- Tautan:
ai.google.dev/gemini-api/docs/thought-signatures - Keterangan: Berisi definisi field, aturan transmisi, dan contoh percakapan multi-putaran
- Tautan:
-
Dokumentasi Mode Thinking Gemini: Cara mengaktifkan fitur Thinking dan parameter konfigurasinya
- Tautan:
ai.google.dev/gemini-api/docs/thinking - Keterangan: Memahami konfigurasi seperti include_thoughts, thinking_level, dan lainnya
- Tautan:
-
Referensi API Inferensi Vertex AI: Definisi field lengkap untuk objek Part dalam REST API
- Tautan:
docs.cloud.google.com/vertex-ai/generative-ai/docs/model-reference/inference - Keterangan: Berisi definisi tipe dan batasan penggunaan thoughtSignature
- Tautan:
-
Pusat Dokumentasi APIYI: Solusi sederhana untuk memanggil Nano Banana 2 melalui antarmuka yang kompatibel dengan OpenAI
- Tautan:
docs.apiyi.com - Keterangan: Menangani transmisi thoughtSignature secara otomatis, mengurangi kompleksitas pengembangan
- Tautan:
Penulis: Tim Teknis APIYI
Diskusi Teknis: Silakan berdiskusi di kolom komentar, untuk materi lebih lanjut kunjungi pusat dokumentasi APIYI di docs.apiyi.com
