Pemformatan Perintah Gemma 4

Mulai dari Gemma 4, kami memperkenalkan token kontrol baru. Untuk Gemma 3 dan yang lebih rendah, lihat dokumen sebelumnya.

Bagian berikut menentukan token kontrol yang digunakan oleh Gemma 4 dan kasus penggunaannya. Perhatikan bahwa token kontrol dicadangkan di dan khusus untuk tokenizer kami.

  • Token untuk menunjukkan petunjuk sistem: system
  • Token untuk menunjukkan giliran pengguna: user
  • Token untuk menunjukkan pergantian model: model
  • Token untuk menunjukkan awal giliran dialog: <|turn>
  • Token untuk menunjukkan akhir giliran dialog: <turn|>

Berikut contoh dialognya:

<|turn>system
You are a helpful assistant.<turn|>
<|turn>user
Hello.<turn|>

Multi-modalitas

Token Multimodal Tujuan
<|image>
<image|>
Menunjukkan embedding gambar
<|audio>
<audio|>
Menunjukkan penyematan audio
<|image|>
<|audio|>
Token placeholder khusus

Kami menggunakan dua token placeholder khusus (<|image|> dan <|audio|>) untuk menentukan tempat token gambar dan audio harus disisipkan. Setelah tokenisasi, token ini diganti dengan soft embedding sebenarnya di dalam model.

Berikut contoh dialognya:

prompt = """<|turn>user
Describe this image: <|image|>

And translate these audio:

a. <|audio|>
b. <|audio|><turn|>
<|turn>model"""

Token Kontrol Penalaran dan Agentik

Untuk mendukung alur kerja berbasis agen, Gemma menggunakan token kontrol khusus yang membatasi penalaran internal (pemikiran) dari tindakan eksternal (pemanggilan fungsi). Token ini memungkinkan model memproses logika yang kompleks sebelum memberikan respons akhir atau berinteraksi dengan alat eksternal.

Pemanggilan Fungsi

Gemma 4 dilatih dengan enam token khusus untuk mengelola siklus proses "penggunaan alat".

Pasangan Token Tujuan
<|tool>
<tool|>
Menentukan alat
<|tool_call>
<tool_call|>
Menunjukkan permintaan model untuk menggunakan alat.
<|tool_response>
<tool_response|>
Memberikan hasil eksekusi alat kembali ke model.

Pemisah untuk Nilai String: <|"|>

Satu token, <|"|>, digunakan sebagai pemisah untuk semua nilai string dalam blok data terstruktur.

  • Tujuan: Token ini memastikan bahwa karakter khusus (seperti {, }, ,, atau tanda petik) di dalam string diperlakukan sebagai teks literal dan bukan sebagai bagian dari sintaksis dasar struktur data.
  • Penggunaan: Semua literal string dalam deklarasi, panggilan, dan respons fungsi Anda harus diapit menggunakan token ini (misalnya, key:<|"|>string value<|"|>).

Mode Berpikir

Untuk mengaktifkan mode berpikir, sertakan token kontrol <|think|> dalam instruksi sistem.

Token Kontrol Tujuan
<|think|> Mengaktifkan mode berpikir
<|channel>
<channel|>
Menunjukkan proses internal model.

Berikut contoh dialognya:

<|turn>system
<|think|><turn|>
<|turn>user
What is the water formula?<turn|>
<|turn>model
<|channel>thought
...
<channel|>The most common interpretation of "the water formula" refers...<turn|>

Mode berpikir dirancang untuk diaktifkan di tingkat percakapan. Hal ini harus digabungkan menjadi satu pergantian sistem bersama dengan petunjuk sistem lainnya, seperti definisi alat.

Contoh Penalaran dan Panggilan Fungsi

Dalam perubahan agentik, model dapat "berpikir" secara pribadi sebelum memutuskan untuk memanggil fungsi. Siklus proses mengikuti urutan berikut:

  1. Pertanyaan Pengguna: Pengguna mengajukan pertanyaan.
  2. Penalaran Internal: Model berpikir secara pribadi di saluran pemikiran.
  3. Permintaan Alat: Model menghentikan pembuatan untuk meminta panggilan alat.
  4. Eksekusi & Penyisipan: Aplikasi menjalankan alat dan menambahkan respons.
  5. Respons Akhir: Model membaca respons dan membuat jawaban akhir.

Contoh berikut menunjukkan model yang menggunakan alat cuaca:

<|turn>system
<|think|>You are a helpful assistant.<|tool>declaration:get_current_temperature{...}<tool|><turn|>
<|turn>user
What's the temperature in London?<turn|>
<|turn>model
<|channel>thought
...
<channel|><|tool_call>call:get_current_temperature{location:<|"|>London<|"|>}<tool_call|><|tool_response>

Aplikasi Anda harus mengurai respons model untuk mengekstrak nama dan argumen fungsi, menjalankan fungsi, lalu menambahkan tool_calls dan tool_responses ke histori chat dengan peran assistant.

<|turn>model
<|tool_call>call:get_current_weather{location:<|"|>London<|"|>}<tool_call|><|tool_response>response:get_current_weather{temperature:15,weather:<|"|>sunny<|"|>}<tool_response|>

Terakhir, Gemma membaca respons alat dan membalas pengguna.

The temperature in London is 15 degrees and it is sunny.<turn|>

Berikut adalah histori chat JSON lengkap untuk contoh ini:

[
  {
    "role": "system",
    "content": "You are a helpful assistant."
  },
  {
    "role": "user",
    "content": "What's the temperature in London?"
  },
  {
    "role": "assistant",
    "tool_calls": [
      {
        "function": {
          "name": "get_current_weather",
          "arguments": {
            "location": "London"
          }
        }
      }
    ],
    "tool_responses": [
      {
        "name": "get_current_weather",
        "response": {
          "temperature": 15,
          "weather": "sunny"
        }
      }
    ],
    "content": "The temperature in London is 15 degrees and it is sunny."
  }
]

Mengelola Konteks Pemikiran Antar-Giliran

Mengelola pemikiran yang dihasilkan model dengan benar sangat penting untuk mempertahankan performa di seluruh percakapan multi-giliran.

  • Percakapan Multi-Putaran Standar: Anda harus menghapus (menghilangkan) pemikiran yang dihasilkan model dari putaran sebelumnya sebelum meneruskan histori percakapan kembali ke model untuk putaran berikutnya. Jika ingin menonaktifkan mode berpikir di tengah percakapan, Anda dapat menghapus token <|think|> saat menghapus pemikiran sebelumnya.
  • Panggilan Fungsi (Pengecualian): Jika satu giliran model melibatkan panggilan fungsi atau alat, pemikiran TIDAK boleh dihapus di antara panggilan fungsi.

Alur Kerja Agentic dan Tugas yang Berjalan Lama

Karena pemikiran mentah dihilangkan di antara giliran standar, developer yang membuat agen yang berjalan lama mungkin ingin mempertahankan konteks penalaran untuk mencegah model memasuki loop penalaran siklus.

  • Meringkas Pemikiran: Teknik inferensi yang sangat direkomendasikan adalah mengekstrak, meringkas, dan memasukkan kembali pemikiran model sebelumnya ke dalam jendela konteks sebagai teks standar.
  • Batasan Pemformatan: Karena Gemma 4 tidak dilatih secara eksplisit dengan pemikiran mentah yang disertakan dalam perintah (di luar skenario panggilan alat tertentu yang disebutkan di atas), tidak ada format yang ketat atau spesifik yang diharapkan oleh model untuk pemikiran yang disisipkan ini. Anda memiliki fleksibilitas untuk memformat penalaran yang diringkas dengan cara apa pun yang paling sesuai dengan arsitektur agentik spesifik Anda.

Catatan Integrasi

  • Status Internal: Token <|channel> dan <channel|> biasanya digunakan untuk pemrosesan Chain-of-Thought (CoT). Dalam aplikasi standar yang ditampilkan kepada pengguna, konten ini biasanya disembunyikan dari pengguna akhir.
  • Tool Loop: Token tool_call dan tool_response memfasilitasi "handshake" antara model dan lingkungan aplikasi Anda. Aplikasi mencegat tool_call, menjalankan kode yang mendasarinya, dan mengirimkan hasilnya kembali ke model dalam token tool_response.
  • Perilaku Model: Model yang lebih besar (misalnya, gemma-4-26B-A4B-it, gemma-4-31B-it) terkadang dapat menghasilkan saluran pemikiran meskipun mode berpikir dinonaktifkan secara eksplisit. Untuk menstabilkan perilaku model dalam kasus ekstrem ini, pertimbangkan untuk menambahkan token pemikiran kosong ke perintah.

Tips: Menyempurnakan Model Besar dengan Set Data Tanpa Pemikiran

Saat menyesuaikan model Gemma yang lebih besar dengan set data yang tidak menyertakan pemikiran, Anda dapat memperoleh hasil yang lebih baik dengan menambahkan saluran kosong ke perintah pelatihan Anda:

<|turn>model
<|channel>thought
<channel|>

Tips: Efisiensi Pemikiran Adaptif menggunakan Petunjuk Sistem

Meskipun "berpikir" di Gemma 4 secara resmi didukung sebagai fitur boolean ON atau OFF, model ini memiliki kemampuan mengikuti perintah yang sangat kuat sehingga Anda dapat memodulasi perilaku berpikirnya secara dinamis.

Daripada mengandalkan parameter framework yang di-hard code untuk pemikiran "tinggi" atau "rendah", Anda dapat menggunakan Petunjuk Sistem (SI) untuk memandu model ke mode pemikiran yang lebih rendah. Dengan menginstruksikan model secara eksplisit untuk berpikir secara efisien atau pada kedalaman yang lebih rendah (konsep yang kami sebut sebagai instruksi berpikir "RENDAH"), Anda dapat mencapai efisiensi pemikiran adaptif.

  • Biaya yang Lebih Rendah: Pengujian telah menunjukkan bahwa menerapkan Instruksi Sistem berpikir "RENDAH" dapat mengurangi jumlah token berpikir yang dihasilkan sekitar 20%.
  • Bukti Konsep: Karena perilaku ini merupakan produk sampingan dari kemampuan model dalam mengikuti perintah, bukan dilatih secara khusus, tidak ada perintah "sempurna" tunggal. Petunjuk "RENDAH" adalah bukti konsep.
  • Penyesuaian: Kami sangat menganjurkan developer untuk bereksperimen dengan Petunjuk Sistem kustom mereka sendiri. Anda dapat menyesuaikan kedalaman, panjang, dan gaya proses berpikir model untuk menyeimbangkan latensi, biaya, dan kualitas output secara sempurna untuk kasus penggunaan spesifik Anda.