Общение с Джеммой: базовые и многоэтапные диалоги.

Модели Gemma, оптимизированные для работы с инструкциями (IT), предназначены для обработки диалоговых взаимодействий, от отдельных вопросов и ответов до продолжительных многоходовых диалогов. В этом руководстве объясняется, как форматировать подсказки для чата с Gemma и как создавать многоходовые диалоги.

Формат подсказки

В моделях Gemma IT используются специальные управляющие токены для обозначения ходов разговора. Эти токены необходимы при отправке запросов непосредственно в токенизатор, но обычно применяются автоматически платформами, поддерживающими чат.

Одноходовая подсказка

Одноходовое голосовое сообщение состоит из одного пользовательского сообщения и маркера ответа модели:

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

Многоходовая подсказка

Многоходовые диалоги представляют собой цепочки из нескольких обменов репликами. Каждый ход осуществляется с использованием одних и тех же управляющих токенов:

<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

Модель генерирует ответ для финального поворота <start_of_turn>model .

Системные инструкции

Модели Джеммы, оптимизированные для работы с инструкциями, рассчитаны только на две роли: user и model . Поэтому роль system или системный ход не поддерживаются.

Вместо использования отдельной системной роли, предоставляйте инструкции системного уровня непосредственно в первоначальном запросе пользователя. Возможности моделирования инструкций позволяют Gemma эффективно интерпретировать инструкции. Например:

В моделях Gemma 3 и более поздних версиях поддерживаются системные инструкции, определяющие поведение, персону или ограничения модели на протяжении всего разговора. Разместите системную инструкцию перед первым ходом пользователя:

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

Для получения более подробной информации см. раздел «Подсказки и системные инструкции» .

Поддержка фреймворка

Большинство фреймворков обрабатывают форматирование чата автоматически через свои шаблоны чата или API для создания диалогов:

Обнимающие трансформеры для лица

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 run gemma3:1b "What is machine learning?"

Для многоходового чата используйте интерактивный режим:

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

API, совместимые с OpenAI

При использовании фреймворков, предоставляющих API, совместимый с OpenAI (таких как vLLM, llama.cpp или LM Studio), передавайте 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)

Следующие шаги