|
4 weeks ago | |
---|---|---|
.. | ||
README.md | 4 weeks ago | |
assignment.md | 4 weeks ago |
README.md
Зрозуміти мову
Скетчноут від Nitya Narasimhan. Натисніть на зображення, щоб побачити його у більшому розмірі.
Тест перед лекцією
Вступ
У попередньому уроці ви перетворювали мову на текст. Щоб це використовувати для програмування розумного таймера, ваш код повинен розуміти, що було сказано. Ви могли б припустити, що користувач скаже фіксовану фразу, наприклад, "Установи таймер на 3 хвилини", і розібрати цей вираз, щоб визначити тривалість таймера. Але це не дуже зручно для користувача. Якщо користувач скаже "Установи таймер на 3 хвилини", ви або я зрозуміємо, що він має на увазі, але ваш код цього не зрозуміє, оскільки він очікує фіксовану фразу.
Ось тут і стає в пригоді розуміння мови, використовуючи моделі штучного інтелекту для інтерпретації тексту та повернення необхідних деталей. Наприклад, модель може зрозуміти як "Установи таймер на 3 хвилини", так і "Установи 3-хвилинний таймер", і визначити, що потрібен таймер на 3 хвилини.
У цьому уроці ви дізнаєтеся про моделі розуміння мови, як їх створювати, навчати та використовувати у своєму коді.
У цьому уроці ми розглянемо:
- Розуміння мови
- Створення моделі розуміння мови
- Наміри та сутності
- Використання моделі розуміння мови
Розуміння мови
Люди використовують мову для спілкування вже сотні тисяч років. Ми спілкуємося словами, звуками або діями та розуміємо, що сказано, як значення слів, звуків чи дій, так і їхній контекст. Ми розуміємо щирість і сарказм, що дозволяє одним і тим самим словам мати різні значення залежно від тону голосу.
✅ Подумайте про деякі розмови, які ви мали нещодавно. Скільки з цих розмов було б важко зрозуміти комп'ютеру через необхідність у контексті?
Розуміння мови, також відоме як розуміння природної мови, є частиною галузі штучного інтелекту, яка називається обробкою природної мови (NLP), і займається розумінням тексту, намагаючись зрозуміти деталі слів або речень. Якщо ви використовуєте голосового помічника, такого як Alexa або Siri, ви вже користуєтеся сервісами розуміння мови. Це ті самі сервіси штучного інтелекту, які перетворюють "Alexa, увімкни останній альбом Тейлор Свіфт" на танці моєї доньки у вітальні під її улюблені пісні.
💁 Комп'ютери, незважаючи на всі свої досягнення, все ще мають довгий шлях до справжнього розуміння тексту. Коли ми говоримо про розуміння мови комп'ютерами, ми маємо на увазі не щось настільки ж складне, як людське спілкування, а лише здатність брати слова та витягувати ключові деталі.
Як люди, ми розуміємо мову, не замислюючись. Якщо я попрошу іншу людину "увімкнути останній альбом Тейлор Свіфт", вона інстинктивно зрозуміє, що я маю на увазі. Для комп'ютера це складніше. Йому потрібно взяти слова, перетворені з мови на текст, і визначити такі деталі:
- Потрібно відтворити музику
- Музика належить виконавцю Тейлор Свіфт
- Це конкретний альбом, що складається з кількох треків у певному порядку
- У Тейлор Свіфт багато альбомів, тому їх потрібно відсортувати за хронологічним порядком, і потрібен найновіший
✅ Згадайте інші речення, які ви говорили, роблячи запити, наприклад, замовляючи каву або просячи члена сім'ї передати вам щось. Спробуйте розбити їх на частини інформації, які комп'ютер повинен витягнути, щоб зрозуміти речення.
Моделі розуміння мови — це моделі штучного інтелекту, які навчаються витягувати певні деталі з мови, а потім навчаються для виконання конкретних завдань за допомогою перенесення навчання, так само як ви навчали модель Custom Vision, використовуючи невеликий набір зображень. Ви можете взяти модель, а потім навчити її на тексті, який ви хочете, щоб вона розуміла.
Створення моделі розуміння мови
Ви можете створювати моделі розуміння мови за допомогою LUIS, сервісу розуміння мови від Microsoft, який є частиною Cognitive Services.
Завдання - створення ресурсу для авторства
Щоб використовувати LUIS, вам потрібно створити ресурс для авторства.
-
Використовуйте наступну команду, щоб створити ресурс для авторства у вашій групі ресурсів
smart-timer
:az cognitiveservices account create --name smart-timer-luis-authoring \ --resource-group smart-timer \ --kind LUIS.Authoring \ --sku F0 \ --yes \ --location <location>
Замініть
<location>
на місце, яке ви використовували під час створення групи ресурсів.⚠️ LUIS недоступний у всіх регіонах, тому якщо ви отримаєте наступну помилку:
InvalidApiSetId: The account type 'LUIS.Authoring' is either invalid or unavailable in given region.
виберіть інший регіон.
Це створить безкоштовний ресурс для авторства LUIS.
Завдання - створення програми розуміння мови
-
Відкрийте портал LUIS за адресою luis.ai у вашому браузері та увійдіть у систему, використовуючи той самий обліковий запис, який ви використовували для Azure.
-
Дотримуйтесь інструкцій у діалоговому вікні, щоб вибрати вашу підписку Azure, а потім виберіть ресурс
smart-timer-luis-authoring
, який ви щойно створили. -
У списку Conversation apps натисніть кнопку New app, щоб створити новий додаток. Назвіть новий додаток
smart-timer
і встановіть Culture на вашу мову.💁 Є поле для ресурсу прогнозування. Ви можете створити другий ресурс лише для прогнозування, але безкоштовний ресурс для авторства дозволяє 1 000 прогнозів на місяць, чого має бути достатньо для розробки, тому це поле можна залишити порожнім.
-
Прочитайте посібник, який з'явиться після створення додатка, щоб зрозуміти кроки, необхідні для навчання моделі розуміння мови. Закрийте цей посібник, коли закінчите.
Наміри та сутності
Розуміння мови базується на намірах та сутностях. Намір — це те, що мається на увазі у словах, наприклад, відтворення музики, встановлення таймера або замовлення їжі. Сутності — це те, до чого відноситься намір, наприклад, альбом, тривалість таймера або тип їжі. Кожне речення, яке інтерпретує модель, повинно мати принаймні один намір і, за бажанням, одну або більше сутностей.
Деякі приклади:
Речення | Намір | Сутності |
---|---|---|
"Увімкни останній альбом Тейлор Свіфт" | відтворити музику | останній альбом Тейлор Свіфт |
"Установи таймер на 3 хвилини" | установити таймер | 3 хвилини |
"Скасувати мій таймер" | скасувати таймер | Немає |
"Замовити 3 великі піци з ананасом і салат Цезар" | замовити їжу | 3 великі піци з ананасом, салат Цезар |
✅ З реченнями, які ви обдумували раніше, які були б наміри та сутності в цих реченнях?
Щоб навчити LUIS, спочатку потрібно визначити сутності. Вони можуть бути фіксованим списком термінів або вивченими з тексту. Наприклад, ви можете надати фіксований список їжі з вашого меню з варіаціями (або синонімами) кожного слова, такими як баклажан і ауберджин як варіації баклажана. LUIS також має попередньо створені сутності, які можна використовувати, наприклад, числа та місця.
Для встановлення таймера ви можете мати одну сутність, використовуючи попередньо створені числові сутності для часу, і іншу для одиниць виміру, таких як хвилини та секунди. Кожна одиниця матиме кілька варіацій, щоб охопити однину та множину — наприклад, хвилина та хвилини.
Після визначення сутностей створюються наміри. Вони вивчаються моделлю на основі прикладів речень, які ви надаєте (відомих як висловлювання). Наприклад, для наміру установити таймер ви можете надати такі речення:
установи таймер на 1 секунду
установи таймер на 1 хвилину і 12 секунд
установи таймер на 3 хвилини
установи таймер на 9 хвилин 30 секунд
Потім ви вказуєте LUIS, які частини цих речень відповідають сутностям:
Речення установи таймер на 1 хвилину і 12 секунд
має намір установити таймер
. Воно також має 2 сутності з 2 значеннями кожна:
час | одиниця | |
---|---|---|
1 хвилина | 1 | хвилина |
12 секунд | 12 | секунда |
Щоб навчити хорошу модель, вам потрібен набір різних прикладів речень, щоб охопити багато різних способів, якими хтось може попросити одне й те саме.
💁 Як і з будь-якою моделлю штучного інтелекту, чим більше даних і чим точніші ці дані, тим кращою буде модель.
✅ Подумайте про різні способи, якими ви могли б попросити одне й те саме, і очікувати, що людина вас зрозуміє.
Завдання - додати сутності до моделей розуміння мови
Для таймера вам потрібно додати 2 сутності — одну для одиниці часу (хвилини або секунди) і одну для кількості хвилин або секунд.
Інструкції щодо використання порталу LUIS можна знайти в документації Quickstart: Build your app in LUIS portal на Microsoft Docs.
-
У порталі LUIS виберіть вкладку Entities і додайте попередньо створену сутність number, натиснувши кнопку Add prebuilt entity, а потім вибравши number зі списку.
-
Створіть нову сутність для одиниці часу, використовуючи кнопку Create. Назвіть сутність
time unit
і встановіть тип List. Додайте значення дляminute
іsecond
до списку Normalized values, додаючи однину та множину до списку synonyms. Натискайтеreturn
після додавання кожного синоніма, щоб додати його до списку.Нормалізоване значення Синоніми хвилина хвилина, хвилини секунда секунда, секунди
Завдання - додати наміри до моделей розуміння мови
-
У вкладці Intents натисніть кнопку Create, щоб створити новий намір. Назвіть цей намір
set timer
. -
У прикладах введіть різні способи встановлення таймера, використовуючи як хвилини, секунди, так і їх комбінації. Приклади можуть бути такими:
установи таймер на 1 секунду
установи таймер на 4 хвилини
установи таймер на чотири хвилини шість секунд
установи таймер на 9 хвилин 30 секунд
установи таймер на 1 хвилину і 12 секунд
установи таймер на 3 хвилини
установи таймер на 3 хвилини і 1 секунду
установи таймер на три хвилини і одну секунду
установи таймер на 1 хвилину і 1 секунду
установи таймер на 30 секунд
установи таймер на 1 секунду
Змішуйте числа у вигляді слів і цифр, щоб модель навчилася обробляти обидва варіанти.
-
Під час введення кожного прикладу LUIS почне виявляти сутності та підкреслювати й позначати будь-які знайдені.
Завдання - навчити та протестувати модель
-
Після налаштування сутностей і намірів ви можете навчити модель, використовуючи кнопку Train у верхньому меню. Натисніть цю кнопку, і модель повинна навчитися за кілька секунд. Кнопка буде неактивною під час навчання, а потім знову стане активною.
-
Виберіть кнопку Test у верхньому меню, щоб протестувати модель розуміння мови. Введіть текст, наприклад,
установи таймер на 5 хвилин і 4 секунди
, і натисніть Enter. Речення з'явиться у вікні під текстовим полем, у яке ви його ввели, а нижче буде показано top intent або намір, який було виявлено з найвищою ймовірністю. Це має бутиset timer
. Назва наміру буде супроводжуватися ймовірністю того, що виявлений намір є правильним. -
Виберіть опцію Inspect, щоб побачити розбивку результатів. Ви побачите намір із найвищим балом і його відсоткову ймовірність, а також списки виявлених сутностей.
-
Закрийте панель Test, коли закінчите тестування.
Завдання - опублікувати модель
Щоб використовувати цю модель у коді, її потрібно опублікувати. Під час публікації з LUIS ви можете опублікувати її або в середовищі для тестування (staging), або в середовищі для повного випуску (production). У цьому уроці достатньо середовища для тестування.
-
У порталі LUIS виберіть кнопку Publish у верхньому меню.
-
Переконайтеся, що вибрано Staging slot, а потім натисніть Done. Ви побачите сповіщення, коли додаток буде опубліковано.
-
Ви можете протестувати це за допомогою curl. Щоб створити команду curl, вам потрібно три значення — endpoint, application ID (App ID) і API key. Їх можна знайти у вкладці MANAGE, яку можна вибрати у верхньому меню.
- У розділі Settings скоп
-
У розділі Azure Resources виберіть Authoring Resource і скопіюйте Primary Key та Endpoint URL.
-
Виконайте наступну команду curl у вашому командному рядку або терміналі:
curl "<endpoint url>/luis/prediction/v3.0/apps/<app id>/slots/staging/predict" \ --request GET \ --get \ --data "subscription-key=<primary key>" \ --data "verbose=false" \ --data "show-all-intents=true" \ --data-urlencode "query=<sentence>"
Замініть
<endpoint url>
на Endpoint URL із розділу Azure Resources.Замініть
<app id>
на App ID із розділу Settings.Замініть
<primary key>
на Primary Key із розділу Azure Resources.Замініть
<sentence>
на речення, яке ви хочете протестувати. -
Результатом цього виклику буде JSON-документ, який містить деталі запиту, основний намір (top intent) і список сутностей, розбитих за типами.
{ "query": "set a timer for 45 minutes and 12 seconds", "prediction": { "topIntent": "set timer", "intents": { "set timer": { "score": 0.97031575 }, "None": { "score": 0.02205793 } }, "entities": { "number": [ 45, 12 ], "time-unit": [ [ "minute" ], [ "second" ] ] } } }
Наведений вище JSON отримано з запиту
set a timer for 45 minutes and 12 seconds
:set timer
був основним наміром із ймовірністю 97%.- Було виявлено дві сутності типу number:
45
і12
. - Було виявлено дві сутності типу time-unit:
minute
іsecond
.
Використання моделі розуміння мови
Після публікації модель LUIS можна викликати з коду. У попередніх уроках ви використовували IoT Hub для обробки комунікації з хмарними сервісами, надсилання телеметрії та отримання команд. Це дуже асинхронно — після надсилання телеметрії ваш код не чекає на відповідь, і якщо хмарний сервіс недоступний, ви про це не дізнаєтеся.
Для розумного таймера ми хочемо отримати відповідь одразу, щоб повідомити користувача, що таймер встановлено, або попередити, що хмарні сервіси недоступні. Для цього наш IoT-пристрій буде викликати веб-ендпоінт безпосередньо, замість того щоб покладатися на IoT Hub.
Замість виклику LUIS із IoT-пристрою, ви можете використовувати безсерверний код із іншим типом тригера — HTTP-тригером. Це дозволяє вашому додатку функцій слухати REST-запити та відповідати на них. Ця функція буде REST-ендпоінтом, який ваш пристрій зможе викликати.
💁 Хоча ви можете викликати LUIS безпосередньо з вашого IoT-пристрою, краще використовувати щось на кшталт безсерверного коду. Таким чином, коли ви захочете змінити LUIS-додаток, який викликаєте, наприклад, після тренування кращої моделі або моделі іншою мовою, вам потрібно буде оновити лише хмарний код, а не перевстановлювати код на потенційно тисячах або мільйонах IoT-пристроїв.
Завдання — створення безсерверного додатку функцій
-
Створіть додаток функцій Azure під назвою
smart-timer-trigger
і відкрийте його у VS Code. -
Додайте HTTP-тригер до цього додатку під назвою
speech-trigger
, використовуючи наступну команду в терміналі VS Code:func new --name text-to-timer --template "HTTP trigger"
Це створить HTTP-тригер під назвою
text-to-timer
. -
Протестуйте HTTP-тригер, запустивши додаток функцій. Коли він запуститься, ви побачите ендпоінт у виводі:
Functions: text-to-timer: [GET,POST] http://localhost:7071/api/text-to-timer
Протестуйте це, завантаживши URL http://localhost:7071/api/text-to-timer у вашому браузері.
This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.
Завдання — використання моделі розуміння мови
-
SDK для LUIS доступний через пакет Pip. Додайте наступний рядок до файлу
requirements.txt
, щоб додати залежність від цього пакета:azure-cognitiveservices-language-luis
-
Переконайтеся, що в терміналі VS Code активовано віртуальне середовище, і виконайте наступну команду для встановлення пакетів Pip:
pip install -r requirements.txt
💁 Якщо виникають помилки, можливо, вам потрібно оновити pip за допомогою наступної команди:
pip install --upgrade pip
-
Додайте нові записи до файлу
local.settings.json
для вашого LUIS API Key, Endpoint URL і App ID із вкладки MANAGE порталу LUIS:"LUIS_KEY": "<primary key>", "LUIS_ENDPOINT_URL": "<endpoint url>", "LUIS_APP_ID": "<app id>"
Замініть
<endpoint url>
на Endpoint URL із розділу Azure Resources вкладки MANAGE. Це будеhttps://<location>.api.cognitive.microsoft.com/
.Замініть
<app id>
на App ID із розділу Settings вкладки MANAGE.Замініть
<primary key>
на Primary Key із розділу Azure Resources вкладки MANAGE. -
Додайте наступні імпорти до файлу
__init__.py
:import json import os from azure.cognitiveservices.language.luis.runtime import LUISRuntimeClient from msrest.authentication import CognitiveServicesCredentials
Це імпортує деякі системні бібліотеки, а також бібліотеки для взаємодії з LUIS.
-
Видаліть вміст методу
main
і додайте наступний код:luis_key = os.environ['LUIS_KEY'] endpoint_url = os.environ['LUIS_ENDPOINT_URL'] app_id = os.environ['LUIS_APP_ID'] credentials = CognitiveServicesCredentials(luis_key) client = LUISRuntimeClient(endpoint=endpoint_url, credentials=credentials)
Це завантажує значення, які ви додали до файлу
local.settings.json
для вашого LUIS-додатку, створює об'єкт облікових даних із вашим API-ключем, а потім створює клієнт LUIS для взаємодії з вашим LUIS-додатком. -
Цей HTTP-тригер буде викликаний із передачею тексту для розуміння у вигляді JSON, де текст буде у властивості
text
. Наступний код витягує значення з тіла HTTP-запиту та записує його в консоль. Додайте цей код до функціїmain
:req_body = req.get_json() text = req_body['text'] logging.info(f'Request - {text}')
-
Прогнози запитуються у LUIS шляхом надсилання запиту на прогнозування — JSON-документа, що містить текст для прогнозування. Створіть його за допомогою наступного коду:
prediction_request = { 'query' : text }
-
Цей запит можна надіслати до LUIS, використовуючи staging-слот, на який було опубліковано ваш додаток:
prediction_response = client.prediction.get_slot_prediction(app_id, 'Staging', prediction_request)
-
Відповідь на прогнозування містить основний намір — намір із найвищим балом прогнозування, а також сутності. Якщо основний намір —
set timer
, то сутності можна прочитати, щоб отримати час, необхідний для таймера:if prediction_response.prediction.top_intent == 'set timer': numbers = prediction_response.prediction.entities['number'] time_units = prediction_response.prediction.entities['time unit'] total_seconds = 0
Сутності типу
number
будуть масивом чисел. Наприклад, якщо ви сказали "Set a four minute 17 second timer.", то масивnumber
міститиме 2 числа — 4 і 17.Сутності типу
time unit
будуть масивом масивів рядків, де кожна одиниця часу буде масивом рядків усередині масиву. Наприклад, якщо ви сказали "Set a four minute 17 second timer.", то масивtime unit
міститиме 2 масиви з одним значенням у кожному —['minute']
і['second']
.JSON-версія цих сутностей для "Set a four minute 17 second timer." виглядає так:
{ "number": [4, 17], "time unit": [ ["minute"], ["second"] ] }
Цей код також визначає змінну для загального часу таймера в секундах. Вона буде заповнена значеннями із сутностей.
-
Сутності не пов'язані між собою, але ми можемо зробити деякі припущення про них. Вони будуть у порядку, в якому були сказані, тому позиція в масиві може бути використана для визначення, яке число відповідає якій одиниці часу. Наприклад:
- "Set a 30 second timer" — тут буде одне число,
30
, і одна одиниця часу,second
, тому єдине число відповідатиме єдиній одиниці часу. - "Set a 2 minute and 30 second timer" — тут буде два числа,
2
і30
, і дві одиниці часу,minute
іsecond
, тому перше число буде для першої одиниці часу (2 хвилини), а друге число — для другої одиниці часу (30 секунд).
Наступний код отримує кількість елементів у сутностях типу
number
і використовує це для вилучення першого елемента з кожного масиву, потім другого і так далі. Додайте це всередину блокуif
.for i in range(0, len(numbers)): number = numbers[i] time_unit = time_units[i][0]
Для "Set a four minute 17 second timer." це буде виконано двічі, даючи наступні значення:
номер циклу number
time_unit
0 4 minute 1 17 second - "Set a 30 second timer" — тут буде одне число,
-
Усередині цього циклу використовуйте число та одиницю часу для обчислення загального часу таймера, додаючи 60 секунд для кожної хвилини та кількість секунд для будь-яких секунд.
if time_unit == 'minute': total_seconds += number * 60 else: total_seconds += number
-
Поза цим циклом через сутності запишіть загальний час таймера:
logging.info(f'Timer required for {total_seconds} seconds')
-
Кількість секунд потрібно повернути з функції як HTTP-відповідь. У кінці блоку
if
додайте наступне:payload = { 'seconds': total_seconds } return func.HttpResponse(json.dumps(payload), status_code=200)
Цей код створює payload, що містить загальну кількість секунд для таймера, конвертує його в JSON-рядок і повертає як HTTP-результат зі статус-кодом 200, що означає успішний виклик.
-
Нарешті, поза блоком
if
, обробіть випадок, коли намір не був розпізнаний, повернувши код помилки:return func.HttpResponse(status_code=404)
404 — це статус-код для не знайдено.
-
Запустіть додаток функцій і протестуйте його за допомогою curl.
curl --request POST 'http://localhost:7071/api/text-to-timer' \ --header 'Content-Type: application/json' \ --include \ --data '{"text":"<text>"}'
Замініть
<text>
на текст вашого запиту, наприкладset a 2 minutes 27 second timer
.Ви побачите наступний вивід із додатку функцій:
Functions: text-to-timer: [GET,POST] http://localhost:7071/api/text-to-timer For detailed output, run func with --verbose flag. [2021-06-26T19:45:14.502Z] Worker process started and initialized. [2021-06-26T19:45:19.338Z] Host lock lease acquired by instance ID '000000000000000000000000951CAE4E'. [2021-06-26T19:45:52.059Z] Executing 'Functions.text-to-timer' (Reason='This function was programmatically called via the host APIs.', Id=f68bfb90-30e4-47a5-99da-126b66218e81) [2021-06-26T19:45:53.577Z] Timer required for 147 seconds [2021-06-26T19:45:53.746Z] Executed 'Functions.text-to-timer' (Succeeded, Id=f68bfb90-30e4-47a5-99da-126b66218e81, Duration=1750ms)
Виклик curl поверне наступне:
HTTP/1.1 200 OK Date: Tue, 29 Jun 2021 01:14:11 GMT Content-Type: text/plain; charset=utf-8 Server: Kestrel Transfer-Encoding: chunked {"seconds": 147}
Кількість секунд для таймера знаходиться у значенні
"seconds"
.
💁 Ви можете знайти цей код у папці code/functions.
Завдання — зробити вашу функцію доступною для IoT-пристрою
-
Щоб ваш IoT-пристрій міг викликати ваш REST-ендпоінт, йому потрібно знати URL. Коли ви отримували доступ до нього раніше, ви використовували
localhost
, що є скороченням для доступу до REST-ендпоінтів на вашому локальному комп'ютері. Щоб ваш IoT-пристрій отримав доступ, вам потрібно або опублікувати функцію в хмарі, або отримати вашу IP-адресу для локального доступу.⚠️ Якщо ви використовуєте Wio Terminal, простіше запустити додаток функцій локально, оскільки буде залежність від бібліотек, яка ускладнює розгортання додатку функцій так, як ви робили раніше. Запустіть додаток функцій локально та отримайте доступ через IP-адресу вашого комп'ютера. Якщо ви хочете розгорнути в хмарі, інформація про це буде надана в наступному уроці.
-
Опублікуйте додаток функцій — дотримуйтесь інструкцій із попередніх уроків для публікації вашого додатку функцій у хмарі. Після публікації URL буде
https://<APP_NAME>.azurewebsites.net/api/text-to-timer
, де<APP_NAME>
— це назва вашого додатку функцій. Обов'язково також опублікуйте ваші локальні налаштування.Під час роботи з HTTP-тригерами вони за замовчуванням захищені ключем додатку функцій. Щоб отримати цей ключ, виконайте наступну команду:
az functionapp keys list --resource-group smart-timer \ --name <APP_NAME>
Скопіюйте значення запису
default
із розділуfunctionKeys
.{ "functionKeys": { "default": "sQO1LQaeK9N1qYD6SXeb/TctCmwQEkToLJU6Dw8TthNeUH8VA45hlA==" }, "masterKey": "RSKOAIlyvvQEQt9dfpabJT018scaLpQu9p1poHIMCxx5LYrIQZyQ/g==", "systemKeys": {} }
Цей ключ потрібно буде додати як параметр запиту до URL, тому фінальний URL буде
https://<APP_NAME>.azurewebsites.net/api/text-to-timer?code=<FUNCTION_KEY>
, де<APP_NAME>
— це назва вашого додатку функцій, а<FUNCTION_KEY>
— ваш ключ функції за замовчуванням.💁 Ви можете змінити тип авторизації HTTP-тригера, використовуючи налаштування
authlevel
у файліfunction.json
. Ви можете дізнатися більше про це в розділі конфігурації документації Azure Functions HTTP trigger на Microsoft Docs. -
Запустіть додаток функцій локально та отримайте доступ за допомогою IP-адреси — ви можете отримати IP-адресу вашого комп'ютера в локальній мережі та використати її для створення URL.
Знайдіть вашу IP-адресу:
- У Windows 10 дотримуйтесь інструкції з пошуку IP-адреси.
- У macOS дотримуйтесь інструкції з пошуку IP-адреси на Mac.
- У Linux дотримуйтесь розділу про пошук приватної IP-адреси в інструкції з пошуку IP-адреси в Linux.
Після отримання IP-адреси ви зможете отримати доступ до функції за адресою
http://
.
-
:7071/api/text-to-timer, де
<IP_ADDRESS>буде вашою IP-адресою, наприклад
http://192.168.1.10:7071/api/text-to-timer`.
> 💁 Зверніть увагу, що використовується порт 7071, тому після IP-адреси потрібно додати `:7071`.
> 💁 Це працюватиме лише в тому випадку, якщо ваш IoT-пристрій знаходиться в тій самій мережі, що й ваш комп'ютер.
- Перевірте кінцеву точку, звернувшись до неї за допомогою curl.
🚀 Виклик
Існує багато способів запросити одне й те саме, наприклад, встановити таймер. Придумайте різні способи зробити це та використовуйте їх як приклади у вашому додатку LUIS. Перевірте їх, щоб побачити, наскільки добре ваша модель може справлятися з різними способами запиту таймера.
Тест після лекції
Огляд і самостійне навчання
- Дізнайтеся більше про LUIS та його можливості на сторінці документації Language Understanding (LUIS) на Microsoft Docs
- Дізнайтеся більше про розуміння мови на сторінці про розуміння природної мови у Вікіпедії
- Дізнайтеся більше про HTTP-тригери у документації Azure Functions HTTP trigger на Microsoft Docs
Завдання
Відмова від відповідальності:
Цей документ був перекладений за допомогою сервісу автоматичного перекладу Co-op Translator. Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникають внаслідок використання цього перекладу.