Core prompt engineering techniques (VI)

From Systems analysis Wiki
Jump to navigation Jump to search

Prompt Engineering bao gồm nhiều kỹ thuật và phương pháp đa dạng, nhằm tối ưu hóa tương tác với các mô hình ngôn ngữ lớn (LLM) để đạt được kết quả mong muốn. Các kỹ thuật này liên quan đến việc cấu trúc hóa câu lệnh, cung cấp ngữ cảnh, quản lý phong cách đầu ra và cải thiện khả năng suy luận của mô hình. Vì LLM tạo ra câu trả lời bằng cách dự đoán các token tiếp theo dựa trên prompt đầu vào, chất lượng và cấu trúc của prompt đó ảnh hưởng trực tiếp đến kết quả. Các kỹ thuật cơ bản của prompt engineering cho phép các nhà phát triển và người dùng quản lý hiệu quả hành vi của mô hình, giảm thiểu lỗi và thích nghi mô hình với các nhiệm vụ cụ thể mà không cần thay đổi các tham số nội bộ của mô hình.

Các nguyên tắc cơ bản và cấu trúc của prompt

Mặc dù các cách triển khai cụ thể có thể khác nhau, các prompt hiệu quả thường được xây dựng dựa trên các nguyên tắc và cấu trúc chung:

  • Định hướng thực nghiệm: Là một trong những cấu trúc thực tế (nhưng không phải tiêu chuẩn ngành), người ta đề xuất tuân theo các nguyên tắc sau: Đưa ra Định hướng, Chỉ định Định dạng, Cung cấp Ví dụ, Đánh giá Chất lượng và Phân chia Nhiệm vụ.
  • Một prompt hiệu quả thường bao gồm các thành phần sau:
    • Giới thiệu/Vai trò: Thiết lập ngữ cảnh nhiệm vụ hoặc vai trò/nhân vật của mô hình.
    • Hướng dẫn: Chỉ định rõ ràng những gì cần thực hiện.
    • Ngữ cảnh: Thông tin cần thiết (tĩnh hoặc được trích xuất động qua RAG).
    • Ví dụ (Few-shot): Minh họa định dạng/phong cách mong muốn.
    • Yêu cầu phản hồi: Chỉ định rõ ràng những gì mô hình cần tạo ra.
  • Thông điệp hệ thống (System Prompt): Trong các giao diện chat API (ví dụ: mô hình OpenAI, Anthropic) cho phép thiết lập các hướng dẫn toàn cục và vai trò cho toàn bộ phiên làm việc.
  • Định dạng: Sử dụng Markdown, JSON, XML hoặc YAML giúp cấu trúc hóa prompt và tạo thuận lợi cho việc phân tích cú pháp câu trả lời. Các dấu phân cách (```, `"""`, thẻ XML) quan trọng để tách biệt hướng dẫn khỏi dữ liệu.

Các kỹ thuật cơ bản về hướng dẫn và ví dụ

  • Hướng dẫn rõ ràng và cụ thể: Mô tả nhiệm vụ, kết quả mong muốn và các ràng buộc một cách chính xác nhất có thể. Tránh sự mơ hồ.
  • Mô hình hóa vai trò (Role Prompting): Giao cho mô hình một vai trò ("Bạn là chuyên gia về...") để quản lý giọng điệu, phong cách và cơ sở kiến thức.
  • Zero-shot Prompting: Yêu cầu không có ví dụ. Hiệu quả với các nhiệm vụ đơn giản hoặc quen thuộc với mô hình.
  • Few-Shot Prompting: Cung cấp một số (thường từ 2 đến 5) ví dụ "câu hỏi-câu trả lời" để minh họa nhiệm vụ. Trường hợp đặc biệt là One-shot Prompting với một ví dụ duy nhất. Đặc biệt hữu ích cho các định dạng hoặc phong cách phức tạp. Cần thận trọng để tránh hiện tượng neo đậu (anchoring) hoặc nhận diện các mẫu sai từ các ví dụ.

Các kỹ thuật quản lý ngữ cảnh

  • Retrieval-Augmented Generation (RAG): Thêm động các thông tin liên quan từ các cơ sở kiến thức bên ngoài vào prompt trước khi gửi cho LLM. Được Meta AI đề xuất lần đầu vào năm 2020, phương pháp này là chìa khóa để chống lại ảo giác và đảm bảo tính cập nhật của dữ liệu.
  • Phân đoạn (Chunking): Chia văn bản lớn thành các phần nhỏ hơn (chunk) để phù hợp với cửa sổ ngữ cảnh của mô hình. Các chiến lược bao gồm phân chia theo câu, đoạn văn, token (có sự chồng lấp).
  • Tóm tắt: Nén văn bản dài hoặc lịch sử hội thoại để truyền đạt ý nghĩa chính trong ngữ cảnh bị giới hạn.

Các kỹ thuật cải thiện khả năng suy luận (Reasoning)

Các kỹ thuật này nhằm khiến mô hình "suy nghĩ" kỹ lưỡng và có cấu trúc hơn. Hiệu quả của nhiều kỹ thuật trong số này, đặc biệt là CoT, thể hiện rõ trên các mô hình quy mô lớn (thường trên 100 tỷ tham số).

  • Chain-of-Thought (CoT): Hướng dẫn mô hình tạo ra lập luận từng bước trước câu trả lời cuối cùng. Cải thiện đáng kể kết quả trong toán học, logic và các nhiệm vụ nhiều bước.
    • Zero-shot CoT: Dạng đơn giản nhất, không yêu cầu ví dụ. Việc thêm vào prompt một cụm từ như «Hãy suy nghĩ từng bước» (Let's think step by step) đã có thể kích hoạt chuỗi lập luận.
  • Các biến thể CoT:
    • Auto-CoT: Tự động tạo ra các ví dụ lập luận cho few-shot prompting.
    • Self-Consistency: Tạo ra nhiều chuỗi lập luận và chọn câu trả lời phổ biến nhất bằng cách "bỏ phiếu", giúp tăng độ tin cậy.
    • Tree-of-Thoughts (ToT): Khám phá nhiều con đường lập luận dưới dạng cây, với khả năng quay lui và đánh giá các bước trung gian. Kỹ thuật này cho thấy hiệu quả cao trong các nhiệm vụ phức tạp, ví dụ như nâng tỷ lệ thành công giải "Game of 24" từ ~4% lên ~74%.
    • Graph-of-Thought (GoT), LogiCoT và các kỹ thuật khác, hướng đến lập luận phức tạp hơn hoặc được xác minh về mặt logic.
  • ReAct (Reason and Act): Kỹ thuật phát triển từ CoT. Là một vòng lặp lặp đi lặp lại, trong đó mô hình xen kẽ các bước Lập luận (Thought) và Hành động sử dụng Công cụ (Act), cập nhật hiểu biết của mình dựa trên Quan sát (Observation).
  • Self-Refine: Quá trình lặp đi lặp lại trong đó mô hình trước tiên tạo ra câu trả lời, sau đó phê bình nó và cuối cùng cải thiện dựa trên sự phê bình của chính mình. Vòng lặp "tạo ra-phê bình-cải thiện" này có thể được lặp lại nhiều lần.
  • Take a Step Back Prompting: Mô hình trước tiên hình thành các nguyên tắc hoặc trừu tượng hóa chung, sau đó áp dụng chúng vào nhiệm vụ cụ thể.

Các kỹ thuật nâng cao: tác nhân và công cụ

  • Sử dụng công cụ (Tool Usage) / Gọi hàm (Function Calling): Cung cấp cho LLM khả năng gọi các API bên ngoài (tìm kiếm, máy tính, cơ sở dữ liệu). Mô hình tạo ra một yêu cầu có cấu trúc để gọi công cụ, được ứng dụng thực thi, và kết quả được trả về cho mô hình. Các LLM hiện đại (GPT-4, Claude 3) có hỗ trợ tích hợp cho chức năng này.
  • Tác nhân (Agents): Các hệ thống dựa trên LLM có thể tự động lập kế hoạch, sử dụng công cụ và hành động để đạt được mục tiêu. Thường sử dụng các vòng lặp kiểu ReAct. Các framework (LangChain, AutoGen, CrewAI) đơn giản hóa việc tạo ra chúng.
  • Hệ thống đa tác nhân: Tương tác của nhiều tác nhân chuyên biệt để giải quyết các nhiệm vụ phức tạp.

Các kỹ thuật giảm thiểu lỗi và ảo giác

  • RAG: Gắn kết các câu trả lời với dữ liệu thực tế được trích xuất.
  • Hướng dẫn giới hạn câu trả lời: Yêu cầu chỉ trả lời dựa trên ngữ cảnh được cung cấp hoặc chỉ ra sự không chắc chắn ("Nếu câu trả lời không được biết, hãy nói 'Tôi không biết'").
  • Yêu cầu trích dẫn: Yêu cầu mô hình chỉ ra nguồn hoặc trích dẫn các phần của ngữ cảnh mà câu trả lời dựa vào.
  • Xác minh và tự phê bình: Sử dụng các kỹ thuật như Chain-of-Verification (CoVe) (tạo ra câu trả lời với việc kiểm tra và hiệu chỉnh tiếp theo), Self-Refine hoặc yêu cầu trực tiếp mô hình kiểm tra câu trả lời của mình để tìm lỗi.
  • CoT: Bản thân lập luận từng bước có thể giảm các lỗi logic.

Các kỹ thuật đánh giá và lặp lại

Mặc dù đánh giá là một quá trình riêng biệt, một số khía cạnh của nó là một phần của prompt engineering:

  • Kiểm tra A/B các prompt: So sánh hiệu quả của các phiên bản prompt khác nhau trên cùng một nhiệm vụ.
  • Sử dụng LLM để đánh giá: Áp dụng một mô hình mạnh (ví dụ: GPT-4) để đánh giá chất lượng các câu trả lời được tạo ra bởi một prompt hoặc mô hình khác (LLM-as-a-Judge).

Các mẫu prompt

Các cấu trúc phổ biến có thể tái sử dụng:

  • Mẫu Nhân vật (Persona Pattern).
  • Mẫu Tùy chỉnh Đầu ra (Output Customization Pattern).
  • Mẫu Yêu cầu Làm rõ (Question Refinement Pattern).
  • Mẫu Xác minh Nhận thức / Tự phê bình (Cognitive Verifier / Self-Critique Pattern).
  • Mẫu Lập luận Từng bước (Step-by-Step / Chain-of-Thought Pattern).
  • Mẫu Khuôn mẫu (Template Pattern).

Tài liệu tham khảo

  • Radford, A. et al. (2019). Language Models are Unsupervised Multitask Learners. PDF.
  • Brown, T. B. et al. (2020). Language Models are Few-Shot Learners. arXiv:2005.14165.
  • Lewis, P. et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. arXiv:2005.11401.
  • Li, X. L.; Liang, P. (2021). Prefix-Tuning: Optimizing Continuous Prompts for Generation. arXiv:2101.00190.
  • Liu, Y. et al. (2021). Fantastically Ordered Prompts and Where to Find Them: Overcoming Few-Shot Prompt Order Sensitivity. arXiv:2104.08786.
  • Bai, Y. et al. (2022). Constitutional AI: Harmlessness from AI Feedback. arXiv:2212.08073.
  • Wei, J. et al. (2022). Chain-of-Thought Prompting Elicits Reasoning in Large Language Models. arXiv:2201.11903.
  • Wang, X. et al. (2022). Self-Consistency Improves Chain of Thought Reasoning in Language Models. arXiv:2203.11171.
  • Kojima, T. et al. (2022). Large Language Models are Zero-Shot Reasoners. arXiv:2205.11916.
  • Zhang, Z. et al. (2022). Automatic Chain of Thought Prompting in Large Language Models. arXiv:2210.03493.
  • Zhou, D. et al. (2022). Least-to-Most Prompting Enables Complex Reasoning in Large Language Models. arXiv:2205.10625.
  • Yao, S. et al. (2022). ReAct: Synergizing Reasoning and Acting in Language Models. arXiv:2210.03629.
  • Besta, M. et al. (2023). Graph of Thoughts: Solving Elaborate Problems with Large Language Models. arXiv:2308.09687.
  • Madaan, A. et al. (2023). Self-Refine: Iterative Refinement with Self-Feedback. arXiv:2303.17651.
  • Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. arXiv:2302.04761.
  • Rafailov, R. et al. (2023). Direct Preference Optimization: Your Language Model is Secretly a Reward Model. arXiv:2305.18290.
  • Wang, Y. et al. (2023). Self-Instruct: Aligning Language Models with Self-Generated Instructions. arXiv:2212.10560.
  • Yao, S. et al. (2023). Tree of Thoughts: Deliberate Problem Solving with Large Language Models. arXiv:2305.10601.
  • Chen, S. Y. et al. (2023). Extending Context Window of Large Language Models via Positional Interpolation. arXiv:2306.15595.
  • Chang, K. et al. (2024). Efficient Prompting Methods for Large Language Models: A Survey. arXiv:2404.01077.
  • Genkina, D. (2024). AI Prompt Engineering Is Dead. IEEE Spectrum. [1].
  • Li, Z. et al. (2024). Prompt Compression for Large Language Models: A Survey. arXiv:2410.12388.
  • Liang, X. et al. (2024). Internal Consistency and Self-Feedback in Large Language Models: A Survey. arXiv:2407.14507.
  • Han, H. et al. (2025). Retrieval-Augmented Generation with Graphs (GraphRAG). arXiv:2501.00309.
  • Li, W. et al. (2025). A Survey of Automatic Prompt Engineering: An Optimization Perspective. arXiv:2502.11560.
  • Wu, Z. et al. (2025). The Dark Side of Function Calling: Pathways to Jailbreaking Large Language Models. EMNLP 2025. PDF.
  • Yang, B. et al. (2025). Hallucination Detection in Large Language Models with Metamorphic Relations. arXiv:2502.15844.

Xem thêm

  • Mô hình ngôn ngữ lớn
  • Chain-of-Thought Prompting
  • Ảo giác và các câu trả lời không chính xác của LLM