Trung cấpHướng dẫnClaude APINguồn: Anthropic

Extended Thinking — Để Claude suy luận từng bước minh bạch

Nghe bài viết
00:00

Điểm nổi bật

Nhấn để đến mục tương ứng

  1. 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. 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. 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. 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. 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.
blue and white abstract painting

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_tokens phải lớn hơn budget_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

Tính năng liên quan:Extended ThinkingReasoningBudget TokensAPI

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

Bình luận (0)
Ảnh đại diện
Đăng nhập để bình luận...
Đăng nhập để bình luận
  • Đang tải bình luận...

Đăng ký nhận bản tin

Nhận bài viết hay nhất về sản phẩm và vận hành, gửi thẳng vào hộp thư của bạn.

Bảo mật thông tin. Hủy đăng ký bất cứ lúc nào. Chính sách bảo mật.