الأمان والرفض والبدائل الاحتياطية
في الإنتاج، يجب أن تتعامل شيفرتك مع الحالة التي لن (أو لا يستطيع) فيها Claude الإجابة كما هو متوقّع. إذا أُحسِن ذلك، فلن يلاحظه المستخدمون؛ وإذا أُسيء، فهو انهيار أو ردّ مربك.
أمران مختلفان
- رفض من النموذج — يرفض Claude طلبًا (مثلًا لأنه يحكم بأنه ضارّ). تشير الاستجابة إلى ذلك (عادةً عبر سبب توقّف
stop_reason/محتوى رفض). عامِله كنتيجة طبيعية، لا كخطأ. - حجب من مُصنِّف/طبقة أمان — قد تحجب طبقة أمان منفصلة المحتوى. وقد يبدو هذا مختلفًا عن رفض النموذج.
معرفة أيّهما حدث تتيح لك الاستجابة بشكل مناسب بدلًا من إعادة المحاولة بشكل أعمى.
تعامَل معه بسلاسة
resp = client.messages.create(...)
if getattr(resp, "stop_reason", None) == "refusal":
# Don't show a raw/empty result. Offer a safe fallback or a clarifying ask.
show_user("I can't help with that as asked. Here's what I can do instead…")
else:
render(resp)
قلّل حالات الرفض غير المرغوبة
- أضف سياقًا مشروعًا. قد يطابق الطلب نمطًا حسّاسًا رغم أن النيّة بريئة؛ وذكر الغرض الحقيقي المشروع يساعد.
- كن محدّدًا. الصياغة الغامضة أو المثيرة للريبة تستدعي الحذر.
- لا تقاومه. إذا كان الطلب ممنوعًا فعلًا، فالرفض صحيح — صمّم مسارًا سلسًا، ولا تحاول كسر القيود.
أنماط البدائل الاحتياطية
- سؤال توضيحي بدلًا من طريق مسدود.
- بديل آمن ("يمكنني تلخيص المعلومات العامة بدلًا من ذلك").
- في خطوط المعالجة، التوجيه إلى إنسان عندما تكون الثقة/الأهلّية منخفضة.