كيانات منصة Yandex.Dialogues

تم إجراء هاكاثون على الإنترنت لتطوير مهارات أليس يوم السبت الماضي. إنه لأمر مؤسف أن لا أحد كتب عن النتائج هنا ، فمن الغريب قراءة قصص الفائزين. ولكن نظرًا لعدم وجود متطوعين ، سأشارك قصتي.



أنا أقوم بإنشاء واجهة صوتية لإدارة حساب الوساطة ، لقد كتبت بالفعل عن ذلك على Habré - Alice ، اشترِ Yandex . في مرحلة ما ، كنت بحاجة إلى استخراج السعر بعملات مختلفة من الطلب. أنا متأكد من أنني لست أول من واجه مثل هذه المهمة ، لذلك حاولت العثور على نوايا جاهزة أو كيانات مسماة على GitHub ، لكنني لم أتمكن من العثور على أي شيء. كان هناك هاكاثون على الأنف ، اعتقد العديد من المطورين في مكان واحد ، إذا شارك الجميع أفضل ممارساتهم ، فستكون هناك مكتبة كاملة من الكيانات. هذه هي الطريقة التي ولدت بها فكرة مستودع مكتبة الكيان.



الكيانات المخصصة في مربعات الحوار



عندما أقول للعمود الذكي "شراء حصة واحدة من Yandex" ، يمر الخطاب بالسحر الداخلي لمنصة Yandex.Dialogi ، ثم ينتقل إلى ربط الويب الذي حددته باعتباره معالج المهارات. هذا ما يأتي في المعالج:



  "request": {
    "command": "   ",
    "original_utterance": "   ",
    "nlu": {
      "tokens": [
        "",
        "1",
        "",
        ""
      ],
      ...
      "intents": {
        "market.order": {
          "slots": {
            "amount": {
              "type": "YANDEX.NUMBER",
              "tokens": {
                "start": 1,
                "end": 2
              },
              "value": 1
            },
            "unit": {
              "type": "OperationUnit",
              "tokens": {
                "start": 2,
                "end": 3
              },
              "value": "share"
            },
            "figi": {
              "type": "EFigi",
              "tokens": {
                "start": 3,
                "end": 4
              },
              "value": "BBG006L8G4H1"
            },
            "operation": {
              "type": "OperationType",
              "tokens": {
                "start": 0,
                "end": 1
              },
              "value": "buy"
            }
          }
        }
      }
    },
    ...
  },


انتبه إلى الفتحة figiالتي تحتوي على معرف سهم Yandex ، ما يسمى FIGI (Financial Instrument Global Identifier) ​​، وهو مطلوب للتفاعل مع واجهة برمجة تطبيقات منصة Tinkoff Investments. نوع بيانات EFigi هو كيان مخصص وصفته في قسم الكيانات عند إنشاء مهارة في منصة Yandex.Dialogi. إليك مقتطف من الوصف:



entity EFigi:
    values:
        BBG005DXJS36:
            %exact
            TCS
            %lemma
            ()?
            ()?
            ()?
               ()?
        BBG006L8G4H1:
            %exact
            YNDX
            %lemma
            
            
        BBG004730JJ5:
            %exact
            MOEX
            %lemma
             
            
        BBG002B2J5X0:
            %exact
            KRKNP
            %lemma
            [   ]
            [    ]
...


بفضل آلية الكيان ، في كود المعالج ، لست بحاجة إلى القيام بمعالجات إضافية على بيانات الإدخال للحصول على FIGI. يحول النظام الأساسي للحوار اسم الأمان إلى FIGI لي.



أنا أستخدم EFigi كنحو نحوي ونوع الفتحة في النوايا. النوايا هي تعبيرات منتظمة عن المنشطات في حوارات. تساعد المقاصد Dialogs على فهم البيانات التي يجب استرجاعها من طلب المستخدم وتمريرها إلى المعالج. فيما يلي مثال على نية أمر شراء / بيع أوراق مالية في السوق بسعر السوق:



slots:
    operation:
        source: $Operation
        type: OperationType
    figi:
        source: $Stock
        type: Efigi
    amount:
        source: $Amount
        type: YANDEX.NUMBER
    unit:
        source: $Unit
        type: OperationUnit
root:
    $Operation [$Amount $Unit $Stock]
$Operation:
    $OperationType
$Amount:
    $YANDEX.NUMBER
$Unit:
    $OperationUnit
$Stock:
    $EFigi


هذا مشابه للتعبيرات العادية.



مكتبة الكيانات للحوارات



خلال الهاكاثون لتطوير مهارات Alice ، قمت بإنشاء مستودع alice -كييفات ، مكتبة ، دفعت كيان EFigi هناك وذهبت إلى GitHub للبحث عن المستودعات التي تحتوي على وصف للكيانات المخصصة. توقعت العثور على المئات من المستودعات ، والاتصال بالمطورين وعرض إرسال طلبات السحب إلى مكتبة الكيان.



لقد بحثت عن المستودعات بواسطة العلامات: yandex-Dials ، alice-skills ، yandex-alice و alice-sdk. اتضح أن عددًا قليلاً جدًا من الأشخاص يستخدمون العلامات على GitHub ، وتمكنت من العثور على مستودع واحد فقط يحتوي على ملف يصف كيان ELang. بالصدفة ، تبين أن مؤلف المستودع هو ديفيد ، أحد منظمي هاكاثون. اقترحت على ديفيد إضافة كيان ELang إلى المكتبة وتلقيت طلب سحب منه بعد بضع دقائق.



تجاهل الأعضاء الآخرون في الهاكاثون عبر الإنترنت رسائل الدردشة الخاصة بي باقتراح لتجديد مكتبة الكيان. ربما ، في خضم النضال ، لم يكن هناك وقت لذلك. لنكون صادقين ، شعرت بالإحباط بعض الشيء ، ولكن في النهاية أضفت رابطًا إلى المستودع في نفس السوء / رائع - أليس .



بدلا من الاستنتاج



عزيزي Alice Skill Developers ، يرجى تحميل شفرة المصدر إلى GitHub كلما أمكن ذلك حتى يتمكن الآخرون من التعلم.



يرجى إضافة مربعات حوار yandex ومهارات alice وعلامات yandex-alice إلى المستودعات حتى يتمكن الآخرون من العثور على مهاراتك في GitHub.



قم بإنشاء دليل في المستودع الخاص بك entitiesووضع ملفات وصف الكيان التي كتبتها للمهارة هناك حتى يتمكن الآخرون من إعادة استخدام عملك.



قبل وصف كيان جديد ، ألق نظرة على مكتبة الكيان ، فقد تحتوي بالفعل على ما تحتاجه هناك. وإذا لم يكن الأمر كذلك ، فيرجى إضافة الكيانات الخاصة بك إلى المكتبة.



All Articles