في عام 2016 ، في ذروة شعبية chatbots ، قام فريقنا بتعيين مساعدين للأزرار للأعمال. حتى ظهر تفكير مثير للاهتمام: "ماذا لو أننا أتمتة دعم العملاء مع الشبكات العصبية؟" أردنا أن تتعلم روبوتات الدردشة أخيرًا فهم اللغة الطبيعية وتصبح مريحة.
استغرق الأمر أربعة علماء رياضيات وستة أشهر من العمل الشاق ولغة برمجة واحدة جديدة والعديد من الأخطاء - وقمنا بإنشاء مُنشئ يستطيع الجميع من خلاله تجميع مساعد افتراضي مع الذكاء الاصطناعى.
في المواد سوف نقول
- كيف يختلف المساعد الافتراضي عن روبوت الدردشة العادي
- هل صحيح أن المساعدين الظاهريين يفهمون اللغة
- كيف علمنا الروبوت لفهم السياق وكتابة اللغة lialang
- اختبار الحالة: كيف قمنا بالدعم الآلي في ثلاثة بنوك
- إنشاء منصة ليا ومحرك للواجهات
- ثلاث خطوات: كيف تعمل منصة تجميع المساعدين الظاهري (حيث يمكن لأي شخص ، حتى غير المبرمج ، تجميع الروبوت)
دردشة بوت مقابل مساعد الظاهري
تمكنت برامج الدردشة المتقدمة من تسليط الضوء على الكلمات الرئيسية وتقليد الحوار البشري مرة أخرى في الستينيات. ألقى Hippies أنفسهم على LSD ، وجمعت Beatles الملاعب ، وجوزيف Weizenbaum خلق إليزا ، الطبيب النفسي المعالج الذي يعطي احتمالات لكثير من الروبوتات الحديثة ، وحتى علماء النفس.
على سبيل المثال ، في الجملة "والدي يكرهني" ، ردت إليزا على الكلمة "الأب" وسألت: "من يكرهك في العائلة؟" لكن المعالج النفساني روبو لم يفهم جوهر القضايا. تعمل chatbots الحديثة أيضًا: الكلمات الرئيسية ، والنصوص الخطية ، والمحاكاة الساخرة للحوار المباشر.
لكن شيئا ما قد تغير منذ الستينيات: الآن ، بفضل التعلم الآلي وتقنيات البرمجة اللغوية العصبية ، يمكننا تعليم برامج الدردشة لفهم اللغة والسياق الطبيعي. هذا لا يزال تقليدا ، ولكن أكثر وضوحا.
لنرى الفرق ، فلنقارن بين chatbot والمساعد - تخيل أننا بحاجة إلى صنع
سوميلير افتراضي يساعد العملاء في اختيار النبيذ.
المرحلة 1
المرحلة الأولى من chatbot والمساعد الافتراضي هي: نكتشف طلبات المستخدم ونتوصل إلى عبارات يمكنهم كتابتها. ثم نصف كيف سيتصرف الروبوت استجابة لذلك.
الطلب الأساسي واضح - التقط النبيذ. ولكن يمكن أن يكون لهذا الطلب العديد من المعلمات: السبب ، السعر ، البلد ، اللون ، تنوع العنب. ربما يكتب المستخدم على الفور اسم النبيذ الذي يمكن العثور عليه. أو سوف يوضح التفاصيل: "أين تم صنعها؟" أو ربما بدافع الفضول ، سيبدأ في إلقاء الروبوت مع الأسئلة: "أي زجاجة هي أغلى في العالم؟" ، وهلم جرا. علاوة على ذلك ، إلى جانب الطلبات الواردة في القضية ، هناك "مرحبًا" و "وداعًا" و "كيف حالك" وغيرها من عبارات الكلام الصغيرة التي يجب طرحها.
يمكنك تخيل ما لا نهاية ، لكن لا يزال بإمكاننا التنبؤ بجميع أسئلة المستخدمين. عندما يبدو لنا أن المواقف الموصوفة ستكون كافية لتغطية 98٪ من الطلبات ، فإننا نتوقف (على الرغم من ذلك فإن الواقع القاسي ينهار ونكتشف أن 80٪ سيتم تغطيتها في أحسن الأحوال).
ثم نبعث افتراضاتنا حول احتياجات المستخدمين لطلبات محددة - النوايا. تشير النوايا إلى ما يريده المستخدم ، لكن تجاهل المعلومات حول كيفية كتابته عن ذلك. هذه المرحلة هي نفسها بالنسبة لـ chatbots والمساعدين.
قائمة النوايا
النية 1 - أريد أي النبيذالعبارات:
- ساعدني في اختيار النبيذ
- ما النبيذ هل تنصح؟
- أريد أفضل النبيذ
- ...
ما يجب فعله به: اختر أحد أكثر أنواع النبيذ شيوعًا وأبلغ المستخدم بشكل عشوائي.
النية 2 - النبيذ أرخصالعبارات:
- هل هناك أي النبيذ الجيد يصل إلى 1000 روبل؟
- ولكن لا يوجد شيء أرخص؟
- مكلفة للغاية بالنسبة لي
- ...
ما يجب فعله: أضف مرشح سعر للطلب واختر أحد أشهر أنواع النبيذ.
النية 3 - أريد النبيذ للحومالعبارات:
- تقديم المشورة النبيذ إلى شريحة لحم
"سأحصل على طعام غولاش لتناول العشاء." ماذا تشرب؟
- ...
ما يجب فعله حيال ذلك: طلب إلى قاعدة البيانات وفقًا لمعيار "اللحم" ، حدد أحد أشهر أنواع النبيذ وأعلم المستخدم.
... (وهلم جرا المئات من النوايا المختلفة)
النية 290 - لم نفهم المستخدمجمل: أي شيء آخر
ما يجب فعله: اصدار عبارة كعب رديئة: "أنا لا أعرف ما تعنيه ، لكن البيانو مبهج في أي وقت من السنة."
المرحلة 2
في هذه المرحلة ، نبدأ في إنشاء خوارزمية يعمل بها الروبوت. هنا تشابه chatbot والمساعد الظاهري ينتهي.
عند تشفير chatbot ، يحدد المبرمج يدويًا الكلمات الرئيسية لكل نية ، وعندما يكتب المستخدم ، سيبحث الروبوت عن هذه الكلمات الرئيسية في العبارة.
عند تطوير المساعد ، يعلم المبرمج خوارزمية لمقارنة النسخ المتماثلة للمستخدم وفقًا للمعنى المعجمي. هذا يتيح لك العثور على أقرب نية.
كيف يعمل: جدول مقارنة chatbots والمساعدين الظاهري هل صحيح أن المساعدين الظاهريين يفهمون اللغة؟
يمكن أن تميز الخوارزميات بعض العبارات عن غيرها - ولكن هل يمكننا القول أن الروبوتات تفهم اللغة حقًا؟
للإجابة على هذا السؤال ، دعنا نعود إلى مقارنة المعنى المعجمى للعبارات. معنى الكمبيوتر هو أنواع البيانات المفهومة: الأوتار والأرقام ومجموعات منها. لذلك ، يواجه المبرمج مهمة تحويل النص المصدر إلى نموذج مناسب لعمليات المقارنة الرياضية - متجه.
vectorize(" ") = (0.004, 17.43, -0.021, ..., 18.68) vectorize(" ") = (0.004, 19.73, -0.001, ..., 25.28) vectorize(" ") = (-8.203, 15.22, -9.253, ..., 10.11) vectorize(" ") = (89.23, -68.99, -10.62, ..., -0.982)
بالنسبة لمهامنا ، يجب أن تكون متجهات العبارات القريبة معجمياً قريبة من بعضها البعض ، وينبغي أن تكون المسافات البعيدة معجمياً بعيدة ، ويجب أن يكون متجه العبارات من أوبرا أخرى بعيدًا جدًا. على سبيل المثال ، "أريد النبيذ" أقرب إلى "أريد النبيذ الأبيض" من "لا أريد النبيذ". وبعيدا عن "هجمات المريخ".سوف تكون الشبكة العصبية المدربة تدريباً صحيحاً قادرة على استنتاج معنى معجمي في هذه المتجهات. اتضح ، من أجل مقارنة معنى الجملتين ، تحتاج إلى مقارنة المتجهات الخاصة بهم.
لذلك ، فإن إجابة السؤال "هل تفهم الروبوتات اللغة؟" ستكون هكذا: فهم لا يفهمون كيف يكون الشخص ، فهم يعرفون فقط كيف يقارنون المعاني اللغوية ولا يخلطون بين الدافئ واللين. ولكن عندما تستطيع الخوارزميات تقديم تحسينات موحية واستخلاص استنتاجات ، فإننا نقول بصراحة: نعم ، لقد وصل التفاهم. في غضون ذلك ، "فهم اللغة" مجرد عبارة تسويقية جميلة.
في الواقع ، يعمل الروبوت فقط مع القياس ، مثل طفل عمره ثلاث سنوات. ومع ذلك ، إذا قدمت للطفل عددًا كافيًا من الأمثلة ، فسيكون قادرًا على التظاهر بأنه فكري ويقود المناقشة. يعمل المشغل "المباشر" لخط الدعم الأول بنفس الطريقة - فهم يحددون مجموعة من المواقف ويخبرونهم كيف يتصرفون بها. لذلك ، فإن المساعدين الظاهري مناسبين تمامًا لدعم التشغيل الآلي.
كيف علمنا الروبوت لفهم السياق: ليالانغ
للحصول على الدعم الطبيعي ، يحتاج الإنسان الآلي إلى القليل من "فهم" اللغة الطبيعية - من المهم أن يتمكنوا من الإجابة على الأسئلة والبقاء في السياق. للقيام بذلك ، كتبنا lialang ، وهي لغة ترميز الحوار حيث يمكن وصف البرامج النصية ونقلها إلى الروبوت.
تتمثل المهمة الرئيسية لمبرمج lialang في وصف جميع المواقف التي يمكن أن تحدث في حوار بين الشخص والآلة. للقيام بذلك ، في لغتنا يمكنك ربط أسماء النوايا والإجراءات.
النظر في مثال بسيط - تحية:
if intent() { reaction(_) }
يبدو كأنه رمز عادي ، لكن الشبكة العصبية تعمل خلف بنية النية (...) - يصف lialang الحوار في الأنماط العامة ("إذا طُلب منك شيء ما") باستخدام تصميمات البرمجة المعتادة. بالطبع ، لكي ينجح هذا ، تحتاج إلى تطبيق تقنيات التعلم الآلي NLU ، لأنه يمكن للمستخدم كتابة طلبه كما يحلو له.
وهنا كيفية وصف المواقف السياقية.قدمنا "كان" بناء لالتقاط تحيات غير لائقة في أي مكان في الحوار:
if intent() { if was_reaction(_) { reaction(___) } else { reaction(_) } }
تقول: ليا ، إذا قالوا مرحباً لك ، قل مرحباً ردًا. وإذا بعد ذلك قالوا مرة أخرى "مرحبًا" - قل أنك قلت مرحبًا بالفعل.
رد الفعل هو إجراء يجب على ليا القيام به استجابةً لنية. في 95 ٪ من الحالات ، وهذا هو مجرد نص. ولكن يمكن للروبوت أيضًا استدعاء وظيفة في الكود ، أو تبديل الاتصالات إلى المشغل أو تنفيذ إجراءات معقدة أخرى.
يوجد رمز إرسال النص والوظائف بشكل منفصل عن اللغة - حيث تصف اللغة المواقف ببساطة قدر الإمكان.
الآن دعونا نحاول كتابة شيء أكثر تعقيدًا - في دردشة مع البنك ، غالبًا ما يطلب العملاء تفاصيلهم. دعونا نتعلم كيفية إرسالهم إلى الدردشة والبريد باستخدام lialang.
if intent(_) or intent(___) { reaction(___) { if intent(__) { reaction(___) } } } if intent(___) { reaction(___) }
يتم وصف حالتين هنا:
- ليا ، إذا طُلب منك إرسال التفاصيل - أرسلها إلى الدردشة. إذا بعد أن سألوا "من الضروري لمكتب البريد" ، فأرسلهم إلى مكتب البريد.
- ليا ، إذا طُلب منك على الفور إرسال التفاصيل إلى البريد - أرسل التفاصيل إلى البريد.
حتى lialang تقوم بعملها - تعمل في السياق. حتى لو كتب شخص ما "عن طريق البريد ، من فضلك ،" سوف يفهم الروبوت أننا نتحدث عن التفاصيل.
لقد تعلمت ليا دعم السيناريوهات المعقدة - في الوقت اللازم للمستخدم ، ستحصل على / تضع بيانات من / إلى CRM ، أو ترسل رسالة نصية ، أو تساعد في الدفع أو تتحدث عن الحياة.
تدريجيا ، قمنا بتحسين اللغة: لقد أضفنا المتغيرات والوظائف والكيانات (التواريخ والعناوين وأرقام الهواتف والأسماء ، وما إلى ذلك) ، والدول ، وغيرها من التركيبات المفيدة. لذلك أصبح أكثر ملاءمة للكتابة عليه.
اختبار الحالة: كيف قمنا بالدعم الآلي في ثلاثة بنوك
بمجرد أن صنعنا هذه التكنولوجيا ، كان لابد من استكمالها بشكل عاجل - كان لدينا عميلنا الأول. يحتاج VTB لأتمتة الدعم في بنك إنترنت جديد لأصحاب المشاريع.
بدأنا بنجاح كبير - خاصة بالنسبة للمنتج الذي تم إنشاؤه في أربعة أشهر. كان روبوتنا المختلط لـ VTB يعتمد على الشبكات العصبية وكان فعالًا على الفور: لقد أجاب على أكثر من 800 سؤال ، ودعم العديد من السيناريوهات المعقدة (البيانات ، وتغييرات التعريفة الجمركية ، وإعدادات المستخدم) وتحدث مثل الشخص. نتيجة لذلك ، خلال شهرين ، خفضت Lia من حمل الدعم بنسبة 74٪. أصبح من الواضح: الفكرة مع دعم التشغيل الآلي.

علاوة على ذلك ، على أساس Lia ، قمنا تلقائيًا بتطبيق الأسئلة الشائعة في Rocketbank و DeloBank - وأغلقا خلال أسبوعين 32٪ من التطبيقات دون وجود مشغلين.
يبدو أن الأولاد جاءوا إلى النجاح. ومع ذلك ، بعد أول العملاء أصبح من الواضح أن المفهوم بحاجة إلى تغيير. لقد كانت جحيمًا - كان علينا تعديل النصوص يدويًا وإجراء التعديلات وتطوير الفروع. نفس الشيء مع روبوتات بسيطة ، فقط أصعب وتتطلب المزيد من القوة. في هذه الحالة ، كان من الصعب الحجم.
ثم قررنا إنشاء أداة يتمكن العميل من خلالها من تجميع مساعد مساعد. وسنساعد فقط في البرامج التعليمية وتثقيف المستخدمين.
ليا منهاج ومحرك للواجهات
لذلك ، قررنا إنشاء
منصة لأولئك الذين لا يفهمون التطور. على الرغم من أن lialang يحتوي على أقل من عشرة تصميمات مختلفة ، إلا أن كل مدير سوف يعلمه كيفية إنشاء روبوت خاص به. المديرين يحبون الماوس.
لذلك ، بدأنا التفكير في مثل هذه الواجهة التي ستكون قادرة على القيام بكل ما يمكن أن يفعله lialang. لن يواجه مشاكل مع الفروع المتداخلة ، والانتقالات من برنامج نصي إلى آخر ، والأهم من ذلك - ليس فقط مبرمجينا ، ولكن كل من يريد إنشاء نصوص.
انظر كيف يبدو:
تعد الحوارات أمرًا غير خطي ، كما أن كتابة محرك عالمي لجميع أنواع برامج المحادثة أمر صعب للغاية. ولكن قبل أن نفكر في المخططات ، كان لدينا بالفعل lialang - أصبح المحرك.مهما كان مصممو الواجهة ، فلن نقوم بتشفير أدمغة ذلك ، ولكننا نكتب فقط مترجم صغير للترميز من الواجهة إلى كود lialang. إذا تمت إعادة تهيئة الواجهة ، فسوف نحتاج فقط إلى تغيير المترجم - بفضله يمكن أن يوجد أمر الواجهة والأمر الأساسي بشكل منفصل.
كيف يعمل النظام الأساسي لإنشاء مساعدين افتراضيين؟
لتجميع المساعد الافتراضي الخاص بك في ليا ، يحتاج المستخدم إلى المرور عبر ثلاث مراحل.
الخطوة 1. قم بتنزيل سجل الدردشة مع المستخدمين حتى يفهم الروبوت ويسلط الضوء على السيناريوهات الرئيسية
إذا كان لدى العميل سجل من المحادثات مع المستخدمين ، فيمكنه تحميلها على النظام والحصول على مجموعات من أكثر الاستعلامات شيوعًا. سيكون من المريح جدا خلق نوايا منهم.

بمرور الوقت ، سوف تزيد فعالية ليا. يتم توزيع الرسائل التي لم يتمكن الروبوت من الإجابة عليها مرة أخرى في مجموعات: على سبيل المثال ، "من أنت؟" ، "من أنت؟" ، "ما اسمك؟" و "هل أنت روبوت؟" سوف تقع في مجموعة واحدة. وبالتالي فإن النظام الأساسي يتعلم بشكل شبه تلقائي: يرى المستخدم مكان الفجوة ويغلقها ، مضيفًا سيناريوهات جديدة - ونتيجة لذلك ، ترتفع نسبة الطلبات المغطاة من 30٪ إلى 70٪ في ستة أشهر.
إذا لم يكن هناك سجل للمراسلات ، فإننا نتخطى هذه الخطوة ونبدأ فورًا بالخطوة الثانية: نتوقع الطلبات التي سيتحول المستخدمون إلى المساعد.
الخطوة 2. نكتب القصد: خيارات 10-20 لطلبات المستخدم الأكثر شيوعا
في المرحلة الثانية ، نصف النوايا بناءً على أكثر 10-20 استفسارات شعبية: هذا العدد من الخيارات يكفي بفضل الشبكات العصبية. لذا فإن عبارة مثل "أريد أن أطلب النبيذ" تعلم الروبوت لمعرفة طلبات المستخدم المماثلة: على سبيل المثال ، "الحصول على النبيذ" أو "طلب النبيذ".

مساعد آخر يتفهم الجوهر ويستخلصه: أسماء المدن وأرقام الهواتف والعناوين والطوابع الزمنية والفترات والتواريخ واللعنات - حتى لو قلت "متعب ، أحضر علبة من النبيذ غدًا".
بالإضافة إلى ذلك ، يمكن للمستخدمين إضافة كائنات خاصة بهم ووضع علامات على عبارات التدريب يدويًا حتى يتعلم المساعد بشكل أسرع. هذه هي واحدة من أقوى ميزات النظام الأساسي ، بفضله يمكنه إنشاء روبوتات تعمل بشكل أسوأ من مشغل بشري.
الخطوة 3. إنشاء سيناريو: يصف العديد من الإجابات أو الإجراءات
هنا يجب على المستخدم التوصل إلى إجابات لطلبات المستخدم. عادة ما يأخذ 95٪ من المشروع المتوسط سيناريو سؤال وجواب بسيط - إجابات على الأسئلة الشائعة.

بالمناسبة ، يمكن للمساعد الاستجابة بالصور ومقاطع الفيديو والملفات الصوتية ، وإذا لزم الأمر ، إرسال الموقع الجغرافي.
إن الانتقال إلى البناء مفيد بشكل خاص - بفضله ، يمكن لـ Lia التبديل من سيناريو إلى آخر ، ثم العودة مرة أخرى ، لحل العديد من المشكلات. هذا مفيد إذا كنت بحاجة إلى التنحي في الحوار ، ولكن بعد ذلك العودة إلى المسار الصحيح: على سبيل المثال ، طرح سؤال توضيحي.
مثال الحوار الانتقال إلى:المساعد: نحتاج إلى توضيح عنوان التسليم ، لأن المستلم لا يستجيب.
العميل: وماذا؟ أي ترتيب؟ (JumpTo لتوضيح الطلب)
مساعد: أجل 21 أغسطس ، أنتيجال ، "أونو" Malbec.
المساعد: إذن هل يمكننا توضيح عنوان التسليم الحالي؟ (ارجع إلى النص الرئيسي)
عندما يريد المنشئ مساعده ليس فقط للرد بالنص ، ولكن لاتخاذ الإجراءات ، سيكون قادرًا على الاتصال بمبرمج لكتابة قصاصات JS للمتخصص. نحن نسمح لك بتشغيل جافا سكريبت مباشرة خلال البرامج النصية: الوصول إلى واجهة برمجة التطبيقات الخارجية ، إرسال بريد إلكتروني أو القيام بأي إجراءات معقدة أخرى.
4. ملخص
يمكن للمساعد الاندماج مع أي شيء: التحدث إلى شخص ما على الهاتف أو في برامج الرسائل الفورية أو عنصر واجهة المستخدم الذي سينشره العميل على الموقع.
يستغرق تجميع المساعد الذكي في المنصة من ساعتين إلى شهر. ثم يتعلم الروبوت فهم الطلبات بشكل واقعي والتعرف على الأنماط - يستغرق حوالي ستة أشهر (كل هذا الوقت يشرف عليه شخص حي). يمكن أن تقوم الأعمال بمعظم المهام الروتينية للفتاة الروبوتية ليا: من تنسيق التسليم واستدعاء سيارة أجرة إلى عملاء استشاريين.

بالمناسبة ، لقد قمنا بالفعل بتحويل مشاريع مع البنوك إلى المنصة. إنهم يعملون كذلك ، لكنهم أكثر سهولة في الإشراف عليها.
في المستقبل القريب ، نخطط لإضافة مستخرجين ، مما سيتيح لمستخدمينا استخراج بيانات أكثر تعقيدًا (على سبيل المثال ، سيفهم الروبوت عبارة "يوم بعد غد بعد الغداء"). سنقوم أيضًا بوضع اللمسات الأخيرة على التحكم في الإصدار حتى يتمكن العملاء من استرجاع إصدارات المشاريع بسرعة. وكذلك سنطلق نظام دور المنظمة.
نتوقع أن تكون
توقعات Gartner صحيحة - وفي عام 2022 ، سيخضع ما يصل إلى 70٪ من جميع تفاعلات العملاء لنوع من الذكاء الاصطناعي. وفقًا لفكرتنا ، سيساعد المصممون مثل Lia في نقل خدمة العملاء إلى الروبوتات بشكل أسرع.