چکهای ایمنی
چکهای ایمنی کمک میکنند استفاده پرریسک را پیش از تبدیل شدن به incident برای حساب، کاربر یا محصول شناسایی کنید. این راهنما توصیه رسمی OpenAI درباره safety checks را برای API سازگار با OpenAI در AvalAI با آدرس https://api.avalai.ir/v1 تطبیق میدهد.
این صفحه را همراه بهترین شیوههای ایمنی، Moderation و Red Teaming استفاده کنید.
چه چیزهایی را بررسی کنیم
| لایه | چه چیزی بررسی شود | الگوی AvalAI |
|---|---|---|
| هویت کاربر | آیا میتوانید درخواست پرریسک را بدون ذخیره PII خام به یک کاربر پایدار وصل کنید؟ | در هر درخواست پشتیبانیشده safety_identifier هششده بفرستید. |
| ریسک ورودی | آیا ورودی ممکن است خطمشی را نقض کند، secret لو بدهد یا tool call ناامن بسازد؟ | پیش از کار پرهزینه، /v1/moderations، validation schema و allowlist ابزارها را اجرا کنید. |
| ریسک خروجی | آیا پاسخ ناامن، حساس یا high-stakes است؟ | خروجی را پیش از نمایش moderate یا review کنید؛ برای سطحهای پرریسک stream را buffer کنید. |
| اقدام ابزار | آیا ابزار میتواند داده بنویسد، هزینه ایجاد کند یا سیستم privileged را صدا بزند؟ | argumentها را validate کنید و برای side effectها approval انسانی بگیرید. |
| تغییر release | آیا prompt، مدل، routing، retrieval یا threshold moderation تغییر کرده است؟ | پیش از rollout، eval و smoke testهای red-team اجرا کنید. |
ارسال Safety Identifier
برای محصولاتی که کاربران نهایی جداگانه با مدل تعامل دارند، یک safety_identifier پایدار و حافظ حریم خصوصی بفرستید. شناسه داخلی کاربر، ایمیل یا account ID را پیش از ارسال hash کنید. شناسه را برای دور زدن enforcement ایمنی عوض نکنید؛ account سوءاستفادهگر را مسدود یا review کنید.
Chat Completions
import hashlib
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["AVALAI_API_KEY"],
base_url="https://api.avalai.ir/v1",
)
user_hash = hashlib.sha256(b"user_123").hexdigest()[:64]
completion = client.chat.completions.create(
model="gpt-5.5",
messages=[
{"role": "system", "content": "Answer safely and follow product policy."},
{"role": "user", "content": "Summarize the safety checklist for launch."},
],
max_completion_tokens=120,
safety_identifier=user_hash,
)
print(completion.choices[0].message.content)import crypto from "node:crypto";
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.AVALAI_API_KEY,
baseURL: "https://api.avalai.ir/v1",
});
const userHash = crypto
.createHash("sha256")
.update("user_123")
.digest("hex")
.slice(0, 64);
const completion = await client.chat.completions.create({
model: "gpt-5.5",
messages: [
{ role: "system", content: "Answer safely and follow product policy." },
{ role: "user", content: "Summarize the safety checklist for launch." },
],
max_completion_tokens: 120,
safety_identifier: userHash,
});
console.log(completion.choices[0].message.content);curl https://api.avalai.ir/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $AVALAI_API_KEY" \
-d '{
"model": "gpt-5.5",
"messages": [
{"role": "system", "content": "Answer safely and follow product policy."},
{"role": "user", "content": "Summarize the safety checklist for launch."}
],
"max_completion_tokens": 120,
"safety_identifier": "9f86d081884c7d659a2feaa0c55ad015"
}'نسخه Responses API و مسیر مهاجرت
برای workflowهای جدید Responses-first از این نسخه استفاده کنید. messages به input تبدیل میشود، پیام system به instructions منتقل میشود، max_completion_tokens به max_output_tokens تغییر میکند و متن نهایی از response.output_text خوانده میشود.
import hashlib
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["AVALAI_API_KEY"],
base_url="https://api.avalai.ir/v1",
)
user_hash = hashlib.sha256(b"user_123").hexdigest()[:64]
response = client.responses.create(
model="gpt-5.5",
instructions="Answer safely and follow product policy.",
input="Summarize the safety checklist for launch.",
max_output_tokens=120,
safety_identifier=user_hash,
)
print(response.output_text)import crypto from "node:crypto";
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.AVALAI_API_KEY,
baseURL: "https://api.avalai.ir/v1",
});
const userHash = crypto
.createHash("sha256")
.update("user_123")
.digest("hex")
.slice(0, 64);
const response = await client.responses.create({
model: "gpt-5.5",
instructions: "Answer safely and follow product policy.",
input: "Summarize the safety checklist for launch.",
max_output_tokens: 120,
safety_identifier: userHash,
});
console.log(response.output_text);curl https://api.avalai.ir/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $AVALAI_API_KEY" \
-d '{
"model": "gpt-5.5",
"instructions": "Answer safely and follow product policy.",
"input": "Summarize the safety checklist for launch.",
"max_output_tokens": 120,
"safety_identifier": "9f86d081884c7d659a2feaa0c55ad015"
}'مدیریت graceful برای enforcement ایمنی
سیستمهای ایمنی provider ممکن است وقتی ترافیک مکررا شبیه سوءاستفاده است latency اضافه کنند، خطا برگردانند یا دسترسی را محدود کنند. این مسیر را مثل خطای transient معمولی در نظر نگیرید.
- رفتار classifierهای GPT-5+ را بشناسید: OpenAI برای GPT-5 و مدلهای جدیدتر safety classifierهای اضافهای مستند کرده که درخواستها را در آستانههای ریسک طبقهبندی میکنند. ترافیک پرریسک تکراری میتواند هشدار، خطا یا محدودیت دسترسی به مدل ایجاد کند. در AvalAI، جزئیات enforcement به route ارائهدهنده، مدل و وضعیت حساب شما وابسته است.
- برای stream حالت loading نشان دهید: اگر پاسخ streaming هنگام اجرای safety check تأخیر دارد، UI را responsive نگه دارید و retry تکراری نسازید.
- policy block را blind-retry نکنید: خطای شبکه را retry کنید، اما خطای policy یا safety را به fallback امن، review حساب یا مسیر support ببرید.
- امن log کنید:
x-request-id، مدل، route،safety_identifierهششده، نتیجه moderation و action نهایی را نگه دارید. prompt خام را فقط وقتی ذخیره کنید که policy retention شما اجازه میدهد. - subject درست را محدود کنید: Safety identifier کمک میکند کاربر سوءاستفادهگر را review یا محدود کنید، نه کل integration را.
- identifier تازه برای دور زدن نسازید: اگر provider یک
safety_identifierرا block کرد، برای دور زدن آن شناسه جدید صادر نکنید. account اصلی را review کنید و کنترلهای محصولی بگذارید که سوءاستفاده تکراری را متوقف کند.
Realtime و routeهای session-based
Safety identifierها بین APIها یا sessionها خودکار منتقل نمیشوند. اگر AvalAI برای حساب شما route سازگار با Realtime را فعال کرده است، همان hash پایدار کاربر را هنگام ایجاد یا اتصال session با header یا metadata پشتیبانیشده همان route bind کنید. flowهای chat و audio request-based را روی safety_identifier نگه دارید.
شکل Realtime در OpenAI از header به نام OpenAI-Safety-Identifier روی درخواست قابل اعتماد سمت سرور استفاده میکند؛ همان درخواستی که session را میسازد یا به آن وصل میشود. تا وقتی AvalAI route متناظر Realtime را اعلام نکرده، این نمونه را فقط مرجع معماری بدانید:
curl https://api.avalai.ir/v1/realtime/client_secrets \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $AVALAI_API_KEY" \
-H "OpenAI-Safety-Identifier: 9f86d081884c7d659a2feaa0c55ad015" \
-d '{
"session": {
"type": "realtime",
"model": "gpt-realtime-2"
}
}'API key بلندمدت را از مرورگر نفرستید. اگر route از WebRTC در مرورگر یا موبایل استفاده میکند، client secret کوتاهمدت را در backend خودتان بسازید و همانجا safety identifier را bind کنید.
محصولاتی که به minors سرویس میدهند
راهنمای under-18 API OpenAI محصولات مخصوص افراد زیر ۱۸ سال را نیازمند safeguardهای اضافی فراتر از abuse monitoring معمولی میداند. اگر integration شما در AvalAI میتواند توسط minors استفاده شود، آن route را یک release با حساسیت ایمنی بالا بدانید و پیش از launch الزامات قانونی، حریم خصوصی و retention ارائهدهنده را تأیید کنید.
- دامنه سنی را مشخص کنید: تعیین کنید محصول برای minors، مخاطب ترکیبی، کلاس درس، خانواده یا فقط بزرگسالان است. هرجا برای use case لازم است age gate یا age assurance اضافه کنید.
- از کودکان کمسنتر محافظت کنید: داده شخصی کودکان زیر ۱۳ سال، یا زیر سن قانونی رضایت دیجیتال در jurisdiction مربوط، را پردازش نکنید مگر اینکه route کنترلهای retention لازم را داشته باشد و مبنای قانونی شما مستند شده باشد.
- Disclosure متناسب با سن بدهید: به کاربر جوان بگویید با AI تعامل دارد، این ابزار چه کاری میتواند و نمیتواند انجام دهد، و چه زمانی باید از بزرگسال مورد اعتماد یا متخصص کمک بگیرد.
- محتوای حساس را filter کنید: برای دستههایی مثل محتوای جنسی، خشونت، self-harm، exploitation، فعالیت غیرقانونی، bullying یا سایر محتوای حساس moderation ورودی و خروجی متناسب با سن اضافه کنید.
- مسیر escalation بسازید: مشخص کنید چه کسی interactionهای پرریسک را review میکند، reportها چگونه رسیدگی میشوند، و چه زمانی باید والدین، مدیر مدرسه، moderator، تیم حقوقی یا contact اضطراری وارد شوند.
- داده را کمینه و جدا کنید: از PII خام پرهیز کنید، از
safety_identifierهششده استفاده کنید، و logهای support، نتیجه moderation و محتوای مشتری را تحت برنامه retention مستندشده در کنترل دادهها نگه دارید.
ادعاهای مخصوص Zero Data Retention در OpenAI را در متن customer-facing AvalAI کپی نکنید مگر اینکه route انتخابی AvalAI، provider و قرارداد مشتری دقیقا همان کنترل را پشتیبانی کند. وقتی مطمئن نیستید، workflow را stateless نگه دارید، prompt کامل را ذخیره نکنید و پیش از ارائه قابلیت به minors، review انسانی را الزامی کنید.
ترافیک سایبری و پژوهشی
OpenAI برای خانوادههایی از مدلها با قابلیت سایبری بالا safeguardهای خودکار اضافی مستند کرده است. در AvalAI، رفتار دقیق به route ارائهدهنده، مدل انتخابی، policy حساب و فعال بودن کنترلهای upstream برای ترافیک شما وابسته است.
- برای خطای policy آماده باشید: safeguardهای مرتبط با cybersecurity ممکن است از routeهای upstream خطاهایی مانند
cyber_policyبرگردانند. این خطاها را سیگنال enforcement ایمنی بدانید، نه خطای 5xx قابل retry کورکورانه. - کاربران نهایی را جدا کنید:
safety_identifierپایدار کمک میکند provider و سیستم review خودتان یک کاربر پرریسک را محدود یا بررسی کنند، نه همه کاربران پشت یک API key را. - Block را دور نزنید: اگر یک identifier، حساب یا سازمان پس از ترافیک پرریسک محدود شد، فعالیت را review کنید، کنترلهای محصولی را سختتر کنید و در صورت نیاز با support تماس بگیرید؛ شناسه تازه برای ادامه همان رفتار صادر نکنید.
- پژوهش legitimate را با احتیاط مدیریت کنید: workflowهای امنیت دفاعی، علوم زیستی، شیمی یا dual-use باید پیش از ترافیک production کنترل مجوز، prompt/tool محدودتر، review انسانی و مسیر escalation مستند داشته باشند.
چکلیست Release
safety_identifierرا به هر فراخوانی کاربرمحور پشتیبانیشده اضافه کنید.- در صورت پشتیبانی route انتخابی AvalAI،
/v1/moderationsیا inline moderation را اجرا کنید. - argumentهای ابزار را پیش از اجرا و خروجی ابزار را پیش از بازگرداندن به مدل validate کنید.
- failureهای ایمنی را وارد datasetهای eval و smoke testهای red-team کنید.
- برای
cyber_policy، identifierهای blockشده و سایر خطاهای enforcement ایمنی مسیر محصولی تعریف کنید. - برای محصولاتی که minors استفاده میکنند، disclosure متناسب با سن، filter محتوای حساس، مسیر reporting/escalation و review نگهداری داده در سطح route اضافه کنید.
- مشخص کنید چه کسی کاربران blocked، نتیجههای moderation مرزی و محتوای تولیدشده پرریسک را review میکند.
- مسیر اعتراض کاربر، پشتیبانی و زمانبندی escalation را مستند کنید.