translate Có sẵn bằng: EN RU
info Dịch bằng AI

Hướng Dẫn & Tự Động Hóa QuotyAI

Hướng Dẫn & Tự Động Hóa

Chỉ dẫn (Instructions) là xương sống trong hành vi của Trợ lý Bán hàng. Chúng vượt xa những đoạn text đơn thuần — mỗi chỉ dẫn có một danh mục quyết định cách thứcthời điểm nó thực thi. Một số chỉ dẫn thêm ngữ cảnh vào bộ não của AI, số khác đăng ký công cụ AI có thể sử dụng, và một số chạy như mã xác định (deterministic code) kích hoạt các hành động trước hoặc sau mỗi tin nhắn của khách hàng.


Vấn Đề Với Chỉ Dẫn Đơn Giản

Hầu hết các nền tảng chatbot cho phép bạn viết một danh sách chỉ dẫn. AI đọc tất cả mỗi lần và cố gắng làm theo. Cách này hiệu quả với các trường hợp đơn giản, nhưng nhanh chóng bộc lộ điểm yếu:

  • “Gửi thực đơn khi ai đó hỏi về giá” — AI có thể gửi, có thể quên, hoặc gửi sai nội dung. Không đáng tin cậy.
  • “Đánh dấu khách hàng là ‘đã thanh toán’ sau khi họ nhận hóa đơn” — AI phải nhớ làm điều này mỗi lần. Rất dễ quên.
  • “Chỉ hiển thị quy tắc giá cuối tuần vào thứ Sáu” — AI bối rối khi các chỉ dẫn mâu thuẫn với nhau.

QuotyAI giải quyết vấn đề này bằng cách gán cho mỗi chỉ dẫn một danh mục quyết định chính xác cách thức hoạt động — như một prompt, một công cụ, một tiền điều kiện, hoặc mã tự động. Bạn chỉ cần viết điều mình muốn bằng ngôn ngữ tự nhiên — hệ thống sẽ xác định danh mục, tạo mã xác định và cho bạn xem thử trước khi đưa vào sử dụng.


Sáu Danh Mục

Mỗi chỉ dẫn bạn viết đều có một danh mục. Danh mục này kiểm soát điều gì xảy ra với chỉ dẫn đó trong thời gian chạy:

Danh mục Nơi Thực Thi Chức Năng
Prompt Nhất Quán Bên trong system prompt của AI Luôn được bao gồm — cung cấp ngữ cảnh cố định cho AI
Prompt Có Điều Kiện Bên trong system prompt của AI Chỉ được bao gồm khi điều kiện đúng
Prompt Nhất Quán + Công Cụ Prompt + LangChain tool đã đăng ký Ngữ cảnh cố định + hàm có thể gọi mà AI sử dụng được
Prompt Có Điều Kiện + Công Cụ Prompt + LangChain tool đã đăng ký Ngữ cảnh + công cụ, nhưng chỉ khi điều kiện đúng
Bộ Định Tuyến Xác Định Trước khi AI xử lý tin nhắn Chạy mã có thể can thiệp, gửi tin nhắn hoặc bỏ qua AI hoàn toàn
Callback Xác Định Sau khi AI phản hồi Chạy mã cập nhật trạng thái, gắn cờ khách hàng hoặc thông báo cho nhóm của bạn

Câu Chuyện Kinh Doanh Thực Tế

Một quán ăn nhỏ ở Thành phố Hồ Chí Minh sử dụng QuotyAI để xử lý đơn hàng qua Facebook và Telegram. Đây là cách họ dùng từng danh mục chỉ dẫn:

Prompt Nhất Quán:

“Phở của chúng tôi có giá 65.000 VND một tô thường, 85.000 VND một tô lớn. Bánh mì có giá 35.000 VND.”

Điều này luôn nằm trong bộ não của AI — khách hàng có thể hỏi bất cứ lúc nào và nhận được câu trả lời chính xác.

Prompt Có Điều Kiện:

“Sau 10 giờ tối, chỉ phục vụ mang về. Ăn tại quán đóng cửa lúc 9:30 tối.”

Hàm điều kiện kiểm tra thời gian hiện tại. Trước 9:30 tối, chỉ dẫn này vô hình với AI. Sau 9:30 tối, nó tự động xuất hiện và AI bắt đầu thông báo với khách hàng về việc chỉ phục vụ mang về.

Bộ Định Tuyến Xác Định:

“Nếu khách hàng nói ‘menu’ hoặc ‘có những món gì’, hãy gửi menu PDF và đừng bắt họ chờ AI trả lời.”

Không cần form, không cần trình xây dựng hành động, không cần dropdown — chỉ cần viết những gì bạn muốn. Tác nhân mã hóa AI đọc chỉ dẫn của bạn, suy luận các hành động phù hợp (gửi tin nhắn, gửi tệp đính kèm, bỏ qua AI, v.v.) và tự động tạo hàm TypeScript. Hàm định tuyến kiểm tra mọi tin nhắn đến. Khi phát hiện yêu cầu menu, nó ngay lập tức gửi tệp đính kèm và bỏ qua AI — khách hàng nhận được menu trong vòng chưa đầy 100ms thay vì chờ AI tạo phản hồi.

Callback Xác Định:

“Khi khách hàng xác nhận đơn hàng đã thanh toán, hãy đánh dấu họ là ‘has_paid_order’ trong trạng thái hội thoại.”

Sau khi AI xử lý đơn hàng thành công và gửi xác nhận, callback được kích hoạt. Nó cập nhật trạng thái hội thoại để lần sau khi khách hàng này nhắn tin, AI biết họ là khách đã thanh toán.

Prompt Nhất Quán + Công Cụ:

“Bạn có thể tra cứu món đặc biệt trong ngày bằng công cụ getDailySpecial. Món đặc biệt thay đổi hàng ngày dựa trên nguyên liệu tươi.”

AI biết về khả năng này từ prompt và có một hàm đã đăng ký để kiểm tra món đặc biệt hôm nay.


Cách Thức Hoạt Động

Quy Trình Tự Động Hóa

Mỗi tin nhắn của khách hàng đi qua một quy trình xác định trước và sau khi AI xử lý:

Khách hàng gửi tin nhắn

┌───────────────────────────────────────┐
│  1. Trích Xuất Thông Tin Đơn Hàng     │
│     Trợ lý trích xuất dữ liệu đơn     │
│     hàng có cấu trúc từ tin nhắn      │
└───────────────────────────────────────┘

┌───────────────────────────────────────┐
│  2. Bộ Định Tuyến Xác Định            │  ← Tự động hóa trước AI
│     Chạy TRƯỚC KHI AI thấy tin nhắn.  │
│     Có thể can thiệp, gửi tệp đính    │
│     kèm, hoặc bỏ qua hoàn toàn.       │
└───────────────────────────────────────┘
        ↓ (nếu không bị can thiệp)
┌───────────────────────────────────────┐
│  3. AI Xử Lý                           │
│     • Prompt nhất quán                │  ← Luôn trong bộ não
│     • Prompt có điều kiện             │  ← Chỉ khi điều kiện đúng
│     • Công cụ đã đăng ký             │  ← AI có thể gọi hàm
└───────────────────────────────────────┘

┌───────────────────────────────────────┐
│  4. Callback Xác Định                 │  ← Tự động hóa sau AI
│     Chạy SAU KHI AI trả lời.          │
│     Cập nhật trạng thái, gắn cờ       │
│     khách hàng, thông báo nhóm.       │
└───────────────────────────────────────┘

Xác Định Nghĩa Là Đảm Bảo

Không giống như AI có thể quên hoặc hiểu sai chỉ dẫn, Bộ Định Tuyến Xác ĐịnhCallback Xác Định chạy dưới dạng mã TypeScript thực tế do tác nhân mã hóa AI của chúng tôi tạo ra. Bạn không cần cấu hình hành động thủ công — chỉ cần viết điều bạn muốn xảy ra. Khi bạn viết:

“Nếu tổng tiền trên 1.000.000 VND, hãy đề xuất giao hàng miễn phí”

Tác nhân mã hóa AI phân tích chỉ dẫn của bạn, suy luận các hành động định tuyến và điều kiện phù hợp, và tạo một hàm TypeScript riêng biệt tại thời điểm xây dựng assistant. Bạn có thể xem trước mã đã tạo trực tiếp trong trình soạn thảo — mở rộng bất kỳ chỉ dẫn định tuyến nào để thấy TypeScript với tô sáng cú pháp, sao chép hoặc tạo lại. Mỗi hàm chạy độc lập — nếu một hàm lỗi, các hàm khác vẫn tiếp tục không bị gián đoạn.

function route(ctx: RouterContext): RouterAction[] {
  const actions: RouterAction[] = [];

  if (ctx.order.totalAmount && ctx.order.totalAmount > 1000000) {
    actions.push({
      type: 'send_message',
      message: 'Đơn hàng của bạn đủ điều kiện được giao hàng miễn phí! 🚚',
    });
  }

  actions.push({ type: 'noop' });
  return actions;
}

RouterContext cung cấp cho mỗi hàm định tuyến mọi thứ cần thiết để đưa ra quyết định thông minh:

Trường Kiểu Mô Tả
ctx.order Record<string, unknown> Tham số đơn hàng có cấu trúc được trích xuất từ hội thoại
ctx.message string Nội dung tin nhắn thô của khách hàng — dùng để phát hiện từ khóa
ctx.state Record<string, unknown> Toàn bộ trạng thái hội thoại (cờ khách hàng, dữ liệu quá khứ)
ctx.business object Thông tin doanh nghiệp: timezone, name, industries, customAttributes — thuộc tính do người dùng định nghĩa áp dụng cho tất cả liên hệ/hội thoại
ctx.contact object (tùy chọn) Thông tin khách hàng: name, email, phone, customAttributes, channelIdentifiers — xây dựng điều kiện dựa trên danh tính khách hàng
ctx.conversation object (tùy chọn) Siêu dữ liệu hội thoại: channel, externalId, lastInboundMessage, lastOutboundMessage — xây dựng logic theo kênh
ctx.now Date Thời gian hiện tại (xác định — cùng giá trị cho tất cả hàm trong một lần chạy)

Mỗi hàm được tạo chạy trong môi trường sandbox — không bao giờ quên, không bao giờ phỏng đoán, và không bao giờ hoang tưởng. Vì ngữ cảnh bao gồm thông tin liên hệ, siêu dữ liệu hội thoại và thuộc tính tùy chỉnh cấp doanh nghiệp, các hàm có thể xây dựng những điều kiện phong phú như “nếu đây là khách hàng VIP từ Telegram”, “nếu tên miền email của khách hàng cho thấy tài khoản doanh nghiệp”, hoặc “nếu cờ allow_discounts của doanh nghiệp được bật”.

Hành Động Định Tuyến

Hàm định tuyến trả về các hành động. Nền tảng sẽ diễn giải chúng:

Hành Động Hiệu Ứng
send_message Gửi tin nhắn tĩnh đến khách hàng ngay lập tức
send_linked_attachments Gửi tất cả tệp đính kèm được liên kết với chỉ dẫn này
update_state Thay đổi giá trị trong trạng thái hội thoại
handover Chuyển tiếp đến nhân viên hỗ trợ kèm lý do
short_circuit Bỏ qua AI hoàn toàn — không tạo phản hồi AI
noop Không làm gì, tiếp tục bình thường

Hành Động Callback

Hàm callback chạy sau khi AI trả lời:

Hành Động Hiệu Ứng
update_state Thay đổi giá trị trong trạng thái hội thoại (ví dụ: đánh dấu đã thanh toán)
notify_agent Gửi thông báo riêng tư đến nhóm của bạn
noop Không làm gì

Tham Khảo Danh Mục

Prompt Nhất Quán

Mục đích: Các chỉ dẫn luôn nằm trong system prompt của AI. Dùng cho thông tin kinh doanh cố định, chính sách và phản hồi tiêu chuẩn.

Khi nào sử dụng:

  • Thực đơn, bảng giá hoặc danh mục dịch vụ của bạn
  • Giờ hoạt động tiêu chuẩn
  • Các câu hỏi thường gặp và câu trả lời
  • Chính sách kinh doanh (hủy, hoàn tiền, v.v.)

Ví dụ:

“Spa của chúng tôi có: Massage Thụy Điển 60 phút — 500.000 VND, massage sâu 90 phút — 750.000 VND, thêm đá nóng — 150.000 VND.”


Prompt Có Điều Kiện

Mục đích: Các chỉ dẫn chỉ xuất hiện trong ngữ cảnh của AI khi điều kiện đúng. Điều kiện là một hàm TypeScript được tạo, đánh giá tại thời gian chạy.

Khi nào sử dụng:

  • Quy tắc dựa trên thời gian (sau giờ làm, cuối tuần, ngày lễ)
  • Quy tắc dựa trên trạng thái khách hàng (khách quay lại, VIP, bị gắn cờ)
  • Quy tắc trạng thái đơn hàng (chỉ sau khi đã chọn món)
  • Khuyến mãi theo mùa và ưu đãi có thời hạn

Bên dưới, một hàm shouldInclude được tạo từ chỉ dẫn của bạn với chữ ký function shouldInclude(ctx: ConditionContext): boolean. ConditionContext cung cấp:

Trường Kiểu Mô Tả
ctx.order Record<string, unknown> Tham số đơn hàng có cấu trúc từ hội thoại
ctx.contact object (tùy chọn) Thông tin khách hàng: name, email, phone, customAttributes
ctx.conversation object (tùy chọn) Siêu dữ liệu hội thoại: channel, externalId, lastInboundMessage
ctx.state Record<string, unknown> (tùy chọn) Ảnh chụp trạng thái hội thoại (cờ khách hàng, dữ liệu quá khứ)
ctx.business object (tùy chọn) Thông tin doanh nghiệp: timezone, name, industries, customAttributes
ctx.now Date Thời gian hiện tại (xác định)

Nếu hàm trả về false, nội dung chỉ dẫn sẽ vô hình với AI.


Prompt Nhất Quán + Công Cụ

Mục đích: Cung cấp cho AI ngữ cảnh cố định VÀ đăng ký một hàm công cụ xác định mà nó có thể gọi. Sử dụng khi AI cần cả kiến thức về một thứ gì đó và khả năng hành động dựa trên nó.

Khi nào sử dụng:

  • Tra cứu dữ liệu động (tồn kho, món đặc biệt trong ngày, tình trạng sẵn có)
  • Thực hiện xác thực (kiểm tra địa chỉ, xác minh mã giảm giá)
  • Tính toán giá trị dẫn xuất (thuế suất, phí vận chuyển)

Công cụ được đăng ký dưới dạng một LangChain function tool với lược đồ JSON đã tạo. AI có thể chọn gọi nó trong suốt cuộc hội thoại.


Prompt Có Điều Kiện + Công Cụ

Mục đích: Tương tự như trên, nhưng cả nội dung prompt và công cụ chỉ khả dụng khi điều kiện đúng.

Khi nào sử dụng:

  • Công cụ chỉ cuối tuần (ví dụ: tra cứu menu brunch)
  • Khả năng chỉ dành cho khách VIP (ví dụ: áp dụng giảm giá thành viên)
  • Công cụ sau đặt hàng (ví dụ: theo dõi trạng thái giao hàng — chỉ khả dụng sau khi đã đặt hàng)

Điều kiện được đánh giá một lần — nếu đúng, cả nội dung prompt VÀ công cụ đều khả dụng cho AI.


Bộ Định Tuyến Xác Định

Mục đích: Chạy dưới dạng mã TypeScript thực tế trước khi tác nhân AI thấy tin nhắn. Có thể can thiệp, gửi tệp đính kèm, cập nhật trạng thái, kích hoạt chuyển giao hoặc bỏ qua AI hoàn toàn.

Khi nào sử dụng:

  • Phản hồi tức thì: “Nếu khách hàng hỏi giờ làm, gửi tệp giờ làm ngay lập tức” — không có độ trễ AI
  • Rào chắn: “Nếu khách hàng nhắc đến tên đối thủ cạnh tranh, chặn và chuyển giao”
  • Tiền xử lý: “Nếu khách hàng nói ‘menu’ bằng bất kỳ ngôn ngữ nào, gửi PDF”
  • Tuân thủ: “Nếu khách hàng ở khu vực bị chặn, gửi tin nhắn xin lỗi và bỏ qua AI”
  • Dựa trên thời gian: “Sau 10 giờ tối, gửi tin nhắn ‘đã đóng cửa’ và bỏ qua AI”
  • Trạng thái khách hàng: “Nếu khách hàng đã có đơn hàng đang chờ, chặn đặt hàng mới”

Tất cả chỉ dẫn định tuyến tạo ra các hàm TypeScript riêng lẻ tại thời điểm xây dựng — một hàm cho mỗi chỉ dẫn. Mỗi hàm nhận một đối tượng RouterContext đầy đủ với tin nhắn thô của khách hàng, dữ liệu đơn hàng có cấu trúc, trạng thái hội thoại, thông tin doanh nghiệp, thông tin liên hệ khách hàng, siêu dữ liệu hội thoại và thời gian hiện tại. Điều này cho phép mỗi quy tắc đánh giá độc lập dựa trên tất cả ngữ cảnh khả dụng.

Cô lập từng chỉ dẫn: Nếu một hàm định tuyến gặp lỗi, các hàm còn lại vẫn tiếp tục chạy. Không một chỉ dẫn lỗi nào có thể phá vỡ tất cả quy tắc định tuyến của bạn.

Cách hoạt động trong quy trình:

  1. Trích xuất dữ liệu đơn hàng có cấu trúc từ tin nhắn khách hàng
  2. Xây dựng RouterContext với tin nhắn thô, dữ liệu đơn hàng, trạng thái hội thoại, thông tin doanh nghiệp, thông tin liên hệ khách hàng, siêu dữ liệu hội thoại và thời gian hiện tại
  3. Chạy từng hàm route(ctx) theo thứ tự — nếu short_circuit được trả về, các hàm còn lại vẫn chạy nhưng AI bị bỏ qua
  4. Xử lý các hành động tích lũy: gửi tin nhắn, gửi tệp đính kèm, cập nhật trạng thái, chuyển giao hoặc bỏ qua AI

Callback Xác Định

Mục đích: Chạy dưới dạng mã TypeScript thực tế sau khi AI đã phản hồi. Dành cho các tác dụng phụ không làm gián đoạn trải nghiệm khách hàng.

Khi nào sử dụng:

  • Theo dõi trạng thái: “Sau khi xác nhận đơn hàng, đặt cờ hasActiveOrder
  • Thông báo: “Sau khi thanh toán thất bại, thông báo cho nhóm”
  • Ghi nhật ký kiểm toán: “Sau khi báo giá được cung cấp, ghi lại vào trạng thái hội thoại”
  • Phân khúc khách hàng: “Sau khi khách hàng đặt đơn thứ 5, gắn cờ họ là VIP”

Mỗi chỉ dẫn callback tạo ra hàm riêng với chữ ký function callback(ctx: CallbackContext): CallbackAction[]. CallbackContext cung cấp:

Trường Kiểu Mô Tả
ctx.order Record<string, unknown> Tham số đơn hàng có cấu trúc từ hội thoại
ctx.aiResponse string Phản hồi do AI tạo vừa được gửi đến khách hàng
ctx.contact object (tùy chọn) Thông tin khách hàng: name, email, phone, customAttributes — đặt điều kiện dựa trên danh tính khách hàng
ctx.conversation object (tùy chọn) Siêu dữ liệu hội thoại: channel, externalId — đặt điều kiện dựa trên kênh hội thoại
ctx.state Record<string, unknown> (tùy chọn) Ảnh chụp trạng thái hội thoại để đọc hoặc cập nhật cờ khách hàng
ctx.business object (tùy chọn) Thông tin doanh nghiệp: timezone, name, industries, customAttributes

Ngoài các hành động tiêu chuẩn, callback có thể ghi vào liên hệ và hội thoại:

Hành Động Hiệu Ứng
set_contact_attribute Đặt thuộc tính do người dùng định nghĩa trên tài liệu liên hệ (được lưu giữ qua nhiều hội thoại)
set_conversation_attribute Đặt thuộc tính do người dùng định nghĩa trên tài liệu hội thoại

Điều này cho phép callback do AI tạo lưu trữ dữ liệu như “đánh dấu khách hàng này là VIP” hoặc “gắn cờ hội thoại này là đã xử lý” bằng cách ghi vào ctx.contact.customAttributes hoặc ctx.conversation.customAttributes.

Callback là bất đồng bộ — khách hàng nhận được phản hồi trong khi callback xử lý ở nền.


Chi Tiết Triển Khai Kỹ Thuật

Tích Hợp Quy Trình Xây Dựng

Trong quá trình xây dựng assistant, các chỉ dẫn trải qua quá trình sinh mã:

Chỉ dẫn từ DB

Builder lấy các chỉ dẫn đang hoạt động

┌────────────────────────────────────────────┐
│  Kiểm Tra Danh Mục                          │
│                                              │
│  CONSISTENT_* → Không sinh mã               │
│                 (chỉ prompt)                 │
│                                              │
│  CONDITIONAL_* → Tạo hàm shouldInclude()   │
│  cho từng chỉ dẫn                           │
│                                              │
│  DETERMINISTIC_ROUTER → Tạo hàm route()    │
│  CHO TỪNG chỉ dẫn — mỗi hàm chạy độc lập   │
│  với RouterContext đầy đủ                    │
│                                              │
│  DETERMINISTIC_CALLBACK → Tạo hàm           │
│  callback() cho từng chỉ dẫn                 │
│                                              │
│  *_PROMPT_AND_TOOL → Tạo hàm công cụ       │
│  + lược đồ JSON cho từng chỉ dẫn            │
└────────────────────────────────────────────┘

Mã được ghi lại vào tài liệu chỉ dẫn (để xem trước)

Mã được lưu trong aiExecutableSource (nguồn chính thức)

Ảnh chụp được đóng băng trong assistant bất biến

Lưu Trữ Mã Đã Tạo

Mã đã tạo được ghi vào hai nơi với mục đích khác nhau:

  • Tài liệu chỉ dẫn (trường generatedCode) — để xem trước tức thì trong trình soạn thảo với tô sáng cú pháp
  • aiExecutableSource của assistant — nguồn chính thức được đóng băng trong các ảnh chụp bất biến và được sử dụng tại thời gian chạy

Bố trí lưu trữ trong aiExecutableSource, khóa theo ID chỉ dẫn:

Danh Mục Lưu Trữ Ví Dụ Khóa
Định tuyến (theo chỉ dẫn) deterministicRouterInstructions[instructionId].code Một mục cho mỗi chỉ dẫn định tuyến — cô lập và độc lập
Callback (theo chỉ dẫn) deterministicCallbacks[instructionId].code Một mục cho mỗi chỉ dẫn callback
Điều kiện (theo chỉ dẫn) conditionFunctions[instructionId].code Một mục cho mỗi chỉ dẫn có điều kiện
Công cụ (theo chỉ dẫn) instructionTools[instructionId] Một mục cho mỗi chỉ dẫn công cụ

Thực Thi Trong Sandbox

Tất cả các hàm TypeScript đã tạo chạy trong cùng môi trường sandbox như công thức định giá:

  • Hàm khởi tạo Function gốc của Bun
  • Không có quyền truy cập hệ thống tệp, không mạng, không biến môi trường
  • Các phương thức console đã được ghi đè để ghi nhật ký kiểm toán
  • Trả về các đối tượng hành động có kiểu mà quy trình diễn giải

Thuộc Tính Tùy Chỉnh Ở Ba Cấp Độ

Cả ba loại ngữ cảnh (RouterContext, CallbackContext, ConditionContext) đều hiển thị thuộc tính tùy chỉnh ở ba cấp độ, cho phép bạn xây dựng điều kiện dựa trên cài đặt toàn doanh nghiệp, danh tính khách hàng hoặc ngữ cảnh hội thoại:

Cấp Độ Đường Truy Cập Phạm Vi Ví Dụ
Doanh nghiệp ctx.business.customAttributes Tất cả liên hệ và hội thoại kế thừa các thuộc tính này allow_discounts: true, max_order_limit: 5000000
Liên hệ ctx.contact.customAttributes Khách hàng cụ thể trên tất cả hội thoại của họ vip_tier: 'gold', preferred_language: 'vi'
Hội thoại ctx.conversation.customAttributes Chỉ hội thoại cụ thể no_ai: true, priority: 'urgent'

Thuộc tính hoàn toàn do người dùng định nghĩa — bạn quyết định khóa và giá trị. Mã do AI tạo đọc trực tiếp chúng:

// Định tuyến — chỉ đề xuất giảm giá nếu cả doanh nghiệp và liên hệ đều cho phép
if (ctx.business.customAttributes?.allow_discounts && ctx.contact.customAttributes?.vip_tier === 'gold') {
  actions.push({ type: 'send_message', message: 'Bạn được giảm giá 10%!' });
}
// Callback — lưu cờ sau khi đơn hàng thành công
if (ctx.order.totalAmount > 1000000) {
  actions.push({ type: 'set_contact_attribute', key: 'high_value', value: true });
}
// Điều kiện — ẩn chỉ dẫn cho các hội thoại bị gắn cờ
if (ctx.conversation.customAttributes?.no_ai) {
  return false;
}

Thực Hành Tốt Nhất

Cho Prompt Nhất Quán

  • Giữ chúng thực tế và chính xác: giá chính xác, giờ chính xác, chính sách chính xác
  • Một khái niệm cho mỗi chỉ dẫn (không gộp các quy tắc không liên quan)
  • Sử dụng cùng ngôn ngữ mà khách hàng của bạn sẽ dùng

Cho Prompt Có Điều Kiện

  • Làm cho điều kiện hiển nhiên trong nội dung chỉ dẫn: “Sau 10 giờ tối…” hiệu quả hơn “Quy tắc đêm khuya”
  • Không lạm dụng điều kiện — AI hoạt động tốt nhất với ngữ cảnh ổn định
  • Kiểm tra điều kiện của bạn bằng cách mô phỏng các kịch bản khác nhau

Cho Bộ Định Tuyến Xác Định

  • Sử dụng cho bất cứ thứ gì nhạy cảm về thời gian — bộ định tuyến chạy trong mili giây, AI mất vài giây
  • Xem trước mã đã tạo trong trình soạn thảo để xác minh AI đã suy luận đúng hành động
  • Nếu mã đã tạo không đúng ý bạn, hãy viết lại chỉ dẫn bằng ngôn ngữ rõ ràng hơn
  • short_circuit rất mạnh: sử dụng khi AI không có gì hữu ích để thêm vào
  • Bộ định tuyến không thể truy cập kiến thức của AI — chúng chỉ làm việc với dữ liệu đơn hàng có cấu trúc

Cho Callback Xác Định

  • Sử dụng cho các thay đổi trạng thái luôn phải xảy ra sau các sự kiện cụ thể
  • Không dùng callback cho các hành động hướng đến khách hàng — khách hàng đã nhận được phản hồi rồi
  • Callback lý tưởng cho việc tuân thủ và dấu vết kiểm toán

Chung

  • Thứ tự chỉ dẫn không quan trọng với bộ định tuyến (chúng được hợp nhất thành một hàm)
  • Với prompt, thứ tự quan trọng — chỉ dẫn sớm hơn xuất hiện cao hơn trong ngữ cảnh của AI
  • Nếu một chỉ dẫn không phù hợp danh mục nào, nó sẽ bị bỏ qua — mỗi chỉ dẫn cần một danh mục hợp lệ