0

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

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí