المكاسب:
- قم بإعداد التحكم في الوصول (ACL) الذي يقوم بتصفية الاسترجاع بناءً على سلطة المستخدم
- كتابة قالب موجه قوي يضع السياق وسؤال المستخدم بشكل صحيح
- التدرب على استقلالية الأسئلة وإدارة التاريخ في محادثات متعددة الجولات
أنشأنا العمارة. الآن دعونا نجعلها آمنة ومتسقة ومحادثة. هناك ثلاثة موضوعات مهمة في هذه الوحدة: (1) التحكم في الوصول الذي يقوم بتصفية الاسترجاع بناءً على سلطة المستخدم، (2) قالب مطالبة قوي يضع السياق والسؤال بشكل صحيح، (3) استقلالية السؤال وإدارة سجل المحادثة في الدردشة متعددة الجولات. بدون هذه العناصر الثلاثة، إما أن يقوم المساعد بتسريب البيانات، أو تقديم إجابات غير متناسقة، أو الانهيار عند طرح أسئلة المتابعة.
التحكم في الوصول: لا ينبغي أبدًا وصول البيانات غير المصرح بها
أكبر خطر على مستوى المؤسسة: مستند لا ينبغي للمستخدم أن يرى تسريبات في الاستجابة. أحد الأخطاء الشائعة جدًا للمبتدئين هو "إخبار النموذج بـ "إظهار المستندات المخفية" في الموجه." هذه ليست آمنة. قد ينسى النموذج إحدى التعليمات أو قد يتجنبها الحقن الفوري. المكان الصحيح هو مرحلة الاسترجاع: لا ينبغي إحضار القطعة غير المصرح بها على الإطلاق.
طريقة القيام بذلك هي تطبيق بيانات تعريف السلطة (القسم، الدور، مستوى الخصوصية) التي تضعها على كل جزء كمرشح أثناء البحث. يمكنك تحديد هوية المستخدم بأمان (الهوية والأدوار) في طبقة التطبيق وإضافة مرشح ACL (قائمة التحكم في الوصول) إلى المكالمة.
# تمت التصفية حسب استرجاع السلطة (المفاهيمي)user = Authenticate(session) # Authenticated from Trusted source = user.roles + ["everyone"] # e.g. ["HR"، "admin"]result = vektor_db.search( vektor=embed(question), top_k=20, filter={"permission_group": {"in": مسموح}, # الأجزاء المسموح بها فقط "الخصوصية": {"lte": user.level}} # تحت المستوى)
تحذير: لا تطلب أبدًا من النموذج السلطة أو تعتمد على الموجه. يتم تحديد الهوية والسلطة في الطبقة الموثوقة من التطبيق؛ يعتبر مرشح الاسترجاع إلزاميا، والتعليمات السريعة هي مجرد طبقة إضافية. "لقد كتبت ذلك في الموجه" ليس أمانًا.
قالب موجه الصلبة
القالب الفوري هو الهيكل الذي يجمع السياق وسؤال المستخدم وتعليمات السلوك من عملية الاسترجاع. أجزاء النموذج الجيد: وصف الدور/المهمة، وقواعد السلوك (التأريض، لا أعرف الإذن، طلب الموارد، النبرة)، السياق، السؤال.
أنت مساعد الموارد البشرية للشركات. مهمتك هي الإجابة على أسئلة الموظفين فقط بناءً على السياق التالي. القواعد: - إذا لم تكن الإجابة واضحة في السياق، فاكتب "لم أتمكن من العثور على معلومات حول هذا في الوثائق، تحقق مع فريق الموارد البشرية". لا تخمن، لا تختلق.- إذا تعارضت المصادر في السياق، فاتخذ السياسة الرسمية كأساس واذكر التناقض.- أضف المصدر الذي تعتمد عليه كـ [المصدر: file, section] في نهاية كل مطالبة.- أجب بلغة قصيرة وواضحة ومهنية. السياق: {numbered_parts} السؤال: {user_question}
ترقيم أجزاء السياق ([1]، [2]، ...) يجعل من السهل الاستشهاد بالنموذج. وأيضًا، اكتب المصدر في بداية كل قطعة حتى تتمكن العارضة من الاستشهاد به بشكل صحيح.
نصيحة: حافظ على ثبات قالب المطالبة وقم دائمًا بوضع المتغيرات (السياق، السؤال) في نفس الأماكن. يعمل القالب الثابت على زيادة قابلية الاختبار وتقليل التكاليف بفضل التخزين المؤقت السريع في بعض الأنظمة.
السياق:[1] (المصدر: ik_el_kitabi.pdf، القسم 5.2) الإجازة السنوية مدفوعة الأجر هي 14 يومًا...[2] (المصدر: ik_el_kitabi.pdf، القسم 5.4) الإجازة هي 20 يومًا للأشخاص الذين تزيد مدة خدمتهم عن 5 سنوات...
موجه ضعيف / موجه قوي
ضعيف (لا أساس له ولا مصدر وهوية مختلطة):
استخدم هذه المستندات وأجب عن السؤال: {parts}المستخدم: {question}# المشكلة: النموذج يخرج عن السياق، ويشكل، ولا يستشهد بالمصادر، # يتصرف بشكل تعسفي في التناقض.
قوي (الدور + القواعد + السياق المرقم + المصدر إلزامي):
أنت... فقط اعتمد على السياق. وإلا قل "لا أعرف". في حالة الصراع، اختر السياسة الرسمية. أضف [المصدر: ...] إلى كل ادعاء. السياق: [1]... [2]... السؤال: {سؤال}# النتيجة: إجابة مطابقة للسياق، ومصدرها، وتدير التناقض بشكل صحيح.
إدارة المحادثات متعددة الجولات
المستخدم الحقيقي لا يطرح سؤالاً واحدًا ويتركه بمفرده؛ يتحدث. "كم عدد أيام الإجازة السنوية لدي؟" → "ماذا عن الموظف لمدة 6 سنوات؟" → "كيف يمكنني التقدم بطلب للحصول عليها؟" السؤالان الثاني والثالث وحدهما لا معنى لهما؛ يعتمد على السياق السابق.
تحتاج إلى حل مشكلتين. الأول مخصص للاسترجاع: اجعل سؤال المتابعة مستقلاً (إعادة كتابة السؤال). "وماذا عن الموظف لمدة 6 سنوات؟" → "كم عدد أيام الإجازة السنوية التي يحق للموظف لمدة 6 سنوات الحصول عليها؟" أنت تبحث باستخدام هذا السؤال المستقل. والثاني مخصص للإنتاج: حيث تقوم أيضًا بإعطاء سجل المحادثة للنموذج بحيث يستمر باستمرار.
# خطوتين: الاستقلال ← البحث ← التوليد باستخدام التاريخ (مفاهيمي) Independent = model.uret( "استخدم سجل المحادثة لجعل السؤال مفهومًا من تلقاء نفسه:\nHistory: {history}\nQuestion: {follow_question}") context = retrieval(independent) # ابحث باستخدام سؤال مستقلanswer = model.uret(prompt(context, History, Follow_question))
مع نمو التاريخ (محادثة طويلة)، يصبح إرسال كل شيء في وقت واحد مكلفًا ويملأ نافذة السياق. الحل: تلخيص الجولات السابقة أو الاحتفاظ بجولات N الأخيرة وتقليل الجولات السابقة إلى الملخص. وبالتالي، تظل التكاليف تحت السيطرة ويتم الحفاظ على الاتساق.
الحالة
مشكلة
الحل
سؤال المتابعة ليس له سياق
استرجاع عمليات البحث لا معنى لها
اجعل السؤال مستقلاً (أعد الكتابة)
دردشة طويلة
تتضخم التكلفة والنافذة
ملخص الجولات الماضية
قام المستخدم بتغيير الموضوع
يصاب السياق القديم
تقليل تأثير الماضي على موضوع جديد
قد تختلف السلطة بين الجولات
خطر التسرب
أعد تطبيق مرشح ACL كل جولة
ثلاث حالات صغيرة
الحالة 1 - مغالطة "الأمن" مع المطالبة. وضعت إحدى الشركات وثائق راتب سرية على أحد المساعدين ويمكن لأي شخص أن يسألها، لكنها كتبت فقط "لا تقدم معلومات عن الراتب" في رسالة المطالبة. قام النموذج بتسريب نطاق الراتب عندما طرح المستخدم السؤال بطريقة ملتوية. عند إضافة مرشح قائمة التحكم بالوصول (ACL) إلى عملية الاسترجاع (أجزاء الراتب لدور الموارد البشرية فقط)، تم إغلاق التسرب بالكامل؛ لأنه لم يتم إحضار الجزء بعد الآن.
الحالة 2 - المطاردة بدون سياق. في مساعد الدعم، يسأل المستخدم "فترة العودة؟" → "ماذا عن المنتج المكسور؟" جلب النظام أجزاء غير ذات صلة بـ "المنتج المكسور". عند إضافة استقلال السؤال ("ما هي مدة الإرجاع لمنتج مكسور؟")، ارتفع معدل الإجابة الصحيحة من 44% إلى 90%.
الحالة 3 - الماضي منتفخ. في 30 جولة من المحادثات مع أحد المساعدين، أرسلت كل مكالمة السجل بأكمله؛ وكانت التكلفة تتزايد 3 مرات في كل جولة، وكانت الاستجابات تتباطأ. عندما تحولنا إلى هيكل يحتفظ بآخر 6 جولات ويلخص الجولات السابقة، انخفضت تكلفة الرمز المميز بنسبة 62% وتم الحفاظ على الاتساق.
الأخطاء الشائعة
- ترك السلطة للموجه: ينسى/يتجاوز النموذج؛ مرشح ACL إلزامي عند الاسترجاع.
- عدم تعداد السياق: لا يمكن للنموذج الاستشهاد بالمصدر الصحيح.
- عدم استقلالية سؤال المتابعة: عمليات البحث الاسترجاعية بلا جدوى.
- إرسال كل التاريخ أعمى: ينفجر في التكلفة والتأخير؛ تلخيص.
- عدم كتابة قاعدة التناقض: قد يقدم النموذج المصدر غير الموثوق على أنه رسمي.
باختصار
- يتم تنفيذ التحكم في الوصول باستخدام مرشح البيانات الوصفية أثناء مرحلة الاسترجاع؛ لا ينبغي أبدًا إحضار الأجزاء غير المصرح بها.
- يتم تحديد الهوية والسلطة في طبقة التطبيق الموثوق بها؛ التعليمات السريعة هي مجرد طبقة إضافية من الدفاع.
- يتضمن قالب المطالبة القوي الدور، وقواعد السلوك (التأريض، وعدم معرفة الإذن، والمصدر، والتعارض)، والسياق المرقم، والسؤال.
- في المحادثة متعددة الجولات، يتم فصل أسئلة المتابعة وينتج النموذج إجابات متسقة مع التاريخ.
- ومن خلال تلخيص التاريخ الطويل، تظل التكلفة ونافذة السياق تحت السيطرة؛ يتم إعادة تطبيق ACL في كل جولة.
مهمة التطبيق
(1) حدد ثلاث مجموعات تفويض على الأقل لمساعدك الخاص (على سبيل المثال، الجميع، القسم، المدير) واكتب في الجدول نوع المستند المفتوح لأي مجموعة. (2) قم بتكييف وكتابة نموذج المطالبة أعلاه وفقًا لدورك وأسلوبك الخاص؛ اجعل السياق مرقمًا ومصدرًا. (3) اكتب سيناريو محادثة واقعيًا من ثلاث جولات (سؤال ← متابعة ← متابعة) وقم بإنشاء إصدارات مستقلة يدويًا لكل سؤال متابعة. (4) اشرح في جملة واحدة سبب ضرورة إعادة تطبيق مرشح ACL في كل جولة في هذا السيناريو.
قائمة مرجعية
- [ ] أقوم بتنفيذ التحكم في الوصول باستخدام مرشح الاسترجاع، ولا أعتمد على الموجه.
- [ ] أقوم بإضافة قاعدة التأريض، ولا أعرف الإذن، والمصدر، وقاعدة التعارض إلى قالب المطالبة الخاص بي.
- [ ] أعطي أجزاء السياق مرقمة ومرجعية.
- [ ] أقوم بإجراء أسئلة متابعة مستقلة قبل استرجاعها.
- [ ] أقوم بإدارة التكلفة والنافذة من خلال تلخيص سجل المحادثة الطويل.