← Chương trước: Phần 6 — Từ Prompting sang Context Engineering (2026) | Mục lục Series | Chương tiếp theo: Phần 8 — Production PromptOps Pipeline (2026) →

Answer-first: Declarative Prompting với DSPy thay thế việc tinh chỉnh câu chữ thủ công bằng lập trình khai báo chữ ký Input/Output và tự động tối ưu hóa prompt qua các thuật toán compilation như MIPROv2 và BootstrapFewShot.


Vấn đề của prompt viết tay

Dù đã có Prompt Standard tốt, prompt viết tay vẫn có điểm yếu cốt lõi: chúng được tối ưu bằng trực giác con người, không phải bằng dữ liệu.

Bạn viết prompt, test vài case, sửa từ ngữ, và hy vọng nó tổng quát hóa được. Đây gọi là “vibes-based prompting,” và có 3 vấn đề:

  1. Dễ vỡ: Prompt tuned cho GPT-4 có thể chạy kém trên Claude.
  2. Khó mở rộng: Khi pipeline phức tạp (RAG → reasoning → tool → validate), tuning từng prompt trở thành cơn ác mộng.
  3. Thiếu minh bạch: Bạn không giải thích được tại sao một cách diễn đạt lại tốt hơn.

DSPy là gì?

DSPy (Declarative Self-improving Python) là framework xem prompt như tham số nội bộ cần tối ưu, không phải chuỗi ký tự cần viết tay.

Prompting truyền thốngDSPy
Bạn viết promptBạn định nghĩa Signature (đặc tả input/output)
Bạn chọn few-shot examples bằng tayFramework tự chọn examples tối ưu
Bạn tune cho một modelFramework compile cho bất kỳ model nào
Bạn test thủ côngBạn định nghĩa metric, framework tối ưu theo đó

Cách hoạt động: Signatures, Modules, và Optimizers

1. Signatures

Khai báo module làm gì, không chỉ định làm thế nào:

class ReviewCode(dspy.Signature):
    """Review a code diff for bugs and security issues."""
    diff: str = dspy.InputField(desc="The code diff to review")
    findings: list[str] = dspy.OutputField(desc="List of issues found")

2. Modules

Các building block có thể kết hợp:

class CodeReviewer(dspy.Module):
    def __init__(self):
        self.review = dspy.ChainOfThought(ReviewCode)
    def forward(self, diff):
        return self.review(diff=diff)

3. Optimizers (Compilers)

Cho trước training examples + metric, optimizer tự tìm chiến lược prompt tốt nhất:

optimizer = dspy.BootstrapFewShot(metric=bug_detection_accuracy)
optimized_reviewer = optimizer.compile(CodeReviewer(), trainset=examples)

Khi nào dùng DSPy vs Prompt Standard truyền thống?

LớpCông cụ
Cấu trúc tổ chức (roles, rules, workflows)Prompt Standard
Tối ưu task-level (few-shot, CoT, model adaptation)DSPy
Chất lượng dữ liệu và truy xuấtRAG / Context Engineering

Ý chính cần nhớ

DSPy đại diện cho tương lai nơi chất lượng prompt là hàm của dữ liệu và metric, không phải trực giác. Mental model mới: ngừng viết prompt, bắt đầu định nghĩa contract và metric.


🔗 Đọc thêm các chuyên đề liên quan:


← Chương trước: Phần 6 — Từ Prompting sang Context Engineering (2026) | Mục lục Series | Chương tiếp theo: Phần 8 — Production PromptOps Pipeline (2026) →


❓ Câu Hỏi Thường Gặp (FAQ)

Q1: Phần 7 — Declarative Prompting với DSPy (2026) giải quyết vấn đề cốt lõi nào trong kiến trúc hệ thống?

Nếu bạn ngừng viết prompt bằng tay và để framework tự tối ưu thì sao? DSPy giới thiệu declarative signatures và automatic prompt compilation (Cập nhật 2026).

Q2: Những lưu ý quan trọng nhất khi triển khai thực tế là gì?

Cần chú trọng phân tầng ranh giới trách nhiệm (bounded context), thiết lập cơ chế fallback dự phòng, và giám sát chặt chẽ qua metrics OpenTelemetry để phát hiện sớm các điểm nghẽn.

Q3: Làm sao để kiểm thử và đánh giá hiệu quả sau khi áp dụng?

Áp dụng kiểm thử tải (load test), benchmark độ trễ P95/P99 trước và sau triển khai, kết hợp tracing phân tán để xác minh tính ổn định dưới tải cao.