Học AI agent từ đầu: lộ trình 6 giai đoạn
Lộ trình học AI agent từ đầu qua 6 giai đoạn: hiểu vòng lặp, tự viết agent, thêm tools và memory, rồi thiết kế safety, mỗi giai đoạn đều có thứ để xây dựng.
Lộ trình qua sáu giai đoạn
Để học AI agent từ đầu, hãy thực hiện lần lượt sáu giai đoạn: khái niệm, vòng lặp đầu tiên, tools, memory, thiết kế vòng lặp và safety. Ở mỗi giai đoạn, bạn sẽ tự xây dựng một thứ. Bỏ qua các giai đoạn trước là lý do phổ biến nhất khiến người học bị chững lại, vì framework che khuất đúng phần bạn cần nhìn thấy.
AI agent là một vòng lặp bao quanh language model và được phép gọi tools. Đây là toàn bộ chủ đề. Mọi phần sau chỉ giải thích chi tiết về những gì được đưa vào vòng lặp, tools có thể tác động đến đâu và cách dừng vòng lặp khi có lỗi. Nếu bạn có thể giải thích vòng lặp này cho người khác, bạn đã hiểu vấn đề. Nếu bạn chỉ có thể kể tên các framework, bạn vẫn chưa hiểu.
Kế hoạch dưới đây giả định rằng bạn học bằng cách xây dựng. Đọc một giai đoạn, xây dựng thành phần nhỏ đó, cố ý làm cho nó lỗi, rồi chuyển sang giai đoạn tiếp theo. Một giai đoạn mà bạn chỉ mới đọc là một giai đoạn bạn chưa thực hiện.
Điều bạn thực sự cần trước giai đoạn 1
Danh sách điều kiện tiên quyết thực tế khá ngắn, ngắn hơn nhiều so với những gì hầu hết trang khóa học đề cập.
- Bạn có thể đọc và viết Python hoặc TypeScript ở mức đủ để viết một script dài năm mươi dòng.
- Bạn sử dụng Linux shell thành thạo: cài package, chỉnh sửa file và đọc log.
- Bạn có API key cho một model được host sẵn, hoặc có một máy chạy được model local.
Đó là toàn bộ danh sách. Bạn không cần lý thuyết machine learning và cũng không cần từng train model. Không có phần nào trong công việc với agent liên quan đến gradient hoặc training data. Graphics card chỉ cần thiết nếu bạn quyết định tự chạy model, đây là một kỹ năng riêng mà bạn có thể học sau từ host Ollama trên VPS để tự host LLM.
Nhiều người đánh giá thấp phần shell. Agent thường fail do permission, path, biến môi trường và các process âm thầm dừng. Nếu stack trace liên quan đến PATH hoặc file mode khiến bạn đóng terminal, hãy dành một cuối tuần học các kiến thức cơ bản về Linux trước. Việc này sẽ giúp bạn tiết kiệm cả tháng về sau.
Giai đoạn 1: agent là gì và không phải là gì
Bắt đầu bằng một lần gọi API và không dùng loop. Gửi một prompt, in phản hồi, rồi xem số lượng token trong response. Bây giờ bạn đã hiểu đơn vị chi phí và đơn vị độ trễ.
Tiếp theo, hãy tìm hiểu cách dùng tool. Đây là ý tưởng mới thực sự duy nhất trong toàn bộ lĩnh vực này. Bạn mô tả một function cho model bằng tên, mô tả và schema JSON (JavaScript object notation) cho các input của function. Model không chạy bất cứ thứ gì. Nó trả về một request có cấu trúc: gọi run_command với các argument này. Code của bạn chạy function, gửi output trở lại dưới dạng một message, rồi hỏi model lần nữa. Model là một planner đọc text và ghi text. Code của bạn mới là phần có thể thực thi hành động.
Chatbot kết thúc sau một response. Agent lặp lại quá trình trao đổi đó cho đến khi model không còn yêu cầu tool nữa. Sự lặp lại này là toàn bộ điểm khác biệt, và đó cũng là lý do các failure mode khác nhau. Chatbot có thể đưa ra một câu trả lời sai một lần. Agent có thể thực hiện hành động dựa trên câu trả lời sai nhiều lần trước khi có người nhận ra.
Giai đoạn 2: tự viết vòng lặp một lần
Đừng bắt đầu bằng framework. Hãy tự viết khoảng 30 dòng Python để bạn nắm được cấu trúc của chương trình.
sudo apt update && sudo apt install -y python3-venv
python3 -m venv ~/agent
source ~/agent/bin/activate
pip install anthropic
export ANTHROPIC_API_KEY=your-key-hereimport subprocess
import anthropic
client = anthropic.Anthropic()
tools = [{
"name": "run_command",
"description": "Run a read only shell command and return its output.",
"input_schema": {
"type": "object",
"properties": {"command": {"type": "string"}},
"required": ["command"],
},
}]
messages = [{"role": "user", "content": "How much disk space is free here?"}]
while True:
response = client.messages.create(
model="claude-opus-5",
max_tokens=4096,
tools=tools,
messages=messages,
)
if response.stop_reason != "tool_use":
break
messages.append({"role": "assistant", "content": response.content})
results = []
for block in response.content:
if block.type == "tool_use":
done = subprocess.run(
block.input["command"], shell=True,
capture_output=True, text=True, timeout=10,
)
results.append({
"type": "tool_result",
"tool_use_id": block.id,
"content": done.stdout or done.stderr,
})
messages.append({"role": "user", "content": results})
print(next(b.text for b in response.content if b.type == "text"))Chạy chương trình bằng python3 agent.py. Một lần chạy bình thường sẽ in ra một đoạn văn nêu tên các filesystem và dung lượng trống của chúng, vì model đã yêu cầu df -h, code của bạn đã chạy lệnh đó, rồi lượt xử lý thứ hai chuyển bảng kết quả thành một câu. Nếu không in gì, vòng lặp đã kết thúc trước khi nhận được một khối văn bản. Thêm print(response.stop_reason) bên trong vòng lặp rồi theo dõi các giá trị thay đổi.
Bây giờ hãy cố ý làm hỏng chương trình. Xóa dòng tool_use_id và đọc lỗi, vì tool result không có id tương ứng sẽ bị API từ chối. Đây là lỗi phổ biến nhất của người mới bắt đầu. Đặt một câu hỏi cần hai lệnh rồi theo dõi vòng lặp chạy hai lần. Đặt một câu hỏi không thể thực hiện rồi xem chương trình bỏ cuộc hay chạy vô hạn.
Có một cảnh báo về ví dụ này. Ví dụ truyền thẳng output của model vào shell bằng shell=True. Cách này có thể chấp nhận được trên một máy thử nghiệm có thể dựng lại, nhưng không phù hợp ở mọi môi trường khác. Giai đoạn 6 sẽ xử lý vấn đề đó. Các khái niệm trong vòng lặp được giải thích chi tiết hơn trong tự xây dựng AI agent trên VPS.
Giai đoạn 3: các tool mà agent chưa có
Tool run_command của bạn hoạt động, nhưng một agent thực tế cần các tool truy cập ra bên ngoài máy chủ: hệ thống ticket, database, repository. Viết một wrapper riêng cho từng service và từng agent không thể mở rộng.
Model Context Protocol (MCP) là giải pháp mà ngành đã thống nhất sử dụng. MCP server cung cấp một tập hợp tool qua một transport tiêu chuẩn, và mọi agent hỗ trợ MCP đều có thể sử dụng mà không cần glue code riêng. Filesystem server tham chiếu chỉ cần một command:
npx -y @modelcontextprotocol/server-filesystem /home/you/projectsLệnh này cần Node đã được cài đặt, và đối số directory là path duy nhất mà server được phép truy cập. Đây là mô hình bảo mật ở dạng tối giản: server quyết định ranh giới, không phải model. Chỉ cần trỏ client vào đó, agent của bạn có thể đọc và ghi file mà bạn không phải tự viết. Cách chạy các server này đúng cách, dưới một service account và với phần giải thích về các lựa chọn transport, được trình bày trong chạy MCP server trên VPS cho AI coding agent.
Bài học của giai đoạn này là thiết kế tool mới là phần việc thực sự. Mô tả mơ hồ khiến model phải đoán. Tool trả về bốn mươi nghìn ký tự sẽ làm hỏng context window. Tool có thể xóa dữ liệu thì sớm muộn cũng sẽ xóa dữ liệu.
Giai đoạn 4: bộ nhớ, phần lớn chỉ là các file
Người mới thường dùng vector database ở bước này. Chưa nên làm vậy.
Agent không có memory giữa các lần gọi. Mỗi lần bạn phải gửi lại toàn bộ cuộc hội thoại. Vì vậy, một session dài tốn nhiều chi phí hơn cho mỗi lượt so với một session ngắn. Do đó, memory gồm 2 vấn đề. Vấn đề đầu tiên là những gì vừa đủ trong context window hiện tại. Bạn quản lý việc này bằng cách tóm tắt, cắt bớt output cũ của tool và cache phần ổn định ở đầu prompt để chi phí chỉ còn một phần nhỏ. Vấn đề thứ hai là những gì vẫn còn sau khi restart. Đó là storage.
Với vấn đề thứ hai, một file markdown đơn giản mà agent có thể đọc và ghi thường phù hợp hơn vector database cho hầu hết project đầu tiên. Cấp cho agent một file, nêu rõ format, yêu cầu agent đọc file đó trước khi bắt đầu và cập nhật file khi học được điều gì mới. Bạn nhận được phần lớn lợi ích, đồng thời có thể mở file để xem agent đang tin điều gì. Chỉ dùng embeddings và retrieval khi các ghi chú không còn vừa trong context window, không dùng sớm hơn.
Giai đoạn 5: vòng lặp là sản phẩm
Đến đây, bạn có thể tạo một agent hoạt động khi bạn đang theo dõi. Giai đoạn 5 là làm cho agent hoạt động ngay cả khi bạn không theo dõi.
Bốn câu hỏi quyết định việc có thể để một agent chạy không giám sát một cách an toàn hay không. Điều gì kích hoạt agent để agent không chạy khi không có việc. Agent hoạt động trong ranh giới nào để một lỗi không gây ảnh hưởng lớn. Kết quả được xác minh như thế nào, vì một agent tự chấm bài của mình thì lúc nào cũng đạt. Ngân sách nào sẽ dừng agent, tính theo token hoặc thời gian thực. Thiết kế có chủ đích bốn yếu tố này là nội dung của kỹ thuật thiết kế vòng lặp và phạm vi của định nghĩa đó.
Bài tập: lấy agent ở giai đoạn 2, giao cho agent một tác vụ cần bốn hoặc năm bước, rồi thêm giới hạn cứng cho số vòng lặp. Sau đó bỏ giới hạn và theo dõi một vòng lặp không giới hạn làm tăng chi phí token như thế nào. Hãy thực hiện việc này một lần với ngân sách nhỏ để không bao giờ vô tình làm vậy với ngân sách lớn.
Giai đoạn 6: an toàn, secrets và chi phí
Giai đoạn này không phải là tùy chọn. Nó được đặt cuối chỉ vì bạn chưa thể cảm nhận rủi ro cho đến khi đã xây dựng được thứ hoạt động.
Chạy agent bằng một user riêng không có quyền đặc biệt. Tuyệt đối không chạy bằng root hoặc tài khoản của bạn. Như vậy, phạm vi ảnh hưởng khi có sự cố chỉ giới hạn ở một thư mục thay vì cả máy chủ. Không để credentials trong phạm vi truy cập của model, vì mọi thứ nằm trong context window đều có thể bị trích dẫn ngược ra thông qua một tool call. Cách xử lý là dùng các token có phạm vi ngắn, đặt phía sau một helper, như mô tả trong không để secrets trong AI agent. Đặt giới hạn cứng cho chi phí, vì một loop chạy không giám sát sẽ tính phí cho mọi iteration mà không có ai theo dõi. Các giới hạn và cách batching để kiểm soát chi phí được trình bày trong kiểm soát chi phí AI agent trên VPS luôn bật.
Chi phí cần một con số cụ thể. Tính đến July 2026, Claude Opus 5 tính $5 cho mỗi million input tokens và $25 cho mỗi million output tokens. Một agent gửi lại conversation ngày càng dài có thể đẩy vài trăm nghìn token qua một task duy nhất. Prompt caching và một model nhỏ hơn cho các bước thường lệ sẽ thay đổi phép tính đó nhiều hơn bất kỳ chỉnh sửa prompt nào.
Prompt injection cũng thuộc phạm vi này. Nếu agent đọc một web page, issue tracker hoặc inbox, thì người viết nội dung đó cũng đang viết instructions cho agent của bạn. Web search thường là tool đầu tiên mở ra cánh cửa này. trỏ agent vào SearXNG instance của bạn trình bày wiring và bề mặt injection mà nó tạo ra cạnh nhau. Biện pháp phòng vệ không phải là một system prompt thông minh hơn. Đó là boundary, vì một agent không thể xóa repository thì cũng không thể bị dụ xóa repository.
Bạn nên theo lộ trình nào?
Hãy chọn một chương trình học và hoàn thành nó thay vì học thử sáu chương trình. Repository Microsoft ai-agents-for-beginners là tài liệu miễn phí đầy đủ nhất. Đây là khóa học gồm eighteen bài học và đã vượt 70,000 stars tính đến July 2026. Nội dung của khóa học khớp rõ ràng với các giai đoạn ở trên. Các bài tổng hợp những repository agent đang thịnh hành hữu ích để biết có những dự án nào, nhưng ít phù hợp làm giáo trình. Lý do là danh sách sắp xếp theo stars được sắp xếp theo mức độ phổ biến, không phải theo thứ tự giảng dạy.
Khi cần một dự án thực tế để luyện tập, coding agent là mục tiêu đầu tiên phù hợp nhất: phản hồi ngay lập tức, các tool dễ hiểu và có thể dễ dàng hoàn tác lỗi. Chạy coding AI agent trên VPS hướng dẫn toàn bộ quy trình từ đầu đến cuối. Nếu muốn nghiên cứu các hệ thống đang hoạt động thay vì xây dựng từ đầu, bài so sánh các AI agent tự host tốt nhất cho thấy cách một số dự án triển khai cùng một vòng lặp theo những cách khác nhau.
Mất bao lâu?
Với người đã biết lập trình, giai đoạn 1 và 2 có thể hoàn thành trong một buổi tối. Giai đoạn 3 mất một cuối tuần, phần lớn thời gian dùng để tìm hiểu các công cụ chứ không phải giao thức. Giai đoạn 4 và 5 cần vài tuần sử dụng thực tế, vì bạn chỉ biết agent quên gì bằng cách theo dõi những gì nó quên. Giai đoạn 6 không bao giờ thực sự kết thúc, vì mỗi capability mới bạn cấp lại mở ra vấn đề này.
Duy trì đều đặn các buổi tối trong 2 tháng thường đủ để tạo một agent hoạt động được, có phạm vi giới hạn và hữu ích. Những người mất 1 năm thường là những người tiếp tục đọc thay vì bắt tay xây dựng.
FAQ
Tôi có cần biết machine learning để xây dựng AI agent không?
Không. Xây dựng agent nghĩa là gọi model qua API và kết nối các yêu cầu dùng tool của model với các hàm thực tế. Đây là lập trình ứng dụng thông thường. Bạn không cần xử lý training, gradient hoặc dataset. Những kỹ năng quyết định agent có hoạt động hay không là thiết kế schema cho tool, xử lý lỗi và quyền Linux. Lý thuyết machine learning chỉ trở nên cần thiết nếu bạn tiếp tục fine-tune model. Đó là một công việc khác với các yêu cầu đầu vào khác.
Tôi có nên bắt đầu bằng framework như LangChain hoặc CrewAI không?
Trước tiên hãy tự viết một raw loop, sau đó mới dùng framework. Framework thay 30 dòng ở stage 2 bằng một configuration object. Cách này thuận tiện khi bạn đã biết phần nào bị thay thế, nhưng sẽ gây khó hiểu nếu chưa biết. Khi agent hoạt động sai, bạn phải trực tiếp phân tích danh sách message và kết quả của tool. Việc này khó hơn nhiều nếu bạn chưa từng thấy chúng. Sau khi tự viết một loop, framework sẽ giúp bạn tiết kiệm thời gian thay vì che giấu cơ chế bên dưới.
Học AI agent tốn bao nhiêu chi phí?
Ít hơn hầu hết mọi người nghĩ nếu bạn đặt giới hạn. Một API key trả phí theo mức sử dụng và một VPS nhỏ là đủ cho cả 6 stage này. Rủi ro thực sự không nằm ở đơn giá theo giờ. Rủi ro là một loop không có giới hạn tiếp tục tính phí cho từng iteration trong khi bạn ngủ. Ngay từ ngày đầu, hãy đặt hard spend limit cho API account, thêm iteration cap vào mọi loop bạn viết và dùng model rẻ hơn cho các bước thông thường. Chạy model cục bộ sẽ loại bỏ chi phí token, nhưng thay bằng yêu cầu về phần cứng.
AI agent khác chatbot như thế nào?
Chatbot trả lời một lần. Agent lặp lại một chu kỳ: model yêu cầu dùng tool, code của bạn chạy tool đó, kết quả được gửi lại, rồi model quyết định bước tiếp theo. Việc lặp này cho phép agent hoàn thành một task gồm nhiều bước. Đây cũng là lý do agent cần các giới hạn mà chatbot không cần. Câu trả lời sai của chatbot là một đoạn văn không đúng. Câu trả lời sai của agent là một đoạn văn không đúng cộng với mọi hành động mà nó đã thực hiện dựa trên câu trả lời đó.