Jackson Mafra - Tolv12
Desmistificando o
API.AI Dialogflow
API.AI agora é DialogFlow
Introducing Dialogflow, the new name for API.AI
October 10, 2017
JACKSON FERREIRA DE ANDRADE MAFRA
Desenvolvedor há mais de 20 anos com background em projetos de e-commerce e
real estate, desde 2009 com interesses focados para o desenvolvimento de
interfaces móveis e aplicações MEAP.
Me chama lá...
http://about.me/jacksonfdam
http://linkedin.com/in/jacksonfdam
@jacksonfdam
Construa experiências de conversação
naturais e ricas
Dê aos usuários novas formas de interagir com o seu
produto através da construção de interfaces de
conversação com voz e texto baseadas em texto,
alimentadas por AI.
Conecte-se com usuários no Assistente do Google, Amazon
Alexa, Facebook Messenger e outras plataformas e
dispositivos populares.
Use a aprendizagem de máquina para
entender o que os usuários estão dizendo
Forneça exemplos de o que um usuário pode dizer ao
interagir com seu produto. Usando anos de conhecimento
de domínio e compreensão de linguagem natural, para
analisar e entender a intenção do usuário para ajudá-lo a
responder da maneira mais útil.
Em qualquer plataforma
Traga seu aplicativo conversacional para qualquer
plataforma em que seus usuários estejam, como o Google
Assistant, Slack, Cortana, Alexa e Facebook Messenger.
Agora estamos testemunhando uma nova mudança na
computação do movimento de mobile–first para um mundo AI-
first
Sundar Pichai, CEO de Google
São softwares que funcionam dentro de aplicações de
mensagens.
Caio Calado, ChatBots Brasil
Chatbots são bons martelos, mas nem tudo é prego.
Amir Shevat, Slack
Não deixe o frenesi da mídia e o barulho em torno da AI te
enganar. As máquinas têm suas limitações - pelo menos no
cenário de hoje
Então, antes de ir todo entusiasmado em AI-fying todo o seu
negócio, comece a entender o que esses diferentes processos de
negócios são e se é ou não uma boa idéia para substituir seus
processos atuais por uma máquina / algoritmo / peça de código.
E o bot perfeito?
Diálogo natural
O Bot deve entender linguagem natural, múltiplas formas de fazer perguntas,
jargões, gírias, regionalismos, erros de digitação, erros gramaticais e outras
deformações linguísticas.
CaveRat
Achar que a Inteligência Artificial vai ser capaz de conversar de primeira sem
treinamento e criação de uma base de conhecimento.
Contexto e Coerência
Manter o estado da memória para a coerência em longas conversas. O bot deve
reconhecer o canal e obtém dados do usuário para fornecer uma solução
personalizada.
Evoluir continuamente
Algoritmos, dicionário e banco de dados de significados proprietários que evoluem
em tempo real usando a Aprendizagem de Máquinas.
Prever
Quando não possui as informações solicitadas, o Bot deve sugerir conteúdo
relacionado com base em interações similares com outros clientes.
Conceitos
Falo de plataformas como o api.ai (recentemente adquirido pela Google), wit.ai
(adquirido pelo Facebook) e o luis.ai (da Microsoft Cognitive Systems).
Conceitos
As APIs de linguagem natural fornecem uma boa maneira de começar com
interações únicas (ex. Pergunta-resposta, ação de comando)
Quando você se move para conversas, a maior parte da lógica, inclusive gerenciando
o estado e alterando as ações com base nela, precisa ser implementada pelo
desenvolvedor, muitas vezes de forma rígida
As APIs disponíveis são boas para a construção de MVPs, mas têm várias
desvantagens (Contexto e histórico não utilizados pelos algoritmos, gerenciamento
de falhas deficiente, sem otimização de diálogo, nenhuma maneira de influenciar o
conhecimento especializado, menor precisão) que podem dificultar a experiência do
usuário
Compreender a terminologia de Chatbots
● Agents(Agentes)
● Intents(Intenções)
● Entities(Entidades)
● Training(Treinamento)
● Integrations(Integrações)
● Fulfillment (Realização)
Agente
O agente é o seu assistente virtual. O api.ai permite que você tenha mais de um
assistente virtual.
O api.ai suporta tanto o português brasileiro como o europeu.
Em PT_BR temos algumas limitações, sendo as mais importantes:
- Não podemos ativar manualmente e nem controlar as configurações do ML/THRESHOLD
da plataforma (https://api.ai/docs/machine-learning)
- Não temos a opção de Training (https://api.ai/docs/training)
- Entidades definidas pelo sistema são limitada (https://api.ai/docs/reference/system-
entities)
- Poucos exemplos de Prebuilt Agents (https://api.ai/docs/agents)
Agente
O idioma escolhido não poderá ser alterado depois de salvo. Mas você pode sempre
criar mais um agente se quiser que o assistente virtual se comunique em outro idioma.
Entities
Entities são objetos que ajudam o agente a interpretar linguagem natural e não
apenas frases pré-programadas.
Se você criar uma entity denominada “doce”, onde vai especificar os doces que sua
loja vende e alguns sinónimos.
Intents
Os Intents mapeam todas as requisições do usuário à uma ação.
● O Default Fallback Intent possui algumas frases pré-definidas que serão
enviadas ao usuário caso o assistente virtual “não entenda” a requisição feita.
Ele provavelmente dirá coisas como “Não entendi”, “Ainda não fui programado
para responder isso”, etc.
● O Default Welcome Intent possui frases de boas vindas que são mostradas ao
usuário quando ele ativa o Assistente Virtual em algumas plataformas.
Intents
Quando criamos o nosso primeiro Intent, preenchemos 3 campos: nome do Intent,
User says e Response.
Intents
A tecnologia Machine Learning é utilizada em todos os Intents. Isso significa que o
seu agente irá se basear em todas as frases adicionadas no “User says” para treinar e
começar a entender variações ou frases semelhantes.
É possível desativar o ML em uma determinada intent, porém o agente só irá dar
match com os exemplos citados no "User Says"
Intents
Repare que os doces serão automaticamente destacados. E além disso, veja que a
unidade de peso “Kg” também foi destacada e identificada como “sys.unit-weight”.
Isso porque o api.ai tem algumas entities já pré-criadas para facilitar a nossa vida.
Estas entities são fáceis de distinguir, pois usam o pré-fixo sys
Intents
Response
Como você provavelmente já sabe, o campo response permite definirmos a resposta
que o nosso agente dará quando o Intent for chamado.
Esta resposta não precisa de ser apenas uma; o api.ai permite definir até 10
respostas sequenciais.
Intents
Imagem
Se você estiver a desenvolver um bot capaz de funcionar em redes sociais (Facebook
Messenger, Kik, Slack ou Telegram), é provável que você queira que o seu bot seja
capaz de enviar imagens aos utilizadores. E é exatamente para isso que existe a
Image Response.
Note que as redes sociais têm certas limitações para imagens:
- Facebook Messenger: só suporta jpg, png e gif (incluindo os animados);
- Kik: só jpg e a imagem não deve exceder 1Mb;
- Slack: só suporta jpg, png, bmp e gif;
- Telegram: basta não exceder 5Mb.
Intents
Resposta rápida
As respostas rápidas (quick replies) oferecem-nos a possibilidade de “prevermos” a
resposta do utilizador. Damos algumas opções/sugestões (no máximo 10) ao
utilizador de como responder. Quando ele clica numa dessas opções, o texto dessa
opção é enviado ao agente como se fosse uma requisição do utilizador.
Nas redes sociais, estas opções são mostradas como botões para facilitar a interação
entre o utilizador e o agente.
Note que pelo fato de serem apresentados em botões, cada opção da resposta
rápida não pode ter mais de 20 caracteres.
Intents
Card
Com as cartas (cards), podemos permitir que o bot dê uma resposta mais completa
em relação às responses anteriores.
As cartas possuem 4 elementos:
Imagem;
Título;
Subtítulo;
Botões interactivos.
Actions
Uma ação corresponde ao passo que a nossa aplicação dará quando um Intent for
chamado.
Ações podem conter parâmetros para passar alguns detalhes extras à nossa
aplicação, quando necessário. Estes parâmetros podem ser definidos no campo
Action, quando estamos a criar um Intent na consola do api.ai
Actions
Parameters
Como já foi dito, parâmetros são argumentos que podem, opcionalmente, ser adicionados ao nosso
Intent para que a nossa aplicação tenha mais detalhes sobre a acção que deve tomar. Estes
parâmetros podem ser definidos automaticamente de acordo com os exemplos que você coloca
automaticamente no campo “User says” ou você pode colocá-los na tabela de forma manual.
Definição automática
Quando você introduz um exemplo no campo User says que contém uma entity (tanto system
como developer entity), ele automaticamente irá destacar essa entity e adicionar à tabela de
parâmetros:
Definição de constantes
Dependendo da aplicação que estamos a desenvolver, por vezes podemos querer que a nossa
acção tenha parâmetros constantes.
Amazon’s Alexa
https://developer.amazon.com/alexa
Google’s Dialogflow
https://dialogflow.ai/
Microsoft’s Luis
https://www.luis.ai/
Apple’s SiriKit
https://developer.apple.com/sirikit/
IBM’s Watson
https://www.ibm.com/watson/developercl
oud/nl-classifier.html
Referencias
Facebook’s Wit
https://wit.ai/
Snips
https://snips.ai/
Converse AI
http://www.converse.ai/
Referencias
Artigo do Rosário Pereira Fernandes - Machine Learning—Entrando no mundo dos
assistentes virtuais
https://medium.com/@rosariopfernandes/ml-b7eba66e0e03
Artigo da Caroline Wisniewski - Benchmarking Natural Language Understanding Systems
https://snips.ai/content/sdk-benchmark-visualisation/
Artigo do Jess Holbrook - Human-Centered Machine Learning
https://medium.com/google-design/human-centered-machine-learning-a770d10562cd
Artigo do Neil Balthaser - Fight! Api.ai vs. Converse.ai
https://chatbotsmagazine.com/fight-api-ai-vs-converse-ai-8e44e29b5fb
Referencias
Artigo da Jéssica Rodrigues - O que é o Processamento de Linguagem Natural?
https://medium.com/botsbrasil/o-que-%C3%A9-o-processamento-de-linguagem-natural-
49ece9371cff
Artigo do Pavlo Bashmakov - Advanced Natural Language Processing Tools for Bot Makers
– LUIS, Wit.ai, Api.ai and others
https://stanfy.com/blog/advanced-natural-language-processing-tools-for-bot-makers/
Artigo do Abraham Kang - Understanding the Differences Between Alexa, API.ai, WIT.ai,
and LUIS/Cortana
https://www.linkedin.com/pulse/understanding-differences-between-different-ai-platforms-
abraham-kang
Artigo do Stefan Kojouharov - A Review of Natural Language APIs For Bots
https://medium.com/@Conversate/natural-language-apis-for-bots-e791f090e32f
Referencias
Confusion matrix
https://en.wikipedia.org/wiki/Confusion_matrix
Hangout—Chatbot Pernambuco + BotCaverna—API.AI
https://medium.com/@jacksonfdam/hangout-chatbot-pernambuco-botcaverna-api-ai-
9e2971b03215
Obrigado
Perguntas?

Desmistificando o DialogFlow

  • 1.
    Jackson Mafra -Tolv12 Desmistificando o API.AI Dialogflow
  • 2.
    API.AI agora éDialogFlow Introducing Dialogflow, the new name for API.AI October 10, 2017
  • 3.
    JACKSON FERREIRA DEANDRADE MAFRA Desenvolvedor há mais de 20 anos com background em projetos de e-commerce e real estate, desde 2009 com interesses focados para o desenvolvimento de interfaces móveis e aplicações MEAP. Me chama lá... http://about.me/jacksonfdam http://linkedin.com/in/jacksonfdam @jacksonfdam
  • 4.
    Construa experiências deconversação naturais e ricas Dê aos usuários novas formas de interagir com o seu produto através da construção de interfaces de conversação com voz e texto baseadas em texto, alimentadas por AI. Conecte-se com usuários no Assistente do Google, Amazon Alexa, Facebook Messenger e outras plataformas e dispositivos populares.
  • 5.
    Use a aprendizagemde máquina para entender o que os usuários estão dizendo Forneça exemplos de o que um usuário pode dizer ao interagir com seu produto. Usando anos de conhecimento de domínio e compreensão de linguagem natural, para analisar e entender a intenção do usuário para ajudá-lo a responder da maneira mais útil.
  • 6.
    Em qualquer plataforma Tragaseu aplicativo conversacional para qualquer plataforma em que seus usuários estejam, como o Google Assistant, Slack, Cortana, Alexa e Facebook Messenger.
  • 7.
    Agora estamos testemunhandouma nova mudança na computação do movimento de mobile–first para um mundo AI- first Sundar Pichai, CEO de Google
  • 8.
    São softwares quefuncionam dentro de aplicações de mensagens. Caio Calado, ChatBots Brasil
  • 9.
    Chatbots são bonsmartelos, mas nem tudo é prego. Amir Shevat, Slack
  • 10.
    Não deixe ofrenesi da mídia e o barulho em torno da AI te enganar. As máquinas têm suas limitações - pelo menos no cenário de hoje
  • 11.
    Então, antes deir todo entusiasmado em AI-fying todo o seu negócio, comece a entender o que esses diferentes processos de negócios são e se é ou não uma boa idéia para substituir seus processos atuais por uma máquina / algoritmo / peça de código.
  • 13.
    E o botperfeito?
  • 14.
    Diálogo natural O Botdeve entender linguagem natural, múltiplas formas de fazer perguntas, jargões, gírias, regionalismos, erros de digitação, erros gramaticais e outras deformações linguísticas.
  • 16.
    CaveRat Achar que aInteligência Artificial vai ser capaz de conversar de primeira sem treinamento e criação de uma base de conhecimento.
  • 17.
    Contexto e Coerência Mantero estado da memória para a coerência em longas conversas. O bot deve reconhecer o canal e obtém dados do usuário para fornecer uma solução personalizada.
  • 19.
    Evoluir continuamente Algoritmos, dicionárioe banco de dados de significados proprietários que evoluem em tempo real usando a Aprendizagem de Máquinas.
  • 21.
    Prever Quando não possuias informações solicitadas, o Bot deve sugerir conteúdo relacionado com base em interações similares com outros clientes.
  • 23.
    Conceitos Falo de plataformascomo o api.ai (recentemente adquirido pela Google), wit.ai (adquirido pelo Facebook) e o luis.ai (da Microsoft Cognitive Systems).
  • 24.
    Conceitos As APIs delinguagem natural fornecem uma boa maneira de começar com interações únicas (ex. Pergunta-resposta, ação de comando) Quando você se move para conversas, a maior parte da lógica, inclusive gerenciando o estado e alterando as ações com base nela, precisa ser implementada pelo desenvolvedor, muitas vezes de forma rígida As APIs disponíveis são boas para a construção de MVPs, mas têm várias desvantagens (Contexto e histórico não utilizados pelos algoritmos, gerenciamento de falhas deficiente, sem otimização de diálogo, nenhuma maneira de influenciar o conhecimento especializado, menor precisão) que podem dificultar a experiência do usuário
  • 26.
    Compreender a terminologiade Chatbots ● Agents(Agentes) ● Intents(Intenções) ● Entities(Entidades) ● Training(Treinamento) ● Integrations(Integrações) ● Fulfillment (Realização)
  • 27.
    Agente O agente éo seu assistente virtual. O api.ai permite que você tenha mais de um assistente virtual. O api.ai suporta tanto o português brasileiro como o europeu. Em PT_BR temos algumas limitações, sendo as mais importantes: - Não podemos ativar manualmente e nem controlar as configurações do ML/THRESHOLD da plataforma (https://api.ai/docs/machine-learning) - Não temos a opção de Training (https://api.ai/docs/training) - Entidades definidas pelo sistema são limitada (https://api.ai/docs/reference/system- entities) - Poucos exemplos de Prebuilt Agents (https://api.ai/docs/agents)
  • 29.
    Agente O idioma escolhidonão poderá ser alterado depois de salvo. Mas você pode sempre criar mais um agente se quiser que o assistente virtual se comunique em outro idioma.
  • 30.
    Entities Entities são objetosque ajudam o agente a interpretar linguagem natural e não apenas frases pré-programadas. Se você criar uma entity denominada “doce”, onde vai especificar os doces que sua loja vende e alguns sinónimos.
  • 33.
    Intents Os Intents mapeamtodas as requisições do usuário à uma ação. ● O Default Fallback Intent possui algumas frases pré-definidas que serão enviadas ao usuário caso o assistente virtual “não entenda” a requisição feita. Ele provavelmente dirá coisas como “Não entendi”, “Ainda não fui programado para responder isso”, etc. ● O Default Welcome Intent possui frases de boas vindas que são mostradas ao usuário quando ele ativa o Assistente Virtual em algumas plataformas.
  • 34.
    Intents Quando criamos onosso primeiro Intent, preenchemos 3 campos: nome do Intent, User says e Response.
  • 37.
    Intents A tecnologia MachineLearning é utilizada em todos os Intents. Isso significa que o seu agente irá se basear em todas as frases adicionadas no “User says” para treinar e começar a entender variações ou frases semelhantes. É possível desativar o ML em uma determinada intent, porém o agente só irá dar match com os exemplos citados no "User Says"
  • 38.
    Intents Repare que osdoces serão automaticamente destacados. E além disso, veja que a unidade de peso “Kg” também foi destacada e identificada como “sys.unit-weight”. Isso porque o api.ai tem algumas entities já pré-criadas para facilitar a nossa vida. Estas entities são fáceis de distinguir, pois usam o pré-fixo sys
  • 41.
    Intents Response Como você provavelmentejá sabe, o campo response permite definirmos a resposta que o nosso agente dará quando o Intent for chamado. Esta resposta não precisa de ser apenas uma; o api.ai permite definir até 10 respostas sequenciais.
  • 42.
    Intents Imagem Se você estivera desenvolver um bot capaz de funcionar em redes sociais (Facebook Messenger, Kik, Slack ou Telegram), é provável que você queira que o seu bot seja capaz de enviar imagens aos utilizadores. E é exatamente para isso que existe a Image Response. Note que as redes sociais têm certas limitações para imagens: - Facebook Messenger: só suporta jpg, png e gif (incluindo os animados); - Kik: só jpg e a imagem não deve exceder 1Mb; - Slack: só suporta jpg, png, bmp e gif; - Telegram: basta não exceder 5Mb.
  • 43.
    Intents Resposta rápida As respostasrápidas (quick replies) oferecem-nos a possibilidade de “prevermos” a resposta do utilizador. Damos algumas opções/sugestões (no máximo 10) ao utilizador de como responder. Quando ele clica numa dessas opções, o texto dessa opção é enviado ao agente como se fosse uma requisição do utilizador. Nas redes sociais, estas opções são mostradas como botões para facilitar a interação entre o utilizador e o agente. Note que pelo fato de serem apresentados em botões, cada opção da resposta rápida não pode ter mais de 20 caracteres.
  • 45.
    Intents Card Com as cartas(cards), podemos permitir que o bot dê uma resposta mais completa em relação às responses anteriores. As cartas possuem 4 elementos: Imagem; Título; Subtítulo; Botões interactivos.
  • 47.
    Actions Uma ação correspondeao passo que a nossa aplicação dará quando um Intent for chamado. Ações podem conter parâmetros para passar alguns detalhes extras à nossa aplicação, quando necessário. Estes parâmetros podem ser definidos no campo Action, quando estamos a criar um Intent na consola do api.ai
  • 48.
    Actions Parameters Como já foidito, parâmetros são argumentos que podem, opcionalmente, ser adicionados ao nosso Intent para que a nossa aplicação tenha mais detalhes sobre a acção que deve tomar. Estes parâmetros podem ser definidos automaticamente de acordo com os exemplos que você coloca automaticamente no campo “User says” ou você pode colocá-los na tabela de forma manual. Definição automática Quando você introduz um exemplo no campo User says que contém uma entity (tanto system como developer entity), ele automaticamente irá destacar essa entity e adicionar à tabela de parâmetros: Definição de constantes Dependendo da aplicação que estamos a desenvolver, por vezes podemos querer que a nossa acção tenha parâmetros constantes.
  • 49.
    Amazon’s Alexa https://developer.amazon.com/alexa Google’s Dialogflow https://dialogflow.ai/ Microsoft’sLuis https://www.luis.ai/ Apple’s SiriKit https://developer.apple.com/sirikit/ IBM’s Watson https://www.ibm.com/watson/developercl oud/nl-classifier.html Referencias Facebook’s Wit https://wit.ai/ Snips https://snips.ai/ Converse AI http://www.converse.ai/
  • 50.
    Referencias Artigo do RosárioPereira Fernandes - Machine Learning—Entrando no mundo dos assistentes virtuais https://medium.com/@rosariopfernandes/ml-b7eba66e0e03 Artigo da Caroline Wisniewski - Benchmarking Natural Language Understanding Systems https://snips.ai/content/sdk-benchmark-visualisation/ Artigo do Jess Holbrook - Human-Centered Machine Learning https://medium.com/google-design/human-centered-machine-learning-a770d10562cd Artigo do Neil Balthaser - Fight! Api.ai vs. Converse.ai https://chatbotsmagazine.com/fight-api-ai-vs-converse-ai-8e44e29b5fb
  • 51.
    Referencias Artigo da JéssicaRodrigues - O que é o Processamento de Linguagem Natural? https://medium.com/botsbrasil/o-que-%C3%A9-o-processamento-de-linguagem-natural- 49ece9371cff Artigo do Pavlo Bashmakov - Advanced Natural Language Processing Tools for Bot Makers – LUIS, Wit.ai, Api.ai and others https://stanfy.com/blog/advanced-natural-language-processing-tools-for-bot-makers/ Artigo do Abraham Kang - Understanding the Differences Between Alexa, API.ai, WIT.ai, and LUIS/Cortana https://www.linkedin.com/pulse/understanding-differences-between-different-ai-platforms- abraham-kang Artigo do Stefan Kojouharov - A Review of Natural Language APIs For Bots https://medium.com/@Conversate/natural-language-apis-for-bots-e791f090e32f
  • 52.
    Referencias Confusion matrix https://en.wikipedia.org/wiki/Confusion_matrix Hangout—Chatbot Pernambuco+ BotCaverna—API.AI https://medium.com/@jacksonfdam/hangout-chatbot-pernambuco-botcaverna-api-ai- 9e2971b03215
  • 54.