← Prompt Engineering

Deep Dive: PAL / Program-of-Thought

Phân tích sâu từ báo cáo Prompt Engineering — PAL và Program-of-Thought dùng code như intermediate representation, chuyển computation ra runtime để giảm sai số logic/arithmetic.
Báo cáo cha: ← Prompt EngineeringTopic: PAL / Program-of-ThoughtNgày: 2026-04-22Cấp độ: Layer 2 / deep dive

Tổng quan Code reasoning

PAL đổi câu hỏi từ “model có tự tính đúng không?” sang “model có thể viết chương trình đúng không?”. Với arithmetic, symbolic reasoning và table manipulation, đây thường là bước nhảy chất lượng đáng kể.

Program-aided / Program-of-Thought prompting tách việc hiểu bài toán khỏi việc tính toán. Model lo phần diễn giải và viết program; interpreter lo phần thực thi. Cách này đặc biệt mạnh khi computation chứ không phải language generation là bottleneck.

Điểm quan trọng là PAL không chỉ là “bảo model viết code”. Nó là một giao kèo rõ giữa LLM và runtime: LLM sinh ra chương trình, runtime xác minh kết quả.

Thành phầnVai tròLý do tồn tại
LLMViết program / pseudo-codeDùng language understanding
InterpreterThực thi computationLoại bỏ arithmetic noise
Executor guardrailsKiểm soát sandboxTránh chạy code nguy hiểm

Cơ chế Mechanics

Cụm từ khóa ở đây là intermediate representation. Thay vì để model cố “tính trong đầu”, ta để nó build một artifact có thể chạy được. Điều này giúp output cuối dựa vào thực thi thật thay vì chỉ dựa vào một chain of words.

Trong nhiều trường hợp, việc code hóa bài toán cũng làm ý định của model rõ hơn: biến nào là input, biến nào là state, và bước nào là compute step.

PAL-style prompt

TEXT
Write Python to solve the problem.
Use comments only for brief reasoning.
Execute the program and return the final numeric answer.

PAL chuyển reasoning thành code, rồi để runtime xử lý computation.

flowchart LR
  Q[Problem] --> C[Generate program]
  C --> R[Runtime / interpreter]
  R --> A[Final answer]

Khi dùng Fit

PAL hợp với arithmetic, symbolic manipulation, data transformation, tabular reasoning và những bài mà code có thể đại diện cho lời giải một cách tự nhiên.

Nếu bài toán là open-ended writing hoặc policy reasoning, code execution ít hữu ích hơn. Khi đó PAL thường chỉ làm prompt phức tạp thêm.

Ưu điểm
  • Giảm arithmetic mistakes
  • Tách reasoning khỏi computation
  • Dễ kiểm tra và trace
Nhược điểm
  • Phụ thuộc sandbox/runtime
  • Có rủi ro an toàn nếu execute code bừa bãi
  • Không hợp với mọi domain

Failure modes Risk

PAL mạnh ở tính toán, nhưng mạnh không đồng nghĩa an toàn. Nếu runtime có quyền hệ thống, bạn phải coi code generation như một mặt tấn công.
Rủi ro khi dùng code làm reasoning
  • Code syntactically đúng nhưng semantic sai.
  • Runtime không được sandbox chặt.
  • LLM hallucinates API/library không tồn tại.
  • Interpreter output bị hiểu nhầm như ground truth tuyệt đối.

So sánh Compare

TechniqueKhác biệtKhi nào ưu tiên PAL
CoTReasoning bằng textKhi computation không phải bottleneck
ReActReasoning + action + observationKhi cần tool use online
Self-consistencyVote nhiều reasoning pathsKhi answer final ổn định hơn path

Tham khảo chính Sources