Các mô hình trong dòng Gemini 2.5 sử dụng "quá trình tư duy" nội bộ giúp cải thiện đáng kể khả năng suy luận và lập kế hoạch nhiều bước, giúp các mô hình này hoạt động hiệu quả cao đối với các nhiệm 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.
Hướng dẫn này cho bạn biết cách làm việc với các chức năng tư duy của Gemini bằng cách sử dụng Gemini API.
Trước khi bắt đầu
Đảm bảo bạn sử dụng mô hình dòng 2.5 được hỗ trợ để suy nghĩ. Bạn có thể sẽ thấy việc khám phá các mô hình này trong AI Studio là rất hữu ích trước khi tìm hiểu API:
- Dùng thử bản xem trước Gemini 2.5 Flash trong AI Studio
- Dùng thử bản xem trước Gemini 2.5 Pro trong AI Studio
Tạo nội dung bằng tư duy
Việc bắt đầu một yêu cầu bằng mô hình tư duy cũng tương tự như mọi yêu cầu tạo nội dung khác. Điểm khác biệt chính nằm ở việc chỉ định một trong các mô hình có hỗ trợ tư duy trong trường model
, như minh hoạ trong ví dụ tạo văn bản sau:
Python
from google import genai
client = genai.Client(api_key="GOOGLE_API_KEY")
prompt = "Explain the concept of Occam's Razor and provide a simple, everyday example."
response = client.models.generate_content(
model="gemini-2.5-flash-preview-05-20",
contents=prompt
)
print(response.text)
JavaScript
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({ apiKey: "GOOGLE_API_KEY" });
async function main() {
const prompt = "Explain the concept of Occam's Razor and provide a simple, everyday example.";
const response = await ai.models.generateContent({
model: "gemini-2.5-flash-preview-05-20",
contents: prompt,
});
console.log(response.text);
}
main();
Go
// import packages here
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("GOOGLE_API_KEY")))
if err != nil {
log.Fatal(err)
}
defer client.Close()
model := client.GenerativeModel("gemini-2.5-flash-preview-05-20")
resp, err := model.GenerateContent(ctx, genai.Text("Explain the concept of Occam's Razor and provide a simple, everyday example."))
if err != nil {
log.Fatal(err)
}
fmt.Println(resp.Text())
}
REST
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-preview-05-20:generateContent?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{
"parts": [
{
"text": "Explain the concept of Occam\''s Razor and provide a simple, everyday example."
}
]
}
]
}'
```
Tóm tắt suy nghĩ (Thử nghiệm)
Tóm tắt suy nghĩ cung cấp thông tin chi tiết về quy trình suy luận nội bộ của mô hình. Tính năng này có thể hữu ích để xác minh phương pháp của mô hình và thông báo cho người dùng trong các tác vụ dài hơn, đặc biệt là khi kết hợp với tính năng truyền trực tuyến.
Bạn có thể bật tính năng tóm tắt suy nghĩ bằng cách đặt includeThoughts
thành true
trong cấu hình yêu cầu. Sau đó, bạn có thể truy cập vào bản tóm tắt bằng cách lặp lại parts
của tham số response
và kiểm tra boolean thought
.
Dưới đây là ví dụ minh hoạ cách bật và truy xuất bản tóm tắt suy nghĩ mà không cần truyền trực tuyến. Thao tác này sẽ trả về một bản tóm tắt suy nghĩ cuối cùng với phản hồi:
Python
from google import genai
from google.genai import types
client = genai.Client(api_key="GOOGLE_API_KEY")
prompt = "What is the sum of the first 50 prime numbers?"
response = client.models.generate_content(
model="gemini-2.5-flash-preview-05-20",
contents=prompt,
config=types.GenerateContentConfig(
thinking_config=types.ThinkingConfig(
include_thoughts=True
)
)
)
for part in response.candidates[0].content.parts:
if not part.text:
continue
if part.thought:
print("Thought summary:")
print(part.text)
print()
else:
print("Answer:")
print(part.text)
print()
JavaScript
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({ apiKey: "GOOGLE_API_KEY" });
async function main() {
const response = await ai.models.generateContent({
model: "gemini-2.5-flash-preview-05-20",
contents: "What is the sum of the first 50 prime numbers?",
config: {
thinkingConfig: {
includeThoughts: true,
},
},
});
for (const part of response.candidates[0].content.parts) {
if (!part.text) {
continue;
}
else if (part.thought) {
console.log("Thoughts summary:");
console.log(part.text);
}
else {
console.log("Answer:");
console.log(part.text);
}
}
}
main();
Go
package main
import (
"context"
"fmt"
"google.golang.org/genai"
"os"
)
func main() {
ctx := context.Background()
client, _ := genai.NewClient(ctx, &genai.ClientConfig{
APIKey: os.Getenv("GOOGLE_API_KEY"),
Backend: genai.BackendGeminiAPI,
})
contents := genai.Text("What is the sum of the first 50 prime numbers?")
model := "gemini-2.5-flash-preview-05-20"
resp, _ := client.Models.GenerateContent(ctx, model, contents, &genai.GenerateContentConfig{
ThinkingConfig: &genai.ThinkingConfig{
IncludeThoughts: true,
},
})
for _, part := range resp.Candidates[0].Content.Parts {
if part.Text != "" {
if part.Thought {
fmt.Println("Thoughts Summary:")
fmt.Println(part.Text)
} else {
fmt.Println("Answer:")
fmt.Println(part.Text)
}
}
}
}
Dưới đây là ví dụ về cách sử dụng tính năng suy nghĩ bằng luồng dữ liệu, tính năng này sẽ trả về bản tóm tắt tăng dần, luân phiên trong quá trình tạo:
Python
from google import genai
from google.genai import types
client = genai.Client(api_key="GOOGLE_API_KEY")
prompt = """
Alice, Bob, and Carol each live in a different house on the same street: red, green, and blue.
The person who lives in the red house owns a cat.
Bob does not live in the green house.
Carol owns a dog.
The green house is to the left of the red house.
Alice does not own a cat.
Who lives in each house, and what pet do they own?
"""
thoughts = ""
answer = ""
for chunk in client.models.generate_content_stream(
model="gemini-2.5-flash-preview-05-20",
contents=prompt,
config=types.GenerateContentConfig(
thinking_config=types.ThinkingConfig(
include_thoughts=True
)
)
):
for part in chunk.candidates[0].content.parts:
if not part.text:
continue
elif part.thought:
if not thoughts:
print("Thoughts summary:")
print(part.text)
thoughts += part.text
else:
if not answer:
print("Thoughts summary:")
print(part.text)
answer += part.text
JavaScript
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({ apiKey: "GOOGLE_API_KEY" });
const prompt = `Alice, Bob, and Carol each live in a different house on the same
street: red, green, and blue. The person who lives in the red house owns a cat.
Bob does not live in the green house. Carol owns a dog. The green house is to
the left of the red house. Alice does not own a cat. Who lives in each house,
and what pet do they own?`;
let thoughts = "";
let answer = "";
async function main() {
const response = await ai.models.generateContentStream({
model: "gemini-2.5-flash-preview-05-20",
contents: prompt,
config: {
thinkingConfig: {
includeThoughts: true,
},
},
});
for await (const chunk of response) {
for (const part of chunk.candidates[0].content.parts) {
if (!part.text) {
continue;
} else if (part.thought) {
if (!thoughts) {
console.log("Thoughts summary:");
}
console.log(part.text);
thoughts = thoughts + part.text;
} else {
if (!answer) {
console.log("Answer:");
}
console.log(part.text);
answer = answer + part.text;
}
}
}
}
await main();
Ngân sách suy nghĩ
Tham số thinkingBudget
cho phép bạn hướng dẫn mô hình về số lượng mã thông báo suy nghĩ mà mô hình có thể sử dụng khi tạo phản hồi. Số lượng mã thông báo cao hơn thường cho phép suy luận chi tiết hơn, điều này có thể có lợi cho việc giải quyết các tác vụ phức tạp hơn.
Nếu bạn không đặt thinkingBudget
, mô hình sẽ tự động điều chỉnh ngân sách dựa trên độ phức tạp của yêu cầu.
thinkingBudget
phải là một số nguyên trong phạm vi0
đến24576
.- Việc đặt ngân sách suy nghĩ thành
0
sẽ tắt tính năng suy nghĩ. - Tuỳ thuộc vào câu lệnh, mô hình có thể vượt quá hoặc không đủ ngân sách mã thông báo.
Python
from google import genai
from google.genai import types
client = genai.Client()
response = client.models.generate_content(
model="gemini-2.5-flash-preview-05-20",
contents="Provide a list of 3 famous physicists and their key contributions",
config=types.GenerateContentConfig(
thinking_config=types.ThinkingConfig(thinking_budget=1024)
),
)
print(response.text)
JavaScript
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({ apiKey: "GOOGLE_API_KEY" });
async function main() {
const response = await ai.models.generateContent({
model: "gemini-2.5-flash-preview-05-20",
contents: "Provide a list of 3 famous physicists and their key contributions",
config: {
thinkingConfig: {
thinkingBudget: 1024,
},
},
});
console.log(response.text);
}
main();
Go
package main
import (
"context"
"fmt"
"google.golang.org/genai"
"os"
)
func main() {
ctx := context.Background()
client, _ := genai.NewClient(ctx, &genai.ClientConfig{
APIKey: os.Getenv("GOOGLE_API_KEY"),
Backend: genai.BackendGeminiAPI,
})
thinkingBudgetVal := int32(1024)
contents := genai.Text("Provide a list of 3 famous physicists and their key contributions")
model := "gemini-2.5-flash-preview-05-20"
resp, _ := client.Models.GenerateContent(ctx, model, contents, &genai.GenerateContentConfig{
ThinkingConfig: &genai.ThinkingConfig{
ThinkingBudget: &thinkingBudgetVal,
},
})
fmt.Println(resp.Text())
}
REST
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-preview-05-20:generateContent?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{
"parts": [
{
"text": "Provide a list of 3 famous physicists and their key contributions"
}
]
}
],
"generationConfig": {
"thinkingConfig": {
"thinkingBudget": 1024
}
}
}'
Giá
Khi tính năng suy nghĩ được bật, giá phản hồi là tổng của mã thông báo đầu ra và mã thông báo suy nghĩ. Bạn có thể lấy tổng số mã thông báo suy nghĩ được tạo từ trường thoughtsTokenCount
.
Python
# ...
print("Thoughts tokens:",response.usage_metadata.thoughts_token_count)
print("Output tokens:",response.usage_metadata.candidates_token_count)
JavaScript
// ...
console.log(`Thoughts tokens: ${response.usageMetadata.thoughtsTokenCount}`);
console.log(`Output tokens: ${response.usageMetadata.candidatesTokenCount}`);
Go
// ...
usageMetadata, err := json.MarshalIndent(response.UsageMetadata, "", " ")
if err != nil {
log.Fatal(err)
}
fmt.Println("Thoughts tokens:", string(usageMetadata.thoughts_token_count))
fmt.Println("Output tokens:", string(usageMetadata.candidates_token_count))
Mô hình tư duy tạo ra các ý nghĩ đầy đủ để cải thiện chất lượng của phản hồi cuối cùng, sau đó xuất ra thông tin tóm tắt để cung cấp thông tin chi tiết về quy trình tư duy. Do đó, giá được tính dựa trên toàn bộ mã thông báo suy nghĩ mà mô hình cần tạo để tạo bản tóm tắt, mặc dù chỉ có bản tóm tắt là đầu ra của API.
Bạn có thể tìm hiểu thêm về mã thông báo trong hướng dẫn Đếm mã thông báo.
Mô hình được hỗ trợ
Bạn có thể tìm thấy tất cả chức năng của mô hình trên trang tổng quan về mô hình.
Mô hình | Tóm tắt suy nghĩ | Ngân sách suy nghĩ |
---|---|---|
Gemini 2.5 Flash | ✔️ | ✔️ |
Gemini 2.5 Pro | ✔️ | X |
Các phương pháp hay nhất
Phần này bao gồm một số hướng dẫn để sử dụng các mô hình tư duy một cách hiệu quả. Như mọi khi, bạn sẽ đạt được kết quả tốt nhất nếu làm theo hướng dẫn và các phương pháp hay nhất về lời nhắc của chúng tôi.
Gỡ lỗi và điều hướng
Xem xét lý do: Khi bạn không nhận được câu trả lời như mong đợi từ các mô hình tư duy, bạn có thể phân tích kỹ lưỡng quá trình suy luận của Gemini. Bạn có thể xem cách trình chạy phân tích tác vụ và đưa ra kết luận, đồng thời sử dụng thông tin đó để sửa đổi nhằm đạt được kết quả chính xác.
Cung cấp hướng dẫn trong quá trình suy luận: Nếu muốn có kết quả đặc biệt dài, bạn nên đưa ra hướng dẫn trong câu lệnh để hạn chế khả năng suy nghĩ mà mô hình sử dụng. Điều này cho phép bạn đặt trước nhiều đầu ra mã thông báo hơn cho phản hồi của mình.
Độ phức tạp của tác vụ
- Tác vụ dễ dàng (Có thể tắt tính năng Tư duy): Đối với các yêu cầu đơn giản không yêu cầu suy luận phức tạp, chẳng hạn như truy xuất thông tin hoặc phân loại, bạn không cần phải suy nghĩ. Ví dụ:
- "DeepMind được thành lập ở đâu?"
- "Email này là để mời họp hay chỉ cung cấp thông tin?"
- Công việc trung bình (Mặc định/Có suy nghĩ): Nhiều yêu cầu phổ biến sẽ được hưởng lợi từ mức độ xử lý từng bước hoặc hiểu biết sâu hơn. Gemini có thể linh hoạt sử dụng khả năng tư duy cho các công việc như:
- So sánh quá trình quang hợp và quá trình lớn lên.
- So sánh và đối chiếu xe điện và xe lai.
- Công việc khó (Khả năng tư duy tối đa): Đối với những thử thách thực sự phức tạp, mô hình cần sử dụng toàn bộ khả năng suy 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ố số nguyên b > 9 mà 17b là một ướ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ả việc xác thực người dùng. Hãy làm cho quá trình này hiệu quả nhất có thể.
Tư duy bằng công cụ và khả năng
Mô hình tư duy hoạt động với tất cả các công cụ và chức năng của Gemini. Điều này cho phép các mô hình tương tác với các hệ thống bên ngoài, thực thi mã hoặc truy cập thông tin theo thời gian thực, kết hợp kết quả vào quá trình suy luận và phản hồi cuối cùng.
Công cụ tìm kiếm cho phép mô hình truy vấn Google Tìm kiếm để tìm thông tin mới nhất hoặc thông tin ngoài dữ liệu huấn luyện. Điều này rất hữu ích đối với các câu hỏi về các sự kiện gần đây hoặc chủ đề rất cụ thể.
Công cụ thực thi mã cho phép mô hình tạo và chạy mã Python để thực hiện các phép tính, thao tác với dữ liệu hoặc giải quyết các vấn đề được xử lý tốt nhất theo thuật toán. Mô hình nhận được kết quả của mã và có thể sử dụng kết quả đó trong phản hồi.
Với đầu ra có cấu trúc, bạn có thể ràng buộc Gemini phản hồi bằng JSON. Điều này đặc biệt hữu ích khi tích hợp đầu ra của mô hình vào các ứng dụng.
Lệnh gọi hàm kết nối mô hình suy nghĩ với các công cụ và API bên ngoài, nhờ đó có thể suy luận về thời điểm gọi hàm phù hợp và tham số cần cung cấp.
Bạn có thể thử các ví dụ về cách sử dụng công cụ có mô hình tư duy trong Sách dạy nấu ăn về tư duy.
Tiếp theo là gì?
Để xem các ví dụ chuyên sâu hơn, chẳng hạn như:
- Sử dụng công cụ có tư duy
- Truyền phát cùng với tư duy
- Điều chỉnh ngân sách suy nghĩ cho nhiều kết quả
và nhiều nội dung khác, hãy thử Sổ tay tư duy của chúng tôi.
Giờ đây, bạn có thể xem thông tin về phạm vi tư duy trong hướng dẫn Tương thích với OpenAI.
Để biết thêm thông tin về Bản dùng thử Gemini 2.5 Pro và tính năng Tư duy Gemini Flash 2.5, hãy truy cập vào trang mô hình.