Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Тема ChatGPT и других моделей от OpenAI сейчас на хайпе. Но на них одних свет клином не сошёлся. Или всё-таки сошёлся? Попробуем разобраться и обойдёмся сегодня без кода, только общие понятия, боль и страдание.
Представьте, что вам нужно сделать чат-бота, который мог бы отвечать на вопросы пользователей на основании ваших собственных данных: товаров в интернет-магазине, базы знаний службы поддержки, маркетинговых статей и т.п. Или, списка кафе и коворкингов, в моём случае.
До недавннего времени подобные диалоги сводились к выбору из "Вас интересует это? - Нажмите сюда. Интересует другое? - Нажмите туда. Ничего не поняли? - Дождитесь оператора". Не очень дружелюбно, но иногда вполне предсказуемо и понятно, только делать такую развесистую логику очень долго.
Ok, давайте добавим дружелюбия и сделаем "natural language interface" типа "Show me 10 cafes with sockets close to me in London" (если верить маркетологам, то люди и не такое напишут, лишь бы найти желаемое).
Одним из первых подобных "распознавателей человеческого языка" стал сервис Amazon Lex (а также Google Dialogflow и ещё десяток подобных)
Amazon Lex V2 is an AWS service for building conversational interfaces for applications using voice and text. Amazon Lex V2 provides the deep functionality and flexibility of natural language understanding (NLU) and automatic speech recognition (ASR) so you can build highly engaging user experiences with lifelike, conversational interactions, and create new categories of products.
Amazon Lex V2 enables any developer to build conversational bots quickly. With Amazon Lex V2, no deep learning expertise is necessary—to create a bot, you specify the basic conversation flow in the Amazon Lex V2 console. Amazon Lex V2 manages the dialog and dynamically adjusts the responses in the conversation. Using the console, you can build, test, and publish your text or voice chatbot. You can then add the conversational interfaces to bots on mobile devices, web applications, and chat platforms (for example, Facebook Messenger).
Звучит красиво: умеет вычленять сущности из обычного текста и ходить в API за данными.
Для моего примера выше понадобилось написать utterance "Show me {count} {type} with {sockets} close to me in {region}" и описать сущности. После чего из исходной фразы получался JSON {count: 10, type: cafe, sockets: many, region: London}
.
Но вот беда, для похожей фразы "Give me 10 coworking in Riga" нужен совсем другой utterance, а для самого простого запроса "5 workplaces nearby" - третий.