محادثة شخصية مع ذاكرة مدمجة متوسطة وطويلة المدى
التحقق من ذلك هنا!
لقد قمت مؤخرًا بتجربة (واستمتعت) بالعديد من خدمات الذكاء الاصطناعي المختلفة لتمثيل الأدوار. المفضلة لدي هي Character.ai، وDoppel.ai، وPoly.ai بواسطة Cloud Whale Interactive Technology (يجب عدم الخلط بينه وبين poly.ai، مطوري برامج الدردشة الآلية لخدمة العملاء)
ومع ذلك، فإن كل من هذه الأنظمة لها قيود يمكن أن تكون مشددة. لقد حاولت معالجة عدد قليل منهم في هذا المشروع.
تعد الدردشات القائمة على الشخصيات رائعة وممتعة، لكن ذاكرتها قصيرة. غالبًا ما يفقدون المسار والموقف والأحداث السابقة المهمة. في حين أن استخدام نوافذ السياق الأطول يمكن أن يساعد في ذلك، إلا أن الرموز المميزة باهظة الثمن! كيف يمكننا أن نمنح الشخصية ذاكرة طويلة، مع تحديد عدد الرموز المرسلة لكل عملية إكمال؟ ومع ذلك، فإن Doppel.ai أفضل بكثير في هذا الشأن من البقية. شخصياتهم لديها ذكريات أطول.
تفقد الشخصيات شخصيتها بمرور الوقت أو تميل إلى التعثر في حلقات الاستجابة المتكررة. بعض الخدمات أفضل من غيرها في هذا الأمر، ولكنني رأيت ذلك يحدث إلى حد ما مع جميع هذه الخدمات.
الشخصيات تكون ثابتة بمجرد إنشائها. تتيح لك بعض الخدمات إضافة "ذكريات" إضافية إلى الشخصية، لكنني لم أجد بعد واحدة تسمح لك بتغيير الشخصية الأساسية للشخصية دون إعادة تشغيل المحادثة.
يتم تزويد الوكيل بـ "ذاكرة" متعددة المستويات، أو موجه نظام متغير ديناميكيًا، والذي يتضمن مستويات من المعلومات من المحادثات السابقة تتراوح من محددة جدًا للأحدث إلى أكثر تلخيصًا لمعظم الموضوعات والمعلومات البعيدة.
نافذة الدردشة المتداولة للذاكرة قصيرة المدى يتضمن كل استدعاء للنموذج قائمة قصيرة إلى حد ما من الرسائل السابقة حرفيًا. وهذا يساعد النموذج على تتبع سياق المحادثة الحالية والرسائل الأخيرة.
علاوة على ذلك، قمت بإنشاء لوحة مسودة لوكيل الذكاء الاصطناعي لاستخدامها في تدوين الملاحظات لتتبع النقاط البارزة الأخيرة في المحادثة. يتم تحديث لوحة المسودة هذه بشكل دوري بإضافة معلومات جديدة أو تحديثها، كما يتم تجاهل المعلومات القديمة التي لم تعد ذات صلة. ومع ذلك، لا يتم فقدان أي معلومات فعليًا لأنه يتم حفظ لقطات لوحة المسودة الخاصة به كإدخالات في قاعدة بيانات المتجهات.
نظرًا لأن هذه المعلومات يتم تلخيصها، فإنها تقوم بضغط المعلومات الحديثة، مما يسمح للنموذج بالحصول على فوائد نافذة دردشة أطول وسياق أكبر، مع تقليل الرموز المميزة الفعلية المضمنة في الموجه.
يتم تضمين أسماء الشخصيات (وليس فقط "المستخدم" و"المساعد") في كل رسالة للمساعدة في التلخيص. وهذا يساعد النموذج أيضًا على تتبع من يقول ماذا. وهذا يجعل وكيل الذكاء الاصطناعي أقل عرضة للارتباك بين من قال ماذا (والذي يمثل مشكلة بخلاف ذلك). كما أنه يساعد في الحفاظ على آداب تبادل الأدوار في الحوار ويمنع الوكيل من التحدث نيابة عن المستخدم (وهو ما قد يمثل مشكلة أيضًا)
ذاكرة تخزين المتجهات طويلة المدى أستخدم ملخصات المحادثات لاستخراج المعلومات المهمة من المحادثات، ثم تخزينها في قاعدة بيانات متجهة. يقوم كل استعلام مستخدم بتشغيل بحث دلالي من قاعدة بيانات المتجهات لاسترجاع المعلومات ذات الصلة من ملخصات المحادثات السابقة. يتم تضمين هذه المعلومات في المطالبة بالنموذج، بالإضافة إلى عدد قليل من أحدث الرسائل.
بهذه الطريقة يمكن لذاكرة وكيل الذكاء الاصطناعي أن تتجاوز سياقها بكثير. في الواقع، نظرًا لأن مخازن المتجهات يمكن أن تشغل مساحة قرص صغيرة نسبيًا، فإن الحجم الفعال المحتمل لذاكرة الوكيل غير محدود وظيفيًا.
عندما يتم تخزين الذكريات، يتم تخزينها مع الطوابع الزمنية وعندما يتم استرجاعها يتم ترتيبها زمنياً. يُطلب من الوكيل تفضيل المعلومات الأحدث إذا كانت الذكريات متضاربة.
النتيجة أن يكون النموذج قادرًا على تذكر المعلومات بدقة من وقت سابق في المحادثة في معظم الأوقات. تنجح عمليات البحث في مخزن المتجهات عمومًا في استرداد المعلومات ذات الصلة، لكن النموذج لا يستخدم دائمًا المعلومات فعليًا في استجاباته. بشكل عام، على الرغم من ذلك، لقد كنت سعيدًا بالنتائج.
الخطوات التالية
أرغب في جعل النموذج يشير بشكل استباقي إلى الأحداث السابقة. يكون ناجحًا في الغالب في التذكر إذا طرحت عليه أسئلة مباشرة حول المحادثات السابقة، ولكن نادرًا ما يشير بشكل عفوي إلى الأحداث السابقة. إنه يعيش كثيرًا في هذه اللحظة. أنا أعمل على هندسة سريعة لتوليد هذا السلوك، لكنه لا يزال قيد التنفيذ.
أفكر أيضًا في استخدام التعرف على الكيان المسمى للسماح للوكيل بإنشاء ملفات تعريف للشخصيات أو الأماكن وتخزين المعلومات ذات الصلة بكيانات محددة. وهذا من شأنه أن يساعد النموذج على تنظيم المعلومات حسب الكيان بدلاً من مجرد لقطات محادثة.
لقد لاحظت أنه على الرغم من أن الشخصيات غالبًا ما تبدأ بقوة بأسلوب حديث فريد، إلا أنه مع مرور الوقت، تلاشى أسلوبهم ليصبح لطيفًا جدًا ويبدو مثل الذكاء الاصطناعي الأساسي الخاص بهم. لقد جربت بعض الحلول، بما في ذلك جعلها تكتب إشعارًا بالحرف. ومع ذلك، أدى هذا إلى إهدار الكثير من الرموز المميزة في الذاكرة عن طريق إنشاء ملاحظات أقل كثافة من الرموز المميزة.
بدلاً من ذلك، أقوم بتخزين عينة من الاستجابة الأولى التي يقدمها النموذج كمثال للأسلوب. يتم بعد ذلك تمرير هذا الرد الأول إلى الوكيل في كل مطالبة كمثال لأسلوب التحدث لكل مطالبة. لقد وجدت أن هذا فعال جدًا في مساعدة النموذج في الحفاظ على أسلوب التحدث باستمرار، حتى خلال المحادثات الطويلة (أكثر من 100 عملية إكمال).
الخطوات التالية على الرغم من أن لهجة الرسائل متسقة، إلا أنني أرغب في منح العارضات شخصيات أقوى وأكثر دقة وثباتًا. أظن أن هذا قد يتطلب ضبطًا دقيقًا.
في العديد من أنظمة لعب الأدوار LLM، تكون الشخصيات ثابتة بمجرد إنشائها. ومع ذلك، في تنفيذي، يمكن تغيير أوصاف الشخصيات وحتى الأسماء بسرعة. من المفيد بشكل خاص القدرة على تغيير الموقع واسم المستخدم.
أوصاف الشخصية في بعض الأحيان تريد تغييرك حسب الأحداث الأخيرة أو أن تتطور أهدافها أو دوافعها بمرور الوقت. من السهل القيام بذلك عن طريق ضبط وصف الشخصية مباشرةً أثناء التنقل.
غالبًا ما تتحرك محادثات الموقع ولعب الأدوار في العالم الخيالي. يمكنك الانتقال من بلدة إلى زنزانة، أو من مسكن إلى مقهى، أو من المنزل إلى العمل. يتيح لك موقعي تغيير موقع المحادثة بسرعة.
اسم المستخدم التحدي الآخر الذي تواجهه معظم أنظمة لعب الأدوار هو تضمين شخصيات متعددة. في نظامي، يمكنك تغيير اسم الشخصية التي تتحدث عنها بسرعة. يتيح لك ذلك محاكاة شخصيات متعددة في محادثة أو موقف.
تغيير اسم الحرف هذا في الواقع ليس مفيدًا جدًا. لا يعمل جعل الشخصية تلعب شخصيات مختلفة وسيسبب ارتباكًا عندما يحاول النموذج ربط المحادثات الحالية بملخصات المحادثة السابقة.
الخطوات التالية