
はじめに
思考連鎖 (CoT) は、AI に 一方向 で考えることを強制します。しかし、多くの問題には解決すべき複数の方向があります。CoT は 1 つの方向のみを探索するため、間違った方向を選択する可能性があります。
この記事では、CoT よりも強力な 3 つのテクニックを紹介します。
| エンジニアリング | アイデア | 実際の例 |
|---|---|---|
| 思考の木 | さまざまな方向を探索し、最適なものを選択してください | GPS: 3 つのルートを試し、最速のものを選択 |
| 自己一貫性 | 複数回解き、最も人気のある答えを選択してください。医師5人に聞いて多数派の意見を得る | |
| ステップバック | 特定の質問を解決する前に、一般的な質問をする | 細部を描く前に、一歩下がって全体像を見てください。 |
1. 思考の木 (ToT)
1.1 CoTとの比較
CoT (Chain): A → B → C → D → Answer
1 đường duy nhất, nếu B sai → tất cả sai
ToT (Tree): A → B1 → C1 → ✅ Answer 1 (score: 8/10)
→ B2 → C2 → ❌ Dead end
→ B3 → C3 → ✅ Answer 2 (score: 9/10) ← Winner!
Explore nhiều nhánh, chọn nhánh tốt nhất
1.2 ToT のプロンプト テンプレート
Bài toán: [vấn đề cần giải]
Hãy giải theo phương pháp Tree-of-Thoughts:
## Bước 1: Brainstorm (3 hướng tiếp cận)
- Hướng A: [mô tả]
- Hướng B: [mô tả]
- Hướng C: [mô tả]
## Bước 2: Đánh giá mỗi hướng (1-10)
Với mỗi hướng, phân tích:
- Feasibility (khả thi?)
- Quality (chất lượng kết quả?)
- Effort (tốn bao nhiêu effort?)
## Bước 3: Chọn hướng tốt nhất
Chọn hướng có score cao nhất và phát triển chi tiết.
## Bước 4: Giải chi tiết theo hướng đã chọn
## Bước 5: Verify
Kiểm tra lại đáp án, liệu có hướng nào tốt hơn không?
1.3 例: アーキテクチャ設計
Thiết kế system architecture cho app chat real-time
(10K concurrent users).
Dùng Tree-of-Thoughts:
Hướng 1: WebSocket + Redis Pub/Sub + PostgreSQL
Hướng 2: SSE (Server-Sent Events) + Kafka + MongoDB
Hướng 3: gRPC streaming + NATS + CockroachDB
Với mỗi hướng, đánh giá:
- Scalability (1-10)
- Complexity (1-10, thấp = đơn giản hơn)
- Latency (1-10, cao = nhanh hơn)
- Cost (1-10, cao = rẻ hơn)
Chọn hướng tốt nhất, giải thích trade-offs.
Vẽ architecture diagram (text-based).
💡 演習 1: ToT プロンプトを使用して、「MVP 個人経費管理アプリの技術スタックを選択する (モバイル ファースト、3 か月、2 つの開発チーム)」を解決します。 3 つの方向を比較し、1 を選択します。
2. 自己一貫性
2.1 アイデア
実践例: 27 × 13 = が何なのかわかりません。 3 回数えます:
- 1回目:351✅
- 2回目: 341 ❌
- 3回目:351✅ → 答え: 351 (2/3 票)
自己一貫性 = 同じプロンプトで AI を 何度も呼び出し、最も一般的な応答を取得します。
2.2 実装
"""Self-Consistency: gọi API 5 lần, lấy đáp án đa số"""
from openai import OpenAI
from collections import Counter
client = OpenAI()
question = """
Một cửa hàng mua 100 quả cam với giá 5000đ/quả.
Bán lẻ 60 quả với giá 8000đ/quả.
Bán sỉ 30 quả với giá 6000đ/quả.
10 quả hỏng. Hỏi lãi/lỗ bao nhiêu?
Chỉ trả lời số tiền và lãi/lỗ.
"""
# Gọi 5 lần với temperature > 0 (để có diversity)
answers = []
for i in range(5):
response = client.chat.completions.create(
model="gpt-4o-mini",
temperature=0.7, # Cho phép variation
messages=[
{"role": "user", "content": question + "\nLet's think step by step."}
]
)
answer = response.choices[0].message.content
answers.append(answer)
print(f"Run {i+1}: {answer.strip()[:80]}")
# Lấy đáp số phổ biến nhất
print(f"\n{'='*40}")
print(f"5 answers collected → majority vote:")
# Trong thực tế, extract số từ text rồi đếm
2.3 自己一貫性をいつ使用するか?
| ✅ 次の場合に使用します | ❌ 次の場合は使用しないでください。 |
|---|---|
| この問題には正解が 1 つあります | クリエイティブライティング(ライティング、ブレインストーミング) |
| 高い自信が必要 | 予算が限られている (通話 5 倍 = コスト 5 倍) |
| 難しい問題、しばしば間違ったモデル | 簡単な問題 (ゼロショットで十分) |
3. ステップバックプロンプト
3.1 アイデア
直接特定の質問をするのではなく、一歩下がって、最初により一般的な質問をしてください。
❌ Trực tiếp: "Nhiệt độ sôi của nước ở độ cao 3000m?"
→ AI có thể bịa
✅ Step-Back:
Bước 1: "Quy luật nào ảnh hưởng nhiệt độ sôi?"
→ AI: "Áp suất. Áp suất thấp → nhiệt độ sôi giảm."
Bước 2: "Vậy ở 3000m (áp suất ~70kPa), nhiệt độ sôi là?"
→ AI: "~90°C" ✅ (chính xác hơn nhiều!)
3.2 テンプレート
Câu hỏi chính: [câu hỏi cụ thể]
Trước khi trả lời, hãy:
1. [STEP BACK] Xác định nguyên tắc/lý thuyết nền tảng liên quan
2. [CONTEXT] Áp dụng nguyên tắc vào bối cảnh cụ thể
3. [ANSWER] Trả lời chính xác câu hỏi
3.3 実践例
デバッグ:
Bug: App crash khi user upload file > 10MB.
Step-Back: Trước khi debug:
1. Những yếu tố nào ảnh hưởng file upload? (memory, timeout, server config, client validation)
2. Kiến trúc upload trong app này: client → API → S3?
3. Giới hạn nào đang được set? (nginx, express, multer)
Giờ hãy phân tích bug dựa trên framework trên.
ビジネス上の決定:
Câu hỏi: Có nên mở chi nhánh ở Đà Nẵng?
Step-Back trước:
1. Những yếu tố nào quyết định mở chi nhánh thành công?
(market size, competition, cost, talent pool, logistics)
2. Đà Nẵng đang ở đâu trên mỗi yếu tố này?
3. So sánh với alternatives (Cần Thơ, Hải Phòng, online expansion)?
Sau đó đưa recommendation.
💡 演習 3: 「電子商取引アプリには PostgreSQL と MongoDB を使用するべきですか?」という質問にはステップバックを使用します。 — まずデータベースを選択する原則を AI に強制し、次に具体的に比較させます。
4. すべてのテクニックを比較する
| エンジニアリング | 精度 | トークンコスト | 複雑さ | こんな方に最適 |
|---|---|---|---|---|
| ゼロショット | ⭐⭐ | ⭐ (少なくとも) | ⭐ (最も簡単) | 簡単なタスク |
| 数ショット | ⭐⭐⭐ | ⭐⭐ | ⭐⭐ | パターンマッチング |
| CoT | ⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐ | 論理、数学 |
| ToT | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | デザイン・企画 |
| 自己一貫性 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ (最も高価) | ⭐⭐ | 一か八かの精度 |
| ステップバック | ⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ | 複雑なドメイン |
意思決定の枠組み
Bạn cần gì?
├── Task đơn giản → Zero-shot / Few-shot
├── Cần suy luận logic → CoT
├── Cần explore nhiều hướng → ToT
├── Cần đáp án chính xác nhất → Self-Consistency
└── Bài toán domain phức tạp → Step-Back + CoT
5. 複数のテクニックを組み合わせる
5.1 CoT + 自己一貫性
# Gọi CoT 5 lần, lấy đa số
for i in range(5):
response = call_ai(prompt + "\nThink step by step.")
answers.append(extract_answer(response))
final = majority_vote(answers)
5.2 ステップバック + ToT
Bài toán: Thiết kế payment system cho marketplace.
Step-Back (nguyên tắc trước):
1. Những yếu tố quan trọng nhất trong payment system?
(security, reliability, latency, compliance, cost)
2. Các pattern phổ biến? (escrow, direct, split payment)
Tree-of-Thoughts (explore):
Hướng A: Stripe Connect (hosted, simple)
Hướng B: Custom (PayOS + VNPay, localized)
Hướng C: Hybrid (Stripe international + VNPay domestic)
Đánh giá mỗi hướng theo 5 tiêu chí ở step 1.
Chọn hướng tốt nhất.
概要
| コンセプト | 覚えておいてください |
|---|---|
| ToT | 3 つ以上の行き方、レビューを調べて、最適なものを選択してください |
| 自己一貫性 | N回電話して多数決 – 費用はかかるが正確 |
| ステップバック | 具体的に解決する前に一般原則を尋ねる |
| 組み合わせ | ステップバック + CoT または ToT + 自己一貫性 |
一般的な演習
- ✅ 小さな演習 (1、3) を完了する
- 技術の比較: 設計の問題を選択します (例: 「URL 短縮ツールの設計」)。解決方法: CoT、ToT、ステップバック+CoT。出力品質を比較します。
- 自己整合性テスト: 数学/論理の問題を 5 つ選択します。各問題を 5 回ずつ解きます (温度=0.7)。多数決の精度と単発投票の精度?
- コンボ プロンプト: 実際の使用例のために、Step-Back + ToT を組み合わせた「メガ プロンプト」を作成します。テストと反復を行います。
次の記事: 構造化出力 — JSON モード、関数呼び出しスキーマ、および自動パイプラインの解析可能な形式で AI に応答するように強制する方法。