|

Menginterpretasikan thoughtSignature pada API Nano Banana 2: Mengapa hasil dekode base64 bukan berupa gambar?

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.

nano-banana-2-api-thoughtsignature-explained-thinking-mode-guide-id 图示

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:

  1. Ringkasan pemikiran (thought: true): Ringkasan teks dari proses penalaran model.
  2. Tanda tangan pemikiran (thoughtSignature): Snapshot status penalaran yang terenkripsi.
  3. 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.

nano-banana-2-api-thoughtsignature-explained-thinking-mode-guide-id 图示

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 thoughtSignature secara 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 thoughtSignature sehingga 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 thoughtSignature secara 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.

nano-banana-2-api-thoughtsignature-explained-thinking-mode-guide-id 图示

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:

  1. Bukan gambar: thoughtSignature adalah tanda tangan proses penalaran yang terenkripsi, bukan data gambar base64, dan tidak dapat didekode menjadi format gambar apa pun.
  2. Harus dikirim kembali apa adanya: Simpan dan kirim kembali thoughtSignature apa adanya dalam percakapan multi-putaran. Jika tidak, pemanggilan fungsi akan menghasilkan kesalahan 400 dan kualitas percakapan teks akan menurun.
  3. Bedakan tiga jenis part dengan benar: Part dengan inlineData adalah gambar, part dengan thoughtSignature adalah tanda tangan, dan part dengan thought: true adalah 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

  1. 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
  2. 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
  3. 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
  4. 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

Penulis: Tim Teknis APIYI
Diskusi Teknis: Silakan berdiskusi di kolom komentar, untuk materi lebih lanjut kunjungi pusat dokumentasi APIYI di docs.apiyi.com

Similar Posts