Trang 2 Đi sâu vào một nhánh: tự dựng cho fanpage

Hệ thống tự trả lời bình luận cho Facebook Fanpage

Có người bình luận dưới bài của trang. Vài giây sau trang trả lời họ, đúng nội dung bài, đúng giọng của mình. Trang này nói dựng cái đó gồm những giai đoạn nào và điều gì bắt buộc phải có, để bạn giao được việc cho agent và kiểm được nó làm đủ hay chưa.

📍

Bạn đang ở đâu. Đây là ca cụ thể của nhánh tự dựng hệ thống riêng. Còn chưa chắc mình có cần tự dựng hay không thì đọc trang 1 trước, trang đó bàn chuyện chọn nền tảng và chọn công cụ.

🔤

Mỗi khái niệm đều kèm từ khóa gốc tiếng Anh ngay tại chỗ, cuối trang có sổ tay thuật ngữ. Ẩn dụ giúp hiểu ngay, nhưng lúc làm thật và lúc trao đổi với agent thì hiện ra toàn chữ gốc.

Bức tranh lớn

Hệ thống này chỉ có ba mảnh

Nghe thì phức tạp, nhưng bóc ra chỉ có ba mảnh nối vòng với nhau. Dựng hệ thống tức là dựng đủ ba mảnh này rồi bắc đường cho chúng nói chuyện được với nhau. Mọi giai đoạn phía dưới đều là đang lắp một trong ba mảnh đó. Nhớ ba mảnh này thì lát nữa đổi công cụ bạn vẫn biết mình đang thay cái gì.

📣

Nền tảng

Nơi bình luận sinh ra, và cũng là nơi câu trả lời phải quay về. Ở đây là Facebook.

⚙️

Bộ não

Nơi nhận bình luận, hiểu nó, soạn câu trả lời và quyết xem có được đăng hay không.

🙋

Người

Chính mình. Không đứng ngoài, mà là một mắt xích có thật trong hệ thống.

01 Giai đoạn một

Xin phép nền tảng và lấy chìa

Nền tảng nào cũng có một cửa dành riêng cho máy móc gọi vào (API), và cửa đó khóa. Muốn qua thì phải đăng ký một ứng dụng (app), xin đúng những quyền mình cần (permission, còn gọi là scope), rồi cầm về một chuỗi ký tự đóng vai cái chìa (access token).

app access token

Chìa của ứng dụng

Dùng để nhận tin báo từ nền tảng. Nó chứng minh phần mềm đang hỏi chuyện đúng là ứng dụng bạn đã đăng ký. Chìa này ghép từ mã ứng dụng và mật khẩu riêng của ứng dụng (app secret), nên lộ ra là người khác giả danh được bạn.

🔓 Mở ổ khóa: nhận bình luận về
page access token

Chìa của trang

Dùng để đọc nội dung bài và đăng câu trả lời. Nó chứng minh bạn có quyền thay mặt trang đó lên tiếng. Chìa này lấy qua chìa cá nhân của bạn (user access token) rồi mới đổi sang chìa của trang.

🔓 Mở ổ khóa: đọc bài và trả lời
🔑

Hai việc khác nhau thì cần hai chìa khác nhau. Cầm nhầm chìa là hệ thống nghe được mà không nói được, hoặc ngược lại. Tệ hơn nữa, nó thường không báo lỗi rõ ràng mà chỉ đơn giản là không có gì xảy ra.

Chìa có hạn dùng

Chìa lấy kiểu mặc định thường hết hạn sau một thời gian (token expiry), và hết hạn thì hệ thống ngừng chạy không kêu tiếng nào. Hỏi ngay từ đầu xem có loại dài hạn không (long-lived token), rồi ghi vào lịch ngày phải thay.

📌

Cấp quyền chưa phải là xong

Nhiều nền tảng còn một bước riêng để nối ứng dụng vào đúng tài khoản mình muốn theo dõi (subscribe). Thiếu bước đó thì mọi thứ nhìn như đã xong mà không có gì chạy về.

🚦

Chế độ thử và chế độ thật

Ứng dụng còn ở chế độ đang phát triển (development mode) thì nền tảng thường chỉ gửi tin thử cho bạn bấm tay, không gửi dữ liệu thật. Phải chuyển sang live mode. Rất dễ tưởng mình làm sai trong khi chỉ là chưa bật đúng chế độ.

02 Giai đoạn hai

Bắc đường cho tin tự chạy về

Có chìa rồi, giờ tới câu hỏi: làm sao mình biết vừa có người bình luận? Có hai cách, và chọn sai cách thì hệ thống vừa chậm vừa tốn.

🚶
POLLING

Cứ vài phút ra ngó cửa

Hệ thống tự hỏi nền tảng liên tục: có gì mới không, có gì mới không. Đa số lần hỏi là hỏi thừa.

  • Trả lời chậm, phải chờ tới lượt ngó tiếp theo
  • Tốn tài nguyên cho hàng trăm lần hỏi vô ích
  • Ngó thưa thì chậm, ngó dày thì bị nền tảng chặn
🔔
WEBHOOK

Gắn chuông để nhà báo mình

Mình để lại cho nền tảng một địa chỉ (callback URL). Có bình luận mới, chính nền tảng chủ động gọi vào địa chỉ đó và đưa luôn nội dung (payload).

  • Về gần như tức thì, tính bằng giây
  • Không có tin thì hệ thống nằm im, không tốn gì
  • Lần đầu nối, nền tảng gọi thử một phát để chắc đúng địa chỉ của bạn (verify token)
🔔

Đừng đi hỏi, hãy để nó gọi mình. Cách này dùng lại được ở mọi nền tảng, không riêng Facebook. Chỗ nào không có chuông thì mới đành quay lại cách đi ngó cửa, và đó cũng là một tiêu chí để chọn nền tảng làm trước.

03 Giai đoạn ba

Bảy điều hệ thống nào cũng phải có

Agent của bạn có thể lắp bộ não theo cách khác, thêm bớt bước, đổi thứ tự, đổi công cụ. Đó là chuyện bình thường. Nhưng bảy điều dưới đây thì thiếu cái nào hỏng đúng kiểu đó, nên đây chính là danh sách bạn giao cho agent và bắt nó chứng minh đã làm đủ.

📄

Có ngữ cảnh trước khi trả lời context

Đọc chính bài mà người ta đang bình luận ở dưới. Thiếu thì một câu như "cái này làm sao dùng" trở nên vô nghĩa, AI buộc phải đoán, mà đoán là bắt đầu bịa.

🪞

Không nghe tiếng của chính mình loop guard

Câu hệ thống vừa đăng cũng là một bình luận mới, chuông sẽ reo lần nữa cho chính nó. Thiếu thì nó trả lời chính nó, lặp vô tận.

📒

Không làm hai lần một việc idempotency

Nền tảng có thể gửi lại cùng một tin nhiều lần. Thiếu thì một người nhận mấy câu trả lời giống nhau.

🏷️

Phân loại trước khi viết classification confidence

Dán nhãn cho bình luận và bắt AI tự khai mức chắc chắn của nó. Bộ nhãn và giọng văn bạn muốn đều nằm trong lời dặn viết sẵn cho AI (system prompt). Thiếu thì mọi câu bị đối xử như nhau, không có căn cứ nào để quyết câu nào máy tự trả, câu nào phải gọi người.

🧪

Kiểm bằng luật cứng trước khi phát guardrail

Một lớp kiểm viết bằng code, không dùng AI, nên cho kết quả giống nhau mọi lần chạy. Thiếu thì không còn gì chặn được một bản nháp lỗi. Nhờ AI đi kiểm AI thì cái kiểm cũng có ngày hứng lên nói khác.

🙋

Có đường thoát về người human in the loop

Cái gì không đủ điều kiện đi thẳng thì rẽ về người, không im lặng vứt đi. Thiếu thì hệ thống buộc phải chọn giữa liều đăng và bỏ rơi người bình luận.

🔎

Kiểm lại sau khi phát verification

Đăng xong đọc lại xem có thật lên không, hỏng thì phải kêu. Thiếu thì hệ thống hỏng trong im lặng, mà đó là kiểu hỏng tốn kém nhất.

Giao việc cho agent thế nào

Đưa yêu cầu, đừng đưa bản vẽ

Bạn không cần biết agent sẽ chia thành mấy bước hay đặt tên gì. Việc của bạn là ra yêu cầu rồi kiểm lại, và đây là ba câu đáng hỏi nhất:

  • Bảy điều trên, chỉ cho tôi mỗi điều đang nằm ở chỗ nào trong hệ thống bạn vừa dựng.
  • Nếu nền tảng gửi lại cùng một bình luận hai lần thì chuyện gì xảy ra?
  • Nếu chìa hết hạn giữa đêm thì tôi biết bằng cách nào?
🔗

Thứ tự cũng là một phần của thiết kế: lọc và chống trùng đứng trước cho khỏi tốn công, ngữ cảnh phải có trước khi viết, và lớp kiểm luôn đứng cuối, sát ngay trước lúc phát ra.

04 Giai đoạn bốn

Chừa cửa cho người

Bản nháp đã có, đã qua lớp kiểm. Giờ mới tới câu hỏi thật: câu này để máy đăng thẳng, hay đưa mình xem đã?

Bản nháp đã sẵn sàng
Làn máy đi thẳng

Máy tự đăng

Chỉ dành cho nhóm nhẹ và chắc, kiểu lời khen hoặc câu hỏi đã có sẵn câu trả lời trong bài. Đăng xong ghi lại vào sổ.

nhãn ít rủi roAI rất chắcqua lớp kiểmchưa chạm trần
Làn rẽ về người

Gửi mình duyệt

Câu đụng tới tiền bạc hay cam kết, câu tiêu cực, câu AI không chắc, hoặc bản nháp bị lớp kiểm chặn. Đẩy về một kênh mình chắc chắn sẽ thấy, kèm vài nút bấm nhanh.

nhóm nhạy cảmAI phân vânbị lớp kiểm chặnquá nhiều trong giờ
🚫

Chặn không có nghĩa là vứt

Mọi câu bị chặn đều rẽ về người, không câu nào biến mất. Hệ thống ngả về phía làm phiền mình một chút, còn hơn im lặng bỏ rơi người bình luận.

Hàng đợi phải biết kêu

Bản nháp nằm chờ trong hàng đợi duyệt (approval queue) quá lâu mà chưa ai bấm thì hệ thống phải nhắc lại. Không có cái nhắc này thì hàng đợi cứ âm thầm dài ra cho tới lúc trả lời đã quá muộn.

📒

Sổ ghi là trí nhớ

Hệ thống chạy theo từng lượt, xong lượt là quên sạch (stateless). Muốn nó nhớ được cái gì đã trả lời thì phải có chỗ ghi lại bên ngoài (state), thường là một bảng dữ liệu.

🙋

Người không đứng ngoài hệ thống, người là một mắt xích trong đó. Thiết kế đúng là chừa sẵn chỗ cho mình bước vào, chứ không phải chọn giữa máy làm hết và mình làm hết.

05 Giai đoạn năm

Đưa vào chạy thật, nới van từ từ

Lắp xong đừng bật hết công suất ngay. Cách an toàn là mở van theo nấc, mỗi nấc chạy đủ lâu để tin được rồi mới nới tiếp.

1

Chạy khan, duyệt hết

Máy chỉ soạn nháp, không câu nào tự đăng (dry run). Giai đoạn này để xem AI phân loại có đúng không và giọng văn đã ra chất mình chưa.

2

Nới dần cho nhóm nhẹ

Khi bản nháp đã ổn định, cho riêng nhóm ít rủi ro nhất đi thẳng (staged rollout). Nhóm nhạy cảm vẫn giữ nguyên đường duyệt tay.

3

Đặt trần và giữ nút tắt

Giới hạn số câu máy được tự đăng trong một khoảng thời gian (rate limit), và luôn có sẵn một nút tắt toàn bộ (kill switch) để một trục trặc không kịp lan ra cả trang.

🎚️

Tự động hóa là cái van vặn dần, không phải cái công tắc bật tắt. Ai bật thẳng từ số không lên hết cỡ thì lỗi đầu tiên sẽ xảy ra ngay trước mặt người đọc.

+ Một hướng khác

Thay bộ não bằng Cloudflare Worker

Nhớ lại ba mảnh ở đầu trang. Nền tảng và người thì không đổi, chỉ mảnh giữa là thay được. Thay vì dựng luồng trên n8n, bạn viết một đoạn code chạy thẳng trên hạ tầng Cloudflare rồi cho chuông reo vào đó.

🧩
n8n

Xưởng lắp nhìn thấy được

Luồng chạy hiện thành sơ đồ trước mắt, mỗi mắt xích là một khối kéo thả. Chạy sai thì mở ra xem từng bước nhận gì trả gì.

  • Hợp khi cần sửa nhanh và sửa thường xuyên
  • Hợp khi phải nối nhiều dịch vụ có sẵn
  • Hợp khi muốn cho người khác xem và hiểu
  • Đổi lại phải nuôi một chỗ cho n8n chạy
Cloudflare Worker

Một đoạn code, không nuôi máy chủ

Code nằm sẵn trên hạ tầng Cloudflare, có tin gọi vào thì chạy, xong thì thôi, không phải nuôi máy chủ nào (serverless). Cần trí nhớ thì dùng kho lưu đi kèm của họ thay cho cuốn sổ (KV cho dữ liệu đơn giản, D1 khi cần bảng).

  • Hợp khi lượng bình luận lớn, cần nhẹ và rẻ
  • Hợp khi luồng đã chốt, ít phải sửa
  • Hợp khi muốn gói gọn thành một thứ mang đi được
  • Đổi lại không còn sơ đồ để nhìn, lỗi phải dò qua nhật ký chạy (log)
⚖️

Chọn theo việc bạn sắp làm nhiều nhất. Còn đang thử và sẽ sửa liên tục thì ở lại n8n cho dễ nhìn. Đã chạy ổn định và muốn nhẹ đi thì chuyển bộ não sang Worker, phần nền tảng và phần người vẫn y nguyên, bảy điều bắt buộc cũng vẫn phải đủ.

! Lưu ý

Ba chỗ dễ vấp

Ba cái bẫy này không nằm ở một giai đoạn nào riêng, mà rình sẵn ở cả hệ thống. Biết trước thì đỡ mất một buổi mò.

🔁

Máy tự nói với chính mình feedback loop

Bất kỳ hệ thống nào vừa nghe vừa nói ở cùng một chỗ đều có nguy cơ này. Câu nó vừa phát ra lại chính là tin mới cho nó nghe. Luôn hỏi trước: cái vừa nhận có phải tiếng của chính mình không.

🎭

Lớp kiểm không bắt được chuyện bịa hallucination

Lớp kiểm bằng code chỉ chặn được cái đo được: rỗng, quá dài, có link, câu cụt. Cái nó không đo được là một câu trôi chảy, đúng giọng, mà sai sự thật, thường là AI thêm vào một chi tiết nghe rất hợp lý nhưng nguồn không hề có. Vì vậy nhóm nào sai mà tốn uy tín thì phải có người đọc.

🔇

Hỏng trong im lặng silent failure

Kiểu hỏng tệ nhất không phải báo lỗi đỏ, mà là hệ thống ngừng chạy êm ru trong khi mình tưởng nó vẫn làm việc. Chìa hết hạn là ví dụ điển hình. Cách chữa nằm ở điều thứ bảy: phát xong phải kiểm lại, và hỏng thì phải kêu ra một chỗ mình thấy (alerting).

📖 Sổ tay

Mười sáu chữ đáng nhớ

Ẩn dụ giúp bạn hiểu ngay, nhưng lúc làm thật và lúc trao đổi với agent thì hiện ra toàn chữ này. Đọc lướt một lượt, gặp lại là nhận ra.

API

Cửa riêng để phần mềm gọi vào một dịch vụ, thay cho việc con người ngồi bấm nút.

app

Hồ sơ ứng dụng bạn đăng ký với nền tảng. Mọi quyền và mọi chìa đều gắn vào nó.

permission / scope

Từng quyền lẻ bạn xin. Quyền đọc bình luận khác quyền trả lời bình luận, phải xin riêng.

access token

Tên gọi chung của cái chìa: một chuỗi ký tự gửi kèm mỗi lần gọi để chứng minh mình được phép.

app secret

Mật khẩu riêng của ứng dụng. Lộ ra là người khác giả danh được ứng dụng của bạn, đừng bao giờ dán vào chỗ công khai.

app access token

Chìa đại diện cho ứng dụng. Dùng ở khâu nhận tin báo về.

page access token

Chìa đại diện cho trang. Dùng ở khâu đọc bài và đăng câu trả lời.

webhook

Cái chuông. Một địa chỉ bạn để lại để nền tảng tự gọi vào khi có việc.

polling

Cách ngược lại với chuông: tự hỏi nền tảng liên tục xem có gì mới không.

payload

Gói dữ liệu nền tảng gửi kèm khi gọi chuông. Thường lồng nhiều tầng, phải bóc mới lấy được thứ cần.

system prompt

Lời dặn viết sẵn cho AI: vai của nó, giọng văn, và những điều cấm.

idempotency

Làm lại bao nhiêu lần vẫn ra một kết quả, không nhân đôi. Đây là cái chặn trả lời trùng.

guardrail

Lớp chặn bằng luật cứng đặt trước lúc phát ra. Viết bằng code nên chạy lần nào cũng như nhau.

human in the loop

Có người thật đứng trong luồng để duyệt, thay vì để máy quyết hết.

rate limit

Trần số lần được làm trong một khoảng thời gian. Vừa là thứ nền tảng áp lên bạn, vừa là thứ bạn tự áp cho mình.

hallucination

AI nói ra thứ nghe rất hợp lý nhưng không có thật. Lớp kiểm bằng code không bắt được loại này.

Mang về

Công cụ thì thay được, bảy điều bắt buộc thì không

Ba mảnh để định vị, bảy điều để kiểm, và một bộ từ khóa để sau này đọc tài liệu nào cũng nối được vào. Có đủ ba thứ đó thì bạn giao việc cho agent được, và quan trọng hơn, bạn kiểm được nó làm đúng hay chưa. Đổi sang TikTok hay YouTube thì ba mảnh vẫn thế, bảy điều vẫn thế, chỉ cái chìa và cái chuông là khác.

Ba mảnh: nền tảng, bộ não, người Hai việc thì hai chìa Để nó gọi mình Ngữ cảnh trước, viết sau Lớp kiểm đứng cuối Chặn thì rẽ về người Van vặn dần