Đang suy nghĩ

Các mô hình Gemini 2.5 có thể sử dụng "quy trình tư duy" nội bộ giúp cải thiện đáng kể khả năng lập luận và lập kế hoạch nhiều bước, khiến chúng trở nên hiệu quả cao đối với các tác vụ phức tạp như lập trình, toán học nâng cao và phân tích dữ liệu.

Bạn có thể định cấu hình mức độ suy nghĩ mà một mô hình có thể thực hiện bằng cách sử dụng ngân sách suy nghĩ. Cấu hình này đặc biệt quan trọng nếu bạn ưu tiên việc giảm độ trễ hoặc chi phí. Ngoài ra, hãy xem bảng so sánh độ khó của các nhiệm vụ để quyết định mức độ cần thiết về khả năng tư duy của một mô hình.

Sử dụng mô hình tư duy

Sử dụng mô hình tư duy giống như cách bạn sử dụng bất kỳ mô hình Gemini nào khác (khởi chạy trình cung cấp Gemini API mà bạn đã chọn, tạo một thực thể GenerativeModel, v.v.). Bạn có thể dùng các mô hình này cho các tác vụ tạo văn bản hoặc mã, chẳng hạn như tạo đầu ra có cấu trúc hoặc phân tích dữ liệu đầu vào đa phương thức (chẳng hạn như hình ảnh, video, âm thanh hoặc tệp PDF). Bạn thậm chí có thể sử dụng các mô hình tư duy khi truyền trực tuyến đầu ra.

Các mô hình được hỗ trợ

Chỉ các mô hình Gemini 2.5 mới hỗ trợ chức năng này.

  • gemini-2.5-pro
  • gemini-2.5-flash
  • gemini-2.5-flash-lite-preview-06-17

Các phương pháp hay nhất để sử dụng mô hình tư duy

Bạn nên thử nghiệm câu lệnh của mình trong Google AI Studio hoặc Vertex AI Studio. Tại đây, bạn có thể xem toàn bộ quy trình suy nghĩ. Bạn có thể xác định những điểm mà mô hình có thể đã đi sai hướng để tinh chỉnh câu lệnh nhằm nhận được câu trả lời nhất quán và chính xác hơn.

Bắt đầu bằng một câu lệnh chung mô tả kết quả mong muốn và quan sát suy nghĩ ban đầu của mô hình về cách xác định câu trả lời. Nếu câu trả lời không như mong đợi, hãy giúp mô hình tạo ra câu trả lời hay hơn bằng cách sử dụng một trong các kỹ thuật tạo câu lệnh sau đây:

  • Cung cấp hướng dẫn từng bước
  • Cung cấp một số ví dụ về các cặp đầu vào-đầu ra
  • Đưa ra hướng dẫn về cách diễn đạt và định dạng đầu ra cũng như câu trả lời
  • Cung cấp các bước xác minh cụ thể

Ngoài việc đưa ra câu lệnh, hãy cân nhắc sử dụng các đề xuất sau:

  • Đặt hướng dẫn hệ thống, giống như một "lời nói đầu" mà bạn thêm trước khi mô hình tiếp xúc với bất kỳ hướng dẫn nào khác từ câu lệnh hoặc người dùng cuối. Các tham số này cho phép bạn điều chỉnh hành vi của mô hình dựa trên nhu cầu và trường hợp sử dụng cụ thể của mình.

  • Đặt ngân sách suy nghĩ để định cấu hình mức độ suy nghĩ mà mô hình có thể thực hiện. Nếu bạn đặt ngân sách thấp, thì mô hình sẽ không "suy nghĩ quá nhiều" về câu trả lời của mình. Nếu bạn đặt ngân sách cao, thì mô hình có thể suy nghĩ thêm nếu cần. Việc đặt ngân sách suy nghĩ cũng giúp dành nhiều hơn hạn mức tổng số mã thông báo đầu ra cho phản hồi thực tế.

  • (nếu sử dụng Vertex AI Gemini API) Nhớ bật tính năng giám sát AI trong bảng điều khiển Firebase để bạn có thể giám sát độ trễ của các yêu cầu đã bật tính năng suy nghĩ. Xin lưu ý rằng các mã thông báo tư duy chưa xuất hiện trong trang tổng quan giám sát.

Kiểm soát ngân sách suy nghĩ

Để kiểm soát mức độ suy nghĩ mà mô hình có thể thực hiện để tạo câu trả lời, bạn có thể chỉ định số lượng mã thông báo ngân sách suy nghĩ mà mô hình được phép sử dụng.

Bạn có thể đặt ngân sách suy nghĩ theo cách thủ công trong những trường hợp bạn có thể cần nhiều hoặc ít mã thông báo hơn ngân sách suy nghĩ mặc định. Bạn có thể tìm thấy hướng dẫn chi tiết hơn về độ phức tạp của nhiệm vụ và ngân sách đề xuất ở phần sau của mục này. Sau đây là một số hướng dẫn chung:

  • Đặt ngân sách suy nghĩ thấp nếu độ trễ là yếu tố quan trọng hoặc đối với các tác vụ ít phức tạp
  • Đặt ngân sách tư duy cao cho những công việc phức tạp hơn

Đặt ngân sách suy nghĩ

Nhấp vào nhà cung cấp Gemini API để xem nội dung và mã dành riêng cho nhà cung cấp trên trang này.

Đặt ngân sách suy nghĩ trong GenerationConfig như một phần của quá trình tạo thực thể GenerativeModel. Cấu hình này được duy trì trong suốt thời gian tồn tại của phiên bản. Nếu bạn muốn sử dụng các ngân sách suy nghĩ khác nhau cho các yêu cầu khác nhau, hãy tạo các thực thể GenerativeModel được định cấu hình với từng ngân sách.

Tìm hiểu về các giá trị ngân sách tư duy được hỗ trợ ở phần sau của phần này.

Swift

Đặt ngân sách suy nghĩ trong GenerationConfig trong quá trình tạo một thực thể GenerativeModel.


// ...

// Set the thinking configuration
// Use a thinking budget value appropriate for your model (example value shown here)
let generationConfig = GenerationConfig(
  thinkingConfig: ThinkingConfig(thinkingBudget: 1024)
)

// Specify the config as part of creating the `GenerativeModel` instance
let model = FirebaseAI.firebaseAI(backend: .googleAI()).generativeModel(
  modelName: "GEMINI_MODEL_NAME",
  generationConfig: generationConfig
)

// ...

Kotlin

Đặt giá trị của các tham số trong GenerationConfig trong quá trình tạo một thực thể GenerativeModel.


// ...

// Set the thinking configuration
// Use a thinking budget value appropriate for your model (example value shown here)
val generationConfig = generationConfig {
  thinkingConfig = thinkingConfig {
      thinkingBudget = 1024
  }
}

// Specify the config as part of creating the `GenerativeModel` instance
val model = Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(
  modelName = "GEMINI_MODEL_NAME",
  generationConfig,
)

// ...

Java

Đặt giá trị của các tham số trong GenerationConfig trong quá trình tạo một thực thể GenerativeModel.


// ...

// Set the thinking configuration
// Use a thinking budget value appropriate for your model (example value shown here)
ThinkingConfig thinkingConfig = new ThinkingConfig.Builder()
    .setThinkingBudget(1024)
    .build();

GenerationConfig generationConfig = GenerationConfig.builder()
    .setThinkingConfig(thinkingConfig)
    .build();

// Specify the config as part of creating the `GenerativeModel` instance
GenerativeModelFutures model = GenerativeModelFutures.from(
        FirebaseAI.getInstance(GenerativeBackend.googleAI())
                .generativeModel(
                  /* modelName */ "<var>GEMINI_MODEL_NAME</var>",
                  /* generationConfig */ generationConfig
                );
);

// ...

Web

Đặt giá trị của các tham số trong GenerationConfig trong quá trình tạo một thực thể GenerativeModel.


// ...

const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });

// Set the thinking configuration
// Use a thinking budget value appropriate for your model (example value shown here)
const generationConfig = {
  thinkingConfig: {
    thinkingBudget: 1024
  }
};

// Specify the config as part of creating the `GenerativeModel` instance
const model = getGenerativeModel(ai, { model: "GEMINI_MODEL_NAME", generationConfig });

// ...

Dart

Trong bản phát hành tiếp theo, Flutter sẽ hỗ trợ việc thiết lập ngân sách tư duy.

Unity

Tính năng hỗ trợ thiết lập ngân sách suy nghĩ cho Unity sẽ có trong bản phát hành tiếp theo.

Các giá trị ngân sách được hỗ trợ

Bảng sau đây liệt kê các giá trị ngân sách suy nghĩ mà bạn có thể đặt cho từng mô hình bằng cách định cấu hình thinkingBudget của mô hình.

Mô hình Giá trị mặc định Phạm vi có thể sử dụng cho ngân sách suy nghĩ Giá trị để
tắt tính năng suy nghĩ
Giá trị của việc
khuyến khích tư duy linh hoạt
Giá trị tối thiểu Giá trị tối đa
Gemini 2.5 Pro 8,192 128 32,768 không tắt được -1
Gemini 2.5 Flash 8,192 1 24,576 0 -1
Gemini 2.5 Flash‑Lite 0
(theo mặc định, tính năng suy nghĩ sẽ bị tắt)
512 24,576 0
(hoặc không định cấu hình ngân sách suy nghĩ)
-1

Tắt tiến trình tư duy

Đối với một số tác vụ dễ dàng hơn, bạn không cần khả năng tư duy và suy luận truyền thống là đủ. Hoặc nếu việc giảm độ trễ là ưu tiên, bạn có thể không muốn mô hình mất thêm thời gian không cần thiết để tạo câu trả lời.

Trong những tình huống này, bạn có thể tắt (hoặc vô hiệu hoá) tính năng suy nghĩ:

  • Gemini 2.5 Pro: không thể tắt tính năng suy nghĩ
  • Gemini 2.5 Flash: đặt thinkingBudget thành 0 token
  • Gemini 2.5 Flash-Lite: chế độ suy nghĩ bị tắt theo mặc định

Bật tư duy linh hoạt

Bạn có thể cho phép mô hình quyết định thời điểm và mức độ suy nghĩ (gọi là suy nghĩ linh hoạt) bằng cách đặt thinkingBudget thành -1. Mô hình có thể sử dụng nhiều mã thông báo tuỳ ý, tối đa bằng giá trị mã thông báo tối đa được liệt kê ở trên.

Độ phức tạp của việc cần làm

  • Việc dễ dàng – có thể tắt tính năng suy nghĩ
    Yêu cầu đơn giản không đòi hỏi khả năng suy luận phức tạp, chẳng hạn như truy xuất thông tin hoặc phân loại. Ví dụ:

    • "DeepMind được thành lập ở đâu?"
    • "Email này có yêu cầu tổ chức cuộc họp hay chỉ cung cấp thông tin?"
  • Công việc ở mức trung bình – cần ngân sách mặc định hoặc một số ngân sách suy nghĩ bổ sung
    Các yêu cầu phổ biến được hưởng lợi từ mức độ xử lý từng bước hoặc hiểu biết sâu sắc hơn. Ví dụ:

    • "Tạo một phép loại suy giữa quá trình quang hợp và quá trình trưởng thành."
    • "So sánh và đối chiếu xe điện và xe lai điện."
  • Nhiệm vụ khó – có thể cần ngân sách tư duy tối đa
    Những thử thách thực sự phức tạp, chẳng hạn như giải các bài toán phức tạp hoặc các nhiệm vụ lập trình. Những loại tác vụ này đòi hỏi mô hình phải sử dụng toàn bộ khả năng lập luận và lập kế hoạch, thường liên quan đến nhiều bước nội bộ trước khi đưa ra câu trả lời. Ví dụ:

    • "Giải bài toán 1 trong AIME 2025: Tìm tổng của tất cả các cơ số b là số nguyên > 9 sao cho 17b là ước số của 97b."
    • "Viết mã Python cho một ứng dụng web trực quan hoá dữ liệu thị trường chứng khoán theo thời gian thực, bao gồm cả xác thực người dùng. Hãy làm cho nó hiệu quả nhất có thể."

Giá và cách tính mã thông báo

Thinking token sử dụng cùng một mức giá như text-output token.

Bạn có thể nhận được tổng số mã thông báo suy nghĩ từ trường thoughtsTokenCount trong thuộc tính usageMetadata của phản hồi:

Swift

// ...

let response = try await model.generateContent("Why is the sky blue?")

if let usageMetadata = response.usageMetadata {
  print("Thoughts Token Count: \(usageMetadata.thoughtsTokenCount)")
}

Kotlin

// ...

val response = model.generateContent("Why is the sky blue?")

response.usageMetadata?.let { usageMetadata ->
    println("Thoughts Token Count: ${usageMetadata.thoughtsTokenCount}")
}

Java

// ...

ListenableFuture<GenerateContentResponse> response =
    model.generateContent("Why is the sky blue?");

Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
    @Override
    public void onSuccess(GenerateContentResponse result) {
        String usageMetadata = result.getUsageMetadata();
        if (usageMetadata != null) {
            System.out.println("Thoughts Token Count: " +
                usageMetadata.getThoughtsTokenCount());
        }
    }

    @Override
    public void onFailure(Throwable t) {
        t.printStackTrace();
    }
}, executor);

Web

// ...

const response = await model.generateContent("Why is the sky blue?");

if (response?.usageMetadata?.thoughtsTokenCount != null) {
    console.log(`Thoughts Token Count: ${response.usageMetadata.thoughtsTokenCount}`);
}

Dart

Tính năng hỗ trợ đếm mã thông báo tư duy cho Flutter sẽ có trong bản phát hành tiếp theo.

Unity

Tính năng hỗ trợ đếm mã thông báo tư duy cho Unity sẽ có trong bản phát hành tiếp theo.

Tìm hiểu thêm về mã thông báo trong hướng dẫn về mã thông báo số lượng.