Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình Bash

Làm chủ LLM Agents: Tự động hóa quy trình phức tạp với LangGraph & CrewAI – Sách hướng dẫn mã nguồn mở

Làm chủ LLM Agents: Tự động hóa quy trình phức tạp với LangGraph & CrewAI – Sách hướng dẫn mã nguồn mở

Bạn có bao giờ cảm thấy các công cụ AI của mình hơi... thụ động? Chúng chỉ ngồi đó, chờ lệnh tiếp theo của bạn? Hãy tưởng tượng nếu chúng có thể chủ động, phân rã vấn đề lớn, và thậm chí cùng nhau làm việc để hoàn thành nhiệm vụ.

Đó chính xác là những gì LLM agents mang lại. Chúng đang thay đổi cách chúng ta tự động hóa các tác vụ phức tạp, và có thể giúp biến ý tưởng AI của chúng ta thành hiện thực theo một cách hoàn toàn mới.

Trong bài viết này, chúng ta sẽ khám phá LLM agents là gì, chúng hoạt động như thế nào, và cách bạn có thể xây dựng agent của chính mình bằng các framework mã nguồn mở tuyệt vời.

Chúng ta sẽ bao gồm:

  1. Trạng thái hiện tại của LLM Agents

    • Từ Chatbot đến Agent Tự chủ

    • Agent có thể làm gì ngày nay?

    • Có gì sẵn để xây dựng?

    • Tại sao bây giờ là thời điểm tốt nhất để học

  2. LLM Agents là gì và tại sao chúng quan trọng?

    • LLM là gì?

    • Vậy, LLM Agent là gì?

    • Tại sao điều này quan trọng?

  3. Sự trỗi dậy của các Framework Agent mã nguồn mở

    • Các Framework Agent mã nguồn mở phổ biến

    • Những công cụ này cho phép gì?

    • Tại sao dùng Framework thay vì tự xây dựng từ đầu?

  4. Các khái niệm cốt lõi đằng sau thiết kế Agent

    • Vòng lặp Agent (The Agent Loop)

    • Các thành phần chính của Agent

    • Hợp tác đa Agent (Multi-Agent Collaboration)

  5. Dự án: Tự động hóa lịch trình hàng ngày từ Email

    • Chúng ta tự động hóa gì

    • Bước 1: Cài đặt công cụ cần thiết

    • Bước 2: Xác định nhiệm vụ

    • Bước 3: Xây dựng quy trình làm việc với LangGraph

  6. Hợp tác đa Agent với CrewAI

    • CrewAI là gì?

    • Các vai trò mẫu cho nhiệm vụ tóm tắt Email

    • Mã CrewAI mẫu

  7. Thực sự xảy ra gì trong quá trình thực thi?

  8. LLM Agents có an toàn không? Những gì cần biết về Bảo mật và Riêng tư

  9. Khắc phục sự cố & Mẹo

  10. Khám phá thêm tự động hóa hàng ngày

  11. Tiếp theo trong công nghệ Agent là gì?

  12. Tóm tắt cuối cùng

Trạng thái hiện tại của LLM Agents

LLM agents là một trong những phát triển thú vị nhất trong AI lúc này. Chúng đã giúp tự động hóa các tác vụ thực tế nhưng cũng vẫn đang phát triển. Vậy chúng ta ở đâu hôm nay?

Từ Chatbot đến Agent Tự chủ

Các Mô hình Ngôn ngữ Lớn (LLMs) như GPT-4, Claude, Gemini và LLaMA đã phát triển từ chatbot đơn giản thành những động cơ lý luận (reasoning engines) có khả năng đáng ngạc nhiên. Chúng đã chuyển từ trả lời câu hỏi trivia và tạo bài văn sang thực hiện suy luận phức tạp, tuân theo hướng dẫn nhiều bước, và tương tác với các công cụ như tìm kiếm web và trình thông dịch code.

Nhưng đây là chỗ khó khăn: các mô hình này phản ứng (reactive). Chúng chờ đầu vào và cho ra đầu ra. Chúng không giữ bộ nhớ giữa các tác vụ, lập kế hoạch trước, hoặc theo đuổi mục tiêu tự chủ. Đó là nơi LLM agents xuất hiện – chúng lấp đầy khoảng trống này bằng cách thêm cấu trúc, bộ nhớ và sự tự chủ.

Agent có thể làm gì ngày nay?

Ngay bây giờ, LLM agents đã được sử dụng cho:

  • Tóm tắt email hoặc tài liệu

  • Lập kế hoạch lịch trình hàng ngày

  • Chạy script DevOps

  • Tìm kiếm API hoặc công cụ để trả lời

  • Hợp tác trong các "nhóm" nhỏ để hoàn thành tác vụ phức tạp

Nhưng chúng chưa hoàn hảo. Agent vẫn có thể:

  • Mắc kẹt trong vòng lặp

  • Hiểu sai mục tiêu

  • Yêu cầu prompt chi tiết và rào chắn (guardrails)

Đó là vì công nghệ này vẫn còn giai đoạn đầu. Các framework đang được cải thiện nhanh chóng, nhưng độ tin cậy và bộ nhớ vẫn còn đang trong quá trình hoàn thiện. Vì vậy, hãy nhớ điều đó khi bạn thử nghiệm.

Tại sao bây giờ là thời điểm tốt nhất để học

Thực tế là: chúng ta vẫn còn sớm. Nhưng không quá sớm.

Đây là thời điểm hoàn hảo để bắt đầu thử nghiệm với agent:

  • Công cụ đã đủ chín để xây dựng dự án thực tế

  • Cộng đồng đang phát triển nhanh chóng

  • Và bạn không cần là chuyên gia AI, chỉ cần thoải mái với Python

LLM Agents là gì và tại sao chúng quan trọng?

Trước khi đi sâu vào thế giới thú vị của agent, hãy nói nhanh về cơ bản.

LLM là gì?

LLM, hay Mô hình Ngôn ngữ Lớn, về cơ bản là một AI đã học từ lượng lớn văn bản từ internet – sách, bài viết, code, và hơn thế nữa. Bạn có thể hình dung nó như một công cụ tự động hoàn thành siêu thông minh. Nhưng nó làm nhiều hơn chỉ hoàn thành câu của bạn. Nó cũng có thể:

  • Trả lời câu hỏi khó

  • Tóm tắt bài viết hoặc tài liệu dài

  • Viết code, email, hoặc truyện sáng tạo

  • Dịch ngôn ngữ tức thì

  • Thậm chí giải đố logic và trò chuyện hấp dẫn

Khả năng cao bạn đã nghe nói về ChatGPT, được hỗ trợ bởi mô hình GPT của OpenAI. Các LLM phổ biến khác bạn có thể gặp bao gồm Claude (từ Anthropic), LLaMA (từ Meta), Mistral, và Gemini (từ Google).

Các mô hình này hoạt động bằng cách đơn giản dự đoán từ tiếp theo trong câu dựa trên ngữ cảnh. Mặc dù nghe đơn giản, khi được đào tạo trên hàng tỷ từ, LLMs trở nên có khả năng hành vi thông minh đáng ngạc nhiên, hiểu hướng dẫn của bạn, tuân theo lý luận từng bước, và tạo ra phản hồi liên tục qua hầu như mọi chủ đề bạn có thể tưởng tượng.

Vậy, LLM Agent là gì?

Trong khi LLMs siêu mạnh, chúng thường chỉ phản ứng – chúng chỉ phản hồi khi bạn hỏi. LLM agent, ngược lại, là chủ động (proactive).

LLM agents có thể:

  • Phân rã tác vụ lớn, phức tạp thành các bước nhỏ, dễ quản lý

  • Quyết định thông minh và tìm ra việc gì cần làm tiếp theo

  • Sử dụng "công cụ" như tìm kiếm web, máy tính, thậm chí ứng dụng khác

  • Làm việc hướng tới mục tiêu, ngay cả khi cần nhiều bước hoặc lần thử

  • Làm việc nhóm với agent khác để đạt mục tiêu chung

Tóm lại, LLM agents có thể suy nghĩ, lập kế hoạch, hành động và thích ứng.

Hãy hình dung LLM agent như người trợ lý siêu hiệu quả mới của bạn: bạn đưa ra mục tiêu, và nó tự tìm ra cách đạt được nó.

Tại sao điều này quan trọng?

Sự chuyển dịch từ chỉ phản hồi sang chủ động theo đuổi mục tiêu mở ra hàng loạt khả năng thú vị:

  • Tự động hóa tác vụ IT hoặc DevOps nhàm chán

  • Tạo báo cáo chi tiết từ dữ liệu thô

  • Hỗ trợ dự án nghiên cứu nhiều bước

  • Đọc email hàng ngày và làm nổi bật thông tin quan trọng

  • Chạy công cụ nội bộ để thực hiện hành động thực tế

Khác với bot dựa trên quy tắc cũ, LLM agents có thể suy luận, suy ngẫm và học từ các lần thử. Điều này khiến chúng phù hợp hơn cho tác vụ thực tế rườm rà, đòi hỏi sự linh hoạt, và phụ thuộc vào việc hiểu ngữ cảnh.

Sự trỗi dậy của các Framework Agent mã nguồn mở

Không lâu trước đây, nếu bạn muốn xây dựng hệ thống AI có thể hành động tự chủ, nghĩa là viết hàng tấn code tùy chỉnh, quản lý bộ nhớ một cách tẻ nhạt, và cố gắng ghép nối hàng chục thành phần. Đó là công việc phức tạp, mong manh và chuyên môn cao.

Nhưng đoán xem? Điều đó không còn đúng nữa.

Năm 2024, một làn sóng framework mã nguồn mở tuyệt vời đã xuất hiện. Những công cụ này đã làm cho việc xây dựng LLM agents mạnh mẽ dễ dàng hơn đáng kể mà không cần bạn phải phát minh lại bánh xe mỗi lần.

Các Framework Agent mã nguồn mở phổ biến

Framework Mô tả Người duy trì
LangGraph Framework dựa trên đồ thị cho trạng thái và bộ nhớ agent LangChain
CrewAI "Động cơ hợp tác đa agent dựa trên vai trò" Cộng đồng (CrewAI)
AutoGen Điều phối trò chuyện đa agent tùy chỉnh Microsoft
AgentVerse Framework mô-đun cho mô phỏng và kiểm thử agent Dự án mã nguồn mở

Những công cụ này cho phép gì?

Các framework này cung cấp các khối xây dựng sẵn có để xử lý các phần khó khăn hơn trong việc tạo agent:

  • Lập kế hoạch (Planning) – Cho agent quyết định nước đi tiếp theo

  • Sử dụng công cụ (Tool Use) – Dễ dàng kết nối agent với hệ thống tệp, trình duyệt web, API, hoặc cơ sở dữ liệu

  • Bộ nhớ (Memory) – Lưu trữ và truy xuất thông tin quá khứ hoặc kết quả trung gian cho ngữ cảnh dài hạn

  • Hợp tác đa Agent (Multi-Agent Collaboration) – Thiết lập nhóm agent làm việc cùng nhau trên mục tiêu chung

Tại sao dùng Framework thay vì tự xây dựng từ đầu?

Mặc dù bạn có thể xây dựng agent tùy chỉnh từ nền tảng, dùng framework sẽ tiết kiệm lượng lớn thời gian và công sức. Thư viện agent mã nguồn mở đi kèm với:

  • Hỗ trợ tích hợp cho điều phối LLMs

  • Các mẫu đã được chứng minh cho lập kế hoạch tác vụ, theo dõi tiến độ, và nhận phản hồi

  • Dễ dàng tích hợp với các mô hình phổ biến như OpenAI, hoặc thậm chí mô hình bạn chạy cục bộ

  • Sự linh hoạt để phát triển từ một agent hữu ích đơn lẻ đến toàn bộ nhóm agent

Về cơ bản, các framework này cho phép bạn tập trung vào agent của bạn nên làm gì, thay vì bế tắc trong việc xây dựng tất cả các hoạt động nội bộ. Ngoài ra, chọn mã nguồn mở có nghĩa là bạn được hưởng lợi từ đóng góp của cộng đồng, sự minh bạch về cách chúng hoạt động, và tự do điều chỉnh chúng cho nhu cầu chính xác của bạn, mà không bị khóa vào một nhà cung cấp duy nhất.

Các khái niệm cốt lõi đằng sau thiết kế Agent

Để thực sự nắm vững cách LLM agents hoạt động, giúp ích nếu nghĩ về chúng như các hệ thống hướng mục tiêu (goal-driven) liên tục chu kỳ qua quan sát, lý luận và hành động. Vòng lặp liên tục này cho phép chúng giải quyết tác vụ vượt xa câu hỏi và trả lời đơn giản, chuyển sang tự động hóa thực sự, sử dụng công cụ, và thích ứng ngay lập tức.

Vòng lặp Agent (The Agent Loop)

Hầu hết LLM agents hoạt động dựa trên một mô hình tư duy gọi là Vòng lặp Agent (Agent Loop) – một chu kỳ từng bước lặp lại cho đến khi việc hoàn thành. Đây là cách nó thường hoạt động:

  • Quan sát (Perceive): Agent bắt đầu bằng cách nhận thấy điều gì đó trong môi trường hoặc nhận thông tin mới. Có thể là prompt của bạn, một mảnh dữ liệu, hoặc trạng thái hiện tại của hệ thống.

  • Lập kế hoạch (Plan): Dựa trên những gì nó quan sát và mục tiêu tổng thể, agent quyết định làm gì tiếp theo. Nó có thể chia tác vụ thành các mục tiêu con nhỏ hơn hoặc tìm ra công cụ tốt nhất cho việc.

  • Hành động (Act): Agent sau đó hành động. Điều này có thể nghĩa là chạy hàm, gọi API, tìm kiếm web, tương tác với cơ sở dữ liệu, hoặc thậm chí nhờ agent khác giúp đỡ.

  • Suy ngẫm (Reflect): Sau khi hành động, agent nhìn vào kết quả: Nó có hoạt động không? Kết quả có hữu ích không? Nó nên thử cách khác không? Dựa trên điều này, nó cập nhật kế hoạch và tiếp tục cho đến khi tác vụ hoàn thành.

Vòng lặp này là điều làm cho agent linh hoạt. Nó cho phép chúng xử lý tác vụ luôn thay đổi, học từ kết quả một phần, và điều chỉnh đường đi – những phẩm chất thiết yếu để xây dựng trợ lý AI thực sự hữu ích.

Các thành phần chính của Agent

Để làm tốt công việc của mình, agent được xây dựng xung quanh một số phần quan trọng:

  • Công cụ (Tools) là cách agent tương tác với thế giới thực (hoặc số). Chúng có thể là bất cứ thứ gì từ công cụ tìm kiếm, môi trường thực thi code, trình đọc tệp, hoặc client API, đến máy tính đơn giản hoặc script dòng lệnh.

  • Bộ nhớ (Memory) cho phép agent nhớ những gì đã làm hoặc thấy qua các bước khác nhau. Điều này có thể bao gồm những gì bạn đã nói trước đó, kết quả tạm thời, hoặc quyết định quan trọng. Một số framework cung cấp bộ nhớ ngắn hạn (chỉ cho một phiên), trong khi những cái khác hỗ trợ bộ nhớ dài hạn có thể trải qua nhiều phiên hoặc mục tiêu.

  • Môi trường (Environment) đề cập đến ngữ cảnh dữ liệu hoặc hệ thống bên ngoài mà agent hoạt động trong đó – nghĩ đến API, tài liệu, cơ sở dữ liệu, tệp, hoặc đầu vào cảm biến. Càng nhiều thông tin và quyền truy cập agent có vào môi trường, càng nhiều hành động có ý nghĩa nó có thể thực hiện.

  • Mục tiêu (Goal) là mục tiêu cuối cùng của agent: thứ nó cố gắng đạt được. Mục tiêu nên cụ thể và rõ ràng – ví dụ: "tạo lịch trình hàng ngày", "tóm tắt tài liệu này", hoặc "trích xuất tác vụ từ email".

Hợp tác đa Agent (Multi-Agent Collaboration)

Đối với các hệ thống nâng cao hơn, bạn thậm chí có thể có nhiều agent làm việc cùng nhau để đạt mục tiêu chung. Mỗi agent có thể được giao một vai trò (role) cụ thể làm nổi bật chuyên môn của nó – giống như con người làm việc trong nhóm.

Ví dụ:

  • Một agent nghiên cứu (researcher) có thể được giao thu thập thông tin.

  • Một agent lập trình (coder) có thể viết script Python hoặc trình tự tự động hóa.

  • Một agent xem xét (reviewer) có thể kiểm tra kết quả và đảm bảo mọi thứ đạt chuẩn.

Các agent này có thể trò chuyện với nhau, chia sẻ thông tin, thậm chí tranh luận hoặc bỏ phiếu quyết định. Loại làm việc nhóm này cho phép hệ thống AI giải quyết tác vụ lớn hơn, phức tạp hơn trong khi giữ mọi thứ có tổ chức và mô-đun.

Dự án: Tự động hóa lịch trình hàng ngày từ Email

Chúng ta tự động hóa gì

Hãy nghĩ về quy trình buổi sáng điển hình của bạn:

  • Bạn mở hộp thư đến.

  • Bạn nhanh chóng lướt qua một đống email.

  • Bạn cố gắng tìm cuộc họp, tác vụ, và nhắc nh quan trọng.

  • Sau đó, bạn thủ công viết danh sách việc cần làm hoặc thêm vào lịch.

Hãy dùng LLM agent để làm cho quy trình đó dễ dàng. Agent của chúng ta sẽ:

  • Đọc danh sách tin nhắn email của bạn

  • Trích xuất các mục nhạy cảm về thời gian như cuộc họp hoặc hạn chót

  • Tóm tắt mọi thứ thành một lịch trình hàng ngày sạch đẹp

Bước 1: Cài đặt công cụ cần thiết

Để bắt đầu, bạn sẽ cần ba công cụ chính: Python, VSCode, và khóa API OpenAI.

1. Cài đặt Python 3.9 hoặc cao hơn

Tải phiên bản Python 3.9+ mới nhất từ trang web chính thức: https://www.python.org/downloads/

Sau khi cài đặt, kiểm tra lại bằng cách chạy python --version trong terminal.

Lệnh này đơn giản yêu cầu hệ thống báo cáo phiên bản Python hiện tại đã cài đặt. Bạn sẽ muốn thấy Python 3.9.x hoặc cao hơn để đảm bảo tương thích với dự án của chúng ta.

2. Cài đặt VSCode (Tùy chọn nhưng khuyến nghị)

VSCode là trình soạn thảo code thân thiện, tuyệt vời hoạt động hoàn hảo với Python. Bạn có thể tải nó tại đây: https://code.visualstudio.com/.

3. Lấy khóa API OpenAI của bạn

Truy cập: https://platform.openai.com

Đăng nhập hoặc tạo tài khoản mới. Điều hướng đến trang API Keys. Nhấn "Tạo khóa bí mật mới" (Create new secret key) và chắc chắn sao chép khóa đó ở nơi an toàn để dùng sau.

4. Cài đặt thư viện Python

Mở terminal hoặc command prompt và cài đặt các gói thiết yếu này:

pip install langgraph langchain openai 

Lệnh này dùng pip, trình quản lý gói của Python, để tải xuống và cài đặt ba thư viện quan trọng cho agent của chúng ta:

  • langgraph: Framework cốt lõi chúng ta sẽ dùng để xây dựng quy trình làm việc của agent.

  • langchain: Thư viện nền tảng để làm việc với mô hình ngôn ngữ lớn, LangGraph được xây dựng dựa trên nó.

  • openai: Thư viện Python chính thức để kết nối với mô hình AI mạnh mẽ của OpenAI.

Nếu bạn hào hứng muốn thử thiết lập đa agent (sẽ đề cập ở Bước 5), cũng cài đặt CrewAI:

pip install crewai 

Lệnh này cài đặt CrewAI, một framework chuyên biệt giúp dễ dàng điều phối nhiều AI agent làm việc cùng nhau như một đội.

5. Thiết lập khóa API OpenAI

Bạn cần đảm bảo code Python của bạn có thể tìm thấy và sử dụng khóa API OpenAI. Điều này thường được làm bằng cách thiết lập nó như biến môi trường.

Trên macOS/Linux, chạy này trong terminal (thay "your-api-key" bằng khóa thực của bạn):

export OPENAI_API_KEY="your-api-key" 

Lệnh này thiết lập biến môi trường tên OPENAI_API_KEY. Biến môi trường là cách an toàn để ứng dụng (như script Python của bạn) truy cập thông tin nhạy cảm mà không cần cứng nhắc (hardcode) trực tiếp vào code.

Trên Windows (dùng Command Prompt), làm điều này:

set OPENAI_API_KEY="your-api-key" 

Đây là lệnh tương đương Windows để thiết lập biến môi trường OPENAI_API_KEY.

Bây giờ, code Python của bạn sẽ sẵn sàng trò chuyện với mô hình OpenAI!

Bước 2: Xác định nhiệm vụ

Chúng ta đã thảo luận ngắn gọn về điều này ở đầu phần này. Nhưng để lặp lại, đây là những gì chúng ta muốn agent làm:

  • Quét tìm cuộc họp, sự kiện, và tác vụ quan trọng.

  • Ghi nhanh chúng vào sổ tay hoặc ứng dụng.

  • Tạo kế hoạch thô cho ngày của bạn.

Quy trình này tốn thời gian và năng lượng tinh thần. Vì vậy có agent làm nó cho chúng ta sẽ siêu hữu ích.

Bước 3: Xây dựng quy trình làm việc với LangGraph

LangGraph là gì?

LangGraph là một framework cool giúp bạn xây dựng agent bằng quy trình làm việc "dựa trên đồ thị" (graph-based), giống như vẽ sơ đồ luồng. Nó được hỗ trợ bởi LangChain và cho bạn nhiều kiểm soát hơn về chính xác cách mỗi bước trong quy trình của agent diễn ra.

Mỗi "nút" (node) trong đồ thị này đại diện cho điểm quyết định hoặc hàm mà:

  • Nhận một số đầu vào (trạng thái hiện tại của nó).

  • Làm một số lý luận hoặc hành động (thường liên quan đến LLM và công cụ của nó).

  • Trả về đầu ra cập nhật (một "trạng thái" mới).

Bạn vẽ kết nối giữa các nút này, và LangGraph sau đó thực thi nó như một máy trạng thái tự động thông minh.

Tại sao dùng LangGraph?

  • Bạn kiểm soát chính xác thứ tự thực thi.

  • Nó tuyệt vời cho việc xây dựng quy trình làm việc nhiều bước hoặc thậm chí phân nhánh ra các đường đi khác nhau.

  • Nó hoạt động tốt với cả mô hình dựa trên đám mây (như OpenAI) và mô hình bạn chạy cục bộ.

Được rồi – bây giờ hãy viết code.

1. Mô phỏng đầu vào Email

Trong ứng dụng thực tế, agent của bạn có thể kết nối với Gmail hoặc Outlook để lấy email thực tế. Cho ví dụ này, tuy nhiên, chúng ta sẽ hardcode một vài tin nhắn mẫu để đơn giản:

Python emails = """ 1. Subject: Standup Call at 10 AM 2. Subject: Client Review due by 5 PM 3. Subject: Lunch with Sarah at noon 4. Subject: AWS Budget Warning – 80% usage 5. Subject: Dentist Appointment - 4 PM """ 

Chuỗi Python nhiều dòng này, emails, đóng vai trò thay thế cho nội dung email thực tế. Chúng ta cung cấp một danh sách có cấu trúc đơn giản của chủ đề email để demo cách agent xử lý văn bản.

2. Xác định logic Agent

Bây giờ, chúng ta sẽ nói cho mô hình GPT của OpenAI cách xử lý văn bản email này và biến nó thành bản tóm tắt.

from langchain_openai import ChatOpenAI from langgraph.graph import StateGraph, END from typing import TypedDict, Annotated, List import operator # Định nghĩa state cho đồ thị của chúng ta class AgentState(TypedDict): emails: str result: str llm = ChatOpenAI(temperature=0, model="gpt-4o") # Dùng gpt-4o cho hiệu suất tốt hơn def calendar_summary_agent(state: AgentState) -> AgentState: emails = state["emails"] prompt = f"Summarize today's schedule based on these emails, listing time-sensitive items first and then other important notes. Be concise and use bullet points:\n{emails}" summary = llm.invoke(prompt).content return {"result": summary, "emails": emails} # Đảm bảo emails cũng được trả về 

Đây là những gì đang xảy ra:

  • Import: Chúng ta đưa vào các thành phần cần thiết:

    • ChatOpenAI để kết nối với LLM,

    • StateGraph và END từ langgraph.graph để xây dựng quy trình agent,

    • TypedDict, Annotated, và List từ typing để kiểm tra kiểu và cấu trúc,

    • operator (mặc dù không dùng trong đoạn này, nó có thể giúp so sánh hoặc logic).

  • AgentState: TypedDict này định nghĩa hình dạng dữ liệu agent sẽ làm việc. Nó bao gồm:

    • emails: tin nhắn đầu vào thô.

    • result: đầu ra cuối cùng (bản tóm tắt hàng ngày).

  • llm = ChatOpenAI(...): Khởi tạo mô hình ngôn ngữ. Chúng ta dùng GPT-4o với temperature=0 để đảm bảo đầu ra nhất quán, có thể dự đoán – hoàn hảo cho tác vụ tóm tắt có cấu trúc.

  • calendar_summary_agent(state: AgentState): Hàm này là "bộ não" của agent. Nó:

    • Nhận state hiện tại, bao gồm danh sách email.

    • Trích xuất email từ state đó.

    • Xây dựng prompt yêu cầu mô hình tạo bản tóm tắt lịch trình hàng ngày ngắn gọn dùng bullet point, ưu tiên mục nhạy cảm thời gian.

    • Gửi prompt này đến mô hình với llm.invoke(prompt).content, trả về phản hồi LLM dưới dạng văn bản thuần túy.

    • Trả về AgentState mới chứa:

      • result: bản tóm tắt được tạo,

      • emails: được giữ lại phòng khi cần downstream.

3. Xây dựng và Chạy Đồ thị

Bây giờ, hãy dùng LangGraph để vạch ra luồng tác vụ single-agent của chúng ta và chạy nó.

builder = StateGraph(AgentState) builder.add_node("calendar", calendar_summary_agent) builder.set_entry_point("calendar") builder.set_finish_point("calendar") # END là ngầm hiểu nếu không đặt rõ ràng graph = builder.compile() # Chạy đồ thị dùng dữ liệu email mô phỏng result = graph.invoke({"emails": emails}) print(result["result"]) 

Đây là những gì đang xảy ra:

  • builder = StateGraph(AgentState): Chúng ta khởi tạo đối tượng StateGraph. Bằng cách truyền AgentState, chúng ta báo cho LangGraph cấu trúc dữ liệu mong đợi cho state nội bộ.

  • builder.add_node("calendar", calendar_summary_agent): Dòng này thêm "nút" có tên vào đồ thị. Chúng ta gọi nó "calendar", và liên kết nó với hàm calendar_summary_agent, nghĩa là hàm đó sẽ thực thi khi nút này hoạt động.

  • builder.set_entry_point("calendar"): Điều này đặt "calendar" là bước đầu tiên trong quy trình làm việc. Khi bắt đầu đồ thị, thực thi sẽ bắt đầu ở đây.

  • builder.set_finish_point("calendar"): Điều này báo cho LangGraph rằng khi nút "calendar" xong việc, toàn bộ quy trình đồ thị hoàn tất.

  • graph = builder.compile(): Lệnh này lấy bản thiết kế đồ thị đã định nghĩa và "biên dịch" nó thành quy trình làm việc có thể thực thi.

  • result = graph.invoke({"emails": emails}): Đây là nơi phép màu xảy ra! Chúng ta bảo đồ thị bắt đầu chạy. Chúng ta truyền state ban đầu chứa dữ liệu email. Đồ thị sẽ xử lý dữ liệu qua các nút cho đến khi đạt điểm kết thúc, trả về state cuối cùng.

  • print(result["result"]): Cuối cùng, chúng ta lấy lịch trình tóm tắt từ kết quả (state cuối cùng của đồ thị) và in ra console.

Ví dụ đầu ra

Lịch trình của bạn:
- 10:00 AM – Standup Call
- 12:00 PM – Lunch with Sarah
- 4:00 PM – Dentist Appointment
- Nộp báo cáo khách hàng trước 5:00 PM
- Cảnh báo ngân sách AWS – kiểm tra sử dụng

Xong! Bạn vừa xây dựng một AI agent có thể đọc email và lập lịch trình hàng ngày. Khá cool, phải không? Đây là cái nhìn đơn giản nhưng mạnh mẽ vào những gì LLM agents có thể làm chỉ với vài dòng code.

Hợp tác đa Agent với CrewAI

CrewAI là gì?

CrewAI là một framework mã nguồn mở thú vị cho phép bạn xây dựng đội agent làm việc cùng nhau liền mạch – giống như một đội dự án thực tế! Mỗi agent trong thiết lập CrewAI:

  • Có vai trò cụ thể, chuyên biệt.

  • Có thể giao tiếp và chia sẻ thông tin với đồng đội.

  • Hợp tác để đạt mục tiêu chung.

Cách tiếp cận đa agent này siêu hữu ích khi tác vụ quá lớn hoặc phức tạp cho chỉ một agent, hoặc khi chia nhỏ thành các phần chuyên biệt làm cho nó rõ ràng và hiệu quả hơn.

Các vai trò mẫu cho nhiệm vụ tóm tắt Email

Hãy tưởng tượng nhiệm vụ tóm tắt email được xử lý bởi một đội agent nhỏ:

Tên Agent Vai trò Trách nhiệm
Extractor Trình quét Email "Tìm cuộc họp, nhắc nhở, và tác vụ từ email"
Prioritizer Trình tối ưu hóa Lịch trình Sắp xếp mục theo cấp độ khẩn cấp và thời gian
Formatter Trình tạo đầu ra (Output Generator) "Viết lịch trình hàng ngày sạch đẹp, ngắn gọn, dạng bullet point"

Mã CrewAI mẫu

from crewai import Agent, Crew, Task, Process from langchain_openai import ChatOpenAI import os # Thiết lập khóa API OpenAI từ biến môi trường # os.environ["OPENAI_API_KEY"] = "YOUR_API_KEY" # Đảm bảo điều này được thiết lập, hoặc định nghĩa trực tiếp # Khởi tạo LLM (dùng gpt-4o cho hiệu suất tốt hơn) llm = ChatOpenAI(temperature=0, model="gpt-4o") # Định nghĩa agent với vai trò và mục tiêu cụ thể extractor = Agent( role="Email Scanner", goal="Find all meetings, reminders, and tasks from the given emails, accurately extracting details like time, date, and subject.", backstory="You are an expert at scanning emails for key information. You meticulously extract every relevant detail.", verbose=True, allow_delegation=False, llm=llm ) prioritizer = Agent( role="Schedule Optimizer", goal="Sort extracted items by urgency and time, preparing them for a daily agenda.", backstory="You are a master of time management, always knowing what needs to be done first. You organize tasks logically.", verbose=True, allow_delegation=False, llm=llm ) formatter = Agent( role="Output Generator", goal="Generate a clean, polished, and concise daily agenda in bullet-point format, clearly listing all schedule items.", backstory="You are a professional secretary, ensuring all outputs are perfectly formatted and easy to read. You prioritize clarity.", verbose=True, allow_delegation=False, llm=llm ) # Mô phỏng đầu vào email emails = """ 1. Subject: Standup Call at 10 AM 2. Subject: Client Review due by 5 PM 3. Subject: Lunch with Sarah at noon 4. Subject: AWS Budget Warning – 80% usage 5. Subject: Dentist Appointment - 4 PM """ # Định nghĩa tác vụ cho từng agent extract_task = Task( description=f"Extract all relevant events, meetings, and tasks from these emails: {emails}. Focus on precise details.", agent=extractor, expected_output="A list of extracted items with their details (e.g., '- Standup Call at 10 AM', '- Client Review due by 5 PM')." ) prioritize_task = Task( description="Prioritize the extracted items by time and urgency. Meetings first, then deadlines, then other notes.", agent=prioritizer, context=[extract_task], # Output của extract_task là input ở đây expected_output="A prioritized list of schedule items." ) format_task = Task( description="Format the prioritized schedule into a clean, easy-to-read daily agenda using bullet points. Ensure concise language.", agent=formatter, context=[prioritize_task], # Output của prioritize_task là input ở đây expected_output="A well-formatted daily agenda with bullet points." ) # Khởi tạo crew crew = Crew( agents=[extractor, prioritizer, formatter], tasks=[extract_task, prioritize_task, format_task], process=Process.sequential, # Tác vụ thực thi tuần tự verbose=2 # Hiển thị chi tiết hơn trong thực thi ) # Chạy crew result = crew.kickoff() print("\n########################") print("## Final Daily Agenda ##") print("########################\n") print(result) 

Đây là những gì đang xảy ra:

  • Import: Chúng ta đưa vào các lớp chính từ CrewAI: Agent, Crew, Task, và Process. Chúng ta cũng import ChatOpenAI cho mô hình ngôn ngữ và os để xử lý biến môi trường.

  • llm = ChatOpenAI(...): Giống như ví dụ LangGraph, này thiết lập mô hình ngôn ngữ OpenAI, đảm bảo phản hồi trực tiếp (temperature=0) và dùng mô hình gpt-4o.

  • Định nghĩa Agent (extractor, prioritizer, formatter):

    • Mỗi biến này tạo một instance Agent. Một agent được định nghĩa bởi vai trò (nó làm gì), mục tiêu cụ thể nó cố gắng đạt được, và backstory (một loại cá tính hoặc chuyên môn giúp LLM hiểu mục đích của nó tốt hơn).

    • verbose=True siêu hữu ích cho debug, vì nó làm agent in ra "suy nghĩ" khi chúng làm việc.

    • allow_delegation=False nghĩa là agent này sẽ không chuyển tác vụ được giao cho agent khác (dù có thể đặt True cho trường hợp ủy quyền phức tạp hơn).

    • llm=llm kết nối mỗi agent với mô hình ngôn ngữ OpenAI của chúng ta.

  • Email mô phỏng: Chúng ta tái sử dụng cùng dữ liệu email mẫu cho ví dụ này.

  • Định nghĩa Task (extract_task, prioritize_task, format_task):

    • Mỗi Task định nghĩa một phần công việc cụ thể agent cần thực hiện.

    • description nói rõ cho agent tác vụ bao gồm gì.

    • agent gán tác vụ này cho một agent đã định nghĩa (ví dụ: extractor cho extract_task).

    • context=[...] là phần quan trọng của sự hợp tác CrewAI. Nó bảo tác vụ dùng đầu ra của tác vụ trước làm đầu vào. Ví dụ, prioritize_task lấy output của extract_task làm context.

    • expected_output cho agent ý tưởng kết quả nên trông như thế nào, giúp hướng dẫn LLM.

  • crew = Crew(...):

    • Đây là nơi chúng ta tập hợp đội! Chúng ta tạo instance Crew, đưa cho nó danh sách agent và task.

    • process=Process.sequential bảo crew thực thi tác vụ theo thứ tự chúng được định nghĩa trong danh sách tasks. CrewAI cũng hỗ trợ quy trình nâng cao hơn như phân cấp.

    • verbose=2 sẽ cho bạn log rất chi tiết về hoạt động nội bộ và giao tiếp của crew.

  • result = crew.kickoff(): Lệnh này chính thức bắt đầu toàn bộ quy trình đa agent. Các agent sẽ bắt đầu hợp tác, truyền thông tin, và làm việc qua các tác vụ được giao theo trình tự.

  • fprint(result): Cuối cùng, đầu ra hợp nhất từ nỗ lực hợp tác của toàn bộ crew được in ra console.

CrewAI thông minh xử lý tất cả giao tiếp giữa agent, tìm ra ai cần làm gì và khi nào, và truyền đầu ra mượt mà từ agent này sang agent khác – giống như một dây chuyền lắp ráp AI mini!

Thực sự xảy ra gì trong quá trình thực thi?

Vậy, dù bạn dùng LangGraph hay CrewAI, những gì thực sự diễn ra đằng sau khi agent chạy? Hãy phân tích quy trình thực thi:

  • Hệ thống nhận state đầu vào (input state) (ví dụ: email của bạn).

  • Agent hoặc nút đồ thị đầu tiên đọc đầu vào này và dùng Mô hình Ngôn ngữ Lớn (LLM) để hiểu nó.

  • Dựa trên sự hiểu đó, agent quyết định hành động (action) như trích xuất sự kiện chính hoặc gọi công cụ cụ thể.

  • Nếu cần, agent có thể gọi công cụ (invoke tools) (như tìm kiếm web hoặc đọc tệp) để lấy thêm ngữ cảnh hoặc thực hiện thao tác bên ngoài.

  • Kết quả của hành động đó sau đó được truyền cho agent tiếp theo trong đội (nếu là thiết lập đa agent) hoặc trả về trực tiếp cho bạn.

Thực thi tiếp tục cho đến khi:

  • Tác vụ hoàn thành hoàn toàn.

  • Tất cả agent đã hoàn thành vai trò được giao.

  • Điều kiện dừng hoặc điểm "END" được chỉ định trong quy trình làm việc được đạt.

Hãy nghĩ về đây như một động cơ quy trình làm việc siêu thông minh nơi mỗi bước liên quan đến lý luận, ra quyết định, và ghi nhớ tương tác trước.

LLM Agents có an toàn không? Những gì cần biết về Bảo mật và Riêng tư

Ngay cả khi LLM agents rất cool, chúng nêu ra câu hỏi quan trọng: bạn có thực sự tin cậy AI chạy một phần quy trình làm việc hoặc tương tác với dữ liệu của bạn? Tùy thuộc. Nếu bạn dùng dịch vụ như OpenAI hoặc Anthropic, dữ liệu của bạn được mã hóa khi truyền và (tính đến nay) không được dùng để đào tạo.

Nhưng một số dữ liệu vẫn có thể được ghi log tạm thời để ngăn lạm dụng. Thường thì ổn cho test và dự án cá nhân, nhưng nếu bạn làm việc với thông tin kinh doanh nhạy cảm, dữ liệu khách hàng, hoặc bất cứ thứ gì riêng tư, bạn sẽ muốn cẩn thận.

Dùng đầu vào ẩn danh, tránh lộ toàn bộ tập dữ liệu, và cân nhắc chạy agent cục bộ dùng mô hình mã nguồn mở như LLaMA hoặc Mistral nếu kiểm soát hoàn toàn quan trọng với bạn.

Bạn cũng có thể thiết lập ranh giới rõ ràng cho agent để chúng không vượt quá giới hạn. Hãy nghĩ như onboarding thực tập sinh mới: bạn không cho họ truy cập mọi thứ ngày đầu tiên.

Chỉ cho agent công cụ và tệp chúng cần, giữ log những gì chúng làm, và luôn xem xét kết quả trước khi cho chúng thực hiện thay đổi thực tế.

Khi công nghệ này phát triển, nhiều tính năng an toàn hơn sẽ đến như sandbox tốt hơn, giới hạn bộ nhớ, và kiểm soát truy cập dựa trên vai trò. Nhưng hiện tại, thông minh là đối xử với agent như những người giúp việc mạnh mẽ vẫn cần giám sát người.

Khắc phục sự cố & Mẹo

Đôi khi agent có thể hơi kỳ quặc! Đây là một số vấn đề thường gặp bạn có thể gặp và cách khắc phục:

Vấn đề Sửa gợi ý
Agent có vẻ lặp vô tận Đặt số lần lặp tối đa hoặc định nghĩa điểm dừng rõ ràng hơn.
Đầu ra quá dài dòng/verbose Dùng prompt cụ thể hơn (ví dụ: "Chỉ trả lời bằng bullet points").
Đầu vào quá dài hoặc bị cắt Chia nội dung lớn thành các phần nhỏ và tóm tắt riêng lẻ.
Agent chạy quá chậm Thử mô hình LLM nhanh hơn như gpt-3.5 hoặc cân nhắc chạy mô hình cục bộ.

Mẹo hay: Bạn cũng có thể thêm câu lệnh print() hoặc log bên trong hàm agent để xem điều gì đang xảy ra ở mỗi giai đoạn và debug chuyển đổi state.

Khám phá thêm tự động hóa hàng ngày

Khi bạn đã xây dựng một tác vụ dựa trên agent, bạn sẽ thấy việc điều chỉnh mẫu cho tự động hóa khác dễ dàng không ngờ. Dưới đây là một số ý tưởng cool để kích hoạt sự sáng tạo:

Loại tác vụ Ví dụ tự động hóa
Trợ lý DevOps "Đọc log hệ thống, phát hiện vấn đề tiềm ẩn, và đề xuất giải pháp."
Theo dõi Tài chính Đọc báo cáo ngân hàng hoặc tệp CSV và tóm tắt thói quen chi tiêu/ngân sách.
Trình tổ chức Cuộc họp Sau cuộc họp, tự động trích xuất mục hành động và giao chủ sở hữu.
Dọn dẹp Hộp thư đến "Tự động gán nhãn, lưu trữ, và xóa email không khẩn cấp."
Tóm tắt Ghi chú Chuyển đổi ghi chú hàng ngày thành danh sách việc cần làm hoặc tóm tắt đẹp mắt.
Kiểm tra Link Trích xuất URL từ tài liệu và tự động test xem chúng còn hợp lệ không.
Định dạng CV Chấm điểm CV so với mô tả công việc và định dạng tự động.

Mỗi cái trong số này có thể được xây dựng dùng chính các nguyên tắc và framework chúng ta đã thảo luận – dù là LangGraph hay CrewAI.

Tiếp theo trong công nghệ Agent là gì?

LLM agents đang phát triển với tốc độ ánh sáng, và làn sóng đổi mới tiếp theo đã ở đây:

  • Hệ thống bộ nhớ thông minh hơn: Kỳ vọng agent sẽ có bộ nhớ dài hạn tốt hơn, cho phép học qua khoảng thời gian dài và nhớ hội thoại/hành động trước.

  • Agent đa phương thức (Multi-modal agents): Agent không chỉ xử lý văn bản nữa! Chúng sẽ có thể xử lý và hiểu hình ảnh, âm thanh, và video, làm cho chúng linh hoạt hơn nhiều.

  • Framework lập kế hoạch nâng cao: Kỹ thuật như ReAct, Toolformer, và AutoGen liên tục cải thiện khả năng lý luận, lập kế hoạch, và giảm "ảo giác" phiền toái.

  • Triển khai Edge (Edge deployment): Hãy tưởng tượng agent chạy hoàn toàn ngoại tuyến trên máy tính hoặc thiết bị cục bộ dùng mô hình nhẹ như LLaMA 3 hoặc Mistral.

Trong tương lai rất gần, bạn sẽ thấy agent tích hợp liền mạch vào:

  • Pipeline DevOps của bạn

  • Quy trình làm việc doanh nghiệp lớn

  • Công cụ năng suất hàng ngày

  • Ứng dụng di động và thiết bị thông minh

  • Game, mô phỏng, và nền tảng giáo dục

Tóm tắt cuối cùng

Được rồi, hãy nhanh chóng tóm gọn tất cả điều cool bạn vừa học và hoàn thành:

  • Bạn đã nắm vững LLM agents là gì và tại sao chúng mạnh mẽ.

  • Bạn đã thấy framework mã nguồn mở như LangGraph và CrewAI làm cho việc xây dựng agent dễ dàng hơn.

  • Bạn đã xây dựng một LLM agent thực tế dùng LangGraph để tự động hóa tác vụ hàng ngày phổ biến: tóm tắt hộp thư đến!

  • Bạn đã khám phá thế giới hợp tác đa agent với CrewAI, hiểu cách đội AI có thể làm việc cùng nhau.

  • Bạn đã học cách lấy các nguyên tắc này và mở rộng để tự động hóa vô số tác vụ khác.

Vì vậy, lần sau khi bạn thấy mình mắc kẹt làm việc lặp lại, chỉ cần tự hỏi: "Này, tôi có thể xây dựng agent cho việc đó không?" Câu trả lời có thể là có!

Tóm tắt tài nguyên

Dưới đây là một số tài nguyên hữu ích nếu bạn muốn đi sâu vào xây dựng LLM agents:

Học lập trình miễn phí. Chương trình mã nguồn mở của freeCodeCamp đã giúp hơn 40,000 người tìm việc lập trình viên. Bắt đầu ngay