Reasoning Models
Mô hình suy luận — AI biết nghĩ sâu
Bài toán: 'Có 5 người xếp hàng. An đứng sau Bình, Cường đứng trước An, Dung đứng cuối. Ai đứng thứ 2?' LLM thường trả lời trong 0.5s. Reasoning model nghĩ 30s. Ai đúng hơn?
LLM thường giống một học sinh làm bài trắc nghiệm: đọc câu hỏi, chọn đáp án ngay. Tốc độ là ưu tiên; nhìn pattern tốt sẽ đúng nhanh. Nhưng với bài yêu cầu 5–10 bước suy luận, phương pháp này giống như đoán — đôi khi may mắn, đôi khi sai tinh vi.
Reasoning model giống học sinh làm bài tự luận: đọc đề, viết nháp — đặt biến, lập phương trình, tính từng bước, kiểm tra, sửa nếu sai, rồi mới viết đáp án. Bản nháp đó không dài vì xấu — nó dài vì cần thiết. Giống một người thợ mộc đo hai lần, cắt một lần.
Một cách nhìn khác: hãy nghĩ tới một bác sĩ chẩn đoán. Ca nhẹ (cảm cúm) — nhìn triệu chứng, kê đơn trong 2 phút. Ca phức tạp (triệu chứng mâu thuẫn) — bác sĩ dừng lại, nói to suy nghĩ của mình: "nếu là A thì phải thấy B, nhưng B không có, vậy không phải A; hoặc là C, kiểm tra lại bằng xét nghiệm...". Quá trình đó chính là chain-of-thought.
Bước nhảy vọt của AI không phải là "biết nhiều hơn" mà là biết suy nghĩ. Và giống sinh viên giỏi, reasoning model không cần viết 10 trang cho câu hỏi đơn giản — nó nên biết khi nào dừng. Đây chính là lý do routing (chọn model tuỳ độ khó) là chìa khoá kinh tế trong thực tế.
Nếu không có khả năng suy luận, mô hình chỉ là một bộ nhớ khổng lồ biết pattern — giỏi nhớ, dở tư duy. Reasoning models là bước đầu tiên khiến AI có thể đối mặt với những vấn đề ngoài phân bố training data: các biến thể mới, các kết hợp chưa từng thấy, các bài toán olympic thật sự. Đó là thông điệp lớn nhất của o1, o3 và DeepSeek-R1 trong làn sóng 2024–2025.
Hình minh họa
Bài toán:
Một cửa hàng có 3 loại trà sữa: trân châu, pudding và thạch. Giá trung bình mỗi ly: 35.000đ, 42.000đ, 38.000đ. Hôm nay bán 120 ly, tổng doanh thu 4.620.000đ. Biết số ly pudding bằng tổng số ly trân châu và thạch. Hỏi mỗi loại bán bao nhiêu ly?
LLM thường (GPT-4o)
~ 2s · 180 tkKhoảng 40 ly mỗi loại (vì tổng 120 ly chia đều ≈ 40). Doanh thu trung bình 4.620.000 / 120 ≈ 38.500đ/ly — gần với giá thạch, nên có thể thạch nhiều hơn.
✗ Đoán theo trực giác, không giải hệ phương trình. Kết quả số không khớp ràng buộc pudding = trân châu + thạch.
Reasoning model (o1 / R1)
~ 45s · 15K thinking tokensĐáp án: Trân châu 60, Pudding 60, Thạch 0. Giải bằng hệ phương trình 3 ẩn và kiểm tra chéo cả 3 ràng buộc.
Test-time compute scaling — thinking tokens vs accuracy
So sánh: reasoning vs non-reasoning
OpenAI o1
Thinking tokens ẩn — API trả summary. Train bằng large-scale RL trên reasoning traces.
15,000
300
50×
Non-reasoning LLM
Một forward pass sinh đáp án. Nhanh, rẻ, nhưng dễ sai trên bài nhiều bước. Tốt cho Q&A factual, chat casual, classification.
Reasoning LLM
Sinh thinking trace (100s–1000s tokens) rồi mới answer. Chậm, đắt hơn 10–100×, nhưng vượt trội trên toán, code phức tạp, logic, planning.
LLM thường = thi trắc nghiệm (nhìn câu hỏi, đoán ngay). Reasoning model = thi tự luận (phân tích, viết lời giải, kiểm tra lại). Bước nhảy vọt: AI không chỉ "biết nhiều" mà bắt đầu "biết suy nghĩ". Nhưng giống một sinh viên giỏi, bí quyết là biết khi nào cần dành 10 trang — và khi nào một câu là đủ.
Model reasoning sinh 2.000 thinking tokens + 200 answer tokens cho mỗi câu hỏi. Bạn phục vụ 10.000 requests/ngày. Thinking tokens tốn $0.15/1M, output tokens $0.60/1M. Chi phí thinking vs output?
Bạn xây trợ lý học sinh. Khoảng 80% câu là Q&A factual đơn giản, 20% là bài toán nhiều bước. Chiến lược nào tối ưu chi phí × chất lượng?
Giải thích
Mô hình suy luận (Reasoning Models) như o1/o3 (OpenAI), DeepSeek-R1 và Claude với extended thinking là một paradigm mới: tăng test-time compute (compute tại thời điểm inference) thay vì chỉ tăng training compute. Cốt lõi là sinh chuỗi chain-of-thought nội bộ, rất dài (hàng nghìn đến hàng chục nghìn tokens), trước khi xuất đáp án cuối. DeepSeek-R1 còn được train bằng GRPO — một biến thể PPO không cần critic.
Định nghĩa hình thức. Gọi x là prompt,y là đáp án cuối, z là thinking trace ẩn. LLM thường mô hình:
Reasoning model mô hình có biến ẩn trung gian:
Trong thực tế, thay vì cộng tất cả z, model sample một z bằng autoregressive decoding (có thể hàng nghìn token), rồi condition y trên cả x và z. Khi z đủ dài và đúng hướng, p(y | x, z) chính xác hơn nhiều so với p(y | x) trực tiếp.
Scaling laws cũ vs mới. Trục scaling thứ hai là một trong những phát hiện lớn nhất của o1:
Cơ chế cốt lõi. Bốn "thao tác nhận thức" mà thinking trace cho phép:
- Decomposition: chia bài lớn thành bài con — giải hệ → đặt biến → viết phương trình → thế → rút.
- Self-verification: kiểm tra đáp án vừa tính ngược trở lại các ràng buộc ban đầu.
- Backtracking: phát hiện mâu thuẫn → thử hướng khác thay vì ép đưa ra đáp án sai.
- Analogical reasoning: nhận ra bài này giống một bài khác đã biết → áp dụng công thức / strategy tương tự.
Outcome Reward Model (ORM): chỉ cho reward ở đáp án cuối. Đơn giản, dễ thu data — nhưng model có thể "đoán đúng sai cách", trace kém chất lượng.
Process Reward Model (PRM): chấm điểm từng bước. Dạy model suy nghĩ đúng, không chỉ ra đúng. Nhưng data đắt: cần annotate từng bước trong trace.
Thực tế: kết hợp cả hai — ORM cho bulk data từ test suite, PRM cho data chất lượng cao từ expert annotators.
- "Luôn bật reasoning" là anti-pattern. Câu hỏi factual đơn giản không cần — bạn sẽ tốn 10–100× chi phí mà không được gì.
- Context window bị ăn bởi thinking. Thinking trace nằm trong context → với 100K context limit, reasoning model có thể chỉ còn 50K cho input thực.
- Hallucination trong trace. Model có thể suy luận rất mạch lạc tới một bước sai, rồi xây kết luận trên đó. Trace dài không đảm bảo đúng — chỉ tăng xác suất.
Training pipeline tiêu biểu.
Bước 1: SFT trên corpus thinking trace (có thể từ expert, distilled từ model mạnh, hoặc R1-Zero style — không có SFT, chỉ RL từ base). Bước 2: RL với PRM/ORM — model tự khám phá chiến lược mới, xuất hiện hành vi phản xạ như "wait", "let me check", v.v.
Code mẫu 1 — Claude extended thinking API.
# pip install anthropic
import anthropic
client = anthropic.Anthropic()
# Standard — trả lời nhanh
standard = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[
{"role": "user", "content": "Giải hệ: x+y+z=120; 35x+42y+38z=4620; y=x+z"}
],
)
# Latency ~1s, cost ~$0.01
# Extended thinking — bật thinking budget
reasoning = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=16000,
thinking={
"type": "enabled",
"budget_tokens": 10000, # tối đa 10K thinking tokens
},
messages=[
{"role": "user", "content": "Giải hệ: x+y+z=120; 35x+42y+38z=4620; y=x+z"}
],
)
# Latency ~15s, cost ~$0.30
# Accuracy trên bài logic: 95% vs 55%
# Inspect thinking
for block in reasoning.content:
if block.type == "thinking":
print("THINKING:", block.thinking[:200], "...")
elif block.type == "text":
print("ANSWER:", block.text)
# Tip: dùng stream=True để xem thinking trực tiếp
# Tip: thinking budget càng cao, accuracy càng tăng (đến một ngưỡng)Code mẫu 2 — Routing thông minh. Trong production, routing là đòn bẩy chi phí lớn nhất. Ví dụ heuristic đơn giản phân loại câu hỏi cần reasoning hay không:
import re
from openai import OpenAI
client = OpenAI()
REASONING_TRIGGERS = [
r"\bprove\b", r"\bchứng minh\b", r"\bgiải hệ\b",
r"thuật toán", r"độ phức tạp", r"logic",
r"\d+\s*[+\-*/]\s*\d+", # có biểu thức số học
r"bước", r"tại sao",
]
def needs_reasoning(prompt: str) -> bool:
"""Heuristic: bật reasoning nếu câu hỏi có tín hiệu phân tích."""
low = prompt.lower()
score = sum(1 for pat in REASONING_TRIGGERS if re.search(pat, low))
return score >= 2 or len(prompt) > 400
def answer(prompt: str) -> str:
if needs_reasoning(prompt):
# Câu khó → reasoning model
resp = client.chat.completions.create(
model="o1-mini", # hoặc "o3-mini", "deepseek-reasoner"
messages=[{"role": "user", "content": prompt}],
# o-series không hỗ trợ system prompt & temperature
)
else:
# Câu dễ → fast model
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": prompt}],
temperature=0.3,
)
return resp.choices[0].message.content
# Trong thực tế: thay regex heuristic bằng classifier
# (embedding → logistic regression) để chính xác hơn.Trong thực tế — ứng dụng:
- Toán olympic và PhD-level science: AIME, IMO, GPQA Diamond. Reasoning models đạt mức top student.
- Coding contests: o3 đã đạt điểm gần vàng trên Codeforces, R1 xếp hạng cao trên LiveCodeBench.
- Agent planning: chia mục tiêu lớn thành subgoal, lên kế hoạch nhiều bước, tự kiểm tra tiến độ.
- Legal / medical diagnostics: phân tích dài với nhiều ràng buộc, cần truy vết logic.
Khi nào KHÔNG dùng:
- Câu hỏi factual đơn giản — Q&A, trivia, ngày tháng, định nghĩa.
- Summarization, translation, style transfer — không cần phân tích nhiều bước.
- Latency SLA khắt khe (< 2s) — reasoning model thường mất 10–60s.
- Streaming UX cần token đầu tiên nhanh — thinking làm TTFT (time to first token) tăng 10–100×.
Tương lai gần: kỳ vọng thấy router thông minh hơn (model tự quyết định bật thinking khi nào), thinking có thể "stream" để giảm latency cảm nhận, và các open-weight reasoning models (Qwen-Reasoning, Llama-Reasoning) sẽ khép khoảng cách với o-series.
- Reasoning models (o1, o3, DeepSeek-R1) tăng test-time compute bằng cách sinh chain-of-thought nội bộ trước khi trả lời.
- Scaling law mới: accuracy ∝ log(training compute) + log(test-time compute) — hai trục scaling độc lập.
- Thao tác cốt lõi của thinking trace: decomposition, self-verification, backtracking, analogical reasoning.
- Process Reward Model (PRM) chấm từng bước suy luận — dạy model 'suy nghĩ đúng cách', khác ORM chỉ chấm đáp án.
- GRPO của DeepSeek-R1 bỏ critic network — sample nhóm K output, normalize reward làm advantage, tiết kiệm 30–50% GPU.
- Routing là chìa khoá kinh tế: câu dễ dùng GPT-4o, câu khó dùng reasoning — giảm 5–10× chi phí trung bình.
Kiểm tra hiểu biết
Điểm khác biệt cốt lõi giữa reasoning model (o1, DeepSeek-R1) và LLM thường (GPT-4o)?