Skip to content
  • Home
  • Code
  • iOS & Swift
  • Combine
  • RxSwift
  • SwiftUI
  • Flutter & Dart
  • Tutorials
  • Art
  • Blog
Fx Studio
  • Home
  • Code
  • iOS & Swift
  • Combine
  • RxSwift
  • SwiftUI
  • Flutter & Dart
  • Tutorials
  • Art
  • Blog
Multi-Layer Prompt Architecture
Written by chuotfx on October 21, 2025

Multi-Layer Prompt Architecture – Chìa khóa Xây dựng Hệ thống AI Phức tạp

Blog

Contents

  • Vấn đề
  • “Prompt Spaghetti” – Vấn đề của Prompt Đơn khối
  • Kiến trúc Prompt Đa tầng (MLPA) là gì?
  • Ví dụ Minh họa: “Trợ lý Tư vấn Du lịch”
    • Định nghĩa các Lớp Prompt
      • Lớp 1: Persona
      • Lớp 2: Ngữ cảnh (Dữ liệu này sẽ được truyền vào tự động)
      • Lớp 3: Nhiệm vụ
      • Lớp 4: Định dạng
    • Bộ điều phối (Orchestrator)
      • Code Python
      • Phân tích mã Python
  • MLPA có phải là “Context Engineering” không?
  • Tạm kết

Chào mừng bạn đến với Fx Studio. Chủ đề bài viết hôm nay là “Kiến trúc Prompt Đa tầng (Multi-Layer Prompt Architecture – MLPA)“.

Vấn đề

Khi chúng ta xây dựng các ứng dụng dựa trên Mô hình Ngôn ngữ Lớn (LLM), độ phức tạp của các câu lệnh (prompt) ngày càng tăng. Chúng ta không còn chỉ yêu cầu “Viết một email”, mà là “Dựa trên lịch sử mua hàng của khách hàng X, phân tích 5 sản phẩm họ có thể quan tâm nhất, sau đó soạn một email marketing với giọng văn thân thiện, cá nhân hóa cho từng sản phẩm và đề xuất mã giảm giá Y, cuối cùng trả về kết quả dưới dạng JSON”.

Khi một prompt trở nên đồ sộ như vậy, chúng ta đối mặt với một vấn đề gọi là “prompt spaghetti” – một mớ câu lệnh rối rắm, khó đọc, khó bảo trì và gần như không thể tái sử dụng. Kiến trúc Prompt Đa tầng (Multi-Layer Prompt Architecture – MLPA) ra đời như một giải pháp thanh lịch cho vấn đề này.

“Prompt Spaghetti” – Vấn đề của Prompt Đơn khối

Hãy tưởng tượng toàn bộ logic của một ứng dụng phức tạp được viết trong một hàm main() duy nhất. Đó chính xác là những gì chúng ta đang làm với các prompt đơn khối (monolithic prompt). Hạn chế của nó là rất rõ ràng:

  • Khó bảo trì: Chỉ cần thay đổi một yêu cầu nhỏ (ví dụ: đổi định dạng output từ JSON sang Markdown), bạn phải dò dẫm trong một “bức tường văn bản” khổng lồ, tiềm ẩn nguy cơ phá vỡ các logic khác.
  • Khó gỡ lỗi (debug): Khi LLM trả về kết quả không mong muốn, việc xác định phần nào trong prompt đã gây ra lỗi là cực kỳ khó khăn.
  • Không thể tái sử dụng: Một phần của prompt (ví dụ: cách xác định vai trò cho AI) có thể hữu ích cho một tác vụ khác, nhưng việc tách nó ra khỏi prompt tổng thể rất phức tạp.
  • Thiếu linh hoạt: Prompt là một khối tĩnh, không thể thích ứng linh hoạt với các input hoặc ngữ cảnh khác nhau.

Kiến trúc Prompt Đa tầng (MLPA) là gì?

MLPA không phải là một kỹ thuật viết prompt, mà là một phương pháp luận thiết kế, một kiến trúc để cấu trúc các prompt một cách có hệ thống.

Thay vì một prompt lớn duy nhất, MLPA đề xuất chia nhỏ prompt thành nhiều “lớp” (layers) hoặc “module” độc lập, mỗi lớp thực hiện một chức năng cụ thể. Các lớp này sau đó được một bộ điều phối (orchestrator) kết hợp lại một cách linh hoạt để tạo thành một prompt hoàn chỉnh cho LLM.

Các lớp cơ bản trong một kiến trúc MLPA thường bao gồm:

  • Lớp Persona/Vai trò (Persona/Role Layer): Xác định AI sẽ “đóng vai” ai. Ví dụ: “Bạn là một chuyên gia marketing”, “Bạn là một lập trình viên Python kinh nghiệm”.
  • Lớp Ngữ cảnh/Dữ liệu (Context/Data Layer): Cung cấp thông tin nền tảng, dữ liệu đầu vào cần thiết để AI thực hiện nhiệm vụ. Đây có thể là thông tin người dùng, nội dung tài liệu, kết quả từ một API, v.v.
  • Lớp Nhiệm vụ/Chỉ thị (Task/Instruction Layer): Mô tả rõ ràng, từng bước những gì AI cần làm.
  • Lớp Định dạng/Ràng buộc (Format/Constraint Layer): Quy định cấu trúc output (JSON, Markdown, XML), các quy tắc cần tuân thủ (ví dụ: “không dài quá 200 từ”, “chỉ sử dụng thông tin được cung cấp”).

Ví dụ Minh họa: “Trợ lý Tư vấn Du lịch”

Hãy xây dựng một trợ lý ảo tư vấn lịch trình du lịch bằng MLPA.

Định nghĩa các Lớp Prompt

Lớp 1: Persona

Bạn là một chuyên gia tư vấn du lịch dày dạn kinh nghiệm, luôn đưa ra những lời khuyên thực tế, hấp dẫn và tối ưu chi phí. Giọng văn của bạn thân thiện và đáng tin cậy.

Lớp 2: Ngữ cảnh (Dữ liệu này sẽ được truyền vào tự động)

Dữ liệu khách hàng:
- Điểm đến: Đà Nẵng, Việt Nam
- Thời gian: 4 ngày 3 đêm
- Số lượng: Gia đình 4 người (2 người lớn, 2 trẻ em 8 và 12 tuổi)
- Sở thích: Tắm biển, khám phá văn hóa, ẩm thực đường phố.
- Ngân sách: 20,000,000 VNĐ (không bao gồm vé máy bay)

Lớp 3: Nhiệm vụ

Nhiệm vụ:
1. Dựa vào sở thích và thành phần gia đình, hãy tạo một lịch trình du lịch chi tiết theo từng ngày.
2. Đề xuất các hoạt động phù hợp cho cả người lớn và trẻ em.
3. Gợi ý ít nhất 5 món ăn địa phương không thể bỏ qua.
4. Ước tính chi phí cho các hoạt động chính để đảm bảo không vượt ngân sách.

Lớp 4: Định dạng

Ràng buộc & Định dạng Output:
- Câu trả lời phải được trình bày dưới dạng một đối tượng JSON.
- Đối tượng JSON phải có các key sau: "lich_trinh", "am_thuc_de_xuat", "uoc_tinh_chi_phi".
- Key "lich_trinh" phải là một mảng các đối tượng, mỗi đối tượng đại diện cho một ngày và có các key "ngay", "buoi_sang", "buoi_chieu", "buoi_toi".

Bộ điều phối (Orchestrator)

Bộ điều phối (Orchestrator) sẽ là một đoạn mã (ví dụ: Python) lấy các lớp trên và ghép chúng lại thành một prompt cuối cùng để gửi đến LLM.

Đây là phần quan trọng nhất: một đoạn mã Python đơn giản đóng vai trò là “bộ điều phối”. Nó sẽ lấy các lớp đã định nghĩa, kết hợp chúng lại và tạo thành một prompt hoàn chỉnh sẵn sàng để gửi đến API của mô hình ngôn ngữ lớn (LLM).

Code Python

# --- Định nghĩa các lớp prompt dưới dạng biến chuỗi ---

# Lớp 1: Xác định vai trò của AI
persona_layer = """
Bạn là một chuyên gia tư vấn du lịch dày dạn kinh nghiệm, luôn đưa ra những lời khuyên thực tế, hấp dẫn và tối ưu chi phí. Giọng văn của bạn thân thiện và đáng tin cậy.
"""

# Lớp 2: Cung cấp dữ liệu đầu vào.
# Trong thực tế, dữ liệu này sẽ được lấy từ database hoặc input của người dùng.
context_layer = """
Dữ liệu khách hàng:
- Điểm đến: Đà Nẵng, Việt Nam
- Thời gian: 4 ngày 3 đêm
- Số lượng: Gia đình 4 người (2 người lớn, 2 trẻ em 8 và 12 tuổi)
- Sở thích: Tắm biển, khám phá văn hóa, ẩm thực đường phố.
- Ngân sách: 20,000,000 VNĐ (không bao gồm vé máy bay)
"""

# Lớp 3: Các chỉ thị, nhiệm vụ cụ thể
task_layer = """
Nhiệm vụ:
1. Dựa vào sở thích và thành phần gia đình, hãy tạo một lịch trình du lịch chi tiết theo từng ngày.
2. Đề xuất các hoạt động phù hợp cho cả người lớn và trẻ em.
3. Gợi ý ít nhất 5 món ăn địa phương không thể bỏ qua.
4. Ước tính chi phí cho các hoạt động chính để đảm bảo không vượt ngân sách.
"""

# Lớp 4: Quy định về định dạng output
format_layer = """
Ràng buộc & Định dạng Output:
- Câu trả lời phải được trình bày dưới dạng một đối tượng JSON.
- Đối tượng JSON phải có các key sau: "lich_trinh", "am_thuc_de_xuat", "uoc_tinh_chi_phi".
- Key "lich_trinh" phải là một mảng các đối tượng, mỗi đối tượng đại diện cho một ngày và có các key "ngay", "buoi_sang", "buoi_chieu", "buoi_toi".
"""

# --- BỘ ĐIỀU PHỐI (ORCHESTRATOR) ---
# Lắp ráp các lớp lại với nhau để tạo thành prompt cuối cùng.
# Sử dụng các dấu phân cách rõ ràng để LLM hiểu cấu trúc.
final_prompt = f"""
---
[VAI TRÒ]
{persona_layer.strip()}
---
[BỐI CẢNH & DỮ LIỆU]
{context_layer.strip()}
---
[YÊU CẦU NHIỆM VỤ]
{task_layer.strip()}
---
[ĐỊNH DẠNG OUTPUT]
{format_layer.strip()}
---
"""

# In ra prompt cuối cùng để kiểm tra
print("--- FINAL PROMPT TO BE SENT TO LLM ---")
print(final_prompt)

# --- Gửi prompt đến LLM (Mô phỏng) ---
def call_llm_api(prompt):
    """
    Hàm này mô phỏng việc gọi đến API của một LLM như GPT, Gemini, Claude...
    Nó sẽ nhận prompt và trả về kết quả.
    """
    print("\n--- SIMULATING API CALL WITH THE FINAL PROMPT ---")
    # response = some_llm_library.generate(prompt)
    # return response
    mock_response = """
    {
      "lich_trinh": [
        {
          "ngay": 1,
          "buoi_sang": "Đáp chuyến bay đến Đà Nẵng, nhận phòng khách sạn gần biển Mỹ Khê.",
          "buoi_chieu": "Tắm biển Mỹ Khê, tham gia các hoạt động thể thao trên biển.",
          "buoi_toi": "Dạo cầu Rồng xem phun lửa/nước (cuối tuần), thưởng thức hải sản."
        }
      ],
      "am_thuc_de_xuat": ["Bánh xèo", "Mì Quảng", "Bún chả cá"],
      "uoc_tinh_chi_phi": "..."
    }
    """
    print("--- MOCK RESPONSE FROM LLM ---")
    print(mock_response)
    return mock_response

# Gọi hàm mô phỏng
llm_output = call_llm_api(final_prompt)

Phân tích mã Python

  1. Tách biệt rõ ràng: Mỗi lớp được lưu vào một biến riêng (persona_layer, context_layer,…). Điều này giúp mã nguồn cực kỳ dễ đọc và dễ quản lý.
  2. Linh hoạt: Bạn có thể dễ dàng thay đổi nội dung của bất kỳ lớp nào mà không ảnh hưởng đến các lớp khác. Ví dụ, để yêu cầu output là Markdown thay vì JSON, bạn chỉ cần thay đổi chuỗi format_layer.
  3. Tái sử dụng: Lớp persona_layer có thể được tái sử dụng cho nhiều yêu cầu tư vấn du lịch khác nhau.
  4. Lắp ráp có cấu trúc: Sử dụng f-string trong Python, chúng ta kết hợp các lớp lại. Việc thêm các tiêu đề như [VAI TRÒ], [BỐI CẢNH & DỮ LIỆU] giúp LLM phân tách và hiểu rõ từng phần của yêu cầu, tăng khả năng cho ra kết quả chính xác.
  5. Cách tiếp cận này biến việc quản lý prompt từ một công việc “viết văn” thành một công việc “kỹ thuật phần mềm” có cấu trúc và quy củ.

MLPA có phải là “Context Engineering” không?

Đây là một câu hỏi rất hay. Câu trả lời là Không, nhưng chúng liên quan chặt chẽ.

  • Context Engineering: Là quá trình tối ưu hóa nội dung của thông tin được đưa vào prompt (chủ yếu là Lớp Ngữ cảnh). Nó tập trung vào việc làm thế nào để chọn lọc, cấu trúc và trình bày dữ liệu (ví dụ: sử dụng kỹ thuật RAG) để LLM có thể hiểu và sử dụng hiệu quả nhất.
  • Multi-Layer Prompt Architecture (MLPA): Là khung kiến trúc tổng thể để tổ chức tất cả các thành phần của một prompt (bao gồm cả context, vai trò, nhiệm vụ, định dạng).

Nói một cách dễ hiểu: MLPA là bản thiết kế của ngôi nhà, còn Context Engineering là kỹ thuật xử lý và sắp xếp đồ đạc trong phòng khách (Lớp Ngữ cảnh) sao cho hợp lý nhất. Context Engineering là một phần quan trọng, một kỹ năng cần thiết để làm tốt một lớp trong kiến trúc MLPA.

Tạm kết

MLPA không chỉ là một khái niệm lý thuyết trong các bài nghiên cứu. Nó đại diện cho một bước tiến hóa tất yếu trong ngành kỹ thuật prompt (prompt engineering). Khi các hệ thống AI ngày càng phức tạp và mang tính “agentic” (tự chủ) hơn, việc chuyển từ tư duy viết prompt đơn khối sang tư duy thiết kế kiến trúc prompt là điều bắt buộc.

Bằng cách áp dụng MLPA, các nhà phát triển có thể xây dựng những ứng dụng LLM mạnh mẽ, linh hoạt, dễ bảo trì và dễ dàng mở rộng hơn bao giờ hết, mở đường cho một thế hệ AI tinh vi và đáng tin cậy hơn.

 

Okay! Tới đây, mình xin kết thúc bài viết này. Nếu có gì thắc mắc hay góp ý cho mình. Thì bạn có thể để lại bình luận hoặc gửi email theo trang Contact.

Cảm ơn bạn đã đọc bài viết này!

FacebookTweetPinYummlyLinkedInPrintEmailShares0

Related Posts:

  • SMART
    SMART - Hướng dẫn dành tạo Prompt cho người mới bắt đầu
  • feature_bg_blog_016
    Inject Marker : Từ Chỉ Dẫn Đơn Giản Đến Công Cụ Khoa…
  • feature_bg_blog_027
    Tại sao cần các Chiến Lược Quản Lý Ngữ Cảnh khi…
  • feature_bg_3
    Clean Architecture trong iOS
Tags: AI, blog, Prompt engineering
Written by chuotfx

Hãy ngồi xuống, uống miếng bánh và ăn miếng trà. Chúng ta cùng nhau đàm đạo về đời, về code nhóe!

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Donate – Buy me a coffee!

Fan page

Fx Studio

Tags

Actor Advanced Swift AI api AppDistribution ARC autolayout basic ios tutorial blog ci/cd closure collectionview combine concurrency crashlytics dart dart basic dart tour Declarative delegate deploy design pattern fabric fastlane firebase flavor flutter GCD iOS MVVM optional Prompt engineering Prompt for Coding protocol Python rxswift Swift Swift 5.5 SwiftData SwiftUI SwiftUI Notes tableview testing TravisCI unittest

Recent Posts

  • Multi-Layer Prompt Architecture – Chìa khóa Xây dựng Hệ thống AI Phức tạp
  • Khi “Prompt Template” Trở Thành Chiếc Hộp Pandora
  • Vòng Lặp Ảo Giác
  • Giàn Giáo Nhận Thức (Cognitive Scaffold) trong Prompt Engineering
  • Bản Thể Học (Ontology) trong Prompt Engineering
  • Hướng Dẫn Vibe Coding với Gemini CLI
  • Prompt Bản Thể Học (Ontological Prompt) và Kiến Trúc Nhận Thức (Cognitive Architecture Prompt) trong AI
  • Prompt for Coding – Code Translation Nâng Cao & Đối Phó Rủi Ro và Đảm Bảo Chất Lượng
  • Tại sao cần các Chiến Lược Quản Lý Ngữ Cảnh khi tương tác với LLMs thông qua góc nhìn AI API
  • Prompt for Coding – Code Translation với Kỹ thuật Exemplar Selection (k-NN)

You may also like:

  • Prompt Engineering - Con Đường Để Trở Thành Một Nghề Nghiệp
    feature_bg_blog_007
  • Inject Marker : Từ Chỉ Dẫn Đơn Giản Đến Công Cụ Khoa…
    feature_bg_blog_016
  • SMART - Hướng dẫn dành tạo Prompt cho người mới bắt đầu
    SMART
  • XML Delimiters - Mở khóa thế giới prompt phức tạp
    XML Delimiters
  • Prompt trong 10 phút
    prompt

Archives

  • October 2025 (1)
  • September 2025 (4)
  • August 2025 (5)
  • July 2025 (10)
  • June 2025 (1)
  • May 2025 (2)
  • April 2025 (1)
  • March 2025 (8)
  • January 2025 (7)
  • December 2024 (4)
  • September 2024 (1)
  • July 2024 (1)
  • June 2024 (1)
  • May 2024 (4)
  • April 2024 (2)
  • March 2024 (5)
  • January 2024 (4)
  • February 2023 (1)
  • January 2023 (2)
  • November 2022 (2)
  • October 2022 (1)
  • September 2022 (5)
  • August 2022 (6)
  • July 2022 (7)
  • June 2022 (8)
  • May 2022 (5)
  • April 2022 (1)
  • March 2022 (3)
  • February 2022 (5)
  • January 2022 (4)
  • December 2021 (6)
  • November 2021 (8)
  • October 2021 (8)
  • September 2021 (8)
  • August 2021 (8)
  • July 2021 (9)
  • June 2021 (8)
  • May 2021 (7)
  • April 2021 (11)
  • March 2021 (12)
  • February 2021 (3)
  • January 2021 (3)
  • December 2020 (3)
  • November 2020 (9)
  • October 2020 (7)
  • September 2020 (17)
  • August 2020 (1)
  • July 2020 (3)
  • June 2020 (1)
  • May 2020 (2)
  • April 2020 (3)
  • March 2020 (20)
  • February 2020 (5)
  • January 2020 (2)
  • December 2019 (12)
  • November 2019 (12)
  • October 2019 (19)
  • September 2019 (17)
  • August 2019 (10)

About me

Education, Mini Game, Digital Art & Life of coders
Contacts:
contacts@fxstudio.dev

Fx Studio

  • Home
  • About me
  • Contact us
  • Mail
  • Privacy Policy
  • Donate
  • Sitemap

Categories

  • Art (1)
  • Blog (65)
  • Code (11)
  • Combine (22)
  • Flutter & Dart (24)
  • iOS & Swift (102)
  • No Category (1)
  • RxSwift (37)
  • SwiftUI (80)
  • Tutorials (99)

Newsletter

Stay up to date with our latest news and posts.
Loading

    Copyright © 2025 Fx Studio - All rights reserved.