AI & AUTOMATION

Hướng dẫn xây dựng hệ thống Multi Agentic AI với LangGraph

TÓM TẮT NHANH:

  • Agentic AI: Hệ thống AI tự chủ có khả năng suy luận, lập kế hoạch và phối hợp nhiều Agent để giải quyết vấn đề phức tạp thay vì chỉ phản hồi thụ động.
  • LangGraph vs LangChain: LangGraph vượt trội trong việc xử lý các luồng công việc vòng lặp (cyclic) và quản lý trạng thái (state), khắc phục hạn chế tuyến tính của LangChain.
  • Case Study: Hướng dẫn xây dựng Chatbot ngân hàng thông minh: tự động chuyển giao nhiệm vụ giữa “CSKH Agent” và “Chuyên gia khoản vay” (Loan Agent).
  • State Management: Cơ chế lưu trữ và truyền tải ngữ cảnh giữa các Agent giúp cuộc hội thoại liền mạch.

Trong kỷ nguyên GenAI hiện nay, việc chỉ sử dụng một mô hình ngôn ngữ lớn (LLM) để hỏi-đáp đơn thuần đã trở nên lỗi thời đối với các bài toán doanh nghiệp phức tạp. Chúng ta đang chứng kiến sự chuyển dịch mạnh mẽ từ Chatbot thụ động sang Agentic AI – những hệ thống có khả năng tự nhận thức, suy luận và hành động.

Nếu bạn đã quen với LangChain cho các tác vụ tuyến tính, thì LangGraph chính là mảnh ghép còn thiếu để xây dựng các hệ thống Multi-Agent phức tạp, có khả năng duy trì trạng thái và tự điều hướng luồng xử lý. Bài viết này sẽ đi sâu vào kiến trúc và cách triển khai thực tế một hệ thống Agentic AI.

Chia sẻ bởi Mì AI

Agentic AI là gì? Sự khác biệt với AI Agent đơn lẻ

Agentic AI là một hệ thống phối hợp (orchestration) nơi nhiều AI Agent chuyên biệt tương tác với nhau để hoàn thành một mục tiêu chung. Thay vì một “siêu nhân” làm tất cả, chúng ta chia nhỏ vấn đề cho các chuyên gia.

Một AI Agent cơ bản có 4 đặc tính cốt lõi:

  1. Autonomy (Tự chủ): Hoạt động độc lập, không cần con người can thiệp từng bước.
  2. Perception (Nhận thức): Thu thập thông tin từ môi trường (User input, Database, API).
  3. Reasoning & Planning (Suy luận): Phân tích dữ liệu, lập kế hoạch (Plan) để quyết định hành động tiếp theo. Ví dụ: Thấy trời mưa -> Suy luận cần mang ô -> Hành động lấy ô.
  4. Action (Hành động): Thực thi qua các công cụ (Tools) như search web, chạy code, gọi API.

Sự khác biệt nằm ở quy mô và sự phối hợp:

  • Single Agent: Xử lý task đơn giản, tuyến tính.
  • Agentic AI (Multi-Agent): Một Agent đóng vai trò điều phối (Supervisor) sẽ phân chia công việc cho các Agent con (Sub-agents). Ví dụ: Agent A lo chăm sóc khách hàng, Agent B tính toán khoản vay, Agent C tra cứu tồn kho. Chúng trao đổi dữ liệu (State) với nhau để đưa ra câu trả lời cuối cùng.

Tại sao nên dùng LangGraph thay vì LangChain cho Agentic AI?

LangGraph là thư viện mở rộng của LangChain, được thiết kế chuyên biệt cho các luồng công việc có tính chất vòng lặp (cyclic) và cần quản lý trạng thái chặt chẽ.

Hạn chế của LangChain thuần túy

LangChain hoạt động rất tốt với DAG (Directed Acyclic Graph) – tức là các luồng đi thẳng, tuần tự.

  • Ví dụ: Nhận câu hỏi -> Retrieve dữ liệu (RAG) -> Gửi cho LLM -> Trả về kết quả.
  • Vấn đề: Nếu LLM thấy dữ liệu thiếu và muốn quay lại bước tìm kiếm? LangChain xử lý các vòng lặp (loops) này khá cứng nhắc và khó kiểm soát.

Sức mạnh của LangGraph

LangGraph giải quyết bài toán trên bằng mô hình Graph (Đồ thị) gồm:

  • Nodes (Nút): Đại diện cho các Agent hoặc Tool (hành động).
  • Edges (Cạnh): Luồng di chuyển giữa các Node.
  • Conditional Edges: Logic rẽ nhánh (Nếu A thì sang Node B, nếu C thì End).
  • State (Trạng thái): “Bộ nhớ chung” được truyền qua các Node, đảm bảo mọi Agent đều nắm được ngữ cảnh hiện tại của cuộc hội thoại.

PRO TIP:

Hãy hình dung LangChain như một dây chuyền sản xuất thẳng tắp, còn LangGraph như một cuộc họp nhóm nơi mọi người (các Agent) có thể trao đổi qua lại liên tục cho đến khi thống nhất giải pháp.

Kiến trúc hệ thống Chatbot ngân hàng (Case Study)

Để minh họa sức mạnh của LangGraph, tôi sẽ mô tả quy trình xây dựng một Chatbot ngân hàng với khả năng xử lý đa tác vụ. Hệ thống này không chỉ trả lời FAQ mà còn tính toán khoản vay và tìm chi nhánh.

1. Thiết lập các Tool (Công cụ)

Trước khi tạo Agent, chúng ta cần trang bị “vũ khí” cho chúng. Trong ngữ cảnh ngân hàng, tôi thường thiết lập 3 công cụ chính:

  • RAG Tool (Truy vấn FAQ): Kết nối với Vector Database (như ChromaDB) để tìm kiếm thông tin về lãi suất, thủ tục từ tài liệu ngân hàng.
  • Web Search Tool: “Phao cứu sinh” khi dữ liệu nội bộ không có câu trả lời. Agent sẽ tự động Google search (ví dụ: tìm thông tin đối thủ cạnh tranh hoặc tin tức mới nhất).
  • Branch Finder (Tìm chi nhánh): Dựa vào tọa độ (Latitude/Longitude) của khách hàng để tính toán khoảng cách và đề xuất chi nhánh gần nhất.

2. Xây dựng Main Agent (Lễ tân thông minh)

Đây là điểm tiếp xúc đầu tiên (Entry Point). Main Agent có nhiệm vụ:

  • Nhận câu hỏi người dùng.
  • Suy luận: Câu hỏi này thuộc loại nào?
    • Nếu là hỏi đáp thông thường -> Gọi RAG Tool.
    • Nếu RAG không có dữ liệu -> Gọi Web Search.
    • Nếu hỏi về khoản vay (Loan) -> Chuyển giao (Hand-off) cho Loan Agent.

Khả năng tự quyết định “khi nào dùng tool nào” chính là điểm sáng của AI Agent so với chatbot truyền thống (thường dùng if/else cứng nhắc).

3. Xây dựng Loan Agent (Chuyên gia)

Đây là một Sub-agent chuyên biệt. Nó chỉ được kích hoạt khi Main Agent chuyển việc sang.

  • Nhiệm vụ: Tính toán chỉ số DTI (Debt-to-Income) để xem khách hàng có đủ điều kiện vay hay không.
  • Tool riêng: Calculate_DTI.
  • Quy trình: Nhận yêu cầu -> Gọi hàm tính toán -> Trả kết quả về cho Main Agent hoặc trả lời trực tiếp khách hàng -> Kết thúc.

Triển khai Multi-Agent Workflow với LangGraph

Đây là phần quan trọng nhất, nơi chúng ta nối các điểm rời rạc thành một hệ thống thông minh.

Bước 1: Định nghĩa State (Trạng thái)
Chúng ta cần một object AgentState chứa:

  • input: Câu hỏi người dùng.
  • chat_history: Lịch sử hội thoại.
  • agent_outcome: Kết quả từ Agent gần nhất.
  • next_step: Bước tiếp theo là gì.

Bước 2: Tạo các Node

  • Node Main Agent: Chạy prompt xử lý chung.
  • Node Loan Agent: Chạy prompt chuyên gia tài chính.
  • Node Tool Execution: Thực thi các hàm (Python function).

Bước 3: Thiết lập Conditional Edges (Luồng logic)
Sử dụng LangGraph để vẽ luồng đi:

  1. Bắt đầu tại Main Agent.
  2. Kiểm tra kết quả suy luận của Main Agent:
    • Nếu cần tìm tin tức -> Chuyển sang Tool Node.
    • Nếu người dùng hỏi “Tính giúp tôi khả năng vay vốn” -> Chuyển sang Loan Agent Node.
    • Nếu đã có câu trả lời -> Chuyển sang End.
  3. Tại Loan Agent, sau khi tính toán xong, có thể quay lại Main Agent để tổng hợp hoặc kết thúc luôn.

PRO TIP:

Trong LangGraph, hãy tận dụng tính năng “Human-in-the-loop” bằng cách thêm một điểm ngắt (breakpoint) trước khi thực thi các hành động nhạy cảm (như chuyển tiền), cho phép con người duyệt trước khi AI thực hiện.

Kết quả thực tế: Hệ thống hoạt động như thế nào?

Khi chạy thử nghiệm hệ thống này, bạn sẽ thấy sự “thông minh” rõ rệt trong cách xử lý:

  1. Trường hợp 1 (RAG):
    • User: “Thủ tục mở thẻ tín dụng?”
    • System: Main Agent nhận diện -> Query Vector DB -> Trả lời dựa trên tài liệu nội bộ.
  2. Trường hợp 2 (Web Search Fallback):
    • User: “Ngân hàng ABC (đối thủ) đang có lãi suất bao nhiêu?”
    • System: Main Agent tìm DB nội bộ không thấy -> Tự động quyết định dùng Web Search Tool -> Trả về kết quả từ Google. Không cần lập trình viên quy định cứng IF/ELSE.
  3. Trường hợp 3 (Multi-Agent Routing):
    • User: “Tính chỉ số DTI cho tôi với thu nhập 20 triệu, nợ 5 triệu.”
    • System: Main Agent nhận thấy từ khóa “DTI/Vay” -> Hand-off (Chuyển giao) toàn bộ ngữ cảnh sang Loan Agent.
    • Loan Agent: Nhận việc -> Gọi tool tính toán (5/20 = 0.25) -> Phản hồi kết quả -> Kết thúc quy trình.

Tối ưu hóa và Mở rộng

Hệ thống trên chỉ là khởi đầu. Để đưa vào production, bạn cần lưu ý:

  • Memory Management: LangGraph hỗ trợ Checkpointer để lưu trạng thái vào Database (Postgres, Redis). Điều này giúp cuộc hội thoại không bị mất đi khi F5 hoặc server restart.
  • Cyclic Control: Đặt giới hạn số bước nhảy (recursion limit) để tránh việc các Agent gọi nhau vô tận mà không đưa ra kết quả.
  • Security: Luôn validate đầu vào của Tool, đặc biệt là các tool có khả năng ghi/xóa dữ liệu hoặc thực thi code.

Câu hỏi thường gặp

1. LangGraph có thay thế hoàn toàn LangChain không?
Không. LangGraph được xây dựng dựa trên LangChain. Bạn vẫn dùng LangChain để gọi LLM, tạo Prompt Template, nhưng dùng LangGraph để quản lý luồng đi (flow) và trạng thái (state) của ứng dụng.

2. Khi nào tôi nên dùng Multi-Agent thay vì Single Agent?
Khi bài toán của bạn có nhiều miền kiến thức khác nhau (ví dụ: Bán hàng, Kỹ thuật, Pháp lý) và mỗi miền cần một bộ prompt/tool riêng biệt. Việc nhồi nhét tất cả vào một Single Agent sẽ khiến prompt quá dài (context window limit) và giảm độ chính xác.

3. Làm sao để debug lỗi trong LangGraph?
LangGraph tích hợp rất tốt với LangSmith. Bạn có thể visualize (trực quan hóa) toàn bộ đồ thị, xem luồng chạy thực tế đang đi qua Node nào và dữ liệu State thay đổi ra sao ở từng bước.

Duy Nghiện
Hãy làm khán giả, đừng làm nhân vật chính :)

You may also like

Nhận thông báo qua email
Nhận thông báo cho
guest

0 Bình luận
Mới nhất
Cũ nhất Nhiều like nhất
Phản hồi nội tuyến
Xem tất cả bình luận