Formatimi i shpejtë i Gemma 4

Duke filluar me Gemma 4, ne prezantojmë tokena të rinj kontrolli. Për Gemma 3 dhe versione më të ulëta, shihni dokumentin e mëparshëm .

Seksionet e mëposhtme specifikojnë tokenët e kontrollit të përdorur nga Gemma 4 dhe rastet e përdorimit të tyre. Vini re se tokenët e kontrollit janë të rezervuar dhe specifikë për tokenizuesin tonë.

  • Shenjë për të treguar një udhëzim sistemi: system
  • Shenjë për të treguar një radhë përdoruesi: user
  • Shenjë për të treguar një kthesë modeli: model
  • Shenjë për të treguar fillimin e një radhe dialogu: <|turn>
  • Shenjë për të treguar fundin e një radhe dialogu: <turn|>

Ja një shembull dialogu:

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

Multi-modalitete

Token Multimodal Qëllimi
<|image>
<image|>
Tregoni ngulitje të imazheve
<|audio>
<audio|>
Tregoni përfshirjet audio
<|image|>
<|audio|>
Shenjat e mbajtësve të veçantë të vendeve

Ne përdorim dy tokena të veçantë vendmbajtës ( <|image|> dhe <|audio|> ) për të specifikuar se ku duhet të futen tokenat e imazhit dhe audios. Pas tokenizimit, këto tokena zëvendësohen nga ngulitje të buta aktuale brenda modelit.

Ja një shembull dialogu:

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

And translate these audio:

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

Tokenët e Kontrollit Agjentik dhe të Arsyetimit

Për të mbështetur rrjedhat e punës agjentike, Gemma përdor tokena kontrolli të specializuara që përcaktojnë arsyetimin e brendshëm (të menduarit) nga veprimet e jashtme (thirrja e funksionit). Këto tokena i lejojnë modelit të përpunojë logjikën komplekse përpara se të japë një përgjigje përfundimtare ose të bashkëveprojë me mjetet e jashtme.

Thirrja e funksionit

Gemma 4 është trajnuar në gjashtë tokena specialë për të menaxhuar ciklin jetësor të "përdorimit të mjeteve".

Çifti i Tokenëve Qëllimi
<|tool>
<tool|>
Përcakton një mjet
<|tool_call>
<tool_call|>
Tregon kërkesën e një modeli për të përdorur një mjet.
<|tool_response>
<tool_response|>
Ofron rezultatin e ekzekutimit të një mjeti përsëri në model.

Ndarës për Vlerat e Stringut: <|"|>

Një shenjë e vetme, <|"|> , përdoret si ndarës për të gjitha vlerat e vargut brenda blloqeve të të dhënave të strukturuara.

  • Qëllimi: Ky token siguron që çdo karakter special (si { , } , , , ose thonjëza) brenda një vargu trajtohet si tekst i drejtpërdrejtë dhe jo si pjesë e sintaksës themelore të strukturës së të dhënave.
  • Përdorimi: Të gjithë literalët e vargut në deklaratat, thirrjet dhe përgjigjet e funksionit tuaj duhet të mbyllen duke përdorur këtë shenjë (p.sh., key:<|"|>string value<|"|> ).

Modaliteti i të menduarit

Për të aktivizuar modalitetin e të menduarit, përfshij tokenin e kontrollit <|think|> brenda udhëzimit të sistemit.

Tokeni i Kontrollit Qëllimi
<|think|> Aktivizon modalitetin e të menduarit
<|channel>
<channel|>
Tregon procesin e brendshëm të një modeli.

Ja një shembull dialogu:

<|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|>

Modaliteti i të menduarit është projektuar për t'u aktivizuar në nivelin e bisedës. Kjo duhet të konsolidohet në një kthesë të vetme të sistemit së bashku me udhëzimet e tjera të sistemit, siç janë përkufizimet e mjeteve.

Shembull i Arsyetimit dhe Thirrjes së Funksionit

Në një kthesë agjentike, modeli mund të "mendojë" privatisht përpara se të vendosë të thërrasë një funksion. Cikli jetësor ndjek këtë sekuencë:

  1. Pyetje nga Përdoruesi: Përdoruesi bën një pyetje.
  2. Arsyetimi i Brendshëm: Modeli mendon privatisht në kanalin e të menduarit.
  3. Kërkesa për mjet: Modeli ndalon gjenerimin për të kërkuar një thirrje për mjet.
  4. Ekzekutimi dhe Injektimi: Aplikacioni ekzekuton mjetin dhe shton përgjigjen.
  5. Përgjigja përfundimtare: Modeli lexon përgjigjen dhe gjeneron përgjigjen përfundimtare.

Shembulli i mëposhtëm demonstron një model duke përdorur një mjet moti:

<|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>

Aplikacioni juaj duhet të analizojë përgjigjen e modelit për të nxjerrë emrin dhe argumentet e funksionit, ta ekzekutojë funksionin dhe më pas t'i shtojë tool_calls dhe tool_responses historikut të bisedave nën rolin e 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|>

Së fundmi, Gemma lexon përgjigjen e mjetit dhe i përgjigjet përdoruesit.

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

Ja historiku i plotë i bisedave JSON për këtë shembull:

[
  {
    "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."
  }
]

Menaxhimi i kontekstit të mendimit midis kthesave

Menaxhimi i duhur i mendimeve të gjeneruara nga modeli është thelbësor për ruajtjen e performancës në bisedat me shumë kthesa.

  • Biseda Standarde me Shumë Raunde: Duhet të hiqni (zhveshni) mendimet e gjeneruara të modelit nga raundi i mëparshëm përpara se t'ia kaloni historikun e bisedës modelit për raundin tjetër. Nëse doni të çaktivizoni modalitetin e të menduarit në mes të bisedës, mund ta hiqni tokenin <|think|> kur të zhveshni mendimet e mëparshme.
  • Thirrja e Funksionit (Përjashtim): Nëse një kthesë e vetme modeli përfshin thirrje funksioni ose mjeti, mendimet NUK duhen hequr midis thirrjeve të funksionit.

Flukset e Punës Agjentike dhe Detyrat Afatgjata

Meqenëse mendimet e papërpunuara hiqen midis kthesave standarde, zhvilluesit që ndërtojnë agjentë afatgjatë mund të duan të ruajnë kontekstin e arsyetimit për të parandaluar që modeli të hyjë në sythe ciklike arsyetimi.

  • Përmbledhja e Mendimeve: Një teknikë shumë e rekomanduar e nxjerrjes së përfundimeve është nxjerrja, përmbledhja dhe futja e mendimeve të mëparshme të modelit përsëri në dritaren e kontekstit si tekst standard.
  • Kufizimet e Formatimit: Meqenëse Gemma 4 nuk u trajnua në mënyrë të qartë me mendime të papërpunuara të përfshira në kërkesë (jashtë skenarit specifik të thirrjes së mjetit të përmendur më sipër), nuk ka një format të rreptë ose specifik që pritet nga modeli për këto mendime të injektuara. Ju keni fleksibilitetin për të formatuar arsyetimin e përmbledhur në çfarëdo mënyre që i përshtatet më së miri arkitekturës suaj specifike agjentike.

Shënime për Integrimin

  • Gjendja e Brendshme: Tokenët <|channel> dhe <channel|> përdoren zakonisht për përpunimin e Zinxhirit të Mendimit (CoT). Në aplikacionet standarde të drejtuara nga përdoruesi, kjo përmbajtje zakonisht fshihet nga përdoruesi fundor.
  • Cikli i Veglave: Tokenat tool_call dhe tool_response lehtësojnë një "shtrëngim duarsh" midis modelit dhe mjedisit të aplikacionit tuaj. Aplikacioni kap tool_call , ekzekuton kodin bazë dhe ia kthen rezultatin modelit brenda tokenave tool_response .
  • Sjellja e Modelit: Modelet më të mëdha (p.sh., gemma-4-26B-A4B-it, gemma-4-31B-it) mund të gjenerojnë herë pas here një kanal mendimi edhe kur modaliteti i të menduarit është i çaktivizuar në mënyrë të qartë. Për të stabilizuar sjelljen e modelit në këto raste anësore, merrni në konsideratë shtimin e një tokeni të të menduarit bosh në kërkesë.

Këshillë: Përmirësimi i modeleve të mëdha me grupe të dhënash pa menduar shumë

Kur përsosni modele më të mëdha Gemma me një grup të dhënash që nuk përfshin të menduarit, mund të arrini rezultate më të mira duke shtuar kanalin bosh në udhëzimet tuaja të trajnimit:

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

Këshillë: Efikasitet i Mendimit Adaptiv duke përdorur Udhëzimet e Sistemit

Ndërsa "të menduarit" në Gemma 4 mbështetet zyrtarisht si një veçori booleane ON ose OFF, modeli ka aftësi jashtëzakonisht të forta për ndjekjen e udhëzimeve që ju lejojnë të moduloni sjelljen e tij të të menduarit në mënyrë dinamike.

Në vend që të mbështeteni në një parametër të kornizës së koduar për të menduar "të lartë" ose "të ulët", mund të përdorni Udhëzimet e Sistemit (SI) për ta udhëhequr modelin në një modalitet të të menduarit të reduktuar. Duke e udhëzuar në mënyrë të qartë modelin të mendojë në mënyrë efikase ose në një thellësi më të ulët (një koncept të cilin ne e quajmë udhëzim të të menduarit "të ULËT"), mund të arrini efikasitet adaptiv të të menduarit.

  • Kosto e Ulur: Testimi ka treguar se zbatimi i një Sistemi Udhëzimesh të të Menduarit "të ULËT" mund të zvogëlojë numrin e tokenëve të të menduarit të gjeneruar me afërsisht 20%.
  • Prova e Konceptit: Meqenëse kjo sjellje është një nënprodukt i udhëzueshmërisë së modelit dhe jo një trajnim specifik, nuk ka një nxitje të vetme "perfekte". Udhëzimi "LOW" është një provë koncepti.
  • Përshtatje: Ne i inkurajojmë fuqimisht zhvilluesit të eksperimentojnë me Udhëzimet e tyre të Sistemit të personalizuara. Ju mund të përsosni thellësinë, gjatësinë dhe stilin e procesit të të menduarit të modelit për të balancuar në mënyrë të përsosur vonesën, koston dhe cilësinë e rezultatit për rastet tuaja specifike të përdorimit.