Gemma 4 ile birlikte yeni kontrol jetonları sunuyoruz. Gemma 3 ve önceki sürümler için önceki belgeye bakın.
Aşağıdaki bölümlerde, Gemma 4 tarafından kullanılan kontrol jetonları ve kullanım alanları belirtilmektedir. Kontrol jetonlarının, belirteçleştiricimize özel olduğunu ve bu belirteçleştiricide ayrıldığını unutmayın.
- Sistem talimatını belirtmek için kullanılan jeton:
system - Kullanıcı dönüşünü belirten jeton:
user - Model dönüşünü belirtmek için kullanılan jeton:
model - Diyalog dönüşünün başlangıcını belirten jeton:
<|turn> - Diyalog dönüşünün sonunu belirtmek için kullanılan jeton:
<turn|>
Örnek bir diyalog:
<|turn>system
You are a helpful assistant.<turn|>
<|turn>user
Hello.<turn|>
Çoklu modaliteler
| Çok formatlı jeton | Amaç |
|---|---|
<|image> <image|> |
Görüntü yerleştirmelerini belirtme |
<|audio> <audio|> |
Ses yerleştirmelerini belirtme |
<|image|> <|audio|> |
Özel yer tutucu jetonları |
Resim ve ses jetonlarının nereye eklenmesi gerektiğini belirtmek için iki özel yer tutucu jeton (<|image|> ve <|audio|>) kullanırız. Parçalama işleminden sonra bu jetonlar, modelin içindeki gerçek yumuşak yerleştirmelerle değiştirilir.
Aşağıda örnek bir diyalog verilmiştir:
prompt = """<|turn>user
Describe this image: <|image|>
And translate these audio:
a. <|audio|>
b. <|audio|><turn|>
<|turn>model"""
Agentic ve Reasoning Control Tokens
Gemma, yapay zeka aracılı iş akışlarını desteklemek için iç muhakemeyi (düşünme) dış işlemlere (fonksiyon çağrısı) ayıran özel kontrol jetonları kullanır. Bu jetonlar, modelin nihai yanıt vermeden veya dış araçlarla etkileşime girmeden önce karmaşık mantığı işlemesine olanak tanır.
İşlev Çağırma
Gemma 4, "araç kullanımı" yaşam döngüsünü yönetmek için altı özel jetonla eğitilmiştir.
| Jeton Çifti | Amaç |
|---|---|
<|tool> <tool|> |
Aracı tanımlar |
<|tool_call> <tool_call|> |
Bir modelin aracı kullanma isteğini gösterir. |
<|tool_response> <tool_response|> |
Bir aracın yürütme sonucunu modele geri gönderir. |
Dize Değerleri İçin Sınırlayıcı: <|"|>
Yapılandırılmış veri bloklarındaki tüm dize değerleri için sınırlayıcı olarak tek bir jeton (<|"|>) kullanılır.
- Amaç: Bu jeton, bir dize içindeki özel karakterlerin (ör.
{,},,veya tırnak işaretleri) veri yapısının temelindeki söz diziminin bir parçası olarak değil, değişmez metin olarak değerlendirilmesini sağlar. - Kullanım: İşlev bildirimlerinizdeki, çağrılarınızdaki ve yanıtlarınızdaki tüm dize değişmezleri bu jeton kullanılarak kapsanmalıdır (ör.
key:<|"|>string value<|"|>).
Düşünme Modu
Düşünme modunu etkinleştirmek için sistem talimatına <|think|> kontrol jetonunu ekleyin.
| Kontrol jetonu | Amaç |
|---|---|
<|think|> |
Düşünme modunu etkinleştirir. |
<|channel> <channel|> |
Modelin iç sürecini gösterir. |
Aşağıda örnek bir diyalog verilmiştir:
<|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|>
Düşünme modu, sohbet düzeyinde etkinleştirilecek şekilde tasarlanmıştır. Bu, diğer sistem talimatlarınızla (ör. araç tanımları) birlikte tek bir sistem dönüşünde birleştirilmelidir.
Akıl Yürütme ve İşlev Çağırma Örneği
Model, bir işlev çağrısı yapmaya karar vermeden önce "düşünme" aşamasında özel olarak çalışabilir. Yaşam döngüsü şu sırayı izler:
- Kullanıcı sorgusu: Kullanıcı soru sorar.
- İçsel Muhakeme (Internal Reasoning): Model, düşünce kanalında özel olarak düşünür.
- Araç İsteği: Model, araç çağrısı isteğinde bulunmak için üretimi durdurur.
- Yürütme ve Ekleme: Uygulama, aracı yürütür ve yanıtı ekler.
- Son Yanıt: Model, yanıtı okur ve nihai yanıtı oluşturur.
Aşağıdaki örnekte, hava durumu aracı kullanan bir model gösterilmektedir:
<|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>
Uygulamanız, işlev adını ve bağımsız değişkenleri ayıklamak için modelin yanıtını ayrıştırmalı, işlevi yürütmeli ve ardından tool_calls ile tool_responses karakterlerini assistant rolü altındaki sohbet geçmişine eklemelidir.
<|turn>model
<|tool_call>call:get_current_weather{location:<|"|>London<|"|>}<tool_call|><|tool_response>response:get_current_weather{temperature:15,weather:<|"|>sunny<|"|>}<tool_response|>
Son olarak Gemma, aracın yanıtını okur ve kullanıcıya yanıt verir.
The temperature in London is 15 degrees and it is sunny.<turn|>
Bu örnek için tam JSON sohbet geçmişi aşağıda verilmiştir:
[
{
"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."
}
]
Dönüşler Arasında Düşünce Bağlamını Yönetme
Modelin ürettiği düşünceleri doğru şekilde yönetmek, çok turlu sohbetlerde performansı korumak için kritik öneme sahiptir.
- Standart Çok Turlu Sohbetler: Sohbet geçmişini bir sonraki tur için modele geri iletmeden önce modelin önceki turda oluşturduğu düşünceleri kaldırmanız (ayıklamanız) gerekir. Düşünme modunu sohbetin ortasında devre dışı bırakmak istiyorsanız önceki düşünceleri temizlerken
<|think|>jetonunu kaldırabilirsiniz. - İşlev Çağrısı (İstisna): Tek bir model dönüşü işlev veya araç çağrıları içeriyorsa işlev çağrıları arasındaki düşünceler KALDIRILMAMALIDIR.
Temsilci Tabanlı İş Akışları ve Uzun Süren Görevler
Standart dönüşler arasında ham düşünceler çıkarıldığından, uzun süreli çalışan aracılar geliştirenler, modelin döngüsel akıl yürütme döngülerine girmesini önlemek için akıl yürütme bağlamını korumak isteyebilir.
- Düşünceleri Özetleme: Çok önerilen bir çıkarım tekniği, modelin önceki düşüncelerini çıkarıp özetleyerek standart metin olarak bağlam penceresine geri beslemektir.
- Biçimlendirme Kısıtlamaları: Gemma 4, isteme dahil edilen ham düşüncelerle (yukarıda bahsedilen belirli araç çağrısı senaryosu dışında) açıkça eğitilmediğinden, bu yerleştirilmiş düşünceler için model tarafından beklenen katı veya belirli bir biçim yoktur. Özetlenmiş gerekçelendirmeyi, belirli aracı mimarinize en uygun şekilde biçimlendirebilirsiniz.
Entegrasyon Notları
- Dahili Durum:
<|channel>ve<channel|>jetonları genellikle Düşünce Zinciri (CoT) işleme için kullanılır. Kullanıcıya yönelik standart uygulamalarda bu içerik genellikle son kullanıcıdan gizlenir. - Tool Loop:
tool_callvetool_responsejetonları, uygulama ortamınız ile model arasında "el sıkışma"yı kolaylaştırır. Uygulama,tool_callöğesini yakalar, temel kodu yürütür ve sonucutool_responsejetonları içinde modele geri besler. - Model Davranışı: Daha büyük modeller (ör. gemma-4-26B-A4B-it, gemma-4-31B-it), düşünme modu açıkça devre dışı bırakıldığında bile bazen düşünce kanalı oluşturabilir. Bu uç durumlarda model davranışını dengelemek için isteme boş bir düşünme jetonu eklemeyi düşünebilirsiniz.
İpucu: Büyük Modelleri Düşünme Gerektirmeyen Veri Kümeleriyle İnce Ayarlama
Düşünme içermeyen bir veri kümesiyle daha büyük Gemma modellerinde ince ayar yaparken eğitim istemlerinize boş kanalı ekleyerek daha iyi sonuçlar elde edebilirsiniz:
<|turn>model
<|channel>thought
<channel|>
İpucu: Sistem talimatlarını kullanarak uyarlanabilir düşünme verimliliği
Gemma 4'te "düşünme" özelliği resmi olarak AÇIK veya KAPALI şeklinde desteklenirken model, düşünme davranışını dinamik olarak değiştirmenize olanak tanıyan, talimatlara uyma konusunda son derece güçlü özelliklere sahiptir.
"Yüksek" veya "düşük" düşünme için sabit kodlanmış bir çerçeve parametresine güvenmek yerine, modeli azaltılmış düşünme moduna yönlendirmek için Sistem Talimatları'nı (SI) kullanabilirsiniz. Modele verimli veya daha az derinlikte düşünmesi için açıkça talimat vererek (bu kavramı "LOW" düşünme talimatı olarak adlandırıyoruz) uyarlanabilir düşünme verimliliği elde edebilirsiniz.
- Daha düşük maliyet: Testler, "DÜŞÜK" düşünme sistemi talimatı uygulamanın, oluşturulan düşünme jetonlarının sayısını yaklaşık %20 oranında azaltabileceğini göstermiştir.
- Kavram Kanıtı: Bu davranış, modelin eğitilebilirliğinin bir yan ürünü olduğundan ve özel olarak eğitilmediğinden tek bir "mükemmel" istem yoktur. "LOW" talimatı, kavram kanıtlama amaçlıdır.
- Özelleştirme: Geliştiricilerin kendi özel Sistem Talimatları ile denemeler yapmasını önemle tavsiye ederiz. Modelin düşünce sürecinin derinliğini, uzunluğunu ve stilini, belirli kullanım alanlarınız için gecikme, maliyet ve çıkış kalitesi arasında mükemmel bir denge kuracak şekilde hassaslaştırabilirsiniz.