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:
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
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?
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?
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)
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
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
Thực sự xảy ra gì trong quá trình thực thi?
LLM Agents có an toàn không? Những gì cần biết về Bảo mật và Riêng tư
Khắc phục sự cố & Mẹo
Khám phá thêm tự động hóa hàng ngày
Tiếp theo trong công nghệ Agent là gì?
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,StateGraphvàENDtừlanggraph.graphđể xây dựng quy trình agent,TypedDict,Annotated, vàListtừ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:
TypedDictnà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ề
AgentStatemớ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
ChatOpenAIcho 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