إضافة روبوت محادثة مدعوم بالذكاء الاصطناعي إلى Discourse أمر سهل (بفضل إضافتين رائعتين). لكن إضافة روبوت محادثة يقوم بتقديم الدعم الفني أمر أصعب بكثير! يشارك هذا المنشور خبرتنا في إعداد روبوت محادثة للدعم الفني لموقع support.suretyhome.com - ما أردناه، والمشاكل التي واجهناها، وكيف حللناها، وماذا سنخطط له بعد ذلك.
فريق الدعم لدينا متاح فقط خلال ساعات العمل الرسمية، لكن العملاء يريدون المساعدة على مدار الساعة. نحن لا نحاول استبدال فريق الدعم. هدفنا هو تعزيز فريق الدعم بواسطة روبوت يكون:
- متاحًا على مدار الساعة طوال أيام الأسبوع، بما في ذلك الليالي وعطلات نهاية الأسبوع، تمامًا مثل منتدانا
- يستجيب فورًا، بينما يستغرق فريق الدعم البشري بعض الوقت
- قد يكون قادرًا على الإجابة عن أسئلة لم يتمكن المستخدمون من الإجابة عليها عبر البحث في المنتدى
إليك خبرتنا.
اختيار إضافة
هناك إضافتان جيدتان جدًا توفران روبوت محادثة مدعوم بالذكاء الاصطناعي.
إضافة Discourse AI هي الإضافة الرسمية للذكاء الاصطناعي من فريق تطوير Discourse. تتضمن روبوت محادثة بالإضافة إلى ميزات ذكاء اصطناعي أخرى. أما إضافة Discourse Chatbot فهي روبوت محادثة فقط. تم إنشاؤها قبل إضافة Discourse AI وتركز على القيام بهذا الأمر الواحد بشكل ممتاز.
في البداية، لم نكن نعرف أيًا منهما نستخدم، لذا طرحت السؤال هنا للحصول على بعض النصائح.
تلقينا الكثير من المساعدة القيمة. انتهينا باختيار إضافة Discourse Chatbot لأنها أكثر مرونة كروبوت محادثة، مع المزيد من الخيارات (الأزرار والإعدادات) للتخصيص. كانت لدينا حالات استخدام محددة لم تكن تبدو ممكنة بعد باستخدام Discourse AI. كلاهما يمكن أن يكون خيارًا رائعًا. أيهما يناسبك يعتمد على الاحتياجات المحددة لمنتداك.
الإعداد الأولي
يمكن أن يكون الإعداد الأولي لإضافة Discourse Chatbot مشروعًا كبيرًا بعض الشيء لأن هناك العديد من الخيارات المتاحة للتخصيص. اتبع إرشادات الإعداد بعناية وتأكد من مراجعة جميع الإعدادات.
كان هدفنا توفير تجربة تشبه المحادثة، لذا أردنا فقط أن يعمل الروبوت في دردشة Discourse، وليس في المواضيع العامة أو الرسائل الخاصة. كانت الخطوات الأولى التي اضطررنا لاتخاذها هي:
- إعداد دردشة Discourse (تعتمد إضافة Discourse Chatbot عليها)
- في إعدادات إضافة Discourse Chatbot، قم بتفعيل chatbot permitted in chat (الروبوت مسموح به في الدردشة)
هندسة الأوامر (Prompt Engineering)
إضافة Discourse Chatbot قابلة للتخصيص بشكل لا يصدق. أي شيء ليس إعدادًا يتم تخصيصه تحت قائمة Customize > Text. هذا هو المكان الذي تقوم فيه بكل هندسة الأوامر الخاصة بك. في Customize > Text، ابحث عن chatbot.prompt لتصفية النصوص القابلة للتخصيص.
لجعل الروبوت يتصرف بالطريقة التي نريدها، سنحتاج إلى تعديل الأمر النظامي (system prompt). لكن هناك أمران نظاميان، واحد للمناقشات العامة وواحد للمناقشات الخاصة. نظرًا لأننا نستخدم الروبوت فقط في قنوات الدردشة الخاصة، فقد احتجنا إلى تعديل chatbot.prompt.system.rag.private.
كروبوت دعم فني، نحتاج إلى أن يكون أكثر تحفظًا ودقة مما تميل نماذج اللغة الكبيرة (LLMs) إلى أن تكون عليه بشكل افتراضي. كان أمرنا النظامي بحاجة إلى أن يكون طويلًا نسبيًا لتحقيق ذلك. في الأمر النظامي، قدم تعليمات وسياقًا لنموذج اللغة الكبيرة يجيب على أسئلة مثل:
- من هو روبوتك؟ ما الدور الذي يجب أن يلعبه؟
- ما المعلومات الخلفية أو السياق الذي يحتاج إلى معرفته؟
- ما المواضيع التي يُفترض أن يناقشها؟ وما المواضيع التي لا يجب أن يناقشها أبدًا؟
- ما أسلوب الكتابة أو النبرة التي يجب أن يستخدمها؟
- ماذا يجب أن يفعل عندما يكون المستخدم محبطًا؟
بالإضافة إلى هندسة الأوامر العامة هذه، فإن الأمر النظامي هو أيضًا مكان يمكنك فيه محاولة حل المشاكل التي تكتشفها أثناء الاختبار. إذا وجدت أن روبوتك يرتكب خطأً فادحًا، فقد تتمكن من إصلاحه بإضافة تعليمات إلى الأمر النظامي. لكن احذر، فإن الأوامر ليست سوى اقتراح لنموذج اللغة الكبيرة. أنت لا تبرمجه. أنت تطلب منه فقط التصرف بطريقة معينة. قد لا يستمع.
درجة الحرارة (Temperature) و Top P
أداة أخرى لجعل الروبوت أكثر تحفظًا وأقل عرضة للابتكار هي إعداد درجة الحرارة (temperature). بشكل افتراضي، تكون درجة الحرارة 100، وهي 50% من الحد الأقصى لدرجة الحرارة. يمكنك تقليلها أكثر لجعل الروبوت أكثر تحفظًا أو حتمية، وأقل عرضة للارتكاب أخطاء. لكن عندما تكون درجة الحرارة منخفضة جدًا (مثل 0)، لا يبدو نموذج اللغة الكبيرة بنفس القدر من الإثارة. إنها قرار مقايضة ستضطر إلى اتخاذه.
بالإضافة إلى درجة الحرارة، هناك إعداد Top P. ربما لن تحتاج إليه لكنه موجود في حال احتجت إليه. راجع وثائق OpenAI لمزيد من المعلومات.
إعدادات إضافة Discourse Chatbot لهذا القسم هي:
- chatbot request temperature
- chatbot request top p
المشكلة: دقة نموذج اللغة الكبيرة وتوقيت البيانات
تم تدريب نموذج اللغة الكبيرة على كمية هائلة من البيانات العامة منذ بعض الوقت. نحتاج إلى أن يكون لديه أحدث وأدق المعلومات حول منتدانا وأن يكون دقيقًا قدر الإمكان. الحل هو التوليد المعزز بالاسترجاع (RAG).
سيقوم RAG بالبحث في المنتدى للحصول على معلومات إضافية قبل الرد على المستخدم. كروبوت دعم فني، لا يمكننا الاعتماد فقط على المعرفة المدربة لنموذج اللغة الكبيرة، بل نحتاج إلى أن يبحث الروبوت في منتدانا للحصول على معلومات فنية قبل الرد.
لتنفيذ RAG، تحتاج إضافة Discourse Chatbot إلى إنشاء قاعدة بيانات من «التضمينات» (embeddings) التي تمثل كل منشور في منتدنا كمتجه من «الميزات» الدلالية. يجب تفعيل هذا، لكنني أوصي بالانتظار حتى بعد إعداد استراتيجية التضمينات الخاصة بك، والتي سنغطيها في القسم التالي.
إعدادات إضافة Discourse Chatbot لهذا القسم هي:
- chatbot bot type high trust: RAG
- chatbot bot type medium trust: RAG
- chatbot bot type low trust: RAG
- chatbot embeddings enabled: enabled (بعد إعداد استراتيجية التضمينات)
المشكلة: العديد من منشورات المنتدى غير مفيدة
وجود الروبوت يبحث في منتداك قبل الرد (RAG) أمر رائع، لكنه يطرح مشكلة جديدة. العديد من المنشورات في المنتدى ليست مفيدة جدًا. بعض المنشورات مفيدة، وهذه هي المنشورات التي نريد أن يجدها الروبوت، لكن الكثير منها مجرد محادثات عادية، أو مربكة، أو خاطئة تمامًا. حلنا هو إنشاء قاعدة معرفة (KB) تحتوي فقط على المنشورات التي نريد أن يجدها الروبوت.
لفعل ذلك في إضافة Discourse Chatbot، نستخدم استراتيجية تضمينات الفئات (categories embeddings strategy). تحدد استراتيجية التضمينات أي المنشورات متاحة لروبوت المحادثة عند البحث في المنتدى. نهجنا هو استخدام فئة واحدة غير عامة كقاعدة معرفة للروبوت، لذا اخترنا الفئات كاستراتيجية للتضمينات. يجب تحديد فئة قاعدة المعرفة أيضًا في إعداد embeddings categories.
نستخدم فئة غير عامة (مرئية للموظفين فقط) لأننا نكرر الكثير من المواضيع العامة في هذه الفئة ولا نريد أن يرى المستخدمون التكرارات. إن تكرار المواضيع في فئة خاصة يطرح مشكلتين أخريين.
- إنه جهد كبير لنسخها، بل أسوأ من ذلك هو الحفاظ على النسخ عندما يتم تحديث المواضيع أو الرد عليها.
- المواضيع التي يجدها الروبوت عند البحث في المنتدى ليست مواضيع عامة يجب إعطاء روابطها للمستخدمين كمرجع. نحتاج إلى إرسال روابط المواضيع العامة لنموذج اللغة الكبيرة.
لحل هاتين المشكلتين، قمنا بإنشاء أدوات بسيطة لمساعدتنا على نسخ المواضيع من الفئات العامة إلى فئة قاعدة المعرفة الخاصة بالروبوت، والحفاظ على تحديث نسخ قاعدة المعرفة عند تحديث المواضيع العامة. هي متاحة هنا إذا كنت ترغب في استخدام نفس النهج الذي نستخدمه.
تقوم أدوات قاعدة المعرفة باستيراد موضوع عام كامل إلى فئة قاعدة المعرفة الخاصة كموضوع جديد يحتوي على منشور واحد فقط، عن طريق دمج جميع منشورات الموضوع العام معًا وإضافة رابط لكل منشور عام قبل محتواه. بهذه الطريقة، عندما يجد الروبوت منشور قاعدة المعرفة الخاص في بحث RAG، يحصل على محتوى الموضوع العام الكامل وعناوين URL للمنشورات العامة التي يمكنه تضمينها في الرد كمرجع.
إعدادات إضافة Discourse Chatbot لهذا القسم هي:
- chatbot embeddings strategy: categories
- chatbot embeddings categories: (فئة قاعدة المعرفة الخاصة بك)
- chatbot forum search function include topic titles: disabled (افتراضي)
بالإضافة إلى ذلك، تحتاج إلى إزالة بعض مفاتيح الاستبدال (interpolation keys) من أمر بحث المنتدى لأنها غير ذات صلة عندما تكون المنشورات في فئة خاصة.
- chatbot.prompt.function.forum_search.answer.topic.each.post: إزالة %{username} و %{date}
- chatbot.prompt.function.forum_search.answer.topic.each.topic: إزالة %{title} و %{url}
المشكلة: نموذج اللغة الكبيرة لا يقوم ببحث RAG بما يكفي
الآن بعد أن أصبح لدينا فئة خاصة تحتوي على منشورات مختارة مليئة بالمعلومات الجيدة فقط لتعمل كقاعدة معرفة لروبوت المحادثة، يجب أن يكون كل شيء على ما يرام، أليس كذلك؟ خطأ. كانت المشكلة التالية التي واجهناها هي أن وظيفة بحث RAG لم تُستخدم بما يكفي من قبل نموذج اللغة الكبيرة.
نماذج اللغة الكبيرة مثل GPT-4 ذكية بدرجة كافية لتكون خطيرة. غالبًا ما «تعتقد» أنها تعرف الإجابة بالفعل ولا تحتاج إلى طلب المساعدة، بينما في الواقع يجب عليها إجراء بحث RAG والبحث عن الإجابة في قاعدة المعرفة. لحل هذه المشكلة، نستخدم خيار اختيار الأداة (tool choice) ونجبر نموذج اللغة الكبيرة على استدعاء دالة.
كان بإمكاننا إجبار البحث المحلي في المنتدى، لكننا وجدنا أن مجرد إجبار استدعاء دالة كافٍ، ونريد إعطاء نموذج اللغة الكبيرة الحرية لاستدعاء دالة أخرى أحيانًا بدلاً من إجراء بحث في المنتدى.
إعدادات إضافة Discourse Chatbot لهذا القسم هي:
- chatbot tool choice first iteration: force_a_function
مشكلة: أداء بحث المنتدى
من خلال إجبار استدعاء دالة، يقوم نموذج اللغة الكبيرة ببحث RAG بشكل موثوق تقريبًا لكل رد. لكننا ما زلنا نحصل على نتائج سيئة. لم يكن الروبوت يجد المنشورات الصحيحة في قاعدة المعرفة. مع وجود الكثير من المعلومات في منشوراتنا، كان هناك الكثير من «الضجيج» يتداخل مع قدرة وظيفة البحث على العثور على أفضل منشور.
على سبيل المثال، تخيل أن المستخدم يسأل الروبوت عن كيفية إيقاف صوت تنبيه طابعة HP Laser Jet الخاصة به. قد يقوم نموذج اللغة الكبيرة ببحث في المنتدى باستخدام الاستعلام «HP LaserJet stop beeping». قد يكون هناك منشور في قاعدة المعرفة يتناول هذه المشكلة بدقة، لكن جزء «السؤال» منه (الذي سيتطابق بشكل وثيق مع الاستعلام) يمثل فقط 2% من نص المنشور. الـ 98% المتبقية من النص هي خطوات استكشاف الأخطاء وإصلاحها والإجابات.
البحث المحلي في المنتدى بواسطة إضافة Discourse Chatbot هو بحث دلالي يستخدم تضمينات المتجهات للعثور على المنشور (أو المنشورات القليلة) الأكثر تشابهًا مع الاستعلام. جزء السؤال من أفضل منشور مشابه جدًا للاستعلام، لكنه يمثل فقط 2% من النص العام. الـ 98% المتبقية من النص تجعل المنشور غير مشابه جدًا للاستعلام، لذا لا يحتل المنشور مرتبة عالية في البحث عن ذلك الاستعلام.
حلنا لهذه المشكلة هو إضافة «منشورات طعم» (bait posts) إلى مواضيع قاعدة المعرفة التي تحتوي فقط على نص مشابه لاستعلام البحث. في مثالنا أعلاه، قد نضيف منشور طعم يحتوي فقط على «HP Laser Jet beeping». ستجد وظيفة البحث المحلية في المنتدى منشور الطعم بسهولة لأنه مشابه جدًا للاستعلام. ثم ترسل إضافة Discourse Chatbot محتوى المنشور الحقيقي، الذي يتضمن الإجابة، مرة أخرى إلى نموذج اللغة الكبيرة بدلاً من منشور الطعم.
بما أن مواضيع قاعدة المعرفة لدينا تحتوي على كل محتواها في المنشور الأول، فإننا نستطيع استخدام الردود في مواضيع قاعدة المعرفة كمنشورات طعم. بعد استخدام أدوات قاعدة المعرفة لاستيراد المواضيع إلى قاعدة المعرفة، يمكننا فقط الرد على مواضيع قاعدة المعرفة لإنشاء منشورات طعم.
إعدادات إضافة Discourse Chatbot لهذا القسم هي:
- chatbot forum search function results content type: topic
- chatbot forum search function results topic max posts count strategy: just_enough
- chatbot forum search function results topic max posts count: 1
توفر منشورات الطعم آلية قوية لتحسين قاعدة المعرفة للبحث، لكنك عالق في القيام بذلك بشكل أعمى. لا يمكنك رؤية عمليات البحث أثناء حدوثها، لذا من الصعب تحديد كيفية تأثير منشورات الطعم الخاصة بك على ترتيب البحث بدقة. لمساعدة حل هذه المشكلة، قمنا بإنشاء برنامج صغير يقوم بنفس البحث الدلالي الذي تستخدمه إضافة Discourse Chatbot، لكنه يقوم به محليًا على جهاز الكمبيوتر الخاص بك ويعرض جميع التفاصيل مثل درجات التشابه والترتيب. هذا يجعل من الأسهل بكثير إنشاء منشورات طعم تحسن فعليًا أداء البحث وتحسن قاعدة المعرفة.
أدى الجمع بين RAG، وقاعدة المعرفة المختارة، وإجبار نموذج اللغة الكبيرة على استدعاء دالة، ومنشورات الطعم في النهاية إلى روبوت محادثة دعم فني جيد جدًا!
![]()
هل يهذي نموذج اللغة الكبيرة بعناوين URL
على الرغم من أن الروبوت كان يؤدي جيدًا في الإجابة على الأسئلة الفنية، إلا أنه كان لا يزال يعاني من مشكلة مزعجة وهي الهلوسة. كان يهلوس عناوين URL في الردود على المستخدم بشكل متكرر. هذه مشكلة معروفة بنماذج اللغة الكبيرة، والإجماع العام هو أنه يتعين عليك التعامل معها. لم نرغب في أن يتعامل مستخدمونا معها.
بما أن روبوتنا يقدم دعمًا فنيًا، فإننا نعتمد بشكل كبير على RAG لتزويد نموذج اللغة الكبيرة بمعلومات دقيقة وحديثة. نجبره على إجراء بحث RAG قبل كل رد. نعتمد على نموذج اللغة الكبيرة لـ «فهم» والتواصل مع المستخدم، لكننا نعتمد إلى حد كبير على قاعدة معرفتنا للمعلومات الفنية المستخدمة للإجابة على أسئلتهم. يمكننا استغلال هذا لمنع الروبوت من هلوسة عناوين URL.
حلنا هو إضافة قيد على الروبوت بحيث يمكنه تضمين عنوان URL في ردوده فقط إذا كان هذا العنوان قد جاء من نتيجة بحث في المنتدى. إذا حاول نموذج اللغة الكبيرة تضمين عنوان URL لم يكن موجودًا بالفعل في نتيجة بحث في المنتدى، فإن إضافة Discourse Chatbot ستخبر نموذج اللغة الكبيرة عن المشكلة وتطلب منه المحاولة مرة أخرى. هذا الحل البسيط قد أزال بشكل فعال هلوسة عناوين URL.
إعدادات إضافة Discourse Chatbot لهذا القسم هي:
- chatbot url integrity check: enabled
المشكلة: لا يستطيع روبوت المحادثة التعامل مع كل شيء
لا يمكن لروبوت المحادثة التعامل مع بعض أسئلة الدعم لأنها تتطلب اتخاذ إجراء. على سبيل المثال، إذا كان هناك حاجة إلى تغيير في الحساب أو إرجاع منتج (يتطلب ذلك استرداد أموال و/أو إذنًا)، فإن الروبوت لا يستطيع فعل ذلك.
يعتمد الأمر أيضًا على التعقيد. العديد من الأسئلة مباشرة - إذا كان المستخدم قد بحث في المنتدى بالاستعلام الصحيح لكان قد وجد الإجابة. في هذه الحالة، الروبوت جيد جدًا في البحث في المنتدى، وإيجاد الإجابة، وتقديمها للمستخدم. لكن عندما تتطلب المشكلة تحقيقًا أو تحليلًا معقدًا، غالبًا ما يعطي الروبوت إجابة عامة لا تضيف الكثير من القيمة.
في أي من هاتين الحالتين حيث لا يستطيع الروبوت التعامل مع المشكلة، نحتاج إلى تصعيد الدردشة إلى فريق الدعم البشري لدينا. تمتلك إضافة Discourse Chatbot دالة لنموذج اللغة الكبيرة للقيام بذلك بالضبط، تسمى escalate to staff (التصعيد إلى الموظفين).
إعدادات إضافة Discourse Chatbot لهذا القسم هي:
- chatbot escalate to staff function: enabled
- chatbot escalate to staff groups: (المجموعة التي تريد التصعيد إليها)
نحن نجبر بالفعل نموذج اللغة الكبيرة على استدعاء دالة قبل الرد، لكن الآن هناك سؤال حول أي دالة يجب استدعاؤها. هل يجب على نموذج اللغة الكبيرة استدعاء دالة البحث المحلي في المنتدى (RAG) أم دالة التصعيد إلى الموظفين؟ يجب عليه اتخاذ هذا القرار في كل مرة يرسل فيها المستخدم رسالة. في معظم الأوقات، نريد أن يستدعي البحث المحلي في المنتدى. نريد فقط أن يصعد إلى الموظفين عندما لا يستطيع التعامل مع المشكلة، أو يلاحظ أن المستخدم محبط، أو يطلب المستخدم ذلك صراحةً.
نستخدم الأوامر لتوجيه نموذج اللغة الكبيرة حول كيفية اتخاذ قرار أي دالة يجب استدعاؤها. نصوص الأوامر التي يمكنك تعديلها لهذا الغرض تحت Customize > Text هي:
- chatbot.prompt.system.rag.private
- chatbot.prompt.function.forum_search.description
- chatbot.prompt.function.escalate_to_staff.description
المشكلة: لا يمكن مراقبة الدردشات
عندما يستخدم المستخدمون روبوت المحادثة فعليًا، من المفيد رؤية المحادثات ومراقبة الإجابات السيئة أو الفرص للتحسين. لكن Discourse لا يوفر طريقة للمسؤولين لقراءة الدردشات، وهو أمر منطقي لأن الدردشات عادة ما تكون محادثات خاصة بين أشخاص. ومع ذلك، فإن الدردشات مع روبوت الدعم ليست محادثات خاصة، وإذا لم نتمكن من مراجعتها، فلا يمكننا تحسين الروبوت باستمرار.
الخبر السار هو أن Discourse يوفر للمسؤولين طريقة لتصدير سجل الدردشة الكامل للمنتدى كملف CSV.
لمعالجة هذه المشكلة، قمنا بإنشاء برنامج صغير يحول ملف سجل الدردشة CSV إلى مجموعة من ملفات HTML، واحد لكل مستخدم دردش مع الروبوت. لا يمكننا مراقبة استخدام الروبوت في الوقت الفعلي، لكن مع هذا الحل يمكننا تصدير سجل الدردشة دوريًا، وتحويله إلى ملفات HTML، ومراجعتها للعمل على تحسين روبوتنا.
الخاتمة
بعد التعامل مع كل هذه المشاكل وتخصيص قاعدة المعرفة بشكل كافٍ، تمكنا أخيرًا من السماح للمستخدمين ببدء استخدام روبوت المحادثة.
حتى الآن كانت النتائج مختلطة. من المثير عندما نرى الناس يستخدمون روبوت المحادثة خلال الليالي وعطلات نهاية الأسبوع، ويجدون إجابات لأسئلتهم ويحلون مشاكلهم. إنه مثير للدهشة عندما نرى الناس يحاولون استخدام روبوت المحادثة ولا يحصلون على تجربة رائعة. عادة ما يعني ذلك أن هناك شيئًا مفقودًا أو غير واضح في قاعدة معرفتنا. في بعض الأحيان نرى مشكلة تتطلب تحسينًا في الأمر النظامي. وفي أحيان أخرى من الواضح أن هناك ارتباكًا ونحتاج إلى تحسين طريقة عرض روبوت المحادثة للمستخدم.
لقد رأينا أن حوالي نصف الدردشات تتطلب تصعيدًا إلى الموظفين. حوالي نصف هذه الحالات المصعدة هي حالات لم يكن الروبوت يستطيع فيها التعامل مع الموقف على الإطلاق. النصف الآخر (حوالي 25% من الدردشات) هي حالات كان الروبوت يمكنه فيها حل المشكلة لكنه فشل، وهي فرص للتحسين.
من الدردشات التي لا تؤدي إلى تصعيد إلى الموظفين، قد يكون من الصعب معرفة ما إذا كان المستخدم قد حل مشكلته فعليًا أم أنه استسلم وغادر. من الواضح عندما يعطي الروبوت إجابة خاطئة ما الذي يحتاج إلى تحسين. ليس من الواضح دائمًا عندما يعطي إجابات معقولة وجيدة ما إذا كان المستخدم قد فهم تمامًا وتم حل مشكلته، ما لم يخبرنا بذلك.
بشكل عام، نحن سعداء بهذه النسخة الأولى من روبوت دعم Surety ونتطلع إلى تحسن نموذج اللغة الكبيرة وكذلك تحسين قاعدة معرفتنا بمرور الوقت. العمل على قاعدة المعرفة هو أكبر مهمة لدينا الآن.
أضافت إضافة Discourse Chatbot دعم البحث الهجين (كلا من البحث الدلالي والبحث النصي) منذ أن بدأنا العمل على هذا المشروع، لذا سنقوم على الأرجح بتجربتها قريبًا.
شكرًا لـ @merefield على كل عمله الشاق على إضافة Discourse Chatbot! كان من الممتع العمل معها وقد أثبتت أنها قادرة على المهمة.
إذا قرر أي شخص آخر بناء روبوت محادثة لدعم فني لمنتداه، يرجى التواصل معي وإخباري! سيكون رائعًا وجود آخرين للتعاون معهم ومناقشة الأفكار. سأقوم بالتحديث مرة أخرى عندما تحدث أشياء مثيرة، أو يتم إجراء تغييرات، أو نتعلم شيئًا جديدًا.