Định dạng câu lệnh Gemma 4

Bắt đầu từ Gemma 4, chúng tôi sẽ giới thiệu các mã thông báo kiểm soát mới. Đối với Gemma 3 trở xuống, hãy xem tài liệu trước đó.

Các phần sau đây chỉ định mã thông báo kiểm soát mà Gemma 4 sử dụng và các trường hợp sử dụng của mã thông báo đó. Xin lưu ý rằng các mã thông báo kiểm soát được dành riêng và cụ thể cho trình mã hoá từ của chúng tôi.

  • Mã thông báo cho biết một chỉ dẫn của hệ thống: system
  • Mã thông báo cho biết lượt của người dùng: user
  • Mã thông báo cho biết lượt phản hồi của mô hình: model
  • Mã thông báo cho biết bắt đầu lượt đối thoại: <|turn>
  • Mã thông báo cho biết cuối lượt trò chuyện: <turn|>

Sau đây là một ví dụ về cuộc trò chuyện:

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

Nhiều phương thức

Mã thông báo đa phương thức Mục đích
<|image>
<image|>
Cho biết hình ảnh được nhúng
<|audio>
<audio|>
Cho biết các thành phần âm thanh được nhúng
<|image|>
<|audio|>
Mã thông báo đặc biệt của phần giữ chỗ

Chúng tôi sử dụng 2 mã thông báo đặc biệt của phần giữ chỗ (<|image|><|audio|>) để chỉ định vị trí chèn mã thông báo hình ảnh và âm thanh. Sau khi mã hoá, các mã thông báo này sẽ được thay thế bằng các mục nhúng mềm thực tế bên trong mô hình.

Sau đây là một ví dụ về hộp thoại:

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

And translate these audio:

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

Mã thông báo kiểm soát dựa trên tác nhân và suy luận

Để hỗ trợ quy trình làm việc có tác nhân, Gemma sử dụng các mã thông báo kiểm soát chuyên biệt để phân định quá trình suy luận nội bộ (suy nghĩ) với các hành động bên ngoài (gọi hàm). Các mã thông báo này cho phép mô hình xử lý logic phức tạp trước khi đưa ra câu trả lời cuối cùng hoặc tương tác với các công cụ bên ngoài.

Gọi hàm

Gemma 4 được huấn luyện trên 6 mã thông báo đặc biệt để quản lý vòng đời "sử dụng công cụ".

Cặp mã thông báo Mục đích
<|tool>
<tool|>
Xác định một công cụ
<|tool_call>
<tool_call|>
Cho biết yêu cầu của mô hình về việc sử dụng một công cụ.
<|tool_response>
<tool_response|>
Cung cấp kết quả thực thi của một công cụ cho mô hình.

Dấu phân cách cho các giá trị chuỗi: <|"|>

Một mã thông báo duy nhất, <|"|>, được dùng làm dấu phân cách cho tất cả các giá trị chuỗi trong các khối dữ liệu có cấu trúc.

  • Mục đích: Mã thông báo này đảm bảo rằng mọi ký tự đặc biệt (chẳng hạn như {, }, , hoặc dấu ngoặc kép) bên trong một chuỗi đều được coi là văn bản nguyên nghĩa chứ không phải là một phần của cú pháp cơ bản của cấu trúc dữ liệu.
  • Cách sử dụng: Tất cả các chuỗi ký tự trong khai báo, lệnh gọi và phản hồi hàm của bạn phải được đặt trong dấu ngoặc kép (ví dụ: key:<|"|>string value<|"|>).

Chế độ tư duy

Để kích hoạt chế độ suy nghĩ, hãy thêm mã thông báo kiểm soát <|think|> vào chỉ dẫn hệ thống.

Mã thông báo kiểm soát Mục đích
<|think|> Kích hoạt chế độ suy nghĩ
<|channel>
<channel|>
Cho biết quy trình nội bộ của một mô hình.

Sau đây là một ví dụ về hộp thoại:

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

Chế độ suy nghĩ được thiết kế để bật ở cấp cuộc trò chuyện. Bạn nên hợp nhất thông tin này thành một lượt phản hồi duy nhất cùng với các chỉ dẫn khác của hệ thống, chẳng hạn như định nghĩa về công cụ.

Ví dụ về suy luận và lệnh gọi hàm

Trong một lượt tương tác có tác nhân, mô hình có thể "suy nghĩ" riêng tư trước khi quyết định gọi một hàm. Vòng đời tuân theo trình tự sau:

  1. Câu hỏi của người dùng: Người dùng đặt câu hỏi.
  2. Lý luận nội bộ: Mô hình suy nghĩ riêng tư trong kênh suy nghĩ.
  3. Yêu cầu về công cụ: Mô hình tạm dừng quá trình tạo để yêu cầu một lệnh gọi công cụ.
  4. Thực thi và chèn: Ứng dụng thực thi công cụ và thêm phản hồi.
  5. Câu trả lời cuối cùng: Mô hình đọc câu trả lời và tạo ra câu trả lời cuối cùng.

Ví dụ sau đây minh hoạ một mô hình sử dụng công cụ thời tiết:

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

Ứng dụng của bạn phải phân tích cú pháp phản hồi của mô hình để trích xuất tên hàm và đối số, thực thi hàm, rồi thêm tool_callstool_responses vào nhật ký trò chuyện trong vai trò 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|>

Cuối cùng, Gemma đọc phản hồi của công cụ và trả lời người dùng.

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

Sau đây là nhật ký trò chuyện hoàn chỉnh ở định dạng JSON cho ví dụ này:

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

Quản lý bối cảnh suy nghĩ giữa các lượt

Việc quản lý đúng cách những suy nghĩ do mô hình tạo ra là rất quan trọng để duy trì hiệu suất trong các cuộc trò chuyện nhiều lượt.

  • Cuộc trò chuyện nhiều lượt tiêu chuẩn: Bạn phải xoá (loại bỏ) những suy nghĩ do mô hình tạo ra từ lượt trước trước khi chuyển nhật ký trò chuyện trở lại mô hình cho lượt tiếp theo. Nếu muốn tắt chế độ suy nghĩ giữa cuộc trò chuyện, bạn có thể xoá mã thông báo <|think|> khi loại bỏ các suy nghĩ trước đó.
  • Gọi hàm (Ngoại lệ): Nếu một lượt tương tác của mô hình liên quan đến lệnh gọi hàm hoặc lệnh gọi công cụ, thì bạn KHÔNG được xoá suy nghĩ giữa các lệnh gọi hàm.

Quy trình làm việc của trợ lý AI và các tác vụ kéo dài

Vì các suy nghĩ thô sẽ bị loại bỏ giữa các lượt tương tác tiêu chuẩn, nên những nhà phát triển xây dựng các tác nhân chạy trong thời gian dài có thể muốn giữ lại ngữ cảnh suy luận để ngăn mô hình đi vào các vòng lặp suy luận theo chu kỳ.

  • Tóm tắt suy nghĩ: Một kỹ thuật suy luận rất nên dùng là trích xuất, tóm tắt và đưa những suy nghĩ trước đó của mô hình trở lại cửa sổ ngữ cảnh dưới dạng văn bản tiêu chuẩn.
  • Hạn chế về định dạng: Vì Gemma 4 không được huấn luyện một cách rõ ràng với những suy nghĩ thô sơ có trong câu lệnh (ngoài trường hợp gọi công cụ cụ thể được đề cập ở trên), nên mô hình không mong đợi một định dạng cụ thể hoặc nghiêm ngặt nào cho những suy nghĩ được chèn này. Bạn có thể linh hoạt định dạng suy luận tóm tắt theo cách phù hợp nhất với cấu trúc tác nhân cụ thể của mình.

Ghi chú về việc tích hợp

  • Trạng thái nội bộ: Mã thông báo <|channel><channel|> thường được dùng để xử lý Chuỗi suy luận (CoT). Trong các ứng dụng tiêu chuẩn dành cho người dùng, nội dung này thường bị ẩn khỏi người dùng cuối.
  • Tool Loop (Vòng lặp công cụ): Các mã thông báo tool_calltool_response tạo điều kiện cho một "cái bắt tay" giữa mô hình môi trường ứng dụng của bạn. Ứng dụng chặn tool_call, thực thi mã cơ bản và truyền kết quả trở lại mô hình trong các mã thông báo tool_response.
  • Hành vi của mô hình: Các mô hình lớn hơn (ví dụ: gemma-4-26B-A4B-it, gemma-4-31B-it) đôi khi có thể tạo ra một kênh suy nghĩ ngay cả khi chế độ suy nghĩ bị tắt rõ ràng. Để ổn định hành vi của mô hình trong những trường hợp đặc biệt này, hãy cân nhắc việc thêm một mã thông báo suy nghĩ trống vào câu lệnh.

Mẹo: Điều chỉnh mô hình lớn bằng tập dữ liệu không cần suy nghĩ

Khi tinh chỉnh các mô hình Gemma lớn hơn bằng một tập dữ liệu không bao gồm suy nghĩ, bạn có thể đạt được kết quả tốt hơn bằng cách thêm kênh trống vào câu lệnh huấn luyện:

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

Mẹo: Hiệu quả tư duy thích ứng bằng cách sử dụng Chỉ dẫn hệ thống

Mặc dù "suy nghĩ" trong Gemma 4 được hỗ trợ chính thức dưới dạng một tính năng boolean BẬT hoặc TẮT, nhưng mô hình này có khả năng tuân theo hướng dẫn cực kỳ mạnh mẽ, cho phép bạn điều chỉnh hành vi suy nghĩ của mô hình một cách linh hoạt.

Thay vì dựa vào một tham số khung được mã hoá cứng cho tư duy "cao" hoặc "thấp", bạn có thể sử dụng Chỉ dẫn hệ thống (SI) để hướng dẫn mô hình chuyển sang chế độ tư duy giảm. Bằng cách hướng dẫn rõ ràng cho mô hình suy nghĩ hiệu quả hoặc ở độ sâu thấp hơn (một khái niệm mà chúng tôi gọi là chỉ dẫn tư duy "THẤP"), bạn có thể đạt được hiệu quả tư duy thích ứng.

  • Giảm chi phí: Thử nghiệm cho thấy việc áp dụng Chỉ dẫn hệ thống tư duy "THẤP" có thể giảm số lượng mã thông báo tư duy được tạo ra khoảng 20%.
  • Bằng chứng về khái niệm: Vì hành vi này là sản phẩm phụ của khả năng hướng dẫn của mô hình chứ không phải được huấn luyện cụ thể, nên không có một câu lệnh "hoàn hảo" nào. Chỉ thị "LOW" là bằng chứng về khái niệm.
  • Tuỳ chỉnh: Chúng tôi rất khuyến khích nhà phát triển thử nghiệm với Chỉ dẫn hệ thống tuỳ chỉnh của riêng họ. Bạn có thể tinh chỉnh độ sâu, độ dài và kiểu tư duy của mô hình để cân bằng hoàn hảo giữa độ trễ, chi phí và chất lượng đầu ra cho các trường hợp sử dụng cụ thể của mình.