Vượt qua giới hạn của LLM với CoA

Kiến trúc Chain-of-Agents (CoA) đang định hình tương lai của trí tuệ nhân tạo khi có thể tạo nên một đội ngũ AI gồm những ‘agent chuyên gia’ vượt trội. Nói cách khác, đoàn kết chính là sức mạnh vô địch.

Thế giới đang chứng kiến sự trỗi dậy mạnh mẽ của AI, đặc biệt là các mô hình ngôn ngữ lớn (LLM) như GPT-4, Gemini, LLaMA, và Claude có khả năng đáng kinh ngạc trong một loạt các tác vụ, từ viết văn bản tự nhiên, dịch thuật, tóm tắt, đến trả lời câu hỏi và thậm chí là viết code.

Thế giới cũng đang xôn xao bởi những mô hình AI mới, rẻ hơn, mạnh hơn từ nước bạn như DeepSeek, Qwen, Janus Pro, hay mới đây nhất, nhóm nghiên cứu AI ở Stanford và University of Washington đã phát triển một model có hiệu suất tương đương OpenAI và Deepseek R1 chỉ với 50 USD. Việc xuất hiện nhiều model mạnh và rẻ, prompting cũng trở nên dễ dàng hơn khiến chúng ta cảm thấy AI trong thời đại này là một điều dễ thực hiện. Khoa Trần cũng đã có một bài viết rất hay về cạm bẫy AI này.

Tuy nhiên, khi đối mặt với những bài toán phức tạp trong thế giới thực, đòi hỏi khả năng suy luận đa bước, chuyên môn hóa sâu, độ chính xác cao và khả năng thích ứng linh hoạt, các LLM vẫn bộc lộ những hạn chế đáng kể. Để cải thiện điều này, hãy cùng nhìn sâu vào mô hình triển khai AI và khám phá cách thức xây dựng một hệ thống kết hợp sức mạnh của nhiều agent AI để cùng giải quyết một vấn đề phức tạp. Các agent này có thể là các LLM, các mô hình AI chuyên biệt, hoặc thậm chí là các ứng dụng truyền thống. Bên cạnh các agent, không thể thiếu vai trò của prompt engineering (kỹ thuật tạo lời nhắc), dữ liệu chất lượng, và Human-in-the-loop (vòng lặp con người).

Kiến trúc cho bài toán phức tạp

Chúng ta hãy cùng thử xem xét một mô hình kiến trúc trong đó một tác vụ lớn và phức tạp được chia nhỏ thành các tác vụ con, và mỗi tác vụ con được giao cho một agent AI xử lý. Các agent này làm việc cùng nhau, thường là theo một chuỗi (chain), trong đó đầu ra của agent này trở thành đầu vào cho agent tiếp theo, tạm gọi là Chain-of-Agents (CoA). Tuy nhiên, CoA không nhất thiết phải luôn là một chuỗi tuyến tính, nó có thể bao gồm các luồng công việc song song, rẽ nhánh và lặp lại.

Upload image

Kiến trúc CoA mang lại nhiều lợi ích quan trọng so với việc sử dụng một mô hình AI duy nhất, đặc biệt là khi giải quyết các bài toán phức tạp.

  • Chuyên môn hóa (Specialization): Thay vì cố gắng làm 'tất cả trong một' với một mô hình AI duy nhất, CoA chia nhỏ công việc lớn thành các phần việc nhỏ hơn. Mỗi phần việc nhỏ này được xử lý bởi một agent chuyên biệt, được thiết kế và huấn luyện riêng (hoặc fine-tuned) cho nhiệm vụ đó. Điều này giống như việc bạn có một đội ngũ chuyên gia, mỗi người giỏi một lĩnh vực, thay vì một người phải ôm đồm tất cả.
  • Suy luận đa bước (Multi-step Reasoning): CoA cho phép giải quyết các vấn đề phức tạp đòi hỏi nhiều bước suy luận, giống như cách con người suy nghĩ. Mỗi agent đóng góp một bước trong quá trình suy luận, và kết quả của agent này sẽ là đầu vào cho agent tiếp theo. Điều này giúp giải quyết các bài toán mà một mô hình AI duy nhất khó có thể xử lý.
  • Mô-đun hóa (Modularity): Kiến trúc CoA giống như các khối LEGO, bạn có thể dễ dàng thêm, bớt, thay thế, hoặc nâng cấp từng 'khối' (agent) mà không ảnh hưởng đến hệ thống. Điều này giúp hệ thống linh hoạt và dễ dàng thích ứng với các thay đổi.
  • Khả năng mở rộng (Scalability): Khi nhu cầu thay đổi, bạn có thể mở rộng quy mô từng agent một cách độc lập, thay vì phải mở rộng toàn bộ hệ thống giúp tiết kiệm tài nguyên và chi phí.
  • Khả năng giải thích (Explainability): Quá trình làm việc của CoA thường minh bạch hơn so với một LLM 'hộp đen'. Việc phân tách tác vụ thành các bước nhỏ hơn giúp dễ dàng theo dõi, hiểu và gỡ lỗi.
  • Khả năng phục hồi (Resilience): Nếu một agent gặp sự cố, các agent khác vẫn có thể tiếp tục hoạt động, và hệ thống có thể được thiết kế để tự động phục hồi hoặc chuyển hướng công việc.
  • Kết hợp các loại mô hình: CoA cho phép kết hợp các loại mô hình AI khác nhau (LLM, mô hình phân loại, mô hình trích xuất thông tin, ...) để tận dụng thế mạnh của từng loại. Điều này giống như việc bạn có thể sử dụng các công cụ khác nhau cho các công việc khác nhau.

Prompt Engineering

Kiến trúc CoA dùng LLM nên prompt engineering đóng vai trò then chốt, vượt xa việc cung cấp đầu vào đơn thuần. Prompt trở thành công cụ điều khiển luồng xử lý, định hình hành vi của từng agent LLM và đảm bảo sự phối hợp nhịp nhàng giữa chúng. Một prompt được thiết kế tốt là yếu tố quyết định giữa một hệ thống CoA hoạt động hiệu quả và một hệ thống cho ra kết quả không như mong đợi.

Thiết kế prompt

Các prompt cần được thiết kế tỉ mỉ để đáp ứng các yêu cầu sau:

  • Phân chia công việc rõ ràng: Mỗi agent cần biết rõ nhiệm vụ của mình là gì và đầu ra của mình sẽ được sử dụng như thế nào, định dạng cụ thể ra sao.
  • Đảm bảo tính nhất quán: Đầu ra của agent này phải được định dạng và cấu trúc sao cho phù hợp với đầu vào của agent tiếp theo. Chúng ta cần xem xét các yếu tố như kiểu dữ liệu, cấu trúc dữ liệu, ngữ nghĩa.
  • Truyền đạt thông tin cần thiết: Các prompt cần truyền đạt đầy đủ thông tin cần thiết từ agent này sang agent khác. Prompt cần cung cấp đầy đủ thông tin ngữ cảnh cần thiết cho agent LLM để thực hiện nhiệm vụ.
  • Xử lý các trường hợp đặc biệt: Prompt nên bao gồm hướng dẫn cho agent LLM về cách xử lý các trường hợp lỗi, dữ liệu không hợp lệ, hoặc các tình huống bất thường.

Prompt pipeline

Prompt engineering trong CoA không chỉ dừng lại ở việc thiết kế prompt cho từng agent riêng lẻ, mà còn bao gồm việc xây dựng một prompt pipeline để điều phối hoạt động của toàn bộ chuỗi.

  • Prompt Chaining: Thiết lập một chuỗi các prompt, trong đó đầu ra của prompt trước trở thành đầu vào của prompt sau. Cần chú ý đến việc chuyển đổi định dạng dữ liệu giữa các bước.
  • Prompt Decomposition: Chia một prompt phức tạp ban đầu thành nhiều prompt nhỏ, đơn giản hơn cho các agent LLM khác nhau. Mỗi agent chỉ xử lý một phần của bài toán.
  • Prompt Aggregation: Kết hợp đầu ra từ nhiều agent LLM thành một kết quả cuối cùng. Có thể sử dụng một agent LLM riêng biệt để thực hiện việc tổng hợp này.
  • Prompt Switching: Thay đổi prompt dựa trên kết quả trung gian hoặc các điều kiện bên ngoài. Ví dụ, nếu một agent LLM không thể trả lời câu hỏi, chuyển sang một prompt khác yêu cầu agent tìm kiếm thông tin trên web hoặc dựa trên phân loại cảm xúc của một đoạn văn bản, chọn một prompt tiếp theo phù hợp.

Data, data và data

Dữ liệu là 'máu' của AI. Dù có thuật toán tốt nhất và prompt tinh vi nhất, nếu dữ liệu kém chất lượng, kết quả đầu ra của hệ thống AI cũng sẽ kém. Trong CoA, dữ liệu đóng vai trò ở nhiều cấp độ.

Dữ liệu đầu vào (Input Data)

Yêu cầu của người dùng hoặc dữ liệu ban đầu cần phải rõ ràng, không mơ hồ và đầy đủ thông tin để các agent có thể hiểu và xử lý.

Dữ liệu cần được định dạng phù hợp với yêu cầu của từng agent (ví dụ: văn bản thuần túy, JSON, CSV, ...). Dữ liệu có thể cần được tiền xử lý như làm sạch, chuẩn hóa, mã hóa trước khi đưa vào agent.

Dữ liệu trung gian (Intermediate Data)

Đầu ra của agent này là đầu vào của agent khác, vì vậy chất lượng của dữ liệu trung gian ảnh hưởng trực tiếp đến hiệu suất của toàn bộ chuỗi. Đây là lý do cần có cơ chế kiểm tra và đảm bảo chất lượng dữ liệu trung gian (ví dụ: kiểm tra định dạng, kiểm tra tính hợp lệ, ...).

Dữ liệu huấn luyện (Training Data)

Nếu bạn muốn fine-tune các LLM để tạo các narrow agent, bạn cần có dữ liệu huấn luyện chất lượng cao, đặc trưng cho tác vụ của từng agent.

  • Số lượng: Số lượng dữ liệu cần thiết phụ thuộc vào độ phức tạp của tác vụ và mô hình bạn sử dụng. Thường thì vài trăm đến vài nghìn ví dụ là đủ cho fine-tuning.
  • Chất lượng: Chính xác, đầy đủ, nhất quán, không chứa các thông tin sai lệch hoặc thiên vị.
  • Đa dạng: Dữ liệu huấn luyện nên bao gồm các trường hợp khác nhau để mô hình có thể học được cách xử lý các tình huống đa dạng.
  • Gán nhãn: Dữ liệu huấn luyện thường cần được gán nhãn (ví dụ: phân loại văn bản, đánh dấu các thực thể, ...).

Dữ liệu đánh giá (Evaluation Data)

Mục đích của dữ liệu đánh giá chính là để đo lường hiệu suất của hệ thống CoA và xác định các điểm cần cải thiện. Trong đó, dữ liệu đánh giá nên độc lập với dữ liệu huấn luyện và dữ liệu kiểm tra. Dữ liệu đánh giá nên bao gồm các trường hợp khác nhau, cả các trường hợp khó và các trường hợp biên.

Narrow Agent

Trong kiến trúc CoA, Narrow Agent LLM là một LLM hoặc biến thể của nó (ví dụ: phiên bản thu nhỏ, phiên bản đã fine-tune) được thiết kế và tối ưu hóa để thực hiện một tác vụ cụ thể và giới hạn. Khác với các LLM đa năng (general-purpose LLM), Narrow Agent LLM tập trung vào việc trở thành 'chuyên gia' trong một lĩnh vực hẹp, tận dụng sức mạnh nền tảng của LLM nhưng được điều chỉnh để đạt hiệu suất tối ưu trong tác vụ đó.

Xây dựng hệ thống gồm nhiều agent

Ví dụ khi xây dựng hệ thống hỗ trợ phát triển phần mềm, các công ty phần mềm thường xuyên được khách hàng yêu cầu gửi proposal (Request for Proposal - RFP). Việc xử lý RFP thủ công tốn nhiều thời gian và công sức. Do khối lượng công việc lớn và sự khác biệt trong cách tiếp cận của từng chuyên gia, quy trình này thường diễn ra không nhất quán và dễ xảy ra sai sót.

Việc thiết kế một hệ thống tự động hóa quy trình phát triển phần mềm, từ khi tiếp nhận RFP đến khi có thiết kế chi tiết là rất cần thiết. Hệ thống tự động hóa sẽ cần nhiều agent, có thể được thiết kế để giải quyết từng đầu việc.

Agent tiếp nhận RFP (RFP Intake Agent)

Đầu vào: Tài liệu RFP (PDF, Word)

Đầu ra:

  • Tóm tắt các yêu cầu chính của RFP
  • Danh sách các tính năng cần phát triển
  • Các ràng buộc về thời gian, ngân sách, công nghệ
  • Các câu hỏi cần làm rõ với khách hàng

Chuyên biệt hóa: Dựa trên dữ liệu các RFP và bản tóm tắt tương ứng. Sử dụng prompt để trích xuất các thông tin quan trọng.

Agent phân tích yêu cầu (Requirements Analysis Agent)

Đầu vào: Đầu ra của Agent tiếp nhận RFP

Đầu ra:

  • User stories chi tiết
  • Use cases
  • Các yêu cầu phi chức năng (ví dụ: hiệu suất, bảo mật, khả năng mở rộng)

Chuyên biệt hóa: Dựa trên dữ liệu các yêu cầu phần mềm và các tài liệu phân tích tương ứng. Sử dụng prompt để tạo ra các user stories và use cases theo các mẫu chuẩn.

Agent thiết kế kiến trúc (Architecture Design Agent)

Đầu vào: Đầu ra của Agent phân tích yêu cầu

Đầu ra:

  • Sơ đồ kiến trúc hệ thống (ví dụ: microservices, client-server)
  • Mô tả các thành phần chính của hệ thống
  • Các công nghệ được đề xuất (ví dụ: ngôn ngữ lập trình, framework, cơ sở dữ liệu)

Chuyên biệt hóa: Sử dụng prompt để yêu cầu LLM đề xuất các kiến trúc phù hợp với các yêu cầu đã cho, kết hợp với RAG để truy cập các tài liệu thiết kế kiến trúc mẫu.

Agent lập kế hoạch (Project Planning Agent)

Đầu vào: Đầu ra của Agent thiết kế kiến trúc và Agent phân tích yêu cầu

Đầu ra:

  • Kế hoạch dự án
  • Phân chia công việc
  • Ước tính thời gian và chi phí

Chuyên biệt hóa: Sử dụng prompt và các dữ liệu tham khảo để yêu cầu LLM tạo ra project plan, WBS và Estimation dựa trên các user stories, use cases, và kiến trúc hệ thống.

Agent thiết kế chi tiết (Detail Design Agent)

Đầu vào: Đầu ra của tất cả các agent trước

Đầu ra:

  • Các workflow của từng chức năng
  • Input/Output các function

Chuyên biệt hóa: Fine-tuned trên tập dữ liệu các tài liệu thiết kế phần mềm tương ứng.

Narrow agent vs general-purpose agent

Narrow agent có thể giúp giảm bớt sự phức tạp của dữ liệu mà agent cần xử lý so với một agent lớn đa năng (general-purpose agent).

Upload image

Ngoài ra, narrow agent còn có những khác biệt về độ đơn giản và kiểm soát chất lượng dữ liệu hiệu quả, cụ thể như:

  • Giảm yêu cầu về lượng dữ liệu (data volume): Narrow agent có thể đạt hiệu suất tốt với lượng dữ liệu nhỏ hơn nhiều, đặc biệt là khi sử dụng kỹ thuật fine-tuning trên một mô hình LLM đã được huấn luyện trước.
  • Dữ liệu trung gian: Đơn giản và dễ quản lý hơn do đầu ra của agent này là đầu vào của agent khác.
  • Dễ dàng kiểm soát chất lượng dữ liệu: Do phạm vi dữ liệu hẹp hơn và chuyên biệt hơn, việc kiểm soát chất lượng dữ liệu cho narrow agent dễ dàng hơn so với agent lớn.

HITL, HOTL hay HOOTL

Dù AI có tiên tiến đến đâu, sự tham gia của con người vẫn rất quan trọng, đặc biệt là trong các hệ thống AI phức tạp như CoA, vai trò của con người không còn đơn thuần là người sử dụng cuối cùng. Thay vào đó, con người có thể tham gia vào các giai đoạn khác nhau của quá trình vận hành hệ thống, tạo nên các mô hình tương tác đa dạng. Mỗi mô hình có mức độ tự động hóa và vai trò của con người khác nhau, phù hợp với các ứng dụng và yêu cầu cụ thể.

Human-in-the-loop (HITL)

Trong mô hình HITL, con người là một phần của vòng lặp, đóng vai trò tích cực và trực tiếp trong quá trình ra quyết định của hệ thống AI. Con người và AI làm việc cùng nhau, tương tác qua lại để giải quyết vấn đề.

Upload image

Human-on-the-loop (HOTL)

Trong mô hình HOTL, hệ thống AI hoạt động tự động phần lớn thời gian, nhưng con người đóng vai trò giám sát và có thể can thiệp khi cần thiết. Con người 'ở trên' vòng lặp nghĩa là không trực tiếp tham gia vào từng bước thực hiện của AI nhưng có thể điều chỉnh các tham số, quy tắc hoặc hành vi của hệ thống.

Upload image

Human-out-of-the-Loop (HOOTL)

Trong mô hình HOOTL, hệ thống AI hoạt động hoàn toàn tự động mà không cần sự can thiệp của con người trong quá trình vận hành. Con người chỉ tham gia vào giai đoạn thiết kế, huấn luyện, và bảo trì hệ thống.

Upload image

Thách thức và hạn chế

Mặc dù kiến trúc CoA mang lại nhiều lợi ích tiềm năng, việc triển khai và vận hành nó cũng đi kèm với một số thách thức và hạn chế đáng kể.

Thiết kế và triển khai phức tạp

Việc chia nhỏ một bài toán phức tạp thành các tác vụ con phù hợp cho các agent không phải lúc nào cũng dễ dàng. Cần phải xác định rõ ràng ranh giới trách nhiệm của từng agent, đảm bảo sự phối hợp nhịp nhàng giữa chúng và xử lý các luồng công việc phức tạp (ví dụ: rẽ nhánh, lặp lại).

Việc lựa chọn mô hình phù hợp cho từng agent LLM, mô hình chuyên biệt, ứng dụng truyền thống đòi hỏi kiến thức chuyên môn sâu cũng như có khả năng đánh giá hiệu suất của chúng trên các tác vụ cụ thể.

Là một quá trình lặp đi lặp lại và đòi hỏi nhiều thử nghiệm, cần đặc biệt chú ý thiết kế prompt hiệu quả cho từng agent. Nhất là trong môi trường tương tác, cần đảm bảo tính nhất quán giữa các prompt và lưu ý xử lý các trường hợp ngoại lệ.

Ngoài ra, các agent trong CoA thường phụ thuộc lẫn nhau. Sự thay đổi ở một agent có thể ảnh hưởng đến các agent khác, gây khó khăn cho việc bảo trì và nâng cấp hệ thống.

Quan trọng không kém chính là cơ chế phát hiện lỗi. Khi một agent gặp sự cố, cần cô lập agent đó và tự động phục hồi hoặc chuyển hướng công việc để đảm bảo hệ thống vẫn hoạt động ổn định.

Chi phí phát triển và vận hành

Việc xây dựng và huấn luyện nhiều agent đòi hỏi nhiều thời gian, công sức và tài nguyên tính toán hơn so với việc sử dụng một LLM duy nhất.

Việc triển khai và duy trì nhiều agent có thể tốn kém hơn, đặc biệt là khi sử dụng các dịch vụ đám mây trả phí theo mức sử dụng.

Chi phí cho phần dữ liệu không hề nhỏ do cần phải thu thập, xử lý và gán nhãn dữ liệu chất lượng cao cho từng agent, đặc biệt là dữ liệu huấn luyện chuyên biệt.

Đảm bảo chất lượng và tính nhất quán

Chất lượng dữ liệu trung gian đóng vai trò quan trọng, vì nếu một agent tạo ra kết quả kém chất lượng, nó có thể lan truyền lỗi đến các agent khác trong chuỗi, ảnh hưởng đến kết quả cuối cùng.

Việc đảm bảo các agent làm việc cùng nhau một cách nhất quán, không mâu thuẫn và không bỏ sót thông tin nào là một thách thức lớn.

Ngoài ra, việc kiểm thử toàn bộ hệ thống CoA phức tạp hơn so với kiểm thử một mô hình duy nhất vì cần phải kiểm tra sự tương tác giữa các agent, các luồng công việc khác nhau và các trường hợp biên.

Khả năng giải thích và độ tin cậy

Mặc dù CoA có khả năng giải thích tốt hơn so với một LLM 'hộp đen', việc theo dõi và hiểu rõ quá trình làm việc của nhiều agent tương tác vẫn có thể phức tạp.

Hệ thống CoA có thể dễ bị tổn thương hơn trước các cuộc tấn công adversarial, trong đó kẻ tấn công cố tình thao túng đầu vào để làm cho hệ thống đưa ra kết quả sai lệch.

Tiềm năng và tương lai

Chain-of-Agents không chỉ là một khái niệm lý thuyết. Nó là một kiến trúc khả thi, có thể được áp dụng ngay hôm nay để giải quyết các bài toán phức tạp trong nhiều lĩnh vực, từ phát triển phần mềm, chăm sóc khách hàng, đến nghiên cứu khoa học.

Với sự phát triển vượt bậc của các LLM và sự ra đời của các công cụ hỗ trợ mạnh mẽ, việc xây dựng và triển khai các hệ thống CoA ngày càng trở nên dễ tiếp cận hơn. Bằng cách kết hợp sức mạnh của các LLM agent với sự giám sát và can thiệp khi cần của con người, CoA mở ra những hướng đi mới cho AI. Tương lai của AI không chỉ nằm ở những mô hình siêu to khổng lồ, mà còn ở khả năng hợp tác ăn ý giữa các LLM nhỏ hơn, mỗi 'người' một việc, giống như một đội ngũ làm việc hiệu quả.

Atekco - Home for Authentic Technical Consultants