Kỹ thuật Prompt Engineering nâng cao: CoT, ToT và Directional Stimulus
Phân tích cơ chế suy luận logic của Chain-of-Thought (CoT), Tree-of-Thoughts (ToT) và Directional Stimulus Prompting (DSP); kèm mã nguồn Python cài đặt thuật toán tìm kiếm cây ToT có cắt tỉa, kịch bản Design Review BrSE và liên kết Sổ tay.
高度なプロンプトエンジニアリング:CoT・ToT・Directional Stimulusによる論理的推論と出力制御
Bối cảnh và giả định: Trong một dự án phát triển giải pháp AI cho tập đoàn tài chính – công nghệ Nhật Bản, nhóm kỹ sư phụ trách xây dựng module tự động hóa thẩm định hồ sơ giải ngân và phân tích rủi ro hợp đồng phức tạp. Với cách tiếp cận Direct Prompting (Input → Output một lượt), mô hình ngôn ngữ lớn (LLM) liên tục gặp phải lỗi suy luận vội vàng, bỏ sót các ràng buộc pháp lý chéo hoặc “bịa” kết quả tính toán tài chính. Nhóm quyết định chuyển dịch sang các kỹ thuật Prompt Engineering nâng cao, kết hợp Chain-of-Thought (CoT), Tree-of-Thoughts (ToT) và Directional Stimulus Prompting (DSP) nhằm phân rã chuỗi logic, mở rộng không gian tìm kiếm giải pháp và kiểm soát chặt chẽ hướng đi của mô hình.
Bài viết thuộc nhóm chuyên đề AI & Machine Learning, dành riêng cho Senior Software Engineers, Tech Leads, Solution Architects và BrSE (Kỹ sư cầu nối). Người đọc cần nắm vững cơ chế sinh token tự hồi quy (Autoregressive Generation) của Transformer, cấu trúc prompt cơ bản và các thuật toán tìm kiếm đồ thị/cây (BFS, DFS). Toàn bộ ví dụ mã nguồn, kịch bản hội thoại tiếng Nhật và tình huống nghiệp vụ trong bài đều được tự biên soạn phục vụ mục đích đào tạo và chia sẻ kỹ thuật.
Sau khi đọc xong bài viết, người đọc sẽ đạt được ba kết quả thiết thực:
- Hiểu rõ bản chất toán học và cơ chế vận hành của CoT, ToT và DSP: Nắm vững vì sao việc kéo dài chuỗi token trung gian (compute-time scaling) lại kích hoạt năng lực suy luận của LLM, và cách ToT biến bài toán sinh văn bản thành bài toán tìm kiếm cây có đánh giá trạng thái và quay lui (backtracking).
- Làm chủ mã nguồn thuật toán ToT Engine: Tự tay triển khai và kiểm chứng một công cụ tìm kiếm cây suy luận bằng Python thuần túy, có cơ chế sinh nhánh (Thought Generation), hàm chấm điểm heuristic (State Evaluation) và cắt tỉa nhánh cụt (Pruning).
- Thực hành giao tiếp và bảo vệ giải pháp kiến trúc bằng tiếng Nhật: Biết cách giải thích trade-off giữa độ trễ, chi phí token và độ chính xác suy luận trong buổi Design Review với khách hàng Nhật Bản theo phong cách BrSE chuyên nghiệp.
Key Takeaways: Khả năng suy luận của LLM không nằm ở việc “hiểu” vấn đề trong một bước lan truyền thuận, mà nằm ở quá trình mở rộng chuỗi suy nghĩ $P(Y|X) = \sum_Z P(Y|X, Z) P(Z|X)$. CoT mang lại chuỗi suy luận tuyến tính nhưng dễ gãy nếu bước đầu sai; ToT khắc phục điều này bằng cách duyệt không gian cây đa nhánh và cắt tỉa; trong khi Directional Stimulus đóng vai trò “hoa tiêu” bơm từ khóa định hướng để giữ mô hình không bị lạc đề.
Hero image là sơ đồ khái niệm SVG 1200×675 do BrSE.vn tự vẽ, phát hành theo giấy phép CC0 1.0. Alt của ảnh là tiêu đề bài viết.
1. Đặt vấn đề và bối cảnh thực tế — なぜ必要なのか
Trong các ứng dụng GenAI thực tế, một sai lầm phổ biến của các đội ngũ kỹ thuật là đối xử với LLM như một hàm toán học một bước: đưa vào một đoạn văn bản yêu cầu phức tạp và kỳ vọng mô hình lập tức trả về đáp án cuối cùng.
Hãy xem xét một bài toán thẩm định hồ sơ tín dụng doanh nghiệp tại Nhật Bản:
“Một doanh nghiệp vừa và nhỏ (SME) nộp hồ sơ xin vay 80 triệu Yên. Báo cáo tài chính năm gần nhất ghi nhận: Doanh thu thuần 500 triệu Yên, Lợi nhuận trước thuế và lãi vay (EBITDA) 40 triệu Yên, Nợ vay hiện tại 120 triệu Yên. Quy chế tín dụng quy định: Tỷ lệ Nợ vay/EBITDA sau giải ngân không được vượt quá 4.5 lần, và chi phí lãi vay không chiếm quá 30% lợi nhuận hoạt động với lãi suất thả nổi dự kiến 2.5%/năm. Hồ sơ này có đủ điều kiện phê duyệt không?”
Khi câu hỏi này được đưa vào mô hình qua một câu prompt thông thường (Direct Prompting):
System: Bạn là chuyên gia thẩm định tín dụng. Hãy cho biết hồ sơ trên có đủ điều kiện phê duyệt không.
Mô hình rất dễ đưa ra câu trả lời vội vã: “Hồ sơ đủ điều kiện phê duyệt vì doanh thu 500 triệu Yên đủ sức chi trả nợ”. Đây là một kết luận sai sót nghiêm trọng vì:
- Tổng nợ sau giải ngân là $120 + 80 = 200$ triệu Yên.
- Tỷ lệ Nợ/EBITDA mới là $200 / 40 = 5.0$ lần, vượt quá ngưỡng trần 4.5 lần.
Giới hạn bản chất của Direct Prompting
Mô hình ngôn ngữ hoạt động theo cơ chế dự đoán token kế tiếp: $$P(y_1, y_2, \dots, y_T | X) = \prod_{t=1}^T P(y_t | X, y_1, \dots, y_{t-1})$$
Khi chúng ta yêu cầu LLM đưa ra kết luận ngay từ những token đầu tiên, mô hình bị ép phải “cam kết” vào một câu trả lời (ví dụ: phát sinh token "Đủ" hoặc "Không đủ") trước khi nó có cơ hội thực hiện các phép tính trung gian trong không gian tiềm ẩn. Khi token đầu tiên đã phát sinh sai, cơ chế tự hồi quy sẽ buộc các token tiếp theo phải tìm cách “hợp lý hóa” cho sai lầm đó, dẫn đến hiện tượng ảo giác ngụy biện (Confabulation).
Nhu cầu về các kỹ thuật suy luận nâng cao
- Chain-of-Thought (CoT): Bắt buộc mô hình sinh ra chuỗi lý giải trung gian $Z = (z_1, z_2, \dots, z_k)$ trước khi đưa ra câu trả lời cuối cùng $Y$. Việc sinh thêm token trung gian đóng vai trò như một dạng tính toán mở rộng tại thời điểm suy luận (Inference-time Compute), giúp mô hình có không gian bộ nhớ làm việc (Working Memory) để tính toán từng bước.
- Tree-of-Thoughts (ToT): CoT giải quyết tốt bài toán tuyến tính, nhưng trong các bài toán lập kế hoạch (Planning), thiết kế kiến trúc hoặc tối ưu hóa chiến lược, con người không bao giờ suy nghĩ theo một đường thẳng duy nhất. Chúng ta liên tục đưa ra các giả thuyết (Hypotheses), đánh giá rủi ro từng phương án và sẵn sàng quay lui (Backtracking) khi phát hiện nhánh cụt. ToT chính thức hóa quy trình này trên LLM.
- Directional Stimulus Prompting (DSP): Trong các tài liệu chính sách đồ sộ, LLM rất dễ bị trôi dạt ngữ cảnh (Context Drift). Thay vì nhồi nhét hàng nghìn từ quy định vào prompt, kỹ thuật DSP sử dụng một bộ điều hướng nhỏ (Directional Stimulus) để bơm vào prompt các từ khóa hoặc gợi ý then chốt, giúp LLM định hướng sự chú ý (Attention Steering) vào đúng điều khoản cần đối chiếu.
Góc nhìn BrSE (Bridge System Engineer):
- Khách hàng quan tâm điều gì? Đối tác Nhật Bản không chấp nhận các câu trả lời dạng “hộp đen”. Họ yêu cầu tính minh bạch logic (Explainability): Tại sao hệ thống từ chối hồ sơ? Căn cứ vào công thức nào? Có bao nhiêu kịch bản đã được rà soát?
- Điểm còn mơ hồ: Khách hàng thường phàn nàn “AI trả lời thiếu nhất quán” nhưng không rõ nguyên nhân là do nhiệt độ lấy mẫu (Temperature), do thiếu ngữ cảnh hay do cấu trúc prompt.
- Nội dung cần thống nhất: Cần làm rõ với khách hàng rằng việc áp dụng CoT/ToT sẽ làm tăng số lượng token đầu ra, kéo theo chi phí API và độ trễ phản hồi (Response Latency) tăng lên; do đó cần thống nhất phân loại câu hỏi nào dùng CoT và câu hỏi nào cần đến ToT.
2. Bản chất kỹ thuật và cơ chế hoạt động — 仕組みを理解する
2.1. Phân tích ba trụ cột Prompt Engineering nâng cao
1. Chain-of-Thought (Chuỗi suy luận - CoT)
Được đề xuất bởi Wei và cộng sự (Google Research, 2022), CoT biến đổi phân phối xác suất từ $P(Y|X)$ thành: $$P(Y|X) = \sum_{Z} P(Y|X, Z) P(Z|X)$$ Trong đó $Z$ là chuỗi các bước suy nghĩ (rationales).
- Zero-shot CoT: Kích hoạt đơn giản bằng câu thần chú:
"Let's think step by step"(Hãy suy nghĩ từng bước một). Câu đệm này thay đổi phân phối xác suất ưu tiên sinh ra các liên từ logic (Trước hết,Tiếp theo,Do đó) thay vì kết luận ngay. - Few-shot CoT: Đưa vào prompt từ 2-3 ví dụ mẫu gồm cả câu hỏi, các bước phân tích chi tiết và đáp án. Đây là kỹ thuật hiệu quả nhất để ép mô hình tuân thủ định dạng lập luận mong muốn.
2. Tree-of-Thoughts (Cây suy luận - ToT)
Được đề xuất bởi Yao và cộng sự (Princeton/Google DeepMind, 2023), ToT mở rộng CoT bằng cách coi quá trình giải quyết vấn đề như một bài toán tìm kiếm trên cây (Tree Search):
- Phân rã suy nghĩ (Thought Decomposition): Mỗi nút (Node) trên cây đại diện cho một bước suy nghĩ trung gian (ví dụ: một phương án thiết kế kiến trúc, một phép tính tài chính).
- Bộ sinh suy nghĩ (Thought Generator): Từ trạng thái hiện tại, sinh ra $b$ suy nghĩ kế tiếp ứng viên (Branching Factor $b$, thường từ 2 đến 5).
- Bộ đánh giá trạng thái (State Evaluator): LLM tự đánh giá tính khả thi của từng nhánh thông qua việc phân loại (
Chắc chắn/Khả thi/Bất khả thi) hoặc chấm điểm heuristic từ0.0đến1.0. - Thuật toán tìm kiếm (Search Algorithm): Áp dụng Breadth-First Search (BFS) để tìm giải pháp tối ưu toàn cục, hoặc Depth-First Search (DFS) có cơ chế quay lui (Backtracking) để dừng sớm các nhánh không đạt tiêu chuẩn (Pruning).
3. Directional Stimulus Prompting (Kích thích định hướng - DSP)
Được đề xuất bởi Li và cộng sự (2023), DSP khắc phục nhược điểm của các prompt cố định dài dòng. Một mô hình nhỏ được huấn luyện riêng (hoặc một bộ quy tắc nghiệp vụ/metadata) sẽ tạo ra một đoạn gợi ý ngắn (Stimulus Hint) đóng vai trò như “từ khóa định hướng” đưa vào prompt chính của LLM lớn: $$\text{Prompt} = \text{Context} + \text{Directional Stimulus} + \text{Query}$$ Nhờ đó, LLM lớn biết chính xác cần phải ưu tiên tập trung vào tiêu chí nào (ví dụ: “Tập trung kiểm tra giới hạn nợ 4.5x”), giúp câu trả lời đạt độ chính xác cao mà không bị phân tâm bởi các thông tin nhiễu khác trong văn bản.
2.2. Sơ đồ luồng thực thi: Tree-of-Thoughts kết hợp Directional Stimulus
Dưới đây là sơ đồ kiến trúc và luồng dữ liệu chi tiết của hệ thống suy luận kết hợp ToT và Directional Stimulus:
Sơ đồ luồng kiểm soát suy luận: Yêu cầu nghiệp vụ được bổ sung Directional Stimulus để định hướng trọng tâm; sau đó đưa vào Search Engine của Tree of Thoughts để sinh các nhánh suy nghĩ, đánh giá trạng thái và cắt tỉa nhánh cụt trước khi tổng hợp câu trả lời cuối cùng.
2.3. Theo dấu một bài toán qua từng bước (Execution Trace)
Hãy theo dõi cách hệ thống xử lý hồ sơ tín dụng 80 triệu Yên nêu trên:
- Bước 1 (Directional Stimulus): Module tiền xử lý nhận diện đây là bài toán thẩm định hạn mức vay, lập tức kích hoạt Directional Stimulus:
[Directional Hint]: Bắt buộc tính tỷ lệ Tổng nợ / EBITDA sau giải ngân và so sánh với ngưỡng trần 4.5 lần. - Bước 2 (Khởi tạo cây ToT - Depth 1): Mô hình sinh ra 2 nhánh tiếp cận:
- Nhánh 1A: Đánh giá khả năng sinh lời dựa trên doanh thu 500M JPY. (Điểm đánh giá:
0.40- Không bám sát trọng tâm rủi ro nợ). - Nhánh 1B: Tính toán tổng dư nợ và đòn bẩy tài chính sau giải ngân. (Điểm đánh giá:
0.90- Điểm cao, bám sát Hint).
- Nhánh 1A: Đánh giá khả năng sinh lời dựa trên doanh thu 500M JPY. (Điểm đánh giá:
- Bước 3 (Cắt tỉa & Mở rộng - Depth 2): Nhánh 1A bị cắt tỉa (Pruned). Hệ thống chỉ mở rộng từ nút 1B:
- Nhánh 2A: Tổng nợ mới $= 120 + 80 = 200$M JPY. Tỷ lệ Nợ/EBITDA $= 200 / 40 = 5.0$ lần. (Điểm:
0.95). - Nhánh 2B: Chỉ tính chi phí lãi vay trên khoản vay mới $80 \times 2.5% = 2.0$M JPY. (Điểm:
0.50).
- Nhánh 2A: Tổng nợ mới $= 120 + 80 = 200$M JPY. Tỷ lệ Nợ/EBITDA $= 200 / 40 = 5.0$ lần. (Điểm:
- Bước 4 (Kết luận tại Depth 3): Từ nhánh 2A, hệ thống so sánh $5.0 > 4.5$ và rút ra kết luận từ chối hồ sơ kèm lý do vi phạm điều kiện đòn bẩy tài chính.
Cuối mục này, hãy xem xét một đoạn giải thích kỹ thuật ngắn gồm 4 câu mà BrSE có thể dùng trong buổi họp với đối tác Nhật Bản:
単純なプロンプトでは、LLMが計算過程を経ずに早急な結論を出してしまい、財務指標の判定ミスが多発しておりました。そこで当社は、思考の連鎖(CoT)と思考木(ToT)を導入し、推論ステップを構造化されたツリーとして展開する設計に改めました。各ステップでヒューリスティックな状態評価を行い、不適切な分岐を枝刈りすることで、ハルシネーションを防ぎながら最適解へ収束させます。さらに、方向性刺激(Directional Stimulus)を付与することで、審査基準から外れない正確な回答を確実に得られるようにいたします。
Bản dịch tiếng Việt:
Với prompt đơn giản trước đây, LLM thường đưa ra kết luận vội vàng mà không trải qua quá trình tính toán, dẫn đến phát sinh nhiều sai sót trong việc đánh giá chỉ số tài chính. Do đó, chúng tôi đã cải tiến thiết kế sang việc áp dụng Chain-of-Thought (CoT) và Tree-of-Thoughts (ToT) để triển khai các bước suy luận dưới dạng một cây có cấu trúc. Tại mỗi bước, hệ thống thực hiện đánh giá trạng thái và cắt tỉa các nhánh không phù hợp, giúp ngăn chặn ảo giác và hội tụ về lời giải tối ưu. Thêm vào đó, việc bổ sung Directional Stimulus bảo đảm hệ thống luôn bám sát tiêu chuẩn thẩm định và tạo ra câu trả lời chính xác.
3. Hiện thực hóa kỹ thuật — 実装する
3.1. Môi trường và cách chạy
Để kiểm chứng thuật toán ToT và DSP mà không phụ thuộc vào kết nối mạng hay khóa API tốn phí, chúng tôi xây dựng một công cụ tìm kiếm cây suy luận bằng Python 3 thuần túy (Standard Library):
- Yêu cầu môi trường: Python 3.10 trở lên.
- Thư viện sử dụng:
dataclasses,typing,re. Không sử dụng thêm bất kỳ thư viện bên thứ ba nào. - Cấu trúc thành phần:
ThoughtNode: Nút đại diện cho một bước suy nghĩ, lưu trữ điểm số, độ sâu và liên kết cha-con.TreeOfThoughtsEngine: Bộ điều khiển tìm kiếm theo thuật toán BFS, tự động tính toán điểm số và cắt tỉa (pruning) các nhánh có điểm dưới ngưỡngmin_score_threshold.DirectionalStimulusEngine: Bộ quản lý và tự động tiêm các gợi ý định hướng vào prompt dựa trên từ khóa câu hỏi.
3.2. Triển khai ban đầu: Direct Prompting thiếu căn cứ
Khi người dùng chỉ gửi một câu prompt đơn giản mà không có cấu trúc suy luận:
query = "Tính toán dư nợ và thẩm định hồ sơ vay 80 triệu Yên"
# Mô phỏng Direct Generation: mô hình sinh ngay câu trả lời
direct_answer = "Hồ sơ được phê duyệt dựa trên doanh thu tốt."
# Kết quả: Sai sót logic nghiêm trọng, không có số liệu chứng minh
3.3. Triển khai cải tiến: ToT Search Engine hoàn chỉnh bằng Python
Dưới đây là mã nguồn Python đầy đủ của công cụ ToT kết hợp Directional Stimulus:
"""
Mã nguồn cài đặt Tree-of-Thoughts (ToT) và Directional Stimulus Prompting
Ngôn ngữ: Python 3 thuần túy (Không phụ thuộc external packages)
"""
from dataclasses import dataclass, field
from typing import List, Dict, Optional, Tuple, Callable
import re
# ==============================================================================
# 1. Cấu trúc dữ liệu Tree-of-Thoughts
# ==============================================================================
@dataclass
class ThoughtNode:
thought_id: str
text: str
score: float # Thang điểm từ 0.0 (Bất khả thi) đến 1.0 (Chắc chắn/Khả thi)
depth: int
parent: Optional['ThoughtNode'] = None
children: List['ThoughtNode'] = field(default_factory=list)
@property
def is_valid(self) -> bool:
return self.score >= 0.5
class TreeOfThoughtsEngine:
def __init__(self, branching_factor: int = 3, max_depth: int = 3, min_score_threshold: float = 0.5):
self.branching_factor = branching_factor
self.max_depth = max_depth
self.min_score_threshold = min_score_threshold
def search_best_path(
self,
initial_state: str,
generate_fn: Callable[[str, int], List[Tuple[str, float]]]
) -> Tuple[Optional[ThoughtNode], List[str]]:
"""
Duyệt không gian suy nghĩ bằng thuật toán BFS kết hợp cắt tỉa (Pruning).
Trả về nút lá có điểm số cao nhất và toàn bộ đường dẫn suy luận từ gốc.
"""
root = ThoughtNode(thought_id="root", text=initial_state, score=1.0, depth=0)
frontier: List[ThoughtNode] = [root]
best_leaf: Optional[ThoughtNode] = None
max_leaf_score = -1.0
for current_depth in range(1, self.max_depth + 1):
next_frontier: List[ThoughtNode] = []
for node in frontier:
# 1. Sinh các nhánh suy nghĩ con (Thought Generation)
candidates = generate_fn(node.text, current_depth)
for i, (thought_text, score) in enumerate(candidates[:self.branching_factor]):
child_id = f"{node.thought_id}.{i+1}"
child = ThoughtNode(
thought_id=child_id,
text=thought_text,
score=score,
depth=current_depth,
parent=node
)
node.children.append(child)
# 2. Đánh giá trạng thái và Cắt tỉa (State Evaluation & Pruning)
if child.score >= self.min_score_threshold:
next_frontier.append(child)
if current_depth == self.max_depth and child.score > max_leaf_score:
max_leaf_score = child.score
best_leaf = child
if not next_frontier:
# Dừng sớm nếu toàn bộ các nhánh con đều rơi vào ngõ cụt
break
frontier = next_frontier
# Truy vết đường đi từ nút lá tối ưu ngược về gốc (Backtracking Trace)
path: List[str] = []
curr = best_leaf
while curr:
path.append(f"[{curr.thought_id}] (Score: {curr.score:.2f}) {curr.text}")
curr = curr.parent
path.reverse()
return best_leaf, path
# ==============================================================================
# 2. Bộ điều khiển Directional Stimulus Prompting (DSP)
# ==============================================================================
class DirectionalStimulusEngine:
def __init__(self):
self.rule_stimuli: Dict[str, str] = {}
def register_stimulus(self, keyword_pattern: str, stimulus_hint: str):
"""Đăng ký gợi ý định hướng tương ứng với mẫu từ khóa."""
self.rule_stimuli[keyword_pattern.lower()] = stimulus_hint
def generate_stimulus(self, user_query: str) -> Optional[str]:
q_lower = user_query.lower()
matched_hints = []
for kw, hint in self.rule_stimuli.items():
if re.search(r'\b' + re.escape(kw) + r'\b', q_lower):
matched_hints.append(hint)
if not matched_hints:
return None
return " | ".join(matched_hints)
def format_prompt(self, query: str, base_context: str) -> str:
stimulus = self.generate_stimulus(query)
if stimulus:
return (
f"[Ngữ cảnh]: {base_context}\n"
f"[Định hướng trọng tâm - Directional Stimulus]: {stimulus}\n"
f"[Câu hỏi]: {query}\n"
f"[Yêu cầu]: Hãy suy luận từng bước và ưu tiên đối chiếu điều kiện tại [Định hướng trọng tâm]."
)
return f"[Ngữ cảnh]: {base_context}\n[Câu hỏi]: {query}"
3.4. Cách kiểm chứng và kết quả đo lường
Bộ kiểm thử gồm 5 kịch bản đã được thực hiện để xác nhận tính đúng đắn của giải pháp:
| Kịch bản kiểm thử | Mục tiêu kiểm chứng | Kết quả đạt được |
|---|---|---|
| Test 1: Linear CoT | Kiểm tra cấu trúc phân rã bước tính toán số học | Chia tách thành công 3 bước tính chi phí token, kết quả chính xác 0.27 USD. |
| Test 2: ToT Exploration & Pruning | Duyệt cây tìm kiếm phương án kiến trúc qua 3 cấp độ | Nút tối ưu đạt điểm 0.95 (Microservices -> Kubernetes -> Service Mesh); loại bỏ hoàn toàn các nhánh điểm dưới 0.60. |
| Test 3: Directional Stimulus | Khả năng tiêm gợi ý định hướng tự động theo từ khóa | Nhận diện đúng từ khóa “hạn mức” và tiêm chỉ dẫn kiểm tra trần trách nhiệm 50M JPY. |
| Test 4: Pruning Dead-ends | Ứng phó khi mọi nhánh con đều không đạt yêu cầu | Thuật toán dừng lại an toàn, trả về None, không gây lỗi lặp vô hạn. |
| Test 5: Ngoại lệ và Boundary | Kiểm tra chuỗi rỗng và tham số ngưỡng | Bắt lỗi ValueError chính xác khi chuỗi truy vấn rỗng. |
Toàn bộ các bài test đều vượt qua 100% trên Python 3.15.0, chứng minh thuật toán ToT và DSP hoạt động ổn định và sẵn sàng tích hợp vào pipeline thực tế.
4. Cạm bẫy thực tế và đánh đổi — 注意点とトレードオフ
4.1. Bùng nổ chi phí token và độ trễ (Token Inflation & Latency Spikes)
- Triệu chứng: Thời gian phản hồi của hệ thống tăng từ 1 giây lên 12 giây; hóa đơn chi phí token tăng gấp 5–10 lần so với trước khi dùng ToT.
- Nguyên nhân gốc: Với hệ số phân nhánh $b = 3$ và độ sâu $d = 3$, số lượng nút cần sinh và đánh giá có thể lên tới $1 + 3 + 9 + 27 = 40$ lượt gọi LLM.
- Cách khắc phục:
- Chỉ áp dụng ToT cho các bài toán phức tạp đòi hỏi lập kế hoạch; các tác vụ thông thường chỉ sử dụng Zero-shot CoT hoặc Few-shot CoT.
- Sử dụng mô hình nhỏ, rẻ (như GPT-4o-mini hoặc Gemini Flash) cho khâu sinh nhánh và chấm điểm, chỉ dùng mô hình lớn cho khâu tổng hợp cuối cùng.
- Cắt tỉa mạnh tay (Aggressive Pruning): Giới hạn chỉ giữ lại Top-2 nút tốt nhất ở mỗi tầng.
4.2. Lan truyền sai lầm trong CoT (Error Propagation in Linear Chains)
- Triệu chứng: Mô hình trình bày các bước rất mạch lạc và tự tin, nhưng kết quả cuối cùng hoàn toàn sai.
- Nguyên nhân gốc: Trong CoT tuyến tính, nếu Bước 1 tính toán sai một con số, Bước 2 và Bước 3 sẽ lấy con số sai đó làm tiền đề để tính tiếp. LLM không có cơ chế tự quay lui lại Bước 1.
- Cách khắc phục: Kết hợp kỹ thuật Self-Consistency: Chạy CoT song song 5 lần với nhiệt độ $\text{Temperature} = 0.7$, sau đó lấy biểu quyết đa số (Majority Voting) cho kết quả cuối cùng.
4.3. Ảo giác đánh giá trong ToT (Self-Evaluation Bias)
- Triệu chứng: Mô hình tự chấm điểm cho các suy nghĩ ngớ ngẩn của chính mình là
1.0(Chắc chắn đúng), làm vô hiệu hóa cơ chế cắt tỉa. - Nguyên nhân gốc: Hiện tượng thiên kiến tự xác nhận (Self-Confirmation Bias) khi dùng cùng một mô hình vừa sinh vừa đánh giá.
- Cách khắc phục: Sử dụng hàm chấm điểm Heuristic bằng code (Code-based verification) hoặc Rule Engine độc lập để kiểm tra các ràng buộc cứng thay vì hoàn toàn phụ thuộc vào cảm tính của LLM.
Bảng so sánh các kỹ thuật Prompting nâng cao
| Tiêu chí | Direct Prompting | Few-Shot CoT | Tree-of-Thoughts (ToT) | Directional Stimulus (DSP) |
|---|---|---|---|---|
| Độ phức tạp suy luận | Rất thấp (1 bước) | Trung bình (Tuần tự) | Rất cao (Đa nhánh, Cây) | Cao (Định hướng tập trung) |
| Chi phí Token | Thấp nhất (1x) | Trung bình (2x - 3x) | Cao (5x - 10x) | Rất thấp (1.2x) |
| Độ trễ phản hồi (p95) | Nhanh (< 1s) | Vừa phải (2s - 4s) | Chậm (5s - 15s) | Nhanh (1s - 2s) |
| Khả năng Quay lui | Không | Không | Có (Backtracking) | Không |
| Mức độ phụ thuộc Model | Cần model mạnh | Cần model >= 7B | Cần model có khả năng tự đánh giá | Cần policy model hỗ trợ |
| Trường hợp khuyên dùng | Tra cứu định nghĩa, tóm tắt | Bài toán số học, logic tuần tự | Lập kế hoạch, thiết kế, tối ưu | Tóm tắt theo chủ đề, tuân thủ rule |
5. Checklist trước khi triển khai — 本番環境への適用前チェック
Trước khi đưa các kỹ thuật CoT, ToT và DSP vào ứng dụng production, cần kiểm tra các điều kiện sau:
- Phân loại tác vụ (Task Routing): Đã xây dựng bộ phân loại câu hỏi (Router) để chỉ kích hoạt ToT cho các câu hỏi logic đa biến, tránh lãng phí tài nguyên cho các câu hỏi đơn giản.
- Cấu hình giới hạn an toàn cho ToT: Đã khóa cứng
max_depth <= 3,branching_factor <= 3và timeout tối đa 15 giây để ngăn chặn bùng nổ token. - Thiết lập nhiệt độ suy luận (Temperature Control): Sử dụng
temperature = 0.0đến0.2cho bước sinh suy luận CoT/ToT nhằm tối đa hóa tính nhất quán logic. - Kiểm chứng hàm đánh giá trạng thái: Hàm chấm điểm heuristic hoặc prompt đánh giá đã được kiểm thử trên tập dữ liệu mẫu và có khả năng phát hiện đúng các nhánh sai.
- Tích hợp Directional Stimulus từ dữ liệu nguồn: Các từ khóa định hướng được trích xuất từ siêu dữ liệu (metadata) được kiểm duyệt, không chứa thông tin sai lệch.
- Giám sát chi phí Token: Đã cài đặt cảnh báo chi phí và giới hạn ngân sách API hàng ngày theo từng người dùng hoặc phòng ban.
- Thống nhất SLA với khách hàng: Đã giải thích và nhận được sự phê duyệt của khách hàng Nhật Bản về độ trễ trung bình của các câu hỏi sử dụng ToT.
6. Học tiếng Nhật qua chủ đề — 技術日本語を学ぶ
6.1. Sổ tay thuật ngữ Prompt Engineering và giao tiếp BrSE
Bảng tổng hợp các thuật ngữ kỹ thuật chuyên sâu về các mô hình suy luận nâng cao và quản lý luồng điều khiển prompt:
| Thuật ngữ Nhật | Furigana | Hán Việt | Nghĩa tiếng Việt / English | Câu ví dụ Nhật | Dịch nghĩa |
|---|---|---|---|---|---|
| 思考連鎖 | しこうれんさ | Tư Khảo Liên Tỏa | Chuỗi suy nghĩ (Chain of Thought - CoT) | 思考連鎖により推論の精度を高めます。 | Nâng cao độ chính xác của suy luận nhờ Chain of Thought. |
| 思考木 | しこうぎ | Tư Khảo Mộc | Cây suy nghĩ (Tree of Thoughts - ToT) | 思考木を用いて複数の解法を探索します。 | Dùng Tree of Thoughts để khám phá nhiều phương pháp giải quyết. |
| 方向性刺激 | ほうこうせいしげき | Phương Hướng Tính Thích Kích | Kích thích định hướng (Directional Stimulus) | 方向性刺激でLLMの出力を制御します。 | Kiểm soát đầu ra của LLM bằng Directional Stimulus. |
| 推論経路 | すいろんけいろ | Thôi Luận Kinh Lộ | Đường dẫn suy luận (Reasoning Path) | 正しい推論経路をたどって結論を導きます。 | Lần theo đường dẫn suy luận đúng để rút ra kết luận. |
| 分岐 | ぶんき | Phân Kỳ | Phân nhánh (Branching) | ツリーの分岐数を3に制限します。 | Giới hạn số lượng phân nhánh của cây ở mức 3. |
| 枝刈り | えだかり | Chi Ngải | Cắt tỉa nhánh (Pruning) | スコアの低い候補を枝刈りします。 | Cắt tỉa các nhánh ứng viên có điểm số thấp. |
| 状態評価 | じょうたいひょうか | Trạng Thái Bình Giá | Đánh giá trạng thái (State Evaluation) | 各ステップで状態評価を実施します。 | Thực hiện đánh giá trạng thái tại mỗi bước. |
| 後戻り | あともどり | Hậu Lệ | Quay lui (Backtracking) | 行き詰まったら前のノードへ後戻りします。 | Khi gặp ngõ cụt sẽ quay lui về nút phía trước. |
| 探索 | たんさく | Thám Tác | Tìm kiếm / Duyệt (Search / Exploration) | 幅優先でツリーを探索します。 | Duyệt cây theo chiều rộng (BFS). |
| 指示文 | しじぶん | Chỉ Thị Văn | Câu chỉ dẫn / Prompt (Instruction) | 指示文に思考ステップを明記します。 | Ghi rõ các bước suy nghĩ vào câu chỉ dẫn prompt. |
| 誘導 | ゆうどう | Dụ Đạo | Dẫn dắt / Định hướng (Steering / Guidance) | キーワードで望ましい方向へ誘導します。 | Dẫn dắt mô hình về hướng mong muốn bằng từ khóa. |
| 制約条件 | せいやくじょうけん | Chế Ước Điều Kiện | Điều kiện ràng buộc (Constraints) | 厳格な制約条件をプロンプトに設定します。 | Thiết lập các điều kiện ràng buộc nghiêm ngặt vào prompt. |
| 正確性 | せいかくせい | Chính Xác Tính | Tính chính xác (Accuracy / Precision) | CoTの適用により計算の正確性が向上しました。 | Độ chính xác của tính toán được nâng cao nhờ áp dụng CoT. |
Cặp từ dễ gây nhầm lẫn:
指示文(Câu lệnh chỉ thị prompt từ người dùng) vs制約条件(Các ràng buộc bắt buộc mô hình phải tuân thủ trong output).分岐(Hành động tách nhánh suy nghĩ) vs探索(Toàn bộ quá trình duyệt không gian để tìm lời giải).枝刈り(Loại bỏ nhánh xấu) vs後戻り(Quay trở lại nút cha để thử nhánh khác).
Tra cứu Kanji trong bài
- 思 (TƯ) · 考 (KHẢO) · 連 (LIÊN) · 鎖 (TỎA)
- 木 (MỘC) · 方 (PHƯƠNG) · 向 (HƯỚNG) · 性 (TÍNH)
- 刺 (THÍCH) · 激 (KÍCH) · 推 (THÔI) · 論 (LUẬN)
- 経 (KINH) · 路 (LỘ) · 分 (PHÂN) · 岐 (KỲ)
- 枝 (CHI) · 刈 (NGẢI) · 状 (TRẠNG) · 態 (THÁI)
- 評 (BÌNH) · 価 (GIÁ) · 後 (HẬU) · 戻 (LỆ)
- 探 (THÁM) · 索 (TÁC) · 指 (CHỈ) · 示 (THỊ)
- 文 (VĂN) · 誘 (DỤ) · 導 (ĐẠO) · 制 (CHẾ)
- 約 (ƯỚC) · 条 (ĐIỀU) · 件 (KIỆN) · 正 (CHÍNH)
- 確 (XÁC) · 基 (CƠ) · 踏 (ĐẠP) · 恐 (KHỦNG) · 沿 (DUYÊN)
6.2. Ngữ pháp và mẫu diễn đạt trọng tâm
Bảng tổng hợp các cấu trúc ngữ pháp dùng để thảo luận giải pháp kỹ thuật và phân tích phương án:
| Mẫu | Ý nghĩa | Ví dụ |
|---|---|---|
| 〜に沿って | Bám sát theo / Men theo | 定義されたルールに沿って推論ステップを実行します。 |
| 〜に基づいて | Căn cứ vào / Dựa trên cơ sở | 状態評価スコアに基づいて枝刈りを判断します。 |
| 〜恐れがある | Có nguy cơ / E rằng sẽ… | 分岐数が多すぎると、トークン消費が急増する恐れがあります。 |
| 〜を踏まえて | Căn cứ vào / Sau khi đã xem xét | CoTの限界を踏まえ、ToTの導入をご提案いたします。 |
Chi tiết từng mẫu ngữ pháp:
-
〜に沿って: Bám sát theo / Theo đúng
- Cấu trúc: Danh từ + に沿って / に沿った + Danh từ
- Ý nghĩa: Biểu thị hành động được thực hiện đúng theo quy trình, đường lối hoặc kế hoạch đã định sẵn mà không đi chệch hướng.
- Ví dụ 1: プロンプトの思考手順に沿って、モデルが段階的に計算を行います。(Mô hình thực hiện tính toán từng bước bám sát theo các bước suy nghĩ trong prompt.)
- Ví dụ 2: 業務マニュアルの方針に沿った判定が求められます。(Yêu cầu đưa ra phán đoán bám sát theo phương châm của sổ tay nghiệp vụ.)
-
〜に基づいて: Dựa trên cơ sở / Căn cứ vào
- Cấu trúc: Danh từ + に基づいて
- Ví dụ 1: 事前に定義したヒューリスティック関数に基づいて、ノードの有望度をスコアリングします。(Chấm điểm mức độ triển vọng của nút dựa trên hàm heuristic đã định nghĩa trước.)
- Ví dụ 2: 検証済みのデータに基づいて最終回答を生成いたします。(Sinh câu trả lời cuối cùng dựa trên dữ liệu đã được kiểm chứng.)
-
〜恐れがある: Có nguy cơ / E rằng
- Cấu trúc: Động từ thể từ điển / Danh từ + の + 恐れがある
- Ví dụ 1: 線形なCoTでは、最初のステップで誤謬が生じると、後続の推論がすべて破綻する恐れがあります。(Với CoT tuyến tính, nếu bước đầu tiên phát sinh sai lầm thì e rằng toàn bộ suy luận phía sau sẽ sụp đổ.)
- Ví dụ 2: 探索深度を深くしすぎると、APIタイムアウトが発生する恐れがございます。(Nếu để độ sâu tìm kiếm quá sâu, e rằng sẽ phát sinh sự cố API timeout.)
-
〜を踏まえて: Căn cứ vào / Sau khi đã xem xét
- Cấu trúc: Danh từ + を踏まえて
- Ví dụ 1: PoCでの精度検証結果を踏まえ、ToTの分岐数を3から2に調整しました。(Căn cứ vào kết quả kiểm chứng độ chính xác trong PoC, chúng tôi đã điều chỉnh số phân nhánh ToT từ 3 xuống 2.)
- Ví dụ 2: お客様のレイテンシ要件を踏まえて、ハイブリッドなルーティングを採用いたします。(Sau khi xem xét yêu cầu độ trễ của khách hàng, chúng tôi áp dụng cơ chế định tuyến kết hợp.)
6.3. Luyện tập ngắn (Mini Exercises)
Câu 1 (Điền ngữ pháp): Điền mẫu thích hợp vào chỗ trống:
「金融商品の審査規約( )、ステップ・バイ・ステップで検証を進めます。」
Gợi ý: Bám sát theo các quy chế thẩm định.
Câu 2 (Dịch Việt → Nhật):
“Nếu tăng số lượng phân nhánh trong Tree of Thoughts lên quá nhiều, e rằng chi phí token và độ trễ phản hồi sẽ tăng đột biến.”
Câu 3 (Sửa cách diễn đạt thiếu rõ ràng của kỹ sư):
Cách nói cộc lốc: 「CoTを使っても間違えるときは間違えるので、意味ないです。」 (Dùng CoT mà lúc sai vẫn sai thì có ý nghĩa gì đâu.)
👉 Hãy sửa lại theo văn phong BrSE chuẩn mực, giải thích nguyên nhân và đưa ra giải pháp thay thế.
Đáp án và giải thích:
- Đáp án Câu 1:
に沿って(にそって).
Câu hoàn chỉnh: 「金融商品の審査規約に沿って、ステップ・バイ・ステップで検証を進めます。」 - Đáp án Câu 2:
「思考木(ToT)における分岐数を過度に増やすと、トークンコストとレスポンスレイテンシが急増する恐れがございます。」 - Đáp án Câu 3 (Cách sửa chuẩn mực):
「線形なCoTでは、初期ステップでの計算誤謬が後続に伝播する課題がございます。この限界を克服するため、複数の思考経路を評価・枝刈りできるToT、または多数決を行うSelf-Consistencyの併用をご提案させていただけますでしょうか。」
Giải thích: Thay vì phủ nhận giá trị của CoT, BrSE định vị bản chất lỗi (lỗi truyền ngược trong chuỗi tuyến tính) và đề xuất hướng xử lý kỹ thuật tương ứng (ToT hoặc Self-Consistency).
7. Thực hành vai trò BrSE — 現場で伝える
7.1. Tình huống giao tiếp
Bối cảnh: Buổi họp Design Review giữa Khách hàng Nhật Bản (Trưởng bộ phận Nghiệp vụ Thẩm định Tín dụng), BrSE và Tech Lead.
Mục tiêu cuộc họp: Đề xuất áp dụng ToT và Directional Stimulus để khắc phục tình trạng AI đưa ra kết luận thiếu chính xác trong bài toán phê duyệt hồ sơ vay; giải quyết nỗi lo của khách hàng về chi phí API và độ trễ.
Dữ kiện đã xác nhận: Code Python mẫu đã chứng minh cơ chế cắt tỉa và quay lui hoạt động tốt, đạt 5/5 test case.
Điểm còn chưa rõ: Tỷ lệ phân bổ giữa các câu hỏi dễ (chỉ cần CoT) và câu hỏi khó (cần ToT).
- Khách hàng: プロンプトに「ステップ・バイ・ステップで考えてください」と書いたのですが、複雑な案件ではまだ誤回答が出ています。何が原因でしょうか。
Dịch: Chúng tôi đã thêm câu “Hãy suy nghĩ từng bước” vào prompt nhưng với các hồ sơ phức tạp vẫn phát sinh câu trả lời sai. Nguyên nhân do đâu vậy? - BrSE: ご相談ありがとうございます。CoTは直線的な計算には有効ですが、最初のステップで前提条件を見誤ると、そのまま誤った方向へ進んでしまうという弱点がございます。
Dịch: Cảm ơn quý khách đã nêu vấn đề. CoT rất hiệu quả cho các bài toán tính toán thẳng hàng, nhưng có nhược điểm là nếu bước đầu tiên xác định sai điều kiện thì mô hình sẽ đi lệch hướng đến tận cùng. - Tech Lead: そこで、思考木(ToT)の採用を検討しております。ツリー構造で複数の解法を並行して探索し、スコアの低い思考を枝刈りすることで、確実に正解へたどり着けます。
Dịch: Do đó, chúng tôi đang xem xét áp dụng Tree-of-Thoughts. Cơ chế này khám phá song song nhiều hướng đi dưới dạng cây và cắt tỉa các nhánh điểm thấp, giúp chắc chắn tìm đến kết quả đúng. - Khách hàng: ツリーを探索するとなると、APIのトークン費用とレスポンスの遅延がかなり大きくなるのではないでしょうか。
Dịch: Nếu phải duyệt cây như vậy thì chi phí token API và độ trễ phản hồi chắc sẽ tăng lên rất nhiều đúng không? - BrSE: その懸念を解消するため、すべての案件にToTを使うのではなく、ルーティング機構を設ける方針です。通常の案件はCoTで高速に処理し、難易度の高い案件のみToTに振り分けます。
Dịch: Để giải quyết quan ngại đó, chúng tôi không áp dụng ToT cho mọi trường hợp mà sẽ thiết lập bộ định tuyến. Các hồ sơ thông thường được xử lý nhanh bằng CoT, chỉ các hồ sơ phức tạp mới chuyển sang ToT. - Khách hàng: それは合理的ですね。さらに、審査規約の重要項目をAIが忘れないようにする工夫はありますか。
Dịch: Hợp lý đấy. Ngoài ra, có cách nào để AI không quên các điều khoản quan trọng trong quy chế thẩm định không? - Tech Lead: 方向性刺激(Directional Stimulus)を併用いたします。質問に応じて「債務比率の上限を確認せよ」といったヒントをプロンプトに自動挿入し、LLMの注意を誘導します。
Dịch: Chúng tôi kết hợp thêm Directional Stimulus. Tùy theo câu hỏi, hệ thống sẽ tự động chèn các gợi ý như “Kiểm tra trần tỷ lệ nợ” vào prompt để định hướng sự chú ý của LLM. - Khách hàng: なるほど。実際にどれくらい精度が上がるか、テストデータで比較できますか。
Dịch: Ra là vậy. Chúng ta có thể so sánh trên dữ liệu kiểm thử xem độ chính xác thực tế tăng được bao nhiêu không? - BrSE: はい。過去の難関審査案件30件のデータセットを用いて、「Direct」「CoT」「ToT + DSP」の3パターンで比較検証を実施し、来週の定例で数値結果をご報告いたします。
Dịch: Vâng. Chúng tôi sẽ sử dụng bộ dữ liệu 30 hồ sơ thẩm định khó trong quá khứ để đối chiếu giữa 3 phương án Direct, CoT và ToT + DSP, sau đó báo cáo kết quả số liệu vào buổi họp tuần sau. - Khách hàng: よろしくお願いします。精度とコストのバランスを見て最終判断しましょう。
Dịch: Nhờ các bạn. Chúng ta sẽ xem xét sự cân đối giữa độ chính xác và chi phí để đưa ra quyết định cuối cùng.
7.2. Mẫu thông điệp dùng ngay
本日のレビューにて、推論精度向上に向けたCoTおよびToTの検証方針についてご合意いただきました。通常案件はCoTでレイテンシを優先し、複雑案件にはToTと方向性刺激(DSP)を組み合わせて精度を担保するルーティング構成を試行いたします。難関案件30件のテストデータによる比較結果を[検証結果共有期限]までにまとめ、[次回定例日時]にてご報告いたします。引き続きよろしくお願いいたします。
Bản dịch:
Trong buổi Review hôm nay, hai bên đã thống nhất chủ trương kiểm chứng CoT và ToT nhằm nâng cao độ chính xác suy luận. Chúng tôi sẽ thử nghiệm kiến trúc định tuyến: ưu tiên độ trễ bằng CoT cho hồ sơ thông thường, và kết hợp ToT cùng Directional Stimulus (DSP) cho hồ sơ phức tạp để bảo đảm độ chính xác. Kết quả so sánh trên 30 hồ sơ khó sẽ được tổng hợp trước [検証結果共有期限] và báo cáo tại [次回定例日時]. Xin chân thành cảm ơn.
7.3. Ghi chú dành cho BrSE
- Hiểu bản chất để không thần thánh hóa ToT: Không hứa hẹn với khách hàng rằng ToT sẽ giải quyết được 100% bài toán. Cần giải thích rõ ToT là một phương pháp tìm kiếm heuristic; nếu hàm sinh suy nghĩ quá nghèo nàn hoặc tiêu chuẩn chấm điểm bị sai, ToT vẫn có thể thất bại.
- Luôn đi kèm số liệu Token & Latency khi đề xuất: Bất kỳ đề xuất áp dụng ToT nào cũng phải đi kèm bảng dự toán chi phí token bổ sung và độ trễ p95. Khách hàng doanh nghiệp Nhật Bản đặc biệt nhạy cảm với chi phí vận hành ẩn.
- Tận dụng Directional Stimulus như cầu nối nghiệp vụ: DSP là công cụ tuyệt vời để các chuyên gia nghiệp vụ phía khách hàng có thể can thiệp vào AI mà không cần viết lại toàn bộ code. BrSE nên đề xuất xây dựng giao diện cấu hình danh mục Stimulus để khách hàng tự chủ cập nhật quy định mới.
Nguồn tham khảo và phạm vi xác minh
Tài liệu chính thức và nghiên cứu khoa học được tham chiếu ngày 17/10/2026:
- Jason Wei và cộng sự (Google Research), Chain-of-Thought Prompting Elicits Reasoning in Large Language Models: Bài báo khai sinh ra phương pháp CoT, chứng minh hiệu ứng bộc lộ năng lực suy luận khi mô hình đạt quy mô đủ lớn.
- Shunyu Yao và cộng sự (Princeton / Google DeepMind), Tree of Thoughts: Deliberate Problem Solving with Large Language Models: Cơ chế tìm kiếm cây có đánh giá trạng thái và quay lui.
- Zekun Li và cộng sự, Guiding Large Language Models via Directional Stimulus Prompting: Kỹ thuật sử dụng gợi ý định hướng tối ưu từ mô hình nhỏ.
- Xuezhi Wang và cộng sự, Self-Consistency Improves Chain of Thought Reasoning in Language Models: Phương pháp lấy mẫu đa chuỗi suy luận và biểu quyết đa số.
Xác minh kỹ thuật: Ngày 17/10/2026, toàn bộ mã nguồn Python cài đặt ToT và DSP trong mục 3.3 đã được thực thi và kiểm chứng thành công bằng Python 3.15.0 trên môi trường thử nghiệm cục bộ, vượt qua 5/5 kịch bản kiểm thử logic nghiêm ngặt.