Free-form Procedures: Hướng dẫn cụ thể cho từng nhiệm vụ được viết bằng ngôn ngữ tự nhiên

Free-form procedure (Quy trình dạng tự do) mô tả một tác vụ bằng ngôn ngữ thông thường, tự nhiên. Agent sẽ diễn giải các hướng dẫn và điều chỉnh cách diễn đạt cũng như trình tự thực hiện cho phù hợp với tình huống thực tế. Free-form procedure có thể gọi các công cụ (bao gồm cả công cụ hệ thống như kết thúc cuộc gọi), tra cứu tài liệu trong cơ sở kiến thức và liên kết đến các quy trình khác.

Khi nào nên sử dụng Free-form procedure?

Hãy sử dụng Free-form procedure khi agent cần linh hoạt điều chỉnh cách diễn đạt và trình tự thực hiện tùy theo tình huống, đồng thời bạn muốn soạn thảo nhanh chóng bằng ngôn ngữ thông thường. 

Cấu trúc của một quy trình

Dưới đây là ví dụ về quy trình hoàn tiền trong trình soạn thảo:

Quy trình hoàn tiền
Quy trình hoàn tiền

Một quy trình bao gồm hai phần chính: Điều kiện kích hoạt (trigger) và nội dung. Cả hai phần này đều có thể chứa các tham chiếu nội dòng (inline references) dẫn đến các tài nguyên khác; trong ảnh chụp màn hình phía trên, chúng hiển thị dưới dạng các tag có biểu tượng cờ-lê. Mỗi quy trình cũng có một tên gọi hiển thị trên dashboard.

Tên gọi

Một nhãn ngắn gọn dùng để nhận diện quy trình trên dashboard. Tên gọi này không được gửi đến mô hình ngôn ngữ lớn (LLM), do đó nó không ảnh hưởng đến hành vi của agent.

Điều kiện kích hoạt (Trigger)

Mô tả về thời điểm agent nên sử dụng quy trình này, ví dụ: "Khi người dùng yêu cầu hoàn tiền cho đơn hàng".

Chỉ để trống phần điều kiện kích hoạt khi tạo quy trình con (sub-procedure).

Nội dung

Phần thân của quy trình, được viết bằng định dạng Markdown. Nội dung mô tả những việc agent cần thực hiện: Đặt câu hỏi, tra cứu đơn hàng, gọi công cụ hoặc kết thúc cuộc gọi. Nội dung có thể là một chuỗi các bước được đánh số thứ tự hoặc các hướng dẫn chung cho tình huống đó. Mỗi bước hoặc hướng dẫn có thể là một câu đơn (ví dụ: "Hỏi người dùng về mã số đơn hàng") hoặc một đoạn văn ngắn giải thích việc cần làm và lý do thực hiện.

Sử dụng các bước được đánh số cho những hành động theo trình tự và sử dụng dấu đầu dòng cho các yêu cầu hoặc những mục con trong một bước.

Tham chiếu nội dòng (Inline references)

Các quy trình có thể tham chiếu trực tiếp đến nhiều loại tài nguyên khác nhau ngay trong nội dung:

  • Công cụ (ví dụ: tra cứu đơn hàng, thanh toán qua thẻ, kết thúc cuộc gọi, chuyển cuộc gọi cho nhân viên con người)
  • Tài liệu trong cơ sở kiến thức
  • Các quy trình khác

Hãy sử dụng tham chiếu nội dòng bất cứ khi nào một bước yêu cầu agent phải sử dụng công cụ, tài liệu cơ sở kiến thức hoặc một quy trình khác. Các tham chiếu sẽ tự động đính kèm tài nguyên vào quy trình để agent có thể sử dụng. Việc nhắc đến tài nguyên trong văn bản thông thường (ví dụ: "sử dụng công cụ tính toán tại đây") cũng có tác dụng, nhưng chỉ khi tài nguyên đó đã được đính kèm với agent.

Hãy chèn tham chiếu bằng cách gõ dấu `/` trong phần kích hoạt (trigger) hoặc nội dung, sau đó chọn tài nguyên từ menu xuất hiện. Các tham chiếu sẽ hiển thị dưới dạng thẻ có thể nhấp vào được trong trình soạn thảo. Hãy nhấp vào thẻ để mở tài nguyên tương ứng và xác nhận cấu hình của nó.

Khi soạn thảo nội dung tự do thông qua API, hãy chèn tham chiếu theo cú pháp sau:

[tool id="tool_abc123"]
[kb id="kb_abc123"]
[procedure id="agtprc_abc123"]
[system_tool id="end_call"]
{{customer_id}}

Tham chiếu quy trình nội dòng (inline procedure reference) phải sử dụng một quy trình thuộc cùng agent đó. 

Tham chiếu trong phần kích hoạt cho phép quy trình chạy dựa trên kết quả đầu ra của tài nguyên (ví dụ: khi get_user trả về cấp độ gold). Tham chiếu trong phần nội dung yêu cầu agent kích hoạt hoặc tham khảo tài nguyên tại bước đó.

Menu xuất hiện khi gõ dấu `/` trong trình soạn thảo quy trình
Menu xuất hiện khi gõ dấu `/` trong trình soạn thảo quy trình

Nếu tài nguyên được tham chiếu bị xóa sau đó, hoặc tài khoản của bạn mất quyền truy cập vào tài nguyên đó, thẻ tham chiếu sẽ hiển thị trạng thái lỗi. Huy hiệu Lỗi ở đầu trình soạn thảo sẽ liệt kê các tham chiếu này: Trạng thái "không hợp lệ" (invalid) nếu tài nguyên không còn tồn tại, hoặc "không khả dụng" (unavailable) nếu tài nguyên vẫn tồn tại nhưng tài khoản của bạn không có quyền truy cập. Hãy nhấp vào huy hiệu để xem bước nào bị ảnh hưởng và sửa hoặc xóa tham chiếu đó.

Hộp thoại Error liệt kê các tham chiếu không hợp lệ
Hộp thoại Error liệt kê các tham chiếu không hợp lệ

Quy trình con (Sub-procedures)

Một quy trình con có phần kích hoạt (trigger) để trống. Agent chỉ có thể chạy quy trình này khi được gọi từ một quy trình khác có tham chiếu đến nó.

Hãy sử dụng quy trình con để chia sẻ các bước thực hiện trong cùng một agent và giảm số lượng quy trình hiển thị cùng lúc. Hãy thiết lập điều kiện kích hoạt cho quy trình chính, tham chiếu đến các quy trình con liên quan trong nội dung của nó, và để trống điều kiện kích hoạt của những quy trình con đó.

Một quy trình con dùng để chuyển tiếp có thể chứa các bước chuyển cuộc hội thoại cho nhân viên con người. Hãy tham chiếu quy trình này từ các quy trình hoàn tiền và hủy đơn, đồng thời để trống điều kiện kích hoạt của nó. Agent có thể thực hiện bước chuyển tiếp này như một phần của quy trình chính, nhưng quy trình con sẽ không khả dụng nếu chạy độc lập bên ngoài các quy trình đó.

Nhập dữ liệu từ tài liệu

Bạn có thể khởi tạo quy trình từ một quy trình vận hành tiêu chuẩn (SOP) có sẵn. Hãy chọn From SOP trong menu dấu cộng (+) tại danh sách quy trình, sau đó upload file lên.

Các định dạng được hỗ trợ: PDF, DOCX, TXT, MD, HTML, EPUB. Dung lượng file tối đa là 20 MB.

Hệ thống sẽ phân tích tài liệu, nhận diện tối đa 10 quy trình riêng biệt và tạo bản nháp cho từng quy trình với tên, điều kiện kích hoạt và nội dung được tự động tạo ra. Hãy mở từng bản nháp để chỉnh sửa và hoàn thiện. Nếu tài liệu của bạn chứa nhiều hơn 10 SOP, hãy chia nhỏ thành các file tin riêng biệt trước khi tải lên.

Hộp thoại Upload SOP
Hộp thoại Upload SOP

Quản lý một Free-form procedure

Xây dựng qua dashboard

Mở agent của bạn trong dashboard, sau đó chọn Procedures. Sử dụng nút + để tạo một quy trình tự do. Thêm trình kích hoạt (trigger) và viết các hướng dẫn trong trình soạn thảo nội dung, sau đó xuất bản các thay đổi của agent.

Quản lý qua API

Các Free-form procedure lưu trữ markdown trong content.

Điều kiện tiên quyết

  • ElevenLabs API key được thiết lập trong biến môi trường ELEVENLABS_API_KEY.
  • Các thông số agent_id và branch_id đích. 
  • Gói Python elevenlabs hoặc gói JavaScript @elevenlabs/elevenlabs-js phiên bản 2.60.0 trở lên.

Các bản nháp quy trình được quản lý riêng theo từng người dùng và từng nhánh. Việc xuất bản (publish) sẽ lưu các thay đổi trong quy trình vào một phiên bản agent mới trên nhánh đó. Các bản nháp của người dùng khác sẽ không bị ảnh hưởng.

1. Tạo bản nháp

Python

from elevenlabs import CreateProcedureRequestModel, ElevenLabs

elevenlabs = ElevenLabs()

procedure = elevenlabs.conversational_ai.agents.procedures.create(
    agent_id="agent_7101k5zvyjhmfg983brhmhkd98n6",
    branch_id="agtbranch_0901k4aafjxxfxt93gd841r7tv5t",
    request=CreateProcedureRequestModel(
        name="Refund request",
        type="free_form",
        trigger="When the user asks to refund, return, or get money back for an order",
        content="Ask for the order ID, then look it up with [tool id=\"tool_abc123\"].",
    ),
)

print(procedure.procedure_id)

TypeScript

import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";

const elevenlabs = new ElevenLabsClient();

const procedure = await elevenlabs.conversationalAi.agents.procedures.create(
  "agent_7101k5zvyjhmfg983brhmhkd98n6",
  "agtbranch_0901k4aafjxxfxt93gd841r7tv5t",
  {
    name: "Refund request",
    type: "free_form",
    trigger: "When the user asks to refund, return, or get money back for an order",
    content: "Ask for the order ID, then look it up with [tool id=\"tool_abc123\"].",
  }
);

console.log(procedure.procedureId);

Bash

curl -X POST "https://api.elevenlabs.io/v1/convai/agents/agent_7101k5zvyjhmfg983brhmhkd98n6/branches/agtbranch_0901k4aafjxxfxt93gd841r7tv5t/procedures" \
  -H "xi-api-key: $ELEVENLABS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Refund request",
    "type": "free_form",
    "trigger": "When the user asks to refund, return, or get money back for an order",
    "content": "Ask for the order ID, then look it up with [tool id=\"tool_abc123\"]."
  }'

Phản hồi bao gồm procedure_id mới. Để cập nhật bản nháp, hãy gọi PATCH /procedures/{procedure_id}/draft với các tham số name, content, type và một trigger cụ thể.

Đối với quy trình nhập (entry procedure), hãy sử dụng trigger khác rỗng. Đối với quy trình con (sub-procedure), hãy sử dụng chuỗi rỗng.

2. Xuất bản các thay đổi

Cập nhật agent trên nhánh để xuất bản các bản nháp quy trình tự do của bạn thành một phiên bản mới. Yêu cầu này không cần các trường nội dung; quá trình xuất bản sẽ sử dụng các bản nháp ở trạng thái hiện tại.

Python

from elevenlabs import ElevenLabs

elevenlabs = ElevenLabs()

elevenlabs.conversational_ai.agents.update(
    agent_id="agent_7101k5zvyjhmfg983brhmhkd98n6",
    branch_id="agtbranch_0901k4aafjxxfxt93gd841r7tv5t",
)

TypeScript

import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";

const elevenlabs = new ElevenLabsClient();

await elevenlabs.conversationalAi.agents.update("agent_7101k5zvyjhmfg983brhmhkd98n6", {
  branchId: "agtbranch_0901k4aafjxxfxt93gd841r7tv5t",
});

Bash

curl -X PATCH \
  "https://api.elevenlabs.io/v1/convai/agents/agent_7101k5zvyjhmfg983brhmhkd98n6?branch_id=agtbranch_0901k4aafjxxfxt93gd841r7tv5t" \
  -H "xi-api-key: $ELEVENLABS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

Các phương pháp hay nhất

Agent cần chọn đúng quy trình dựa trên điều kiện kích hoạt (trigger) và thực hiện theo nội dung quy trình đó. Các mô hình có năng lực cao hơn sẽ thực hiện việc này chính xác hơn khi số lượng quy trình tăng lên.

Viết quy trình hiệu quả nghĩa là viết tốt hai phần: Điều kiện kích hoạt để khởi chạy quy trình đúng thời điểm và nội dung để agent thực hiện theo.

Viết điều kiện kích hoạt

Đảm bảo điều kiện kích hoạt cụ thể và tách biệt

Các điều kiện kích hoạt chồng chéo hoặc mơ hồ sẽ khiến quy trình sai lệch được thực thi. Hãy ưu tiên các điều kiện như "Khi người dùng yêu cầu hủy đăng ký" thay vì "Khi người dùng có câu hỏi về tài khoản".

Viết từ góc độ người dùng

Mô tả điều người dùng đang yêu cầu, thay vì mô tả hành động agent cần thực hiện. Các điều kiện kích hoạt được diễn đạt dưới dạng hành động của agent thường kém tin cậy hơn.

Bao quát các cách diễn đạt thực tế của người dùng

Điều kiện kích hoạt quá hẹp có thể bỏ sót các yêu cầu thực tế khi người dùng diễn đạt theo cách khác. Hãy bao gồm các biến thể mà người dùng có thể nói. Ví dụ: "Khi người dùng yêu cầu hoàn tiền, trả hàng hoặc lấy lại tiền cho đơn hàng" sẽ hoạt động hiệu quả hơn so với chỉ dùng "Khi người dùng yêu cầu hoàn tiền".

Viết nội dung

Sử dụng câu mệnh lệnh

Viết các bước dưới dạng chỉ dẫn cho agent: "Tra cứu đơn hàng gần nhất của khách hàng" thay vì "Bạn nên tra cứu đơn hàng gần nhất của khách hàng". Các chỉ dẫn trực tiếp dễ thực hiện hơn so với các gợi ý.

Giải thích lý do tại sao một bước lại quan trọng

Việc giải thích lý do giúp áp dụng quy trình cho cả những trường hợp đặc biệt không được liệt kê cụ thể. Một lời giải thích ngắn gọn như "vì chúng ta cần mã đơn hàng để thực hiện hoàn tiền" sẽ giúp agent xử lý các tình huống nằm ngoài dự kiến ​​của các bước quy trình. Tránh sử dụng các từ viết hoa toàn bộ như "MUST" (BẮT BUỘC) hay các kịch bản cứng nhắc khi chỉ cần một dòng giải thích là đủ.

Tập ​​trung mỗi quy trình vào một nhiệm vụ duy nhất

Nếu một quy trình bắt đầu phân nhánh sang các kết quả không liên quan, hãy chia nhỏ nó thành các quy trình riêng biệt và để agent điều hướng giữa chúng.

Soạn thảo quy trình

Tách các bước chung thành một quy trình riêng

Nếu cùng một nhóm bước xuất hiện trong nhiều quy trình (ví dụ: xác minh danh tính khách hàng, tra cứu đơn hàng, chuyển tiếp cho nhân viên là người thực), hãy tách chúng thành một quy trình chuyên biệt. Sau đó, tham chiếu quy trình này từ bất kỳ quy trình nào cần đến nó thông qua menu slash. Việc duy trì các bước chung tại một nơi duy nhất giúp đảm bảo tính nhất quán cho tất cả các quy trình sử dụng chúng.

Sử dụng các quy trình con cho các hành động mang tính phản hồi

Hãy sử dụng quy trình con cho những hành động mà agent chỉ thực hiện khi có yêu cầu từ một quy trình khác, chẳng hạn như xác minh danh tính hoặc chuyển tiếp xử lý. Việc không sử dụng trình kích hoạt (trigger) giúp tránh xung đột với các quy trình khởi đầu khi cuộc hội thoại mới bắt đầu; đồng thời, việc hạn chế số lượng trình kích hoạt cũng giúp quy trình định tuyến tập trung và hiệu quả hơn.

Sử dụng câu lệnh hệ thống (system prompt) cho các hành vi tổng thể

Các yếu tố như giọng điệu, danh tính, chính sách từ chối và những quy tắc an toàn nên được đưa vào câu lệnh hệ thống. Trong khi đó, các bước thực hiện cụ thể cho từng tác vụ nên được đưa vào những quy trình riêng biệt.

Quản lý phiên bản quy trình gắn liền với agent

Các quy trình là một phần trong cấu hình của agent, do đó chúng sẽ được lưu lại cùng nhau dưới dạng một snapshot khi bạn xuất bản phiên bản agent mới. Để quay lại bộ quy trình trước đó, bạn chỉ cần khôi phục phiên bản agent cũ hơn. 

Khởi tạo dựa trên tài liệu sẵn có

Nếu nhóm của bạn đã có sẵn các quy trình vận hành tiêu chuẩn (SOP), hãy sử dụng công cụ nhập dữ liệu để chuyển đổi chúng thành bản nháp, sau đó tinh chỉnh lại cho phù hợp.

Thứ Sáu, 02/10/2026 15:21
5 ★ 1 👨
Xác thực tài khoản!

Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:

Số điện thoại chưa đúng định dạng!
Số điện thoại này đã được xác thực!
Bạn có thể dùng Sđt này đăng nhập tại đây!
Lỗi gửi SMS, liên hệ Admin
0 Bình luận
Sắp xếp theo