Czat z Gemmą: podstawowe i wieloetapowe rozmowy

Modele Gemma dostrojone do instrukcji (IT) zostały zaprojektowane do obsługi interakcji konwersacyjnych, od pojedynczych wymian pytań i odpowiedzi po rozbudowane wieloetapowe dialogi. Z tego przewodnika dowiesz się, jak formatować prompty do czatu z Gammą i jak tworzyć rozmowy wieloetapowe.

Format prompta

Modele IT Gemma używają specjalnych tokenów sterujących do wyznaczania kolejnych tur rozmowy. Te tokeny są wymagane, gdy wysyłasz prompty bezpośrednio do tokenizatora, ale są zwykle stosowane automatycznie przez platformy obsługujące czat.

Prompt jednoetapowy

Prompt w jednej turze składa się z 1 wiadomości użytkownika i znacznika odpowiedzi modelu:

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

Prompt wieloetapowy

Rozmowy wieloetapowe obejmują wiele wymian informacji. Każda tura jest otoczona tymi samymi tokenami sterującymi:

<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

Model generuje odpowiedź na ostatnią turę <start_of_turn>model.

Instrukcje systemowe

Modele Gemma dostrojone do instrukcji są przeznaczone do pracy tylko z 2 rolami:usermodel. Dlatego rola system ani kolejka systemowa nie są obsługiwane.

Zamiast używać osobnej roli systemowej, podaj instrukcje na poziomie systemu bezpośrednio w początkowym promcie użytkownika. Instrukcje modelu, które wykorzystują te możliwości, pozwalają Gemmie skutecznie interpretować instrukcje. Na przykład:

Modele Gemma 3 i nowsze obsługują instrukcje systemowe, które określają zachowanie, osobowość lub ograniczenia modelu w całej rozmowie. Umieść instrukcję systemową przed pierwszą wypowiedzią użytkownika:

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

Więcej informacji znajdziesz w artykule Instrukcje dotyczące promptów i systemu.

Obsługa platformy

Większość platform automatycznie obsługuje formatowanie czatu za pomocą szablonu czatu lub interfejsu API rozmowy:

Hugging Face Transformers

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

W przypadku czatu wieloetapowego użyj trybu interaktywnego:

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

Interfejsy API zgodne z OpenAI

Jeśli używasz platform, które udostępniają interfejs API zgodny z OpenAI (np. vLLM, llama.cpp lub LM Studio), przesyłaj wiadomości w standardowym formacie 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)

Dalsze kroki