Skip to main content

Command Palette

Search for a command to run...

Multi Agent Design Patterns

Published
•4 min read•View as Markdown

The augmented LLM

Augmented LLM (Large Language Model - Ngôn ngữ lớn được tăng cường) là mô hình ngôn ngữ lớn (LLM) được mở rộng khả năng bằng cách tích hợp thêm các công cụ bên ngoài, cơ sở dữ liệu, hoặc hệ thống tính toán để cải thiện hiệu suất và độ chính xác.

Khác với LLM truyền thống (chỉ dựa trên dữ liệu đã được huấn luyện), Augmented LLM có thể:

  • Truy cập thông tin thời gian thực (real-time data) từ web hoặc API.

  • Sử dụng các công cụ bên ngoài (tools) như máy tính, công cụ tìm kiếm, hoặc cơ sở dữ liệu.

  • Thực hiện các tác vụ phức tạp hơn như lập trình, phân tích dữ liệu, hoặc tự động hóa.

Pattern: Prompt Chaining

Prompt Chaining (Xâu chuỗi lệnh) là một kỹ thuật trong AI/LLM (Large Language Models) giúp chia nhỏ các tác vụ phức tạp thành nhiều bước nhỏ, thông qua một chuỗi các prompt (lệnh) được thiết kế tuần tự. Mỗi prompt sẽ xử lý một phần của bài toán, và kết quả từ prompt trước sẽ được dùng làm đầu vào cho prompt tiếp theo.

Ở mỗi bước ta có thể thêm các bước kiểm tra bằng lập trình (Gate) vào bất kỳ bước trung gian nào để đảm bảo quá trình vẫn đi đúng hướng.

Khi nào nên sử dụng: Workflow này lý tưởng cho các tình huống mà nhiệm vụ có thể chia thành các subtasks cố định. Mục tiêu chính là đánh đổi độ trễ (Độ trễ tăng do nhiều lần gọi LLM) để có độ chính xác cao hơn, bằng cách làm cho mỗi lần gọi LLM trở thành 1 nhiệm vụ dễ hơn.

Pattern: Routing

Routing (Định tuyến) là một mẫu thiết kế trong hệ thống đa tác tử (multi-agent) hoặc LLM, nơi một bộ định tuyến (router) quyết định cách phân phối đầu vào (input) đến các chuyên gia con (sub-agents hoặc specialized LLMs/tools) dựa trên nội dung, ngữ cảnh hoặc yêu cầu cụ thể.

Pattern này phát huy hiệu quả trong tình huống: Đầu vào đa dạng, cần xử lý chuyên biệt, việc phân loại tác vụ được xử lí chính xác và rõ ràng bằng mô hình LLM hoặc các thuật toán.

Ví dụ:

  • Ta thiết kế tối ưu prompt cho 3 tác vụ sau [DỊCH_THUẬT, TOÁN_HỌC, HỎI_ĐÁP]

  • Yêu cầu: dịch câu “i love you” ra tiếng việt

  • Phân loại tác vụ này vào agent DỊCH_THUẬT → Kết quả

Pattern: Parallelization

Parallelization là mẫu thiết kế thực hiện nhiều tác vụ đồng thời bằng cách chia công việc cho nhiều agent/tool chạy song song, thay vì tuần tự. Sau đó tổng hợp lại kết quả và trả về. Pattern này tối ưu thời gian xử lý, đặc biệt khi các tác vụ độc lập với nhau. Pattern này có 2 biến thể chính:

  • Phân đoạn (Sectioning): chia một nhiệm vụ thành các nhiệm vụ con độc lập chạy song song

  • Bỏ phiếu (Voting): Chạy cùng một nhiệm vụ nhiều lần để tạo ra nhiều kết quả đầu ra và chọn đa số

Khi nào nên sử dụng: Parallelization nên sử dụng khi các nhiệm vụ con được chia nhỏ có thể được song song hoá để tăng tốc độ, hoặc khi cần nhiều quan điểm để có kết quả có độ tin cậy cao hơn.

Pattern: Orchestrator - workers

Orchestrator-Workers (Điều phối viên - Công nhân) là mẫu thiết kế phân cấp, trong đó một Orchestrator (agent trung tâm) điều phối nhiệm vụ cho các Worker (agent chuyên biệt), giám sát quy trình và tổng hợp kết quả.

  • Orchestrator:

    • Tiếp nhận input đầu vào, phân tích yêu cầu.

    • Chia nhỏ nhiệm vụ, giao cho worker phù hợp.

    • Giám sát tiến độ, xử lý lỗi, tổng hợp kết quả.

  • Workers:

    • Chuyên biệt hóa (mỗi worker chỉ làm 1 loại tác vụ).

    • Có thể là LLM, API, script, hoặc agent con.

Khi nào nên sử dụng: Orchestrator - workers phù hợp với các nhiệm vụ phức tạp mà không thể dự đoán được các nhiệm vụ con cần thiết. Có cấu trúc tương tự như song song hoá (Parallelization) tuy nhiên điểm khác biệt chính là tính linh hoạt khi các nhiệm vụ con không được xác định trước mà được Orchestrator xác định dựa vào đầu vào cụ thể.

Pattern: Evaluator - Optimizer

Evaluator-Optimizer (Đánh giá - Tối ưu) là mẫu thiết kế dùng hai agent phối hợp:

  • Evaluator (Agent đánh giá): Phân tích chất lượng kết quả, phát hiện lỗi hoặc điểm cần cải thiện.

  • Optimizer (Agent tối ưu): Dựa trên feedback từ Evaluator để điều chỉnh hành vi hoặc đầu ra.

Khi nào nên sử dụng: Evaluator - Optimizer tốt khi ta có thể xác định rõ các tiêu chí để đánh giá kết quả đầu ra có tốt hay không cần cải thiện gì. Từ đó có thể sửa đi sửa lại nhiều lần để đặt được kết quả tốt hơn.

Pattern này giúp LLM tự trau dồi kỹ năng, tạo ra kết quả ngày càng tốt hơn.

Tham khảo

Lớp học nâng cao chuyên Agent - Protonx

More from this blog

TAN THANH

24 posts