Agent AI không phải chatbot có function calling. Nó là hệ thống nhận thức, suy luận, hành động và học hỏi —tự chủ, qua nhiều bước, với trạng thái tồn tại giữa các hành động. Hướng dẫn xây dựng agent hiệu quả của Anthropic là điểm khởi đầu tốt nhất để hiểu mẫu kiến trúc agent. Chatbot trả lời câu hỏi của bạn. Agent đặt vé máy bay, dời cuộc họp và cập nhật Slack đội bạn trong khi bạn đang trên máy bay.
Năm 2026 ai cũng xây agent. Nhiều cái vỡ trong sản xuất —lặp vô hạn, gọi sai công cụ, quên việc đang làm ba bước trước. Hướng dẫn này bao quát kiến trúc ngăn những thất bại đó. Từ vòng lặp gọi công cụ đến hệ thống bộ nhớ và điều phối đa agent, mỗi phần có code chạy được. Kết thúc, bạn sẽ có một agent trợ lý nghiên cứu hoạt động có thể fork và mở rộng.
Điều gì tạo nên agent AI —và điều gì không
Định nghĩa. Agent AI có ba lớp: lõi suy luận (LLM), lớp công cụ (API, cơ sở dữ liệu, thực thi code) và lớp bộ nhớ (hội thoại ngắn hạn, kiến thức dài hạn, trạng thái làm việc). Khác biệt chính với lời gọi LLM đơn giản: agent đưa quyết định tự chủ trong một vòng lặp. Nó không chỉ phản hồi. Nó lập kế hoạch, hành động, quan sát kết quả và quyết định làm gì tiếp.
Ba lớp:
User Query → Reasoning Core (LLM) → Decision → Tool Execution → Observation → Memory Update → Next Decision → ... → Final Response
Khi nào cần agent so với lời gọi LLM đơn giản. Agent: tác vụ đa bước nơi model cần thu thập thông tin, thực thi hành động và thích nghi theo kết quả. “Nghiên cứu chủ đề này và viết báo cáo” —agent. “Tóm tắt bài này” —lời gọi đơn giản. “Gỡ lỗi lỗi này, kiểm tra log và mở PR với sửa lỗi” —agent. “Giải thích thông báo lỗi này” —lời gọi đơn giản.
Nếu tác vụ hoàn thành trong một lời gọi API không cần công cụ ngoài, bạn không cần agent. Nếu tác vụ cần thu thập thông tin từ nhiều nguồn, thực thi hành động và quyết định dựa trên kết quả trung gian, bạn cần agent. Cây quyết định: một bước? —lời gọi đơn giản. Nhiều bước có công cụ? —agent.
Vòng lặp gọi công cụ: đôi tay của agent
Vòng lặp agent cốt lõi. Mọi framework agent —LangChain, CrewAI, AutoGen, code thô— triển khai phiên bản nào đó của điều này.
import json
from openai import OpenAI
client = OpenAI(
base_url="https://api.tokspan.com/v1",
api_key="ts-your-key-here"
)
class Agent:
def __init__(self, model: str, tools: list, max_iterations: int = 10):
self.model = model
self.tools = {t["function"]["name"]: t for t in tools}
self.max_iterations = max_iterations
self.memory = [] # Working memory —the agent's scratchpad
def run(self, user_query: str) -> str:
messages = [
{"role": "system", "content": "You are a research assistant. Use tools to gather information, then synthesize a report."},
{"role": "user", "content": user_query}
]
for iteration in range(self.max_iterations):
response = client.chat.completions.create(
model=self.model,
messages=messages,
tools=list(self.tools.values()),
tool_choice="auto"
)
msg = response.choices[0].message
# Agent decided to respond with text —done
if msg.content and not msg.tool_calls:
return msg.content
# Agent decided to call tools —execute and continue
if msg.tool_calls:
messages.append(msg)
for tool_call in msg.tool_calls:
tool_name = tool_call.function.name
tool_args = json.loads(tool_call.function.arguments)
result = self._execute_tool(tool_name, tool_args)
messages.append({
"role": "tool",
"tool_call_id": tool_call.id,
"content": str(result)
})
return "Agent reached maximum iterations without completing the task."
def _execute_tool(self, name: str, args: dict):
# In production: dispatch to actual functions
print(f"Calling tool: {name}({args})")
return f"Result from {name}"
Thực hành tốt nhất định nghĩa công cụ. Mô tả công cụ là một prompt —hãy viết rõ. Gồm ví dụ khi nào dùng mỗi công cụ. Ràng buộc tham số chặt —enum thay vì chuỗi văn bản tự do. Làm công cụ idempotent —gọi cùng công cụ hai lần với cùng tham số phải cho cùng kết quả. Khi thực thi công cụ thất bại, gửi thông báo lỗi về model —nó thường có thể phục hồi bằng cách thử tham số khác.
Cho so sánh function calling đầy đủ giữa nhà cung cấp —gồm triển khai OpenAI so với Anthropic so với Google so với DeepSeek— xem hướng dẫn function calling đa nhà cung cấp của chúng tôi.
Xử lý lỗi trong vòng lặp. Thực thi công cụ thất bại —gửi lỗi về model —model quyết định: retry với tham số khác, thử công cụ khác hoặc báo người dùng. Model giỏi đáng ngạc nhiên khi phục hồi từ lỗi công cụ —nhưng chỉ khi bạn gửi lỗi về. Nuốt im lặng lỗi công cụ tạo agent thất bại bí ẩn.
Hệ thống bộ nhớ: dạy agent nhớ
Agent không bộ nhớ là cá vàng —quên mọi thứ giữa các bước. Ba loại bộ nhớ, mỗi loại mục đích riêng.
Bộ nhớ ngắn hạn —lịch sử hội thoại. Mảng messages. Người dùng nói gì, agent làm gì, công cụ trả gì. Quản lý như cửa sổ trượt —khi lịch sử chạm giới hạn ngữ cảnh model, cắt bỏ tin nhắn cũ nhất hoặc tóm tắt chúng. Kích hoạt tóm tắt: khi tổng token vượt 80% cửa sổ ngữ cảnh, tóm tắt 50% cũ nhất hội thoại thành một tin nhắn hệ thống.
Bộ nhớ dài hạn —kho lưu trữ vector. Tương tác quá khứ, sở thích người dùng, sự kiện học được —lưu như embedding trong cơ sở dữ liệu vector, truy hồi theo tương đồng với truy vấn hiện tại. Triển khai: nhúng mỗi tương tác đáng kể —lưu trong ChromaDB hoặc Pinecone —mỗi truy vấn mới, truy hồi top 3–5 tương tác quá khứ tương đồng nhất —đưa vào system prompt như ngữ cảnh. Đây là khác biệt giữa “agent biết chúng ta nói gì tuần trước” và “agent bắt đầu mỗi hội thoại từ đầu”.
Bộ nhớ làm việc —giấy nháp. Kế hoạch hiện tại của agent, kết quả trung gian và giả thuyết —lưu như đối tượng JSON cập nhật mỗi vòng lặp. Agent đang cố đạt gì ngay bây giờ? Đã thử gì? Học được gì? Giấy nháp là “dòng suy nghĩ” của agent —ngoại hóa để sống qua các lời gọi công cụ và có thể kiểm tra khi gỡ lỗi.
Kiến trúc bộ nhớ. Cả ba bộ nhớ nuôi agent mỗi vòng lặp: lịch sử hội thoại (điều gì xảy ra) + bộ nhớ dài hạn truy hồi (điều gì liên quan từ quá khứ) + bộ nhớ làm việc (chúng ta đang làm gì bây giờ). LLM tổng hợp chúng thành quyết định tiếp theo.
Hệ thống đa agent: khi một agent chưa đủ
Một agent đơn với 15 công cụ ra quyết định kém —quá nhiều lựa chọn, quá nhiều ngữ cảnh, độ chính xác chọn lựa suy giảm. Giải pháp: agent chuyên biệt, mỗi cái tập công cụ tập trung và trách nhiệm rõ ràng.
Mẫu điều phối:
- Giám sát/công nhân. Một agent điều phối giao tác vụ cho agent công nhân chuyên biệt. Giám sát không làm việc —nó phối hợp. “Nghiên cứu chủ đề này” —giám sát phái agent nghiên cứu, agent phân tích và agent viết —giám sát tổng hợp kết quả.
- Tranh luận ngang hàng. Hai agent tranh hai phía đối lập một quyết định rồi hội tụ. “Có nên duyệt khoản vay này?” —agent A tranh có, agent B tranh không —cả hai xem xét lập luận nhau —tạo khuyến nghị chung.
- Pipeline tuần tự. Đầu ra agent A là đầu vào agent B. “Phân tích mã nguồn này” —bộ phân tích code ra báo cáo —bộ tìm bug dùng báo cáo xác định vấn đề —bộ tạo sửa lỗi đề xuất giải pháp.
Giao tiếp đa agent. Dùng bus thông điệp chung —mỗi agent công bố đầu ra như thông điệp có cấu trúc {from: "researcher", to: "analyst", content: "...", type: "report"}. Điều này làm đồ thị tương tác agent quan sát được và gỡ lỗi được. Khi có sự cố, bạn theo dõi chính xác agent nào tạo đầu ra nào và tại sao.
Chi phí đa agent. Mỗi agent tự gọi LLM. Hệ ba agent làm gấp 3 lời gọi API hệ một agent. Giảm thiểu: dùng model rẻ cho agent công nhân (DeepSeek V4 Flash, $0.14/$0.28) và giữ model hàng đầu (Claude Opus, GPT-5.5) cho điều phối. Điều phối ra quyết định rủi ro cao. Công nhân thực thi.
Đây là pipeline nghiên cứu 3 agent cụ thể bạn có thể triển khai hôm nay. Agent Nghiên cứu dùng Gemini 3.1 Pro ($2.00/M token đầu vào) với đúng hai công cụ —tìm kiếm web và truy hồi tài liệu— để không bao giờ lạc trong tê liệt chọn công cụ. Đầu ra là brief JSON có cấu trúc: {sources: [...], key_facts: [...], gaps: [...]}.
Agent Viết chạy GPT-5.5 ($5.00/M đầu vào) biến brief thành bản nháp, chỉ dùng một công cụ định dạng. Agent Xem xét dùng Claude Opus 4.8 ($5.00/M đầu vào) đối chiếu từng khẳng định với nguồn gốc, gắn cờ ảo giác và trả đánh giá chấm điểm: {score: 1-10, issues: [...], corrected_draft: "..."}. Chi phí mỗi tác vụ $0.12–0.35 —Nghiên cứu tiêu thụ ~40% token, Viết ~35%, Xem xét ~25%.
Bus thông điệp là dict Python đơn giản truyền giữa agent —không cần framework. Log {timestamp, from_agent, to_agent, payload_type, token_count} mỗi chuyển giao và bạn theo dõi được mọi bàn giao khi có sự cố.
Gỡ lỗi thất bại agent
Agent thất bại theo cách dự đoán được. Ba chế độ lỗi phổ biến nhất: vòng lặp vô hạn (gọi công cụ nhưng không bao giờ hội tụ), chọn sai công cụ (model chọn công cụ không liên quan với tham số sai) và tràn ngữ cảnh (lịch sử hội thoại vượt cửa sổ ngữ cảnh model, âm thầm bỏ tin nhắn sớm). Mỗi cái có mẫu chẩn đoán.
Vòng lặp vô hạn, log hành động agent để phát hiện lặp lại —nếu cùng công cụ gọi cùng tham số ba lần liên tiếp, agent kẹt. Can thiệp: chèn tin nhắn hệ thống “Bạn đã gọi {tool} với {args} nhiều lần. Kết quả không đổi. Thử cách khác hoặc báo cáo những gì bạn có đến giờ”.
Chọn sai công cụ, log tên công cụ, tham số và kết quả mỗi vòng lặp —bạn sẽ thấy mẫu. Agent gọi search_web khi đáng gọi query_database lộ ra mô tả công cụ cần viết lại, không phải vấn đề model.
Tràn ngữ cảnh, theo dõi total_tokens mỗi vòng lặp bằng trường usage API. Khi token vượt 80% giới hạn ngữ cảnh —1M cho GPT-5.5, 200K cho Claude Opus— tóm tắt 50% cũ nhất tin nhắn trước vòng tiếp. Lỗi lập trình viên phổ biến nhất: không bao giờ kiểm tra response.usage.total_tokens cho đến khi agent bắt đầu ra đầu ra vô nghĩa, không biết ngữ cảnh đã bị cắt âm thầm năm vòng trước.
Log có cấu trúc là công cụ gỡ lỗi hiệu quả nhất bạn có. Tối thiểu, log mỗi vòng: {iteration, model, tool_calls, tokens_used, latency_ms, error}. Sau 20 lần chạy agent bạn đủ dữ liệu xác định chế độ lỗi nào cắn bạn thường nhất.
Bạn cũng nhận ngay hồi quy hiệu suất —lời gọi công cụ thường 200ms bỗng mất 2 giây là tín hiệu trước khi thành sự cố.
Model nào cho vai trò agent nào?
| Vai trò agent | Model tốt nhất | Lý do |
|---|---|---|
| Orchestrator | GPT-5.5 | Sử dụng công cụ đáng tin cậy nhất, gọi công cụ song song tốt nhất |
| Code Agent | Claude Opus 4.8 | SWE-bench cao nhất, suy luận kiến trúc tốt nhất |
| Research Agent | Gemini 3.1 Pro | Ngữ cảnh 2M để phân tích tài liệu, đa phương thức |
| Cost-Efficient Worker | DeepSeek V4 Pro | 92% HumanEval với $0.44/M đầu ra |
| Writer Agent | GPT-5.5 | Chất lượng văn xuôi và biên độ phong cách tốt nhất |
Lợi thế nền tảng tổng hợp: truy cập cả năm model qua một API key. Định tuyến mỗi vai trò agent đến model tối ưu. Đổi model không cần đổi code agent. Điều phối, agent code, agent nghiên cứu và công nhân đều dùng cùng SDK OpenAI —chỉ tham số model khác.
Cho thảo luận kiến trúc sâu hơn về định tuyến tác vụ khác đến model khác —mẫu mọi hệ agent sản xuất dùng— xem hướng dẫn dùng nhiều model AI trong một app của chúng tôi.
Câu hỏi thường gặp
Tôi có cần framework như LangChain để xây agent không?
Không. Vòng lặp agent cốt lõi ~50 dòng Python —code trong bài viết này là agent hoàn chỉnh hoạt động. Framework thêm tiện lợi (công cụ dựng sẵn, tracing, backend bộ nhớ) và phức tạp (lớp trừu tượng, cây phụ thuộc, thay đổi phá vỡ giữa phiên bản). Bắt đầu bằng code thô. Thêm framework chỉ khi bạn có vấn đề cụ thể nó giải quyết. Lập trình viên nhảy thẳng vào LangChain thường hối tiếc —họ dành nhiều thời gian gỡ lỗi framework hơn xây agent.
Model nào tốt nhất cho agent?
GPT-5.5 cho độ tin cậy dùng công cụ —nhất quán nhất khi gọi đúng công cụ với đúng tham số. Claude Opus cho suy luận đa bước phức tạp nơi chiều sâu quan trọng hơn độ tin cậy. Gemini cho tác vụ ngữ cảnh dài. DeepSeek V4 Pro cho agent tiết kiệm chi phí. Hầu hết hệ agent sản xuất dùng 2–3 model: điều phối đáng tin cậy (GPT-5.5), chuyên gia suy luận sâu (Claude Opus) cho bước phức tạp và công nhân tiết kiệm (DeepSeek) cho tác vụ đơn giản khối lượng lớn.
Làm sao ngăn agent lặp vô hạn?
Ba phòng thủ. Đặt max_iterations (10–20 hợp lý hầu hết tác vụ). Theo dõi hoàn thành tác vụ —nếu 3 hành động cuối của agent không tạo thông tin mới, nó kẹt; kết thúc và trả kết quả một phần. Trần ngân sách mỗi phiên agent —giới hạn chi $0.50 bắt vòng lặp vô hạn trước khi thành vấn đề $50 (xem hướng dẫn quản lý khóa và kiểm soát ngân sách để đặt trần chi và giới hạn tốc độ làm rào chắn). Luôn có timeout + phản hồi dự phòng duyên dáng.
Chạy agent AI tốn bao nhiêu?
Agent đơn giản (3–5 lời gọi công cụ): $0.05–0.20 mỗi tác vụ dùng DeepSeek V4 Pro. Đa agent phức tạp (10–20 lời gọi): $0.50–2.00 mỗi tác vụ với model hỗn hợp. Dùng định tuyến theo chi phí: tác vụ đơn giản —model rẻ, tác vụ phức tạp —model hàng đầu. Chi phí mỗi tác vụ nên đo và tối ưu như mọi chi phí hạ tầng khác.
Làm sao kiểm thử độ tin cậy agent trước khi triển khai sản xuất?
Xây harness đánh giá với 20–50 ca kiểm thử gắn nhãn tay bao phủ phạm vi tác vụ dự kiến của agent. Chạy mỗi ca 5 lần —hành vi agent không xác định, một lần không chứng minh gì. Đo hai chỉ số: tỷ lệ hoàn thành tác vụ (agent có tạo đầu ra hợp lệ?) và độ chính xác chọn công cụ (có gọi đúng công cụ đúng thứ tự?).
Tỷ lệ hoàn thành dưới 85% nghĩa là prompt hoặc mô tả công cụ cần cải thiện. Cho hệ đa agent, thêm chỉ số thứ ba: độ đúng bàn giao —mỗi agent có nhận định dạng đầu vào mong đợi từ agent thượng nguồn không? Một bàn giao kém lan thành lỗi hạ nguồn.
Khi nào dùng một agent so với hệ đa agent?
Bắt đầu một agent. Thêm agent thứ hai chỉ khi chạm một trong ba ngưỡng: danh sách công cụ vượt 8–20 hàm (độ chính xác chọn công cụ suy giảm trên con số này theo benchmark function calling OpenAI), tác vụ có tác vụ con tách rõ cần chuyên môn khác (nghiên cứu so với viết so với xem xét), hoặc bạn cần xác minh an toàn độc lập (agent xem xét kiểm tra đầu ra agent chính).
Kiến trúc đa agent sớm là lỗi quá tay phổ biến nhất trong phát triển agent —thêm độ trễ, chi phí và phức tạp gỡ lỗi không tương xứng lợi ích cho quy trình đơn giản.
Bước một: copy vòng lặp agent 50 dòng từ bài này, thay định nghĩa công cụ của bạn, đặt max_iterations 10 và triển khai với tác vụ nội bộ không quan trọng —thứ rủi ro thấp nơi thất bại là cơ hội học, không phải sự cố. Xem log. Xem nó kẹt ở đâu. Thêm bộ nhớ khi quên ngữ cảnh. Thêm đa agent khi danh sách công cụ khó quản. Cách duy nhất học điều gì vỡ là ra mắt thứ gì đó và quan sát.
Vòng lặp agent 50 dòng trên là điểm khởi đầu hoạt động. Khi sẵn sàng gán mỗi vai trò agent đến model tối ưu —bảng ánh xạ đầu bài là tham chiếu— endpoint tổng hợp cho bạn đổi model mỗi agent bằng cách sửa tham số chuỗi. Không SDK theo nhà cung cấp, không quan hệ thanh toán riêng. Triển khai vòng lặp với tác vụ nội bộ rủi ro thấp trước, xem log và lặp từ đó.