Conversar com a Gemma: conversas básicas e multiturnos

Os modelos Gemma ajustados por instruções (IT, na sigla em inglês) foram projetados para lidar com interações de conversação, desde trocas de perguntas e respostas únicas até diálogos estendidos de várias rodadas. Este guia explica como formatar comandos para conversar com a Gemma e como criar conversas com vários turnos.

Formato do comando

Os modelos de TI da Gemma usam tokens de controle especiais para delimitar as trocas de mensagens. Esses tokens são necessários ao enviar comandos diretamente ao tokenizador, mas geralmente são aplicados automaticamente por frameworks compatíveis com chat.

Comando de interação única

Um comando de uma única interação consiste em uma mensagem do usuário e um marcador de resposta do modelo:

<start_of_turn>user
What is the speed of light?<end_of_turn>
<start_of_turn>model

Comando com várias interações

As conversas com vários turnos encadeiam várias trocas. Cada turno é envolvido pelos mesmos tokens de controle:

<start_of_turn>user
What is the speed of light?<end_of_turn>
<start_of_turn>model
The speed of light in a vacuum is approximately 299,792,458 meters per second.<end_of_turn>
<start_of_turn>user
How long does it take light to reach Earth from the Sun?<end_of_turn>
<start_of_turn>model

O modelo gera uma resposta para a última vez que <start_of_turn>model fala.

Instruções do sistema

Os modelos ajustados por instrução do Gemma foram projetados para funcionar com apenas duas funções: user e model. Portanto, a função system ou uma ação do sistema não é compatível.

Em vez de usar uma função de sistema separada, forneça instruções no nível do sistema diretamente no comando inicial do usuário. As capacidades de seguir instruções do modelo permitem que a Gemma interprete as instruções de maneira eficaz. Exemplo:

Os modelos Gemma 3 e mais recentes são compatíveis com instruções do sistema que definem o comportamento, a persona ou as restrições do modelo para toda a conversa. Coloque a instrução do sistema antes da primeira vez que o usuário falar:

<start_of_turn>user
Only reply like a pirate.

What is the answer to life the universe and everything?<end_of_turn>
<start_of_turn>model
Arrr, 'tis 42,<end_of_turn>

Para mais detalhes, consulte Comandos e instruções do sistema.

Suporte a frameworks

A maioria dos frameworks processa a formatação do chat automaticamente usando o modelo de chat ou a API de conversa:

Transformers do Hugging Face

from transformers import AutoTokenizer, AutoModelForCausalLM

tokenizer = AutoTokenizer.from_pretrained("google/gemma-3-1b-it")
model = AutoModelForCausalLM.from_pretrained("google/gemma-3-1b-it")

messages = [
    {"role": "user", "content": "What is machine learning?"},
]

inputs = tokenizer.apply_chat_template(
    messages,
    return_tensors="pt",
    add_generation_prompt=True,
)

outputs = model.generate(**inputs, max_new_tokens=256)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

Ollama

ollama run gemma3:1b "What is machine learning?"

Para um chat multiturno, use o modo interativo:

ollama run gemma3:1b
>>> What is machine learning?
...
>>> How is it different from deep learning?

APIs compatíveis com a OpenAI

Ao usar frameworks que expõem uma API compatível com a OpenAI (como vLLM, llama.cpp ou LM Studio), transmita mensagens usando o formato padrão messages:

from openai import OpenAI

client = OpenAI(base_url="http://localhost:8000/v1", api_key="unused")

response = client.chat.completions.create(
    model="google/gemma-3-1b-it",
    messages=[
        {"role": "user", "content": "What is machine learning?"},
    ],
)
print(response.choices[0].message.content)

Próximas etapas