ChatGPT trả lời câu hỏi.
AI Agent thực hiện hành động.
Sự khác biệt là khoảng cách giữa “nói cho tôi biết cách đặt vé máy bay” và “thực sự đặt vé máy bay cho bạn.” Đây là sự thay đổi kiến trúc quan trọng nhất trong phần mềm kể từ microservices.
Đây là Hướng dẫn chuyên sâu về AI Agent — từ gọi công cụ đơn lẻ đến điều phối đa tác nhân với LangGraph.
Phần 1: Nền tảng (Mô hình tư duy)
LLM = Cố vấn Thông minh
LLM đơn thuần là người bạn xuất sắc có thể tư vấn mọi thứ. Nhưng họ chỉ có thể nói chuyện. Họ không thể truy cập email, gọi ngân hàng hay cập nhật lịch của bạn. Họ không có công cụ.
AI Agent = Nhân viên Thông minh
Agent là LLM được trao Công cụ (Tools) và khả năng quyết định khi nào và cách sử dụng chúng.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| User: "Đặt cho tôi cuộc họp với Sarah thứ Ba tuần này lúc 3 giờ."
│
▼
[LLM Suy nghĩ]: "Tôi cần kiểm tra lịch của Sarah trước."
│
▼ (Tool Call)
[Tool: get_calendar("[email protected]", "thứ Ba này")]
│ Trả về: "Sarah rảnh từ 2-4 giờ chiều."
▼
[LLM Suy nghĩ]: "Tốt, tôi sẽ đặt slot 1 tiếng lúc 3 giờ."
│
▼ (Tool Call)
[Tool: create_event("Họp với Sarah", "Thứ Ba 3pm", attendees=[...])]
│ Trả về: "Event đã tạo. Thư mời đã gửi."
▼
Agent: "Xong! Cuộc họp đã được đặt vào thứ Ba lúc 3 giờ chiều."
|
LLM là bộ não. Công cụ là đôi tay.
Multi-Agent = Công ty
Một agent đơn xử lý một chuyên môn. Hệ thống đa tác nhân là một công ty gồm những nhân viên chuyên nghiệp:
- Orchestrator Agent: Giám đốc. Chia nhỏ task phức tạp và phân công cho chuyên gia.
- Researcher Agent: Tìm kiếm web, đọc tài liệu.
- Coder Agent: Viết và thực thi code.
- Critic Agent: Review kết quả và đánh flag lỗi.
Phần 2: Điều tra (Vòng lặp ReAct)
Mọi agent đều chạy trên một vòng lặp cốt lõi gọi là ReAct (Reason + Act):
1
2
3
4
5
6
7
8
9
10
| SUY NGHĨ: "Tôi cần làm gì?"
↓
HÀNH ĐỘNG: Gọi một công cụ
↓
QUAN SÁT: Xem kết quả của công cụ
↓
SUY NGHĨ: "Tôi vừa biết gì? Tiếp theo là gì?"
↓
(lặp lại cho đến khi hoàn thành hoặc bỏ cuộc)
CÂU TRẢ LỜI CUỐI CÙNG
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
| from openai import OpenAI
import json
client = OpenAI()
# Định nghĩa công cụ mà agent có thể dùng
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Lấy thời tiết hiện tại cho một thành phố",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "Tên thành phố"}
},
"required": ["city"]
}
}
}
]
def get_weather(city: str) -> str:
return f"Nắng, 28°C tại {city}"
messages = [{"role": "user", "content": "Thời tiết Hà Nội như thế nào?"}]
# Lần gọi đầu: LLM quyết định dùng tool
response = client.chat.completions.create(
model="gpt-4o",
messages=messages,
tools=tools
)
# Thực thi tool
tool_call = response.choices[0].message.tool_calls[0]
result = get_weather(**json.loads(tool_call.function.arguments))
# Đưa kết quả về LLM cho câu trả lời cuối
messages.append(response.choices[0].message)
messages.append({"role": "tool", "tool_call_id": tool_call.id, "content": result})
final = client.chat.completions.create(model="gpt-4o", messages=messages)
print(final.choices[0].message.content)
# "Thời tiết tại Hà Nội hiện đang nắng, 28°C."
|
Phần 3: Chẩn đoán (Agent thất bại như thế nào?)
| Vấn đề | Triệu chứng | Cách sửa |
|---|
| Vòng lặp vô tận | Agent cứ gọi tool mà không kết thúc | Đặt max_iterations=10. Phát hiện tool call lặp lại. |
| Tool Hallucination | Agent gọi tool với tham số bịa | Dùng JSON schema validation nghiêm ngặt cho input. |
| Tràn Context Window | Task dài lấp đầy cửa sổ context | Implement tầng “memory”. Tóm tắt các bước cũ. |
| Lỗi Cascading | Một agent lỗi; cả pipeline chết | Xử lý lỗi per agent. Retry với backoff. |
| Output không nhất quán | Agent cho format khác nhau mỗi lần | Dùng structured output (response_format={"type": "json_object"}). |
Phần 4: Giải pháp (LangGraph cho Multi-Agent)
LangGraph là framework sẵn sàng production nhất để xây dựng workflow đa tác nhân có trạng thái.
Khái niệm chính: định nghĩa agent là các node trong một đồ thị. Kiểm soát luồng bằng cạnh (edge).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| from langgraph.graph import START, END, StateGraph
from typing import TypedDict, Annotated
import operator
# Định nghĩa state chung giữa các agent
class AgentState(TypedDict):
messages: Annotated[list, operator.add]
task: str
result: str
def research_agent(state: AgentState) -> AgentState:
"""Tìm kiếm web và trả về kết quả nghiên cứu."""
return {"messages": [ket_qua_nghien_cuu]}
def writer_agent(state: AgentState) -> AgentState:
"""Lấy kết quả nghiên cứu và viết báo cáo."""
return {"messages": [bao_cao], "result": bao_cao}
def should_continue(state: AgentState) -> str:
if not state.get("result"):
return "writer"
return END
# Xây dựng đồ thị
workflow = StateGraph(AgentState)
workflow.add_node("researcher", research_agent)
workflow.add_node("writer", writer_agent)
workflow.add_edge(START, "researcher")
workflow.add_conditional_edges("researcher", should_continue)
workflow.add_edge("writer", END)
app = workflow.compile()
result = app.invoke({"task": "Viết báo cáo về xu hướng AI năm 2026"})
|
Mô hình tư duy chốt hạ
1
2
3
4
5
6
7
| LLM -> Bộ não Thông minh. Biết lý luận, nhưng không thể hành động.
Tool -> Đôi tay. API, truy vấn DB, thực thi code, tìm kiếm web.
Agent -> Não + Tay. Có thể suy nghĩ và hành động trong vòng lặp.
Multi-Agent -> Công ty. Những bộ não chuyên biệt làm việc song song.
Vòng lặp ReAct -> Suy nghĩ → Hành động → Quan sát → Lặp lại.
LangGraph -> Phần mềm sơ đồ tổ chức cho công ty AI của bạn.
|
Sự chuyển dịch của 2026: Từ “chatbot trả lời” sang “agent thực hiện.” Nếu sản phẩm AI của bạn chỉ tạo ra văn bản, bạn đã tụt hậu. Tương lai là AI thực thi.