Formatação de comandos do Gemma 4

A partir do Gemma 4, apresentamos novos tokens de controle. Para o Gemma 3 e versões anteriores, consulte o documento anterior.

As seções a seguir especificam os tokens de controle usados pelo Gemma 4 e os casos de uso deles. Os tokens de controle são reservados e específicos para nosso tokenizador.

  • Token para indicar uma instrução do sistema: system
  • Token para indicar um turno do usuário: user
  • Token para indicar um turno do modelo: model
  • Token para indicar o início de um turno de diálogo: <|turn>
  • Token para indicar o fim de um turno de diálogo: <turn|>

Confira um exemplo de diálogo:

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

Multimodalidades

Token multimodal Finalidade
<|image>
<image|>
Indicar incorporações de imagens
<|audio>
<audio|>
Indicar incorporações de áudio
<|image|>
<|audio|>
Tokens de marcador de posição especiais

Usamos dois tokens de marcador de posição especiais (<|image|> e <|audio|>) para especificar onde os tokens de imagem e áudio precisam ser inseridos. Após a tokenização, esses tokens são substituídos pelas incorporações flexíveis reais dentro do modelo.

Confira um exemplo de diálogo:

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

And translate these audio:

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

Áudio

Use as seguintes estruturas de comando para processamento de áudio:

  • Reconhecimento de fala de áudio (ASR)
Transcribe the following speech segment in {LANGUAGE} into {LANGUAGE} text.

Follow these specific instructions for formatting the answer:
*   Only output the transcription, with no newlines.
*   When transcribing numbers, write the digits, i.e. write 1.7 and not one point seven, and write 3 instead of three.
  • Tradução automática de fala (AST)
Transcribe the following speech segment in {SOURCE_LANGUAGE}, then translate it into {TARGET_LANGUAGE}.
When formatting the answer, first output the transcription in {SOURCE_LANGUAGE}, then one newline, then output the string '{TARGET_LANGUAGE}: ', then the translation in {TARGET_LANGUAGE}.

Tokens de controle de raciocínio e agente

Para oferecer suporte a fluxos de trabalho de agentes, o Gemma usa tokens de controle especializados que delineiam o raciocínio interno (pensamento) de ações externas (chamada de função). Esses tokens permitem que o modelo processe uma lógica complexa antes de fornecer uma resposta final ou interagir com ferramentas externas.

Chamada de função

O Gemma 4 é treinado em seis tokens especiais para gerenciar o ciclo de vida do "uso de ferramentas".

Par de tokens Finalidade
<|tool>
<tool|>
Define uma ferramenta
<|tool_call>
<tool_call|>
Indica a solicitação de um modelo para usar uma ferramenta.
<|tool_response>
<tool_response|>
Fornece o resultado da execução de uma ferramenta de volta ao modelo.

Delimitador para valores de string: <|"|>

Um único token, <|"|>, é usado como delimitador para todos os valores de string nos blocos de dados estruturados.

  • Finalidade:esse token garante que todos os caracteres especiais (como {, }, , ou aspas) dentro de uma string sejam tratados como texto literal e não como parte da sintaxe subjacente da estrutura de dados.
  • Uso: todos os literais de string nas declarações, chamadas e respostas de função precisam ser incluídos usando esse token (por exemplo, key:<|"|>string value<|"|>).

Modo de raciocínio

Para ativar o modo de pensamento, inclua o <|think|> token de controle na instrução do sistema.

Token de controle Finalidade
<|think|> Ativa o modo de pensamento
<|channel>
<channel|>
Indica um processo interno do modelo.

Confira um exemplo de diálogo:

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

O modo de pensamento foi projetado para ser ativado no nível da conversa. Isso precisa ser consolidado em um único turno do sistema, junto com outras instruções do sistema, como definições de ferramentas.

Exemplo de raciocínio e chamada de função

Em um turno de agente, o modelo pode "pensar" em particular antes de decidir chamar uma função. O ciclo de vida segue esta sequência:

  1. Consulta do usuário: o usuário faz uma pergunta.
  2. Raciocínio interno: o modelo pensa em particular no canal de pensamento.
  3. Solicitação de ferramenta: o modelo interrompe a geração para solicitar uma chamada de ferramenta.
  4. Execução e injeção: o aplicativo executa a ferramenta e anexa a resposta.
  5. Resposta final: o modelo lê a resposta e gera a resposta final.

O exemplo a seguir demonstra um modelo usando uma ferramenta de clima:

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

Seu aplicativo precisa analisar a resposta do modelo para extrair o nome e os argumentos da função, executar a função e anexar tool_calls e tool_responses ao histórico de conversas na função 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|>

Por fim, o Gemma lê a resposta da ferramenta e responde ao usuário.

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

Confira o histórico completo do chat JSON para este exemplo:

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

Gerenciar o contexto de pensamento entre turnos

Gerenciar corretamente os pensamentos gerados pelo modelo é fundamental para manter a performance em conversas com vários turnos.

  • Conversas padrão com vários turnos:é necessário remover (remover) os pensamentos gerados pelo modelo do turno anterior antes de transmitir o histórico da conversa de volta ao modelo para o próximo turno. Se você quiser desativar o modo de pensamento no meio da conversa, remova o token <|think|> ao remover os pensamentos anteriores.
  • Chamada de função (exceção) : se um único turno de modelo envolver chamadas de função ou ferramenta, os pensamentos NÃO poderão ser removidos entre as chamadas de função.

Fluxos de trabalho de agentes e tarefas de longa duração

Como os pensamentos brutos são removidos entre os turnos padrão, os desenvolvedores que criam agentes de longa duração podem querer manter o contexto de raciocínio para evitar que o modelo entre em loops de raciocínio cíclicos.

  • Resumir pensamentos:uma técnica de inferência altamente recomendada é extrair, resumir e transmitir os pensamentos anteriores do modelo de volta à janela de contexto como texto padrão.
  • Restrições de formatação:como o Gemma 4 não foi treinado explicitamente com pensamentos brutos incluídos no comando (fora do cenário específico de chamada de ferramenta mencionado acima), não há um formato estrito ou específico esperado pelo modelo para esses pensamentos injetados. Você tem a flexibilidade de formatar o raciocínio resumido da maneira que melhor se adequar à sua arquitetura de agente específica.

Observações de integração

  • Estado interno:os tokens <|channel> e <channel|> são normalmente usados para o processamento de linha de raciocínio (CoT, na sigla em inglês). Em aplicativos padrão voltados para o usuário, esse conteúdo geralmente fica oculto do usuário final.
  • Loop de ferramentas:os tokens tool_call e tool_response facilitam um "handshake" entre o modelo e o ambiente do aplicativo. O aplicativo intercepta a tool_call, executa o código subjacente e transmite o resultado de volta ao modelo nos tokens tool_response.
  • Comportamento do modelo:modelos maiores (por exemplo, gemma-4-26B-A4B-it, gemma-4-31B-it) podem ocasionalmente gerar um canal de pensamento mesmo quando o modo de pensamento está explicitamente desativado. Para estabilizar o comportamento do modelo nesses casos extremos, considere adicionar um token de pensamento vazio ao comando.

Dica: ajuste de modelos grandes com conjuntos de dados sem pensamento

Ao ajustar modelos Gemma maiores com um conjunto de dados que não inclui pensamento, você pode conseguir resultados melhores adicionando o canal vazio aos comandos de treinamento:

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

Dica: eficiência de pensamento adaptável usando instruções do sistema

Embora o "pensamento" no Gemma 4 seja oficialmente compatível como um recurso booleano ATIVADO ou DESATIVADO, o modelo tem recursos de acompanhamento de instruções excepcionalmente fortes que permitem modular o comportamento de pensamento de forma dinâmica.

Em vez de depender de um parâmetro de framework codificado para pensamento "alto" ou "baixo", você pode usar instruções do sistema (SI) para orientar o modelo a um modo de pensamento reduzido. Ao instruir explicitamente o modelo a pensar com eficiência ou em uma profundidade menor (um conceito que chamamos de instrução de pensamento "BAIXO"), você pode alcançar a eficiência de pensamento adaptável.

  • Custo reduzido:os testes mostraram que a aplicação de uma instrução do sistema de pensamento "BAIXO" pode reduzir o número de tokens de pensamento gerados em aproximadamente 20%.
  • Prova de conceito:como esse comportamento é um subproduto da capacidade de instrução do modelo, em vez de um treinamento específico, não há um único comando "perfeito". A instrução "BAIXO" é uma prova de conceito.
  • Personalização:recomendamos que os desenvolvedores experimentem as próprias instruções do sistema personalizadas. É possível ajustar a profundidade, o comprimento e o estilo do processo de pensamento do modelo para equilibrar perfeitamente a latência, o custo e a qualidade da saída para seus casos de uso específicos.