แชทกับ Gemma: การสนทนาพื้นฐานและแบบหลายรอบ

โมเดล Gemma ที่ได้รับการปรับแต่งตามคำสั่ง (IT) ออกแบบมาเพื่อจัดการการโต้ตอบแบบสนทนา ตั้งแต่การแลกเปลี่ยนคำถามและคำตอบแบบครั้งเดียวไปจนถึงการสนทนาแบบหลายรอบ ที่ยาวนาน คู่มือนี้อธิบายวิธีจัดรูปแบบพรอมต์สำหรับการแชทกับ Gemma และวิธี สร้างการสนทนาแบบหลายรอบ

รูปแบบพรอมต์

โมเดลไอทีของ Gemma ใช้โทเค็นควบคุมพิเศษเพื่อกำหนดขอบเขตการสนทนา โทเค็นเหล่านี้จำเป็นเมื่อส่งพรอมต์ไปยังโทเค็นไนเซอร์โดยตรง แต่โดยปกติแล้วเฟรมเวิร์กที่รับรู้แชทจะใช้โทเค็นเหล่านี้โดยอัตโนมัติ

พรอมต์แบบเทิร์นเดียว

พรอมต์แบบเทิร์นเดียวประกอบด้วยข้อความของผู้ใช้ 1 รายการและเครื่องหมาย การตอบกลับของโมเดล

<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สุดท้าย

คำสั่งของระบบ

โมเดลที่ปรับแต่งตามคำสั่งของ Gemma ออกแบบมาให้ทำงานกับ 2 บทบาทเท่านั้น ได้แก่ 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 การสนทนา

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

หากต้องการแชทหลายรอบ ให้ใช้โหมดอินเทอร์แอกทีฟโดยทำดังนี้

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)

ขั้นตอนถัดไป