Lập Trình AI Agent: Từ Khái Niệm Đến Thực Chiến Cho Developer
Nhiều lập trình viên hiện nay vẫn nhầm lẫn giữa việc gọi API OpenAI để nhận văn bản và việc lập trình một AI Agent.
Một con Chatbot thông thường chỉ tiếp nhận câu hỏi và trả về câu trả lời bằng chữ. Ngược lại, một AI Agent là một thực thể tự chủ: Nó có khả năng quan sát trạng thái môi trường (Perceive), suy luận lập kế hoạch (Reason), lựa chọn công cụ phù hợp để hành động (Act) và đánh giá lại kết quả để tiếp tục vòng lặp cho đến khi hoàn thành mục tiêu.
Bài viết này hướng dẫn lộ trình từ kiến trúc lý thuyết đến mã nguồn thực tế để bạn có thể tự tay lập trình một AI Agent hoàn chỉnh bằng TypeScript.
---
1. 5 Khối Kiến Trúc Lõi Của Một AI Agent
Một AI Agent hoàn chỉnh được cấu thành từ 5 bộ phận chính:
flowchart TD
subgraph AI AGENT CORE
A["1. LLM Core (Bộ Não Suy Luận)"]
B["2. Tools / Function Calling (Tay Chân)"]
C["3. Memory (Bộ Nhớ Ngắn & Dài Hạn)"]
D["4. Planner (Bộ Lập Kế Hoạch)"]
E["5. Orchestrator (Vòng Kiểm Soát & Điều Phối)"]
end
A <--> D
A <--> C
E --> A
A -->|Quyết định gọi tool| B
B -->|Kết quả thực thi| E- LLM Core (Bộ não): Mô hình ngôn ngữ lớn đóng vai trò hạt nhân suy luận (như Claude 3.5 Sonnet, GPT-4o, Gemini 2.5 Flash).
- Tools (Công cụ hành động): Các hàm được lập trình để kết nối với thế giới bên ngoài: Đọc ghi file, truy vấn cơ sở dữ liệu, gọi API thanh toán, chạy lệnh terminal.
- Memory (Bộ nhớ): Ghi nhớ ngữ cảnh hội thoại, tài liệu nghiệp vụ và các bài học từ những lần xử lý lỗi trước đó.
- Planner (Bộ lập kế hoạch): Bẻ nhỏ mục tiêu lớn của người dùng thành một danh sách các bước hành động tuần tự.
5. Orchestrator (Vòng kiểm soát): Điều phối luồng ReAct (Thought $ ightarrow$ Action $ ightarrow$ Observation), giám sát ngân sách token và ngăn chặn vòng lặp vô hạn.
---
2. Vòng Đời Hoạt Động Của Một Agent (ReAct Loop)
Chu trình kinh điển mà mọi Agent tuân theo được mô tả qua 4 bước:
[Người dùng đưa mục tiêu]
│
▼
1. THOUGHT (Suy luận): Agent phân tích trạng thái hiện tại và lập kế hoạch bước tiếp theo.
│
▼
2. ACTION (Hành động): Agent quyết định gọi Tool cụ thể với tham số được chuẩn hóa JSON.
│
▼
3. OBSERVATION (Quan sát): Hệ thống thực thi Tool và trả kết quả thật vào ngữ cảnh của Agent.
│
▼
4. EVALUATION (Đánh giá): Agent kiểm tra kết quả đã đạt mục tiêu chưa?
├─ Chưa đạt: Quay lại bước 1.
└─ Đã đạt: Xuất phản hồi cuối cùng cho người dùng.---
3. Thực Chiến: Lập Trình Vòng Lặp Agent Tinh Gọn Bằng TypeScript
Thay vì phụ thuộc vào các framework cồng kềnh, việc tự tay viết một Agent Loop cơ bản sẽ giúp bạn nắm vững bản chất luồng hoạt động:
import OpenAI from 'openai';
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
// 1. Định nghĩa danh mục công cụ (Tools Specification)
const tools: OpenAI.ChatCompletionTool[] = [
{
type: 'function',
function: {
name: 'get_weather',
description: 'Lấy thông tin nhiệt độ và thời tiết hiện tại của một thành phố',
parameters: {
type: 'object',
properties: {
city: { type: 'string', description: 'Tên thành phố (vd: Hanoi, Saigon)' }
},
required: ['city']
}
}
}
];
// Hàm thực thi công cụ thực tế
async function executeTool(name: string, args: Record<string, unknown>): Promise<string> {
if (name === 'get_weather') {
const city = args.city as string;
// Mô phỏng kết quả gọi API thật
return JSON.stringify({ city, temperature: '28°C', condition: 'Sunny with clouds' });
}
throw new Error(`Tool ${name} không tồn tại.`);
}
// 2. Hiện thực hóa Vòng lặp Agent (Agent Loop)
async function runAgent(userPrompt: string, maxIterations = 5) {
const messages: OpenAI.ChatCompletionMessageParam[] = [
{ role: 'system', content: 'Bạn là một trợ lý AI Agent hữu ích có khả năng sử dụng công cụ để giải quyết bài toán.' },
{ role: 'user', content: userPrompt }
];
console.log(`[USER]: ${userPrompt}`);
for (let i = 0; i < maxIterations; i++) {
const response = await openai.chat.completions.create({
model: 'gpt-4o',
messages,
tools
});
const choice = response.choices[0];
const message = choice.message;
messages.push(message);
// Nếu Agent không gọi công cụ nào nữa -> Đã có câu trả lời cuối cùng
if (!message.tool_calls || message.tool_calls.length === 0) {
console.log(`[AGENT FINAL]: ${message.content}`);
return message.content;
}
// Nếu Agent yêu cầu gọi Tool
for (const toolCall of message.tool_calls) {
const toolName = toolCall.function.name;
const toolArgs = JSON.parse(toolCall.function.arguments);
console.log(`[STEP ${i + 1} - ACTION]: Gọi tool '${toolName}' với tham số:`, toolArgs);
try {
const result = await executeTool(toolName, toolArgs);
// Trả kết quả quan sát (Observation) ngược lại cho LLM
messages.push({
role: 'tool',
tool_call_id: toolCall.id,
content: result
});
} catch (err: any) {
messages.push({
role: 'tool',
tool_call_id: toolCall.id,
content: JSON.stringify({ error: err.message })
});
}
}
}
throw new Error('Agent vượt quá số lần lặp tối đa mà chưa hoàn thành mục tiêu.');
}
// Chạy thử nghiệm
// runAgent("Thời tiết ở Hanoi hôm nay như thế nào?");---
4. 4 Nguyên Tắc Vàng Khi Thiết Kế Tool Cho AI Agent
Chất lượng của một AI Agent phụ thuộc 80% vào cách bạn thiết kế Tool:
- Mô tả (Description) rõ ràng, trung thực: LLM quyết định có dùng tool hay không dựa vào description. Hãy viết rõ tool nhận input gì và trả về dữ liệu gì.
- Nguyên tắc "Ít nhưng Tinh": Đừng nhồi nhét hàng chục tool có tính năng tương tự nhau vào một prompt. Điều này làm LLM phân vân và dễ chọn sai.
- Báo lỗi có tính xây dựng (Actionable Error Messages): Khi tool gặp lỗi, đừng chỉ trả về
HTTP 500. Hãy trả về:"Không tìm thấy ID người dùng 123. Vui lòng kiểm tra lại danh sách ID trước khi thử lại". Lời nhắn này giúp Agent tự biết cách sửa lỗi. - Phân quyền và Cổng phê duyệt (Human-in-the-loop): Với các tool có tính chất nhạy cảm (như gửi tiền, xóa dữ liệu, gửi email cho khách), bắt buộc phải có bước dừng lại hỏi sự đồng ý của con người.
---
🎁 Quà Tặng Đón Phễu: Bộ Slide Kiến Trúc 4 Khối & Mã Nguồn Tool Calling TypeScript
### 🛠️ BỘ KHỞI ĐỘNG DÀNH CHO AI DEVELOPER:
1. Bộ Slide Kiến Trúc Hệ Thống AI Agent (PDF): Trình bày trực quan các thành phần LLM Core, Tool Registry, Planner và Memory.
2. Toàn Bộ Mã Nguồn Mẫu Tool Calling Chuẩn Enterprise: Code TypeScript hoàn chỉnh với cơ chế tự động thử lại (Retry) và xử lý lỗi fail-safe.
3. Bộ Cheat Sheet Các Vấn Đề Lập Trình Agent Thường Gặp: Giải pháp xử lý ảo giác tool, loop vô tận và tràn token budget.
>
👉 Tải về ngay: Tham gia nhóm Zalo Hub Trạm AI Thực Chiến theo liên kết dưới phần bình luận!
---
Bài Viết Liên Quan:
Nguồn tham khảo: Unicode.vn
Dựa trên 28 lượt đánh giá từ cộng đồng AI
Đội ngũ Kỹ thuật AgentSkills
Tác giả đóng góp nội dung tại AgentSkills.vn — Chia sẻ kiến thức, hướng dẫn thực hành và đánh giá công cụ AI thực chiến cho cộng đồng người dùng Việt Nam.
Thảo luận cộng đồng (0)
Tham gia thảo luận cùng cộng đồng AI Việt Nam
Đăng nhập để bình luận, đặt câu hỏi cho tác giả và chia sẻ kinh nghiệm thực tế.