Extended Thinking — Để Claude suy luận từng bước minh bạch
Điểm nổi bật
Nhấn để đến mục tương ứng
- 1 Bạn có thể bắt đầu ngay với hướng dẫn chi tiết: Extended Thinking còn gọi là "thinking blocks" là tính năng cho phép Claude dành một phần token budget để suy nghĩ nội. Mỗi bước được thiết kế để giảm thiểu sai sót và tối ưu kết quả từ lần đầu sử dụng.
- 2 Thành thật mà nói: Để bật Extended Thinking, thêm tham số thinking vào API call: import anthropic client = anthropic.Anthropic response =. Phương pháp này hiệu quả trong hầu hết trường hợp, nhưng bạn cần điều chỉnh cho phù hợp ngữ cảnh riêng.
- 3 Điểm nhấn quan trọng: Đây là trade-off giữa chất lượng và chi phí: Budget Tokens Use Case Chi phí tương đối 1,000 - 3,000 Câu hỏi đơn giản,. Đây là phần mang lại giá trị thực tiễn cao nhất trong toàn bài viết.
- 4 Bạn có thể bắt đầu ngay với hướng dẫn chi tiết: Toán học và khoa học Extended Thinking shine nhất với bài toán nhiều bước: problem = """ Một bể nước hình trụ có đường. Mỗi bước được thiết kế để giảm thiểu sai sót và tối ưu kết quả từ lần đầu sử dụng.
- 5 Thành thật mà nói: Extended Thinking hỗ trợ streaming để hiển thị quá trình suy luận real-time: with client.messages.stream. Phương pháp này hiệu quả trong hầu hết trường hợp, nhưng bạn cần điều chỉnh cho phù hợp ngữ cảnh riêng.
Một trong những hạn chế lớn nhất của LLM truyền thống là hộp đen — bạn đặt câu hỏi, nhận câu trả lời, nhưng không biết Claude đã suy nghĩ gì ở giữa. Extended Thinking phá vỡ rào cản đó: Claude hiển thị toàn bộ quá trình suy luận trước khi đưa ra kết luận cuối cùng.
Tính năng này đặc biệt mạnh mẽ với các bài toán đòi hỏi multi-step reasoning: toán học, logic, phân tích dữ liệu, hoặc bất kỳ tình huống nào mà "suy nghĩ to" dẫn đến kết quả tốt hơn.
Extended Thinking là gì?
Extended Thinking (còn gọi là "thinking blocks") là tính năng cho phép Claude dành một phần token budget để suy nghĩ nội bộ trước khi trả lời. Khi bạn bật tính năng này:
- Claude tạo ra một "thinking block" chứa quá trình suy luận thô
- Thinking block này được hiển thị tách biệt với response chính thức
- Final answer dựa trên reasoning đã được thực hiện trong thinking block
- Bạn có thể đọc thinking block để hiểu tại sao Claude đưa ra kết luận đó
Điều quan trọng: thinking tokens không tính vào context window của conversation theo cách thông thường — chúng là "scratch space" riêng của Claude.
Kích hoạt Extended Thinking qua API
Để bật Extended Thinking, thêm tham số thinking vào API call:
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-5",
max_tokens=16000,
thinking={
"type": "enabled",
"budget_tokens": 10000 # Số token dành cho suy luận
},
messages=[{
"role": "user",
"content": "Giải bài toán này: Một đoàn tàu dài 200m chạy với vận tốc 60km/h. Hỏi tàu mất bao nhiêu giây để qua một cây cầu dài 1.5km?"
}]
)
# Response chứa cả thinking blocks và text blocks
for block in response.content:
if block.type == "thinking":
print("=== THINKING ===")
print(block.thinking)
elif block.type == "text":
print("=== ANSWER ===")
print(block.text)
Output sẽ trông như thế này:
=== THINKING ===
Bài toán này liên quan đến chuyển động đều.
- Chiều dài đoàn tàu: 200m = 0.2km
- Chiều dài cầu: 1.5km
- Tổng quãng đường tàu cần đi để HOÀN TOÀN qua cầu =
chiều dài cầu + chiều dài tàu = 1.5 + 0.2 = 1.7km
- Vận tốc: 60km/h = 60000m/3600s = 16.67 m/s
- Thời gian = quãng đường / vận tốc = 1700m / 16.67 m/s ≈ 102 giây
=== ANSWER ===
Đoàn tàu mất khoảng **102 giây** để qua cầu hoàn toàn.
Cách tính:
- Tổng quãng đường = 1.5km + 0.2km = 1.7km = 1700m
- Vận tốc = 60km/h ≈ 16.67 m/s
- Thời gian = 1700 ÷ 16.67 ≈ 102 giây
Budget Tokens — Điều chỉnh độ sâu suy luận
Tham số budget_tokens quyết định "ngân sách tư duy" của Claude. Đây là trade-off giữa chất lượng và chi phí:
| Budget Tokens | Use Case | Chi phí tương đối |
|---|---|---|
| 1,000 - 3,000 | Câu hỏi đơn giản, cần một chút reasoning | Thấp |
| 5,000 - 10,000 | Phân tích trung bình, toán học cơ bản | Trung bình |
| 10,000 - 32,000 | Bài toán phức tạp, multi-step logic | Cao |
| 32,000+ | Research-level problems, proofs, architecture | Rất cao |
Lưu ý quan trọng: max_tokens phải lớn hơn budget_tokens — vì max_tokens bao gồm cả thinking tokens lẫn response tokens.
# Đúng: max_tokens > budget_tokens
response = client.messages.create(
model="claude-opus-4-5",
max_tokens=20000, # Tổng token tối đa
thinking={
"type": "enabled",
"budget_tokens": 15000 # Token dành cho thinking
},
...
)
# Sai: sẽ gây lỗi
response = client.messages.create(
max_tokens=5000,
thinking={"type": "enabled", "budget_tokens": 10000}, # Lỗi!
...
)
Đọc và xử lý Thinking Content
Response từ Extended Thinking có cấu trúc phức tạp hơn. Bạn cần xử lý nhiều loại block:
def process_thinking_response(response):
thinking_content = []
text_content = []
for block in response.content:
if block.type == "thinking":
thinking_content.append({
"type": "thinking",
"text": block.thinking,
"tokens": len(block.thinking.split()) # Ước tính
})
elif block.type == "text":
text_content.append({
"type": "text",
"text": block.text
})
return {
"thinking": thinking_content,
"answer": text_content,
"total_thinking_chars": sum(
len(t["text"]) for t in thinking_content
)
}
result = process_thinking_response(response)
print(f"Claude đã suy nghĩ {result['total_thinking_chars']} ký tự")
print(f"Câu trả lời: {result['answer'][0]['text']}")
Use Cases tốt nhất cho Extended Thinking
1. Toán học và khoa học
Extended Thinking shine nhất với bài toán nhiều bước:
problem = """
Một bể nước hình trụ có đường kính 3m và chiều cao 4m.
Nước được bơm vào với tốc độ 500 lít/phút.
Nước chảy ra qua van đáy với tốc độ phụ thuộc độ cao:
Q_out = 200 * sqrt(h) lít/phút (h là chiều cao nước tính bằng mét).
Hỏi: Mực nước ổn định (equilibrium) là bao nhiêu?
"""
response = client.messages.create(
model="claude-opus-4-5",
max_tokens=8000,
thinking={"type": "enabled", "budget_tokens": 5000},
messages=[{"role": "user", "content": problem}]
)
2. Logic và Reasoning
logic_puzzle = """
Có 5 người sống trong 5 căn nhà màu khác nhau.
Mỗi người có quốc tịch khác nhau, uống loại đồ uống khác nhau,
hút loại thuốc khác nhau, và nuôi con vật khác nhau.
1. Người Anh sống trong nhà màu đỏ.
2. Người Thụy Điển nuôi chó.
3. Người Đan Mạch uống trà.
[... các gợi ý tiếp theo ...]
Ai nuôi cá?
"""
3. Code Review và Architecture
code_review_prompt = """
Review kiến trúc microservices này và chỉ ra:
1. Single points of failure
2. Bottlenecks tiềm ẩn
3. Security vulnerabilities
4. Cải tiến đề xuất
[Paste system diagram hoặc code ở đây]
"""
4. Phân tích văn bản phức tạp
analysis_prompt = """
Phân tích hợp đồng pháp lý này và xác định:
- Các điều khoản bất lợi cho bên B
- Ambiguities có thể gây tranh chấp
- Missing clauses thông thường trong loại hợp đồng này
- Rủi ro pháp lý chính
[Nội dung hợp đồng]
"""
Streaming với Extended Thinking
Extended Thinking hỗ trợ streaming để hiển thị quá trình suy luận real-time:
with client.messages.stream(
model="claude-opus-4-5",
max_tokens=16000,
thinking={"type": "enabled", "budget_tokens": 10000},
messages=[{"role": "user", "content": "Phân tích chiến lược kinh doanh..."}]
) as stream:
for event in stream:
if hasattr(event, 'type'):
if event.type == 'content_block_start':
if hasattr(event.content_block, 'type'):
if event.content_block.type == 'thinking':
print("
[Bắt đầu suy luận...]")
elif event.content_block.type == 'text':
print("
[Câu trả lời:]")
elif event.type == 'content_block_delta':
if hasattr(event.delta, 'thinking'):
print(event.delta.thinking, end='', flush=True)
elif hasattr(event.delta, 'text'):
print(event.delta.text, end='', flush=True)
Khi nào KHÔNG nên dùng Extended Thinking?
Extended Thinking không phải silver bullet. Tránh dùng khi:
- Câu hỏi đơn giản — "Thủ đô Việt Nam là gì?" không cần 10,000 thinking tokens
- Latency critical — Chatbot real-time, autocomplete — thinking thêm delay đáng kể
- Budget nhạy cảm — Thinking tokens tốn kém như output tokens; với volume cao, chi phí tăng gấp đôi
- Simple extraction tasks — Extract JSON từ text, format conversion — không cần reasoning
Tổng kết
Extended Thinking là công cụ mạnh mẽ khi bạn cần Claude xử lý các bài toán phức tạp với độ chính xác cao. Key takeaways:
- Bật bằng tham số
thinking: {type: "enabled", budget_tokens: N} -
max_tokensphải lớn hơnbudget_tokens - Thinking blocks tách biệt với response — bạn có thể đọc hoặc bỏ qua
- Hiệu quả nhất với: toán học, logic, phân tích phức tạp, code review
- Không cần thiết cho câu hỏi đơn giản hoặc latency-critical apps
Bước tiếp theo: Khám phá Extended Thinking kết hợp Tool Use — khi Claude vừa suy luận sâu vừa gọi external tools để giải quyết bài toán phức tạp hơn.
Bài viết liên quan
Bai viet co huu ich khong?
Bản quyền thuộc về tác giả. Vui lòng dẫn nguồn khi chia sẻ.


