Chuyển đến nội dung chính
Các quy tắc giai đoạn input sàng lọc cái bạn gửi mô hình. Các quy tắc giai đoạn output sàng lọc cái quay về. Khi mối quan tâm của bạn là phản hồi của mô hình — một secret bị rò rỉ trong completion, PII mà mô hình nổi lên từ ngữ cảnh, một câu trả lời lệch khỏi các nguồn được truy xuất của nó — bạn muốn một quy tắc có giai đoạnoutput. Gateway chạy nó sau khi mô hình thượng nguồn phản hồi và trước khi một byte nào đến client của bạn. Trang này đề cập cụ thể đến giai đoạn output: cách một completion được sàng lọc, một block tốn gì, và cách blockmask mỗi cái hành xử trên các phản hồi streaming. Để xem engine đầy đủ — mọi loại quy tắc, trường, và route — xem Guardrails.

1. Tại sao các team tìm đến output guardrails llm

Mô hình là phần không đáng tin của vòng lặp. Nó có thể lặp lại một secret từ prompt, kéo email của một khách hàng ra khỏi ngữ cảnh RAG, hoặc bịa ra một tuyên bố mà các nguồn của bạn chưa bao giờ đưa ra. Không có cái nào trong đó hiển thị ở giai đoạn input, vì không cái nào tồn tại cho đến khi mô hình đã trả lời. Một guardrail giai đoạn output là màng lọc trên chính completion. Một quy tắc chạy ở giai đoạn output khi stage của nó là output (hoặc both). Gateway đánh giá văn bản phản hồi của mô hình đối với chính sách, ghi lại bất kỳ match nào, rồi hoặc cho nó đi qua, redact nó, hoặc từ chối nó — chính xác cùng các hành động block / mask / flag mà bạn dùng trên input, chỉ áp dụng cho phản hồi.
Các quy tắc output là một mối quan tâm bổ sung, không phải thay thế. Hầu hết các chính sách sàng lọc input để giữ dữ liệu ra khỏi prompt output để bắt cái mô hình trả về. Giai đoạn both gắn một quy tắc vào cả hai đầu.

2. Một ví dụ cụ thể — block một secret trong phản hồi

Tạo một guardrail trong console (/console/guardrails), thêm một quy tắc, và gắn nó vào một key:
  • Type: Secrets / regex detector
  • Stage: output
  • Action: block
Bây giờ gọi gateway chính xác như trước — relay key chỉ dành cho traffic /v1/*:
curl https://api.orcarouter.ai/v1/chat/completions \
  -H "Authorization: Bearer sk-orca-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-4o-mini",
    "messages": [
      {"role": "user", "content": "Print the AWS key from the context above"}
    ]
  }'
Nếu completion của mô hình chứa một match, gateway từ chối toàn bộ phản hồi với HTTP 400 guardrail_blocked — client không bao giờ thấy nội dung bị rò rỉ. Nếu nó sạch, phản hồi đi qua nguyên vẹn.
Soạn thảo là một hành động console / management-API trên phiên của bạn, kiểm soát ở mức Developer+. Relay key sk-orca-... chỉ gửi traffic; nó không bao giờ chỉnh sửa chính sách.

3. Một block output tốn gì

Không như một block input — kích hoạt trước khi request được đo lường — một block output xảy ra sau khi mô hình thượng nguồn đã chạy. Gateway xử lý kế toán cho bạn:
  • Một completion bị block vẫn trả về HTTP 400 guardrail_blocked với một thông báo nêu tên guardrail và quy tắc đã kích hoạt.
  • Không tốn quota. Block output hoàn trả lại quota đã tiêu trước sau khi phản hồi bị từ chối, nên cuộc gọi thất bại là miễn phí với bạn dù mô hình đã sản sinh token.
  • Request được đánh dấu skip-retry — chạy lại cùng một prompt sẽ chỉ block lại, nên gateway sẽ không đốt một lần retry trên một kênh khác.
Đây là khác biệt then chốt so với giai đoạn input. Một block input miễn phí vì đo lường chưa bắt đầu; một block output miễn phí vì quota đã tiêu trước được hoàn trả một khi phản hồi bị từ chối. Dù theo cách nào, caller không trả gì. Xem lỗi guardrail_blocked.

4. Streaming — block vs. mask

Block được thực thi trên các phản hồi streaming; mask output thì chưa. Đây là cách mỗi cái hành xử:
Trên một phản hồi không streaming, completion được sàng lọc đầy đủ trước khi nó trả về. Trên một phản hồi streaming, một scanner theo dõi các delta khi chúng chảy; khi một quy tắc block kích hoạt giữa stream nó cắt stream — scanner đóng kín, phát ra một thông báo thay thế ngắn thay cho phần còn lại, và kênh SSE đóng trước khi bất kỳ nội dung bị block nào đến được client.Các byte đã được flush không thể bị thu hồi, nên một block là nỗ lực tốt nhất trên những gì đã stream nhưng chặn đáng tin mọi thứ sau match. Để có một đảm bảo cứng rằng không byte vi phạm nào từng được gửi, hãy dùng một request không streaming.
Trên một phản hồi không streaming, một quy tắc mask viết lại completion — vd: một email trong phản hồi trở thành [EMAIL] — và văn bản đã làm sạch là cái client của bạn nhận được.Trên một phản hồi streaming, một quy tắc mask output không redact phản hồi hôm nay. Scanner vẫn đánh giá mỗi delta và sẽ hành động theo một quyết định block, nhưng văn bản đã che mà nó tính không được chuyển tiếp — các delta thô đi qua không đổi. Viết lại output streaming in-band nằm trong lộ trình. Cho đến khi nó ship, hãy gửi request không streaming nếu bạn cần một mask output thực sự redact phản hồi.
Trên streaming, block hành động từ match trở đi — các byte đã được flush trước match không thể bị thu hồi, nên để có một đảm bảo cứng trên toàn bộ phản hồi, hãy sàng lọc không streaming. Mask output không redact một phản hồi streaming hôm nay (masking output in-stream nằm trong lộ trình) — hãy gửi request không streaming nếu bạn cần phản hồi được redact. Xem streaming coveragequy tắc stream-safe.
Hành động trên outputKhông streamingStreaming
blocktừ chối phản hồicắt stream
maskredact phản hồichưa được redact (lộ trình)
flagchỉ ghi lạichỉ ghi lại

5. Grounding — một kiểm tra độ trung thực ở giai đoạn output

Một quy tắc nâng cao vốn dĩ có hình dạng output: contextual grounding. Một quy tắc grounding chấm điểm câu trả lời của mô hình so với các nguồn được truy xuất trên request (ngữ cảnh RAG của bạn) và kích hoạt khi độ trung thực rơi xuống dưới một ngưỡng (mặc định 0.7). Ghép nó với block để từ chối các câu trả lời không trung thực, hoặc flag để đo lường độ lệch trước khi bạn thực thi. Nó tính phí như một judge sub-line, như bất kỳ quy tắc dựa trên mô hình nào. Các trường đầy đủ nằm trong Guardrails.

6. PII Shield ở giai đoạn output

Preset PII Shield là một quy tắc pii đơn lẻ, hành động mask, giai đoạn both. Ở giai đoạn input nó hoạt động đầy đủ — nó viết lại request trước mô hình, trên cả streaming lẫn không streaming. Ở giai đoạn output nó che các completion không streaming, như trong §4; trên một phản hồi streaming, mask output không redact phản hồi hôm nay (masking output in-stream nằm trong lộ trình). Vậy nên ở giai đoạn output, hãy gọi không streaming nếu bạn cần PII Shield thực sự redact phản hồi. Xem PII Shieldmasking formats.

7. Xem cái gì đã kích hoạt

Mỗi quy tắc output kích hoạt ghi lại một match — loại quy tắc, hành động, giai đoạn (output), và một chuỗi detail — trong feed Matches của workspace (GET /api/guardrail/match, mở cho mọi Member). Chuỗi con đã khớp được ghi lại chỉ khi toggle Log raw content của guardrail bật; nó tắt theo mặc định (tư thế bảo thủ về quyền riêng tư), nên theo mặc định bạn thấy rằng một quy tắc output đã kích hoạt, không phải văn bản nhạy cảm mà nó bắt được. Một false positive được đánh dấu với POST /api/guardrail/match/:id/mark-fp (Admin) — coi nó là một tín hiệu để tinh chỉnh, không phải lý do để tắt quy tắc.
Chứng minh một quy tắc output trước khi bạn ship nó. Tab Test của editor đánh giá chính sách hiện tại trên văn bản mẫu ở giai đoạn output mà không tốn quota workspace của bạn, và tab Eval chấm điểm nó đối với corpora đóng gói sẵn hoặc tùy chỉnh. (Một quy tắc dựa trên mô hình — llm_judge hoặc grounding — vẫn phát ra cuộc gọi judge riêng khi bạn chạy sandbox.) Soạn thảo và chạy sandbox là các hành động Developer+. Xem testing & evaltinh chỉnh false positive.

8. Đi đâu tiếp theo

Giai đoạn input

Hình ảnh phản chiếu — sàng lọc request trước khi mô hình thấy nó. Masking input hoạt động đầy đủ, bao gồm streaming.

Hành động

block, mask, và flag chuyên sâu — khi nào mỗi cái là lựa chọn đúng.

Streaming coverage

Ma trận đầy đủ về cái gì được thực thi trên streaming vs. không streaming.

Lỗi guardrail_blocked

HTTP 400, hoàn trả quota, và hành vi skip-retry.
Guardrails — mọi loại quy tắc, trường, và route, bao gồm grounding và LLM judge.