Chatbot z Pytonem : Dodanie domyślnej odpowiedzi do zamiaru

https://szkolazpieklarodem.pl/

Dodamy trzy możliwe odpowiedzi, które zostaną zwrócone użytkownikowi po napotkaniu place_order_intent.

Jasne. Co chciałbyś dzisiaj zamówić?

Zdecydowanie, co chciałbyś dzisiaj mieć?

Oczywiście, postaram się Ci w tym pomóc. Co masz ochotę zjeść

Dzisiaj?

Teraz następnym krokiem jest poczekanie, aż użytkownik wprowadzi żądane elementy i przeanalizuje je.

Teraz utworzymy nową intencję, która powie nam, co użytkownik faktycznie zamierza zamówić (tj. produkty spożywcze).

Tworzymy nową intencję o nazwie items_description Najpierw dodajemy nasze standardowe wyrażenie użytkownika.

Jedna kluska z kurczakiem i dwie sajgonki.

Kiedy dodajemy wyrażenie użytkownika, możemy wybrać konkretne słowa, które chcemy określić jako elementy intencji. Może to być ilość, data lub godzina, lokalizacja itp., które są wstępnie zdefiniowane, ale możemy stworzyć własne encje, klikając przycisk Utwórz nowy w prawym dolnym rogu po wyświetleniu wyskakującego okienka. Zaznacz słowo w wypowiedzi, dla którego chcesz uczynić wybrane słowo jednostką. Następnie otwiera wyskakujące okienko umożliwiające utworzenie własnego podmiotu. W tym przykładzie powinniśmy być w stanie przeanalizować dane w ładnym, czytelnym formacie, abyśmy mogli ich używać w dowolnym języku programowania. Format JSON to najlepszy format, jaki możemy zastosować we współczesnych aplikacjach wieloplatformowych. Dialogflow zwraca dane w formacie JSON domyślnie, który można przeanalizować tak, aby wyglądał podobnie do poniższego kodu. Zawsze sugeruje się, aby przechowywać jak najmniej danych; nie przeciążaj odpowiedzi API, podając zbyt dużo danych. Pamiętaj, że to wszystko wiąże się z kosztami skali.

{

“food_items”: {

“chicken dumpling”: 1,

“Spring rolls”: 2

}

}

Element Opis Zamiar i podmioty przynależne

Możemy wybrać Jeden i Dwa i zdefiniować je jako @sys.number, co jest niczym innym jak typem danych. Utworzymy nową jednostkę o nazwie food_items_entity, aby identyfikować produkty spożywcze. Jeśli spojrzysz na rysunek , przekonasz się, że mamy ENTITY nazwaną jako food_items_ Entity, ale kiedy wybieramy słowa, wówczas nazwiemy parametry jako food_items_ Entity1 i food_items_entity2; podobnie jest w przypadku ilości żywności, która jest liczbą, w przypadku której pierwszy i drugi parametr nazywamy odpowiednio ilością1 i ilością2.

To, co tutaj zdefiniujemy, pomoże nam zrozumieć odpowiedź JSON, którą otrzymamy po uruchomieniu intencji. Powinniśmy mieć tam wszystkie te wartości, aby móc kontynuować pracę z chatbotem. Zatem wybierz całe słowo lub kombinację słów i kliknij Utwórz nowe. Pojawi się nowy ekran umożliwiający tworzenie bytów; po prostu wprowadź nazwę tego nowego podmiotu i zapisz. Wróćmy teraz do naszych zamiarów dla items_description i powinieneś zobaczyć coś takiego jak na rysunku 3-6. Dodawaj więcej wyrażeń użytkownika do wyrażeń szkoleniowych i definiuj w nich encje. Dodaliśmy na razie cztery wypowiedzi i tak wyglądają. Zamierzamy dodać ich jak najwięcej, aby nasz agent mógł lepiej klasyfikować intencje. Dialogflow posiada także funkcję udostępniania danych szkoleniowych agenta. Dostęp do danych szkoleniowych wykorzystanych w tej książce można uzyskać za pośrednictwem strony internetowej Apress: https://github.com/Apress/buildingchatbots-with-python. Jak widać na rysunku , na którym staramy się dodać więcej przykładów w opisie przedmiotu w naszym agencie dialogflow.

W tym momencie zapisaliśmy nasz zamiar, a nasz agent zakończył szkolenie modeli. Jeśli po prawej stronie wpiszemy następujące zdanie, powinniśmy zobaczyć następującą odpowiedź JSON:

Jeden pierożek z kurczakiem i dwie sajgonki. Odpowiedź z intencji:

{

“id”: “e8cf4a44-6ec9-49ae-9da8-a5542a80d742”,

“timestamp”: “2018-04-01T21:22:42.846Z”,

“lang”: “en”,

“result”: {

“source”: “agent”,

“resolvedQuery”: “One chicken dumpling and two spring rolls”,

“action”: “”,

“actionIncomplete”: false,

“parameters”: {

“quantity1”: 1,

“food_items_entity1”: “chicken dumpling”,

“quantity2”: 2,

“food_items_entity2”: “spring rolls”

},

“contexts”: [],

“metadata”: {

“intentId”: “0b478407-1b37-4f9a-8779-1866714dd44f”,

“webhookUsed”: “false”,

“webhookForSlotFillingUsed”: “false”,

“intentName”: “items_description”

},

“fulfillment”: {

“speech”: “”,

“messages”: [

{

“type”: 0,

“speech”: “”

}

]

},

“score”: 1

},

“status”: {

“code”: 200,

“errorType”: “success”,

“webhookTimedOut”: false

},

“sessionId”: “e1ee1860-06a7-4ca1-acae-f92c6e4a023e”

}

Jeśli spojrzysz na sekcję parametrów odpowiedzi JSON, zobaczymy

{

“quantity1”: 1,

“food_items_entity1”: “chicken dumpling”,

“quantity2”: 2,

“food_items_entity2”: “spring rolls”

}

Możemy łatwo napisać kod w Pythonie, aby przekonwertować JSON na zamierzony format, o którym mówiliśmy.

CZY MOŻESZ TO ZROBIĆ?

Po prostu przetestuj swoje umiejętności w zakresie języka Python i spróbuj napisać kod, który odczytuje kod JSON tak jak poprzednio i zwraca przynależną do niego ilość oraz artykuł spożywczy w innym formacie JSON, o którym mówiliśmy wcześniej.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *