Sẽ mở trong thẻ mới
PDL AIAI Worker — trợ lý AI trực 24/7: trả lời khách, xử lý yêu cầu, báo cáo tự động

Kỹ sư phần mềm thời AITờ 02-01 / 112

Mô hình ngôn ngữ lớn (LLM) hoạt động thế nào: token, ngữ cảnh và ‘ảo giác’

Túi bắt kem đặt từng hạt kem nối tiếp, phía trước là nhiều lối rẽ mờ, ví cho mô hình chọn từng token
Tờ
02-01 / 112
Hạng mục
M02 · Hiểu AI và agent coding
Cấp độ
Cơ bản
Thời gian đọc
21 phút
Giai đoạn công trình
0 · Khám phá
Cập nhật
Bản đồ công trìnhTờ này lắp: Coding agent
Bản đồ công trình Mộc OMSBài này: Coding agent. Đã học: Khách hàng, Kênh bán, Sheet & sổ tay. Chưa tới: PRD & spec, Repo & CI, Kiểm thử, Hosting & tên miền, Giám sát lỗi, Giao diện app, API, Database, Dashboard, báo cáo, Trợ lý AI nhận đơn, Màn hình bếp, Đăng nhập, vai trò, Thanh toán VietQR, Thông báo khách, Nhiều tiệm (MộcOS), Kế toán, hoá đơn.Thi công & hạ tầngDòng đơn hàngNghiệp vụ & dịch vụMở rộng MộcOSPRD & specspecCoding agentagentRepo & CIrepo-ciKiểm thửtestsHosting & tên miềnhostingGiám sát lỗimonitoringKhách hàngcustomerKênh bánchannelsGiao diện appapp-uiAPIapiDatabasedatabaseDashboard, báo cáoreportsSheet & sổ taysheetTrợ lý AI nhận đơnai-assistantMàn hình bếpkitchenĐăng nhập, vai tròauthThanh toán VietQRpaymentsThông báo kháchnotificationsNhiều tiệm (MộcOS)tenantsKế toán, hoá đơnintegrations0 Khám phá1 MVP2 Ra mắt3 Thêm AI4 Mở rộng
Bản đồ công trình Mộc OMSBài này: Coding agent. Đã học: Khách hàng, Kênh bán, Sheet & sổ tay. Chưa tới: PRD & spec, Repo & CI, Kiểm thử, Hosting & tên miền, Giám sát lỗi, Giao diện app, API, Database, Dashboard, báo cáo, Trợ lý AI nhận đơn, Màn hình bếp, Đăng nhập, vai trò, Thanh toán VietQR, Thông báo khách, Nhiều tiệm (MộcOS), Kế toán, hoá đơn.Dòng đơn hàngKhách hàngKênh bánGiao diệnAPIDatabaseBáo cáoNghiệp vụ & dịch vụSheet, sổ tayTrợ lý AIMàn hình bếpĐăng nhậpThanh toánThông báoThi công & hạ tầngPRD & specCoding agentRepo & CIKiểm thửHostingGiám sátMở rộng MộcOSNhiều tiệmKế toán0 Khám phá1234

Bài nàyĐã họcChưa tớiĐã thay thế

Bạn sẽ học được gì

Tiêu chí nghiệm thu

LLM là gì: chiếc bàn phím gợi ý chữ phiên bản khổng lồ

Bạn đã quen với bàn phím điện thoại gợi ý chữ tiếp theo: gõ “Chúc mừng sinh” thì nó gợi ý “nhật”. Bàn phím đó học từ những gì bạn hay gõ. Mô hình ngôn ngữ lớn (Large Language Model, viết tắt LLM) về bản chất làm cùng một việc, nhưng ở quy mô lớn hơn rất nhiều lần: nó học từ một lượng khổng lồ sách, bài viết, tài liệu kỹ thuật và mã nguồn công khai.

Qua quá trình học đó, mô hình không “chép” lại từng câu mà nắm được các quy luật: câu tiếng Việt thường được cấu tạo ra sao, một hàm TypeScript thường trông thế nào, sau câu “lỗi này do thiếu biến môi trường” thường là lời khuyên gì. Khi bạn hỏi, mô hình dùng những quy luật đó để viết tiếp câu trả lời có khả năng cao nhất.

Sau giai đoạn học “đọc mọi thứ” (tiền huấn luyện, pretraining), mô hình còn được tinh chỉnh để biết làm theo hướng dẫn và cư xử như một trợ lý.

Vòng lặp tạo câu trả lời

Mỗi câu trả lời được tạo ra theo một vòng lặp lặp đi lặp lại rất nhanh:

Vuốt ngang để xem hết sơ đồ

Chưa

Rồi

Bạn gửi câu hỏi

Cắt thành token

Mô hình tính xác suất cho token tiếp theo

Chọn một token

Nối token vào văn bản

Đã đủ câu trả lời?

Hiển thị câu trả lời

Vuốt ngang để xem hết sơ đồ

Chưa

Rồi

Bạn gửi câu hỏi

Cắt thành token

Mô hình tính xác suất cho token tiếp theo

Chọn một token

Nối token vào văn bản

Đã đủ câu trả lời?

Hiển thị câu trả lời

Hình 1 Sơ đồ luồng
Đọc sơ đồ dạng chữ
  1. Bạn gửi câu hỏi → Cắt thành token
  2. Cắt thành token → Mô hình tính xác suất cho token tiếp theo
  3. Mô hình tính xác suất cho token tiếp theo → Chọn một token
  4. Chọn một token → Nối token vào văn bản
  5. Nối token vào văn bản → Đã đủ câu trả lời?
  6. Đã đủ câu trả lời? → Mô hình tính xác suất cho token tiếp theo (Chưa)
  7. Đã đủ câu trả lời? → Hiển thị câu trả lời (Rồi)

Điểm then chốt: mô hình viết từng mảnh một, mỗi mảnh dựa trên toàn bộ những gì đứng trước nó (câu hỏi của bạn cộng phần nó đã viết). Nó không lập sẵn toàn bộ câu trả lời trong đầu rồi mới viết ra như con người. Đó là lý do khi bạn yêu cầu “hãy lập kế hoạch trước rồi mới viết code”, chất lượng thường tốt hơn: phần kế hoạch đã viết trở thành nền để các token sau dựa vào.

Token: đơn vị đo mọi thứ

Token là gì

Mô hình không đọc theo chữ cái hay theo từ như chúng ta, mà theo token (mảnh văn bản). Một token có thể là một từ ngắn, một phần của từ dài, một dấu câu, hoặc một khoảng trắng kèm vài ký tự. Ví dụ, câu “Bánh kem dâu size 20cm” có thể bị cắt thành chừng mười mảnh; cách cắt cụ thể phụ thuộc bộ tách token (tokenizer) của từng mô hình.

Code cũng là token. Một dòng const total = subtotal + shippingFee; bị cắt thành các mảnh như const, total, =, subtotal… Một file code dài vài trăm dòng có thể tốn vài nghìn token.

Vì sao token quan trọng với bạn

Token là “đơn vị tiền tệ” của thế giới LLM:

  • Chi phí tính theo token: số token bạn gửi vào (input) và số token mô hình viết ra (output). Bài Giới hạn, rủi ro và chi phí khi làm việc với AI02-08 sẽ hướng dẫn cách ước tính.
  • Giới hạn bộ nhớ tính theo token: mô hình chỉ xử lý được một số token nhất định trong một lần.
  • Tốc độ phụ thuộc token: câu trả lời càng dài, chờ càng lâu.

Cửa sổ ngữ cảnh: chiếc bàn làm việc có kích thước cố định

Hình dung

Hãy tưởng tượng mô hình là một nhân viên rất giỏi nhưng mất trí nhớ sau mỗi cuộc gặp. Mỗi lần bạn hỏi, mọi thứ nó cần biết phải được bày lên một chiếc bàn làm việc: câu hỏi của bạn, lịch sử trò chuyện trước đó, nội dung file bạn đưa, hướng dẫn hệ thống. Chiếc bàn đó gọi là cửa sổ ngữ cảnh (context window). Thứ gì không nằm trên bàn, nó không biết.

Bàn có kích thước cố định, đo bằng token. Tại thời điểm viết (2026), các mô hình phổ biến có cửa sổ ngữ cảnh từ khoảng vài trăm nghìn đến cỡ một triệu token tùy dòng và gói dịch vụ; con số thay đổi liên tục nên hãy kiểm tra trang chính thức của nhà cung cấp.

Ba sự thật dễ bị hiểu lầm

  1. Mô hình không nhớ giữa các phiên. Cảm giác “nó nhớ cuộc trò chuyện” đến từ việc ứng dụng gửi lại toàn bộ lịch sử lên bàn ở mỗi lượt. Mở cuộc trò chuyện mới là bàn trống trơn.
  2. Bàn đầy thì phải dọn. Khi lịch sử quá dài, công cụ sẽ cắt bớt hoặc tóm tắt phần cũ. Thông tin quan trọng bạn nói từ đầu có thể bị rơi mất.
  3. Bàn càng bừa, làm việc càng kém. Nhồi nhiều thứ không liên quan khiến mô hình khó tập trung vào điều quan trọng. Bài Context engineering02-05 sẽ đi sâu vào chuyện này.

Dự đoán xác suất và tính không tất định

Mô hình chọn chữ như thế nào

Ở mỗi bước, mô hình không biết “câu trả lời đúng” mà tính ra một bảng xác suất cho mọi token có thể đứng tiếp. Giả sử câu đang viết là “Trạng thái đơn hàng chuyển sang”, bảng xác suất có thể trông như sau (số liệu minh họa):

Hình chữ ký Đồng hồ đo
  1. đã xác nhận
  2. đang làm
  3. hoàn tất
  4. đã hủy
  5. các lựa chọn khác
  6. Nhiệt độ
Token tiếp theo Xác suất (minh họa)
“đã xác nhận” 38%
“đang làm” 22%
“hoàn tất” 17%
“đã hủy” 9%
các lựa chọn khác 14%

Mô hình sẽ chọn một token theo bảng này. Nếu luôn chọn token có xác suất cao nhất, câu trả lời sẽ ổn định nhưng dễ đơn điệu. Nếu cho phép chọn cả những token xác suất thấp hơn, câu trả lời đa dạng, sáng tạo hơn nhưng dễ “lạc đề”.

Nhiệt độ (temperature)

Nhiệt độ là núm vặn điều chỉnh mức “liều lĩnh” khi chọn token. Nhiệt độ thấp: gần như luôn chọn lựa chọn an toàn nhất, phù hợp với code và trích xuất dữ liệu. Nhiệt độ cao: chọn táo bạo hơn, phù hợp viết slogan, nghĩ tên sản phẩm. Khi dùng coding agent, bạn thường không chỉnh núm này; nhà cung cấp đã đặt sẵn. Khi tự xây tính năng AI trong sản phẩm ở module 12, bạn sẽ gặp lại nó.

Không tất định: cùng câu hỏi, khác câu trả lời

Vì có yếu tố chọn ngẫu nhiên theo xác suất, cùng một prompt chạy hai lần có thể cho hai đoạn code khác nhau. Một lần agent viết hàm tính tiền dùng vòng lặp, lần khác dùng reduce. Một lần nó nhớ xử lý đơn rỗng, lần khác quên.

Hệ quả thực tế cho người làm phần mềm:

  • Không thể kiểm chứng bằng cách “hỏi lại xem nó có nói giống không”. Hai câu trả lời giống nhau vẫn có thể cùng sai.
  • Kiểm chứng phải dựa trên thứ tất định: test tự động, trình biên dịch, kết quả chạy thật. Một bài test chạy 100 lần cho cùng kết quả; AI thì không.
  • Kết quả tốt một lần không đảm bảo lần sau. Quy trình (spec, test, review) mới là thứ tạo ra chất lượng ổn định, không phải “trúng prompt hay”.

Ảo giác: khi AI tự tin nói sai

Vì sao ảo giác xảy ra

Ảo giác (hallucination) là khi mô hình tạo ra thông tin nghe rất thuyết phục nhưng sai hoặc không tồn tại. Nguyên nhân nằm ngay trong cách nó hoạt động: mô hình được tối ưu để viết tiếp văn bản hợp lý, và trong phần lớn văn bản nó đã học, người viết trả lời một cách tự tin. Khi gặp điều nó không chắc, xác suất cao nhất thường vẫn là một câu trả lời tự tin, chứ không phải “tôi không biết”.

Hãy hình dung một nhân viên mới rất muốn làm hài lòng sếp: được hỏi về một quy trình chưa từng thấy, thay vì thừa nhận không biết, cậu ấy ghép từ những gì nghe “na ná” và trình bày rất trôi chảy.

Ảo giác trong lập trình trông như thế nào

Trong code, ảo giác đặc biệt nguy hiểm vì nó trông giống hệt code thật. Các dạng thường gặp:

Dạng ảo giác Ví dụ minh họa Cách lộ ra
Thư viện không tồn tại import { toVND } from "vn-money-utils" (tên do bài viết đặt ra để minh họa) Cài gói báo không tìm thấy, hoặc tệ hơn: có kẻ xấu đã đăng ký đúng tên đó
Hàm/phương thức bịa db.orders.findByPhone(phone) trong Drizzle Trình kiểm tra kiểu (type checker) báo lỗi “không tồn tại”
Tùy chọn cấu hình bịa Thêm khóa cấu hình nghe hợp lý nhưng framework không hỗ trợ Cấu hình bị bỏ qua âm thầm, tính năng không chạy
Trộn phiên bản Dùng cách viết của phiên bản cũ trong dự án dùng phiên bản mới Cảnh báo deprecated, lỗi khi build
Bịa nguồn “Theo tài liệu chính thức, hàm này tự động mã hóa dữ liệu” Mở tài liệu thật thì không có câu đó

Ví dụ cụ thể với stack của Bánh Mộc. Bạn nhờ AI viết hàm tìm khách hàng theo số điện thoại, nó trả về:

TS
// ❌ Ảo giác: Drizzle ORM KHÔNG có phương thức findByPhone tự sinh như thế này
import { db } from "@/db";

export async function findCustomer(phone: string) {
  return db.orders.findByPhone(phone); // sai cả bảng lẫn phương thức
}

Code này đọc lên rất “thuận mắt”, nhưng sai hai chỗ: tìm khách hàng lại truy vấn bảng orders, và phương thức findByPhone không tồn tại. Phiên bản đúng theo cách Drizzle hoạt động:

TS
// ✅ Đúng: dùng select + where với hàm so sánh eq của Drizzle
import { eq } from "drizzle-orm";
import { db } from "@/db";
import { customers } from "@/db/schema";

export async function findCustomerByPhone(phone: string) {
  const rows = await db
    .select()
    .from(customers)
    .where(eq(customers.phone, phone)) // phone là cột UNIQUE
    .limit(1);
  return rows[0] ?? null; // không tìm thấy thì trả về null
}

Tương tự, khi cần định dạng tiền VNĐ, AI có thể gợi ý cài một gói lạ, trong khi JavaScript đã có sẵn công cụ chuẩn:

TS
// Không cần thư viện ngoài: Intl là API có sẵn trong JavaScript
const formatVND = (amount: number) =>
  new Intl.NumberFormat("vi-VN", { style: "currency", currency: "VND" }).format(amount);

formatVND(350000); // "350.000 ₫"

Cách phát hiện ảo giác

Bạn không cần thuộc mọi thư viện để phát hiện ảo giác. Bạn cần những người gác cổng không biết nói dối:

  1. Trình kiểm tra kiểu và trình biên dịch. TypeScript sẽ báo ngay khi gọi một hàm không tồn tại. Đây là một lý do lớn để chuỗi bài chọn TypeScript thay vì JavaScript thuần.
  2. Chạy thật. Chạy lệnh build, chạy test, mở trình duyệt xem. Code bịa thường gãy ngay lần chạy đầu.
  3. Kiểm tra gói trước khi cài. Tra tên gói trên trang npm, xem số lượt tải, ngày cập nhật, kho mã nguồn. Có thể dùng lệnh npm view ten-goi để xem thông tin gói trước khi cài.
  4. Đối chiếu tài liệu chính thức. Khi AI nói “tài liệu viết rằng…”, yêu cầu nó trích nguồn, rồi tự mở trang đó.

Điều thú vị: coding agent (bài tiếp theo) ít bị ảo giác hơn chatbot trong nhiều tình huống, vì nó có thể tự đọc code thật trong dự án và tự chạy lệnh kiểm tra. Khi agent chạy type check và thấy lỗi, nó tự sửa trước khi bạn kịp nhìn thấy. Đó là sức mạnh của việc cho AI công cụ kiểm chứng.

Kiến thức có ngày cắt (knowledge cutoff)

Mô hình “đóng băng” ở một thời điểm

Mô hình học từ dữ liệu được thu thập tới một ngày nhất định, gọi là ngày cắt kiến thức (knowledge cutoff). Sau ngày đó, thế giới vẫn chạy: thư viện ra phiên bản mới, API đổi tên, tính năng bị khai tử. Mô hình không biết những thay đổi đó trừ khi bạn hoặc công cụ đưa thông tin mới vào ngữ cảnh.

Thêm một điểm tinh tế: kể cả trước ngày cắt, phiên bản mới nhất của một thư viện thường có ít ví dụ trên mạng hơn phiên bản cũ đã tồn tại nhiều năm. Vì vậy mô hình có xu hướng “quen tay” với cách viết cũ.

Ví dụ quen thuộc trong hệ sinh thái web

  • Next.js có hai cách tổ chức: Pages Router (cũ) và App Router (mới hơn, chuỗi bài dùng cách này). AI đôi khi trộn hàm đặc trưng của Pages Router như getServerSideProps vào dự án App Router, nơi nó không còn tác dụng.
  • Tailwind CSS từ phiên bản 4 chuyển nhiều cấu hình từ file JavaScript sang khai báo trong CSS. Mô hình quen phiên bản cũ có thể tạo file cấu hình kiểu cũ.
  • Thư viện bạn mới cài hôm qua có thể ra đời sau ngày cắt của mô hình; nó sẽ đoán cách dùng dựa trên những thư viện “na ná”.

Cách bù đắp

  • Khai báo phiên bản rõ ràng trong file hướng dẫn của dự án (bài AGENTS.md, rules và skills02-06), ví dụ “Next.js App Router, Tailwind v4, Drizzle ORM”.
  • Đưa tài liệu vào ngữ cảnh: dán đoạn tài liệu liên quan, hoặc cho agent đọc trang tài liệu chính thức nếu nó có công cụ duyệt web.
  • Cho agent đọc code thật: trong dự án có sẵn, agent có thể đọc package.json để biết phiên bản và bắt chước cách viết đã có trong codebase.
  • Ưu tiên công nghệ phổ biến, ổn định. Công nghệ “nhàm chán” có nhiều dữ liệu huấn luyện, AI viết tốt hơn hẳn. Bài Chọn tech stack04-06 sẽ phân tích kỹ.

Hệ quả thực tế: từ hiểu biết đến thói quen

Gom tất cả lại, mỗi đặc tính của LLM dẫn tới một thói quen làm việc cụ thể:

Đặc tính của LLM Hệ quả Thói quen của bạn
Đoán token tiếp theo, không tra cứu sự thật Trôi chảy nhưng có thể sai Kiểm chứng bằng test, build, chạy thật
Cửa sổ ngữ cảnh có hạn, không nhớ giữa phiên Quên điều đã nói, chất lượng giảm khi đầy Ghi quyết định vào file, mở phiên mới cho việc mới
Không tất định Mỗi lần chạy khác nhau Dựa vào quy trình, không dựa vào “may mắn”
Ảo giác Bịa thư viện, hàm, nguồn Kiểm tra gói, dùng TypeScript, đối chiếu tài liệu
Ngày cắt kiến thức Dùng cách viết cũ Khai báo phiên bản, đưa tài liệu mới vào ngữ cảnh
Viết từng mảnh dựa trên phần trước Lập kế hoạch trước cho kết quả tốt hơn Yêu cầu kế hoạch trước khi code

Bạn không cần biết mô hình có bao nhiêu tham số; bạn cần biết nó yếu ở đâu để thiết kế quy trình bù vào.

Áp dụng vào dự án Bánh Mộc

Nhật ký công trình · Bánh Mộc

BM-261012-015

12.10.2026

  • Chị LanChủ chuỗi
  • HàBán hàng online
Hà đưa câu trả lời tự tin của chatbot, chị Lan chỉ vào sổ đơn đóng và lắc đầu

Chị Lan nhớ lại lần đầu “vibe” một app đặt bánh. Chị hỏi một chatbot: “Viết giúp chị đoạn code tạo mã QR chuyển khoản cho đơn hàng”. Chatbot trả lời ngay, kèm lệnh cài một gói có tên nghe rất chuyên nghiệp. Chị chạy lệnh, máy báo không tìm thấy gói. Chị hỏi lại, chatbot xin lỗi và đưa một tên gói khác, cũng không tồn tại. Lần thứ ba thì cài được một gói có thật, nhưng nhìn kỹ thì gói đó chỉ có vài lượt tải, đăng lên vài tuần trước, không có kho mã nguồn. Hồi đó chị không biết, cứ thế dùng.

Sau khi học bài này, chị Lan đặt ra ba quy tắc cho dự án Mộc OMS và ghi vào sổ tay:

  1. Không cài thư viện mới nếu chưa kiểm tra. Mỗi khi AI đề xuất thêm gói, chị yêu cầu nó giải thích vì sao không dùng được thứ có sẵn, và tự xem thông tin gói trên trang npm.
  2. TypeScript ở chế độ nghiêm ngặt và lệnh type check phải xanh. Bất kỳ hàm bịa nào cũng bị bắt trước khi tới tay Hà và nhân viên tiệm.
  3. Ghi rõ phiên bản công nghệ vào file hướng dẫn cho agent, để AI không trộn Next.js cũ với mới.

Một tình huống khác: Hà hỏi AI “Khách hàng có số điện thoại 0909… đặt bao nhiêu đơn tháng trước?”. Chatbot đưa ra con số 7 rất tự tin, trong khi nó không hề có dữ liệu đơn hàng của Bánh Mộc. Chị Lan giải thích cho Hà: AI chỉ biết những gì nằm trong ngữ cảnh; nếu chưa đưa dữ liệu vào thì mọi con số nó nói về tiệm mình đều là bịa. Bài học này sẽ quay lại ở module 12, khi Bánh Mộc xây trợ lý AI truy vấn được dữ liệu đơn hàng.

Prompt mẫu

Prompt yêu cầu AI tự khai báo mức độ chắc chắn khi đề xuất thư viện:

Giao việc cho agent

Mình cần định dạng số tiền VNĐ trong dự án Next.js + TypeScript.
Trước khi đề xuất cài thư viện mới, hãy:
1. Cho biết có cách nào dùng API có sẵn của JavaScript/TypeScript không.
2. Nếu vẫn cần thư viện, nêu tên gói chính xác, đường dẫn trang npm và kho mã nguồn,
   và nói rõ nếu bạn KHÔNG chắc gói đó tồn tại hoặc còn được bảo trì.
3. Không tự chạy lệnh cài đặt; chờ mình xác nhận.

Prompt chống trộn phiên bản:

Giao việc cho agent

Dự án dùng Next.js App Router (không dùng Pages Router), Tailwind CSS v4, Drizzle ORM.
Hãy đọc package.json để xác nhận phiên bản trước khi viết code.
Nếu cách viết bạn định dùng có thể thuộc phiên bản cũ, hãy cảnh báo và đề xuất cách
kiểm tra trong tài liệu chính thức.

Prompt kiểm tra ngược một đoạn code nghi ngờ:

Giao việc cho agent

Trong đoạn code dưới đây, liệt kê mọi hàm, phương thức, gói được import.
Với mỗi mục, cho biết: nó thuộc thư viện nào, bạn chắc chắn nó tồn tại không (chắc / không chắc),
và cách mình tự kiểm chứng (lệnh nào, trang tài liệu nào).
[dán đoạn code]

Sai lầm thường gặp

  1. Sự cố 01

    Coi câu trả lời trôi chảy là câu trả lời đúng.

    Triệu chứng

    Văn phong tự tin là đặc tính của mô hình, không phải tín hiệu độ chính xác.

    Cách tránh

    Mặc định mọi câu trả lời là “bản nháp cần kiểm chứng” cho tới khi có test, build hoặc tài liệu chính thức xác nhận.

  2. Sự cố 02

    Cài ngay mọi thư viện AI gợi ý.

    Triệu chứng

    Đây là cửa ngõ cho cả lỗi lẫn mã độc.

    Cách tránh

    Kiểm tra tên gói, lượt tải, kho mã nguồn; ưu tiên API có sẵn và thư viện đã có trong dự án.

  3. Sự cố 03

    Nghĩ rằng AI “nhớ” cuộc trò chuyện hôm qua.

    Triệu chứng

    Mở phiên mới là bàn trống; dặn dò hôm qua đã mất.

    Cách tránh

    Ghi quy ước, quyết định vào file trong dự án (file hướng dẫn, spec) để lần nào cũng nạp lại được.

  4. Sự cố 04

    Hỏi AI về dữ liệu riêng của doanh nghiệp mà không đưa dữ liệu vào.

    Triệu chứng

    Mô hình sẽ bịa con số nghe hợp lý.

    Cách tránh

    Chỉ hỏi về dữ liệu bạn đã cung cấp trong ngữ cảnh, hoặc dùng công cụ cho phép AI truy vấn dữ liệu thật.

Checklist

Phiếu nghiệm thu

Bài tập thực hành

  1. Bài 1

    Cơ bản

    Săn ảo giác

    Hỏi một chatbot bất kỳ: “Viết hàm TypeScript dùng Drizzle ORM để lấy 10 đơn hàng mới nhất của một khách hàng theo số điện thoại”. Đọc kết quả và liệt kê mọi gói, hàm được dùng. Tra tài liệu chính thức của Drizzle để đánh dấu cái nào có thật.

    Kết quả mong đợi

    Một danh sách có đánh dấu “có thật / không chắc / bịa”. Nhiều khả năng bạn thấy phần lớn đúng, nhưng có thể có một vài chi tiết sai như tên hàm hoặc cách nối bảng.

  2. Bài 2

    Cơ bản

    Thử tính không tất định

    Gửi cùng một prompt “Viết hàm tính tổng tiền đơn bánh gồm tiền hàng, phí giao, trừ tiền cọc” ba lần trong ba phiên mới. So sánh ba kết quả: cách đặt tên, cách xử lý tiền cọc lớn hơn tổng, cách xử lý số âm.

    Kết quả mong đợi

    Ba phiên bản khác nhau ít nhiều; ít nhất một phiên bản bỏ sót một trường hợp biên. Từ đó bạn thấy vì sao cần tiêu chí kiểm chứng rõ trong prompt (bài 02-04).

  3. Bài 3

    Nâng cao

    Thử ngày cắt kiến thức

    Chọn một thư viện bạn biết vừa ra phiên bản lớn gần đây. Hỏi AI cách cấu hình nó mà không nói phiên bản, sau đó hỏi lại kèm đoạn tài liệu mới nhất bạn dán vào.

    Kết quả mong đợi

    Lần đầu có thể ra cách viết cũ; lần hai bám đúng tài liệu bạn cung cấp. Ghi lại nhận xét: ngữ cảnh bạn đưa vào thay đổi kết quả mạnh đến mức nào.

Thuật ngữ trong bài

LLM (Large Language Model)
Mô hình ngôn ngữ lớn, học từ lượng văn bản khổng lồ để tạo văn bản và code
Token
Mảnh văn bản nhỏ mà mô hình đọc và viết; đơn vị tính chi phí và giới hạn
Cửa sổ ngữ cảnh (context window)
Lượng token tối đa mô hình “nhìn thấy” trong một lần xử lý
Nhiệt độ (temperature)
Núm điều chỉnh độ ngẫu nhiên khi chọn token tiếp theo
Không tất định (non-deterministic)
Cùng đầu vào có thể cho kết quả khác nhau
Ảo giác (hallucination)
Thông tin sai hoặc bịa nhưng được trình bày tự tin
Ngày cắt kiến thức (knowledge cutoff)
Thời điểm dữ liệu huấn luyện dừng lại
Tiền huấn luyện (pretraining)
Giai đoạn mô hình học từ dữ liệu lớn trước khi được tinh chỉnh
Type checker
Công cụ kiểm tra kiểu dữ liệu, bắt lỗi gọi hàm không tồn tại trước khi chạy
Slopsquatting
Kẻ xấu đăng ký tên gói mà AI hay bịa để phát tán mã độc

Đọc thêm

Nghiệm thu tờ 02-01

Đọc xong và tự kiểm theo phiếu nghiệm thu, rồi đánh dấu tờ này.

Tác giả
Phú Digital
Đội ngũ PDL Digital — triển khai website, giải pháp AI và digital marketing cho doanh nghiệp.
Tư vấn 1:1

Muốn dựng phần mềm riêng cho doanh nghiệp của bạn?

Kỹ sư PDL cùng bạn chọn bước đầu tiên phù hợp — phản hồi trong giờ làm việc (T2–T7, 8h–18h).

<script src="https://cdn.jsdelivr.net/npm/page-flip/dist/js/page-flip.browser.js"></script>

<div id="container-flipbook" style="display:flex; justify-content:center;">
    <div id="my-flipbook">
       <div class="page"> <img src="https://pdl.vn/wp-content/uploads/2025/05/AI-Google-Search.jpg" /> </div>
       <div class="page"> <img src="https://pdl.vn/wp-content/uploads/2025/05/wearable-tech-advertising.jpg" /> </div>
       <div class="page"> <img src="https://pdl.vn/wp-content/uploads/2025/05/multimodal-embeddings-digital-marketing.jpg" /> </div>
    </div>
</div>
#my-flipbook {
    box-shadow: 0 0 20px rgba(0,0,0,0.2);
    margin: 20px auto;
    background-color: #f0f0f0;
}

.page {
    background-color: white;
    overflow: hidden;
}

.page img {
    width: 100%;
    height: 100%;
    object-fit: cover; /* Giúp ảnh vừa vặn trang sách */
}
// Đảm bảo thư viện đã sẵn sàng
function initFlipbook() {
    const el = document.getElementById("my-flipbook");
    if (!el || !window.St) return; // Nếu chưa thấy thư viện St thì thoát

    const pageFlip = new St.PageFlip(el, {
        width: 550,
        height: 733,
        size: "stretch",
        minWidth: 315,
        maxWidth: 1000,
        minHeight: 420,
        maxHeight: 1350,
        showCover: true,
        maxShadowOpacity: 0.5,
    });

    pageFlip.loadFromHTML(document.querySelectorAll(".page"));
}

// Chạy khởi tạo
if (document.readyState === 'complete') {
    initFlipbook();
} else {
    window.addEventListener('load', initFlipbook);
}
PDL · Tư vấn 1:1

Nhận tư vấn
miễn phí

Để lại thông tin, chuyên viên PDL sẽ liên hệ để hiểu nhu cầu và đề xuất giải pháp phù hợp ngân sách của bạn.

  • Phân tích nhanh hiện trạng website, quảng cáo, kênh bán hàng
  • Đề xuất lộ trình & báo giá minh bạch, rõ từng hạng mục
  • Không ràng buộc: nghe tư vấn xong mới quyết định
Giờ làm việc T2–T7 · 08:00–18:00

Chỉ mất khoảng 30 giây

Bạn cần tư vấn về

🔒 Thông tin được bảo mật, chỉ dùng để PDL liên hệ tư vấn.