Agent – Khi dev không còn “prompt”, mà bắt đầu “ra lệnh”

Mở đầu một chút cho có không khí 😄
Nếu bạn từng:
- Ngồi chỉnh Prompt 15 lần vẫn ra kết quả “na ná đúng”, kiểu “gần đúng là đúng”.
- Copy context → paste vào LLM → sửa lại → gửi lại kết quả (và lặp lại vòng đời này vài chục lần/ngày).
- Hay đơn giản là cuối tháng nhìn bill Token và tự hỏi: “Mình đang nuôi AI hay AI đang nuôi mình?”
Thì chúc mừng, bạn đã đi đúng con đường mà team mình từng đi qua. Không sai một bước nào 😄.
Sau thời gian "trăng mật" với LLM, bọn mình nhận ra một thực tế phũ phàng:
Dùng LLM kiểu cũ giống như thuê một thực tập sinh cực kỳ thông minh, đọc sách nhiều, nói hay, nhưng...
- Không nhớ việc hôm qua mình giao (Stateless)
- Không tự biết phải làm gì tiếp theo (No Autonomy)
- Mỗi lần giao việc lại phải onboard lại từ đầu (Zero Context)

Ảnh minh họa. Nguồn: Internet
Bối cảnh: Khi Prompt dài hơn cả Spec
Ở một dự án nội bộ, team mình từng build hàng loạt use case:
- Dịch Message đa ngôn ngữ: VN ↔ JP ↔ EN
- Knowledge Base: Hỏi đáp nội bộ
Kiến trúc lúc đó rất "sách giáo khoa":
Client → Backend → LLM API
Bọn mình cũng thêm thắt đủ thứ "gia vị" như:
- Prompt Template
- Few-shot Examples
- Retry logic
Nhìn qua cứ ngỡ là một hệ thống AI bài bản.
Nhưng thực tế bắt đầu "có mùi":
🧨 Prompt Inflation
- Prompt từ vài dòng leo thang lên vài chục dòng.
- Có những đoạn prompt đọc vào cảm giác như đang viết… README cho AI.
🧵 Manual Orchestration
Toàn bộ logic đa bước:
Dịch → Refine → Format → Validate → Retry
Đều do Dev phải "cầm tay chỉ việc" bằng code cứng.
Tức là:
AI thì “thông minh” Nhưng workflow thì vẫn… thủ công
🪫 Passive AI
LLM không tự làm gì cả.
Nó chỉ ngồi chờ.
Bạn hỏi → nó trả lời Bạn không hỏi → nó ngủ 😄
Toàn bộ “trí thông minh” thực chất nằm ở kỹ năng viết Prompt của Dev.
LLM là gì?

Ảnh minh họa. Nguồn: Internet
🧠 LLM (Large Language Model)
Một cỗ máy dự đoán token tiếp theo cực giỏi
Ưu điểm:
- Gọi API là chạy
- Đa năng
- Không cần train lại Nhược điểm
- Stateless → mỗi request là một cuộc đời mới
- Không có loop
- Không biết tự gọi tool
- Không hiểu workflow
- Và quan trọng nhất: không có ý chí
🤖 Agent là gì?

Ảnh minh họa. Nguồn: Internet
Nếu LLM là "não", thì Agent là:
Não + Tay chân + Trí nhớ + Khả năng tự lặp
Agent = LLM + Tools + Memory + Planning (Loop)
⚔️ So sánh nhanh
| Đặc điểm | LLM | Agent |
|---|---|---|
| Bản chất | Text Generator | Task Executor |
| Hành vi | Reactive | Proactive |
| Workflow | Single-step | Multi-step / Iterative |
| Tool | Không / bị động | Chủ động sử dụng |
| Context | Ngắn hạn | Có thể dài hạn |
Xây dựng Agent Server: Đừng "Over-engineer"
Nhiều người nghĩ làm Agent là phải dùng những framework hầm hố như LangChain hay CrewAI ngay lập tức.
Kinh nghiệm của team mình sau vài lần “vỡ mặt”:
Đừng bắt đầu bằng framework.
Hãy bắt đầu bằng việc hiểu Agent thực sự đang làm gì.
Chắc bạn cũng đang dùng ít nhất 1 tool:
- Claude Code
- Copilot
- Windsurf
⚠️ Vấn đề của các Coding Agent hiện tại
Các tool như:
- Claude Code (CLI-based agent cực mạnh)
- Copilot (IDE assistant)
- Windsurf (Agent-native IDE)
👉 Thực chất đều là Agent chạy ở local hoặc trong IDE
Tức là:
- Nó giúp cá nhân dev
- Nhưng không giải quyết được bài toán system/backend
🤯 Và đây là chỗ nhiều team “ngộ” ra
Nếu Agent đã làm được việc như dev…
Tại sao không đem nó lên server?
💡 Ý tưởng: "Server hóa" Agent
Giả sử bạn có một bài toán rất quen:
Dịch một file tài liệu (PDF / DOCX) từ tiếng Anh sang tiếng Việt
Nghe đơn giản đúng không?
❌ Cách tiếp cận cũ (LLM + handmade pipeline)
Thông thường bạn sẽ phải làm một pipeline kiểu:
File → Parse (PDF/DOCX) → Extract text → Chunk → LLM → Merge → Format lại
Chi tiết hơn một chút:
- Dùng thư viện: pdfplumber, docx, unstructured… để bóc tách nội dung
- Split text thành chunk (vì giới hạn token)
- Gọi LLM cho từng chunk
- Merge lại
- Fix format (vỡ layout là chuyện thường 😄)
😵 Vấn đề gặp phải
- Layout vỡ (table, bullet, heading đi hết)
- Context bị mất giữa các chunk
- Phải tự handle retry / error
- Code dài + khó maintain
- Và quan trọng nhất:
Dev đang làm rất nhiều việc… mà đáng ra AI có thể tự làm
✅ Cách tiếp cận mới (Agent + Claude Code)
Thay vì tự build pipeline, bạn có thể:
Giao task trực tiếp cho Agent (Sử dụng các skills của Claude Code)
💬 Một câu nói vui nhưng đúng
Trước đây: “Làm sao để LLM dịch đúng?”
Bây giờ: “Giao việc cho Agent, nó tự lo phần còn lại”
🔥 Tức là bạn đang làm gì?
Bạn đang:
Biến một Coding Agent thành một service
Còn tiếp .... (Hẹn các bạn ở bài sau nhé)
Tạm kết
LLM không sai, nó chỉ bị dùng sai mục đích. Dùng LLM để build system phức tạp giống như dùng printf để build UI vậy – nó chạy được, nhưng là một "technical debt" khổng lồ trong tương lai.
"LLM giúp bạn trả lời câu hỏi. Agent giúp bạn làm xong công việc."
Nếu bạn đang thấy Prompt của mình dài dần, logic code rối dần và chi phí token tăng dần... Khả năng cao là bạn không cần một Prompt tốt hơn, bạn cần một Agent.

All rights reserved
