Introdução
No mundo acelerado de hoje, o atendimento ao cliente é um aspecto crucial de qualquer negócio. Um Zendesk Answer Bot, desenvolvido com Large Language Models (LLMs), como o GPT-4, pode melhorar significativamente a eficiência e a qualidade do suporte ao cliente, automatizando as respostas. Esta postagem do blog irá guiá-lo na construção e implantação de seu próprio Zendesk Auto Responder usando LLMs e na implementação de fluxos de trabalho baseados em RAG no GenAI para agilizar o processo.
O que são fluxos de trabalho baseados em RAG no GenAI
Fluxos de trabalho baseados em RAG (Retrieval Augmented Generation) em GenAI (Generative AI) combinam os benefícios de recuperação e geração para aprimorar os recursos do sistema de IA, especialmente no tratamento de dados do mundo real e específicos de domínio. Em termos simples, o RAG permite que a IA extraia informações relevantes de uma base de dados ou de outras fontes para apoiar a geração de respostas mais precisas e informadas. Isto é particularmente benéfico em ambientes empresariais onde a precisão e o contexto são críticos.
Quais são os componentes de um fluxo de trabalho baseado em RAG
- Base de conhecimento: A base de conhecimento é um repositório centralizado de informações às quais o sistema se refere ao responder a consultas. Pode incluir perguntas frequentes, manuais e outros documentos relevantes.
- Gatilho/Consulta: Este componente é responsável por iniciar o fluxo de trabalho. Geralmente é uma pergunta ou solicitação de um cliente que precisa de uma resposta ou ação.
- Tarefa/Ação: Com base na análise do gatilho/consulta, o sistema executa uma tarefa ou ação específica, como gerar uma resposta ou realizar uma operação de backend.
Alguns exemplos de fluxos de trabalho baseados em RAG
- Fluxo de trabalho de interação com o cliente no setor bancário:
- Os chatbots desenvolvidos por GenAI e RAG podem melhorar significativamente as taxas de engajamento no setor bancário, personalizando as interações.
- Através do RAG, os chatbots podem recuperar e utilizar informações relevantes de um banco de dados para gerar respostas personalizadas às dúvidas dos clientes.
- Por exemplo, durante uma sessão de chat, um sistema GenAI baseado em RAG poderia extrair o histórico de transações do cliente ou informações da conta de um banco de dados para fornecer respostas mais informadas e personalizadas.
- Esse fluxo de trabalho não apenas aumenta a satisfação do cliente, mas também aumenta potencialmente a taxa de retenção, proporcionando uma experiência de interação mais personalizada e informativa.
- Fluxo de trabalho de campanhas por e-mail:
- Em marketing e vendas, a criação de campanhas direcionadas é crucial.
- O RAG pode ser empregado para obter as informações mais recentes sobre produtos, feedback de clientes ou tendências de mercado de fontes externas para ajudar a gerar material de marketing/vendas mais informado e eficaz.
- Por exemplo, ao elaborar uma campanha por e-mail, um fluxo de trabalho baseado em RAG poderia recuperar avaliações positivas recentes ou novos recursos de produtos para incluir no conteúdo da campanha, melhorando potencialmente as taxas de engajamento e os resultados de vendas.
- Fluxo de trabalho automatizado de documentação e modificação de código:
- Inicialmente, um sistema RAG pode extrair documentação de código, base de código e padrões de codificação existentes do repositório do projeto.
- Quando um desenvolvedor precisa adicionar um novo recurso, o RAG pode gerar um trecho de código seguindo os padrões de codificação do projeto, referenciando as informações recuperadas.
- Caso seja necessária uma modificação no código, o sistema RAG pode propor alterações analisando o código e a documentação existentes, garantindo consistência e aderência aos padrões de codificação.
- Após modificação ou adição de código, o RAG pode atualizar automaticamente a documentação do código para refletir as alterações, extraindo as informações necessárias da base de código e da documentação existente.
Como baixar e indexar todos os tickets do Zendesk para recuperação
Vamos agora começar com o tutorial. Construiremos um bot para responder a tickets recebidos do Zendesk enquanto usamos um banco de dados personalizado de tickets e respostas anteriores do Zendesk para gerar a resposta com a ajuda de LLMs.
- Acesse a API do Zendesk: Use a API Zendesk para acessar e baixar todos os tickets. Certifique-se de ter as permissões e chaves de API necessárias para acessar os dados.
Primeiro criamos nossa chave de API Zendesk. Certifique-se de ser um usuário administrador e visite o link a seguir para criar sua chave de API – https://YOUR_SUBDOMAIN.zendesk.com/admin/apps-integrations/apis/zendesk-api/settings/tokens
Crie uma chave de API e copie-a para a área de transferência.
Vamos agora começar em um notebook python.
Inserimos nossas credenciais do Zendesk, incluindo a chave de API que acabamos de obter.
subdomain = YOUR_SUBDOMAIN
username = ZENDESK_USERNAME
password = ZENDESK_API_KEY
username = '{}/token'.format(username)
Agora recuperamos os dados do ticket. No código abaixo, recuperamos consultas e respostas de cada ticket e armazenamos cada conjunto [consulta, matriz de respostas] que representa um ticket em uma matriz chamada Dados do Bilhete.
Estamos buscando apenas os últimos 1000 ingressos. Você pode modificar isso conforme necessário.
import requests ticketdata = []
url = f"https://{subdomain}.zendesk.com/api/v2/tickets.json" params = {"sort_by": "created_at", "sort_order": "desc"} headers = {"Content-Type": "application/json"} tickettext = "" while len(ticketdata) <= 1000: response = requests.get( url, auth=(username, password), params=params, headers=headers ) tickets = response.json()["tickets"] for ticket in tickets: ticketid = ticket["id"] url = f"https://{subdomain}.zendesk.com/api/v2/tickets/{ticketid}/comments.json" headers = { "Content-Type": "application/json", } response2 = requests.get(url, auth=(username, password), headers=headers) try: comments = response2.json()["comments"] except: comments = ["", ""] ticketelement = [ticketid, comments] ticketdata.append(ticketelement) if response.json()["next_page"]: url = response.json()["next_page"] else: break
Como você pode ver abaixo, recuperamos os dados do ticket do banco de dados do Zendesk. Cada elemento em Dados do Bilhete contém -
a. ID do bilhete
b. Todos os comentários/respostas no ticket.
Em seguida, passamos a criar uma string baseada em texto contendo as consultas e as primeiras respostas de todos os tickets recuperados, usando o comando Dados do Bilhete matriz.
for ticket in ticketdata: try: text = ( "nnn" + "Question - " + ticket[1][0]["body"] + "n" + "Answer - " + ticket[1][1]["body"] ) tickettext = tickettext + text except: pass
A texto do bilhete string agora contém todos os tickets e primeiras respostas, com os dados de cada ticket separados por caracteres de nova linha.
Opcional: Você também pode buscar dados de seus artigos do Zendesk Support para expandir ainda mais a base de conhecimento, executando o código abaixo.
import re def remove_tags(text): clean = re.compile("<.*?>") return re.sub(clean, "", text) articletext = ""
try: articledata = [] url = f"https://{subdomain}.zendesk.com/api/v2/help_center/en-us/articles.json" headers = {"Content-Type": "application/json"} while True: response = requests.get(url, auth=(username, password), headers=headers) articles = response.json()["articles"] for article in articles: articledata.append([article["title"], article["html_url"], article["body"]]) if response.json()["next_page"]: url = response.json()["next_page"] else: break for article in articledata: text = ( "nnn" + "Support Page Title - " + article[0] + "n" + "Support Page Link - " + article[1] + "n" + "Support Page Body - " + article[2] ) articletext = articletext + remove_tags(text)
except: pass
A corda texto do artigo contém o título, o link e o corpo de cada artigo que faz parte das páginas de suporte do Zendesk.
Opcional : você pode conectar seu banco de dados de clientes ou qualquer outro banco de dados relevante e usá-lo ao criar o armazenamento de índice.
Combine os dados buscados.
knowledge = tickettext + "nnn" + articletext
- Ingressos de índice: Após o download, indexe os tickets usando um método de indexação adequado para facilitar a recuperação rápida e eficiente.
Para fazer isso, primeiro instalamos as dependências necessárias para criar o armazenamento de vetores.
pip install langchain openai pypdf faiss-cpu
Crie um armazenamento de índice usando os dados buscados. Isso servirá como nossa base de conhecimento quando tentarmos responder novos tickets via GPT.
os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY" from langchain.document_loaders import PyPDFLoader
from langchain.vectorstores import FAISS
from langchain.chat_models import ChatOpenAI
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.chains import RetrievalQA, ConversationalRetrievalChain
from transformers import GPT2TokenizerFast
import os
import pandas as pd
import numpy as np tokenizer = GPT2TokenizerFast.from_pretrained("gpt2") def count_tokens(text: str) -> int: return len(tokenizer.encode(text)) text_splitter = RecursiveCharacterTextSplitter( chunk_size=512, chunk_overlap=24, length_function=count_tokens,
) chunks = text_splitter.create_documents([knowledge]) token_counts = [count_tokens(chunk.page_content) for chunk in chunks]
df = pd.DataFrame({"Token Count": token_counts})
embeddings = OpenAIEmbeddings()
db = FAISS.from_documents(chunks, embeddings)
path = "zendesk-index"
db.save_local(path)
Seu índice é salvo em seu sistema local.
- Atualize o índice regularmente: Atualize regularmente o índice para incluir novos tickets e modificações nos existentes, garantindo que o sistema tenha acesso aos dados mais atuais.
Podemos agendar o script acima para ser executado toda semana e atualizar nosso 'índice zendesk' ou qualquer outra frequência desejada.
Como realizar a recuperação quando um novo ticket chega
- Monitore novos tickets: Configure um sistema para monitorar continuamente o Zendesk em busca de novos tickets.
Criaremos uma API Flask básica e a hospedaremos. Para começar,
- Crie uma nova pasta chamada ‘Zendesk Answer Bot’.
- Adicione sua pasta FAISS db 'zendesk-index' à pasta 'Zendesk Answer Bot'.
- Crie um novo arquivo python zendesk.py e copie o código abaixo nele.
from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/zendesk', methods=['POST'])
def zendesk(): return 'dummy response' if __name__ == '__main__': app.run(port=3001, debug=True)
- Execute o código python.
- Baixe e configure o ngrok usando as instruções aqui. Certifique-se de configurar o ngrok authtoken em seu terminal conforme indicado no link.
- Abra uma nova instância de terminal e execute o comando abaixo.
ngrok http 3001
- Agora temos nosso Flask Service exposto em um IP externo, com o qual podemos fazer chamadas de API para nosso serviço de qualquer lugar.
- Em seguida, configuramos um Zendesk Webhook visitando o seguinte link – https://YOUR_SUBDOMAIN.zendesk.com/admin/apps-integrations/webhooks/webhooks OU executando diretamente o código abaixo em nosso notebook Jupyter original.
NOTA: É importante observar que, embora o uso do ngrok seja bom para fins de teste, é altamente recomendável mudar o serviço Flask API para uma instância do servidor. Nesse caso, o IP estático do servidor se torna o endpoint do Zendesk Webhook e você precisará configurar o endpoint no seu Zendesk Webhook para apontar para este endereço – https://YOUR_SERVER_STATIC_IP:3001/zendesk
zendesk_workflow_endpoint = "HTTPS_NGROK_FORWARDING_ADDRESS" url = "https://" + subdomain + ".zendesk.com/api/v2/webhooks"
payload = { "webhook": { "endpoint": zendesk_workflow_endpoint, "http_method": "POST", "name": "Nanonets Workflows Webhook v1", "status": "active", "request_format": "json", "subscriptions": ["conditional_ticket_events"], }
}
headers = {"Content-Type": "application/json"} auth = (username, password) response = requests.post(url, json=payload, headers=headers, auth=auth)
webhook = response.json() webhookid = webhook["webhook"]["id"]
- Agora configuramos um Zendesk Trigger, que acionará o webhook acima que acabamos de criar para ser executado sempre que um novo ticket aparecer. Podemos configurar o gatilho do Zendesk visitando o seguinte link – https://YOUR_SUBDOMAIN.zendesk.com/admin/objects-rules/rules/triggers OU executando diretamente o código abaixo em nosso notebook Jupyter original.
url = "https://" + subdomain + ".zendesk.com/api/v2/triggers.json" trigger_payload = { "trigger": { "title": "Nanonets Workflows Trigger v1", "active": True, "conditions": {"all": [{"field": "update_type", "value": "Create"}]}, "actions": [ { "field": "notification_webhook", "value": [ webhookid, json.dumps( { "ticket_id": "{{ticket.id}}", "org_id": "{{ticket.url}}", "subject": "{{ticket.title}}", "body": "{{ticket.description}}", } ), ], } ], }
} response = requests.post(url, auth=(username, password), json=trigger_payload)
trigger = response.json()
- Recuperar informações relevantes: Quando um novo ticket chegar, use a base de conhecimento indexada para recuperar informações relevantes e tickets anteriores que podem ajudar a gerar uma resposta.
Depois que o gatilho e o webhook forem configurados, o Zendesk garantirá que nosso serviço Flask em execução receberá uma chamada de API na rota /zendesk com o ID do ticket, assunto e corpo sempre que um novo ticket chegar.
Agora temos que configurar nosso Flask Service para
a. gerar uma resposta usando nosso armazenamento de vetores 'zendesk-index'.
b. atualize o ticket com a resposta gerada.
Substituímos nosso código de serviço de flask atual em zendesk.py pelo código abaixo –
from flask import Flask, request, jsonify
from langchain.document_loaders import PyPDFLoader
from langchain.vectorstores import FAISS
from langchain.chat_models import ChatOpenAI
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.chains import RetrievalQA, ConversationalRetrievalChain
from transformers import GPT2TokenizerFast
import os
import pandas as pd
import numpy as np app = Flask(__name__) @app.route('/zendesk', methods=['POST'])
def zendesk(): updatedticketjson = request.get_json() zenembeddings = OpenAIEmbeddings() query = updatedticketjson['body'] zendb = FAISS.load_local('zendesk-index', zenembeddings) docs = zendb.similarity_search(query) if __name__ == '__main__': app.run(port=3001, debug=True)
Como você pode ver, realizamos uma pesquisa de similaridade em nosso índice vetorial e recuperamos os tickets e artigos mais relevantes para ajudar a gerar uma resposta.
Como gerar uma resposta e postar no Zendesk
- Gerar resposta: Utilize o LLM para gerar uma resposta coerente e precisa com base nas informações recuperadas e no contexto analisado.
Vamos agora continuar configurando nosso endpoint de API. Modificamos ainda mais o código conforme mostrado abaixo para gerar uma resposta com base nas informações relevantes recuperadas.
@app.route("/zendesk", methods=["POST"])
def zendesk(): updatedticketjson = request.get_json() zenembeddings = OpenAIEmbeddings() query = updatedticketjson["body"] zendb = FAISS.load_local("zendesk-index", zenembeddings) docs = zendb.similarity_search(query) zenchain = load_qa_chain(OpenAI(temperature=0.7), chain_type="stuff") answer = zenchain.run(input_documents=docs, question=query)
A responder variável conterá a resposta gerada.
- Resposta da revisão: Opcionalmente, peça a um agente humano que revise a resposta gerada quanto à precisão e adequação antes de postar.
A forma como garantimos isso é NÃO postar a resposta gerada pela GPT diretamente como resposta do Zendesk. Em vez disso, criaremos uma função para atualizar novos tickets com uma nota interna contendo a resposta gerada pelo GPT.
Adicione a seguinte função ao serviço flask zendesk.py –
def update_ticket_with_internal_note( subdomain, ticket_id, username, password, comment_body
): url = f"https://{subdomain}.zendesk.com/api/v2/tickets/{ticket_id}.json" email = username headers = {"Content-Type": "application/json"} comment_body = "Suggested Response - " + comment_body data = {"ticket": {"comment": {"body": comment_body, "public": False}}} response = requests.put(url, json=data, headers=headers, auth=(email, password))
- Postar no Zendesk: Utilize a API Zendesk para postar a resposta gerada no ticket correspondente, garantindo a comunicação oportuna com o cliente.
Vamos agora incorporar a função de criação de notas internas em nosso endpoint de API.
@app.route("/zendesk", methods=["POST"])
def zendesk(): updatedticketjson = request.get_json() zenembeddings = OpenAIEmbeddings() query = updatedticketjson["body"] zendb = FAISS.load_local("zendesk-index", zenembeddings) docs = zendb.similarity_search(query) zenchain = load_qa_chain(OpenAI(temperature=0.7), chain_type="stuff") answer = zenchain.run(input_documents=docs, question=query) update_ticket_with_internal_note(subdomain, ticket, username, password, answer) return answer
Isso conclui nosso fluxo de trabalho!
Vamos revisar o fluxo de trabalho que configuramos –
- Nosso Zendesk Trigger inicia o fluxo de trabalho quando um novo ticket do Zendesk aparece.
- O gatilho envia os dados do novo ticket para o nosso Webhook.
- Nosso Webhook envia uma solicitação ao nosso Flask Service.
- Nosso serviço Flask consulta o armazenamento de vetores criado usando dados anteriores do Zendesk para recuperar tickets e artigos anteriores relevantes para responder ao novo ticket.
- Os tickets e artigos anteriores relevantes são transmitidos à GPT junto com os dados do novo ticket para gerar uma resposta.
- O novo ticket é atualizado com uma nota interna contendo a resposta gerada pelo GPT.
Podemos testar isso manualmente –
- Criamos um ticket no Zendesk manualmente para testar o fluxo.
- Em segundos, nosso bot fornece uma resposta relevante à consulta do ticket!
Como fazer todo esse fluxo de trabalho com Nanonets
Nanonets oferece uma plataforma poderosa para implementar e gerenciar fluxos de trabalho baseados em RAG de forma integrada. Veja como você pode aproveitar Nanonets para este fluxo de trabalho:
- Integre com o Zendesk: Conecte Nanonets ao Zendesk para monitorar e recuperar tickets com eficiência.
- Construir e treinar modelos: Use Nanonets para construir e treinar LLMs para gerar respostas precisas e coerentes com base na base de conhecimento e no contexto analisado.
- Automatize respostas: Configure regras de automação em Nanonets para publicar automaticamente as respostas geradas no Zendesk ou encaminhá-las a agentes humanos para revisão.
- Monitore e Otimize: Monitore continuamente o desempenho do fluxo de trabalho e otimize os modelos e regras para melhorar a precisão e a eficiência.
Ao integrar LLMs com fluxos de trabalho baseados em RAG no GenAI e aproveitar os recursos dos Nanonets, as empresas podem melhorar significativamente suas operações de suporte ao cliente, fornecendo respostas rápidas e precisas às dúvidas dos clientes no Zendesk.
- Conteúdo com tecnologia de SEO e distribuição de relações públicas. Seja amplificado hoje.
- PlatoData.Network Gerativa Vertical Ai. Capacite-se. Acesse aqui.
- PlatoAiStream. Inteligência Web3. Conhecimento Amplificado. Acesse aqui.
- PlatãoESG. Carbono Tecnologia Limpa, Energia, Ambiente, Solar, Gestão de resíduos. Acesse aqui.
- PlatoHealth. Inteligência em Biotecnologia e Ensaios Clínicos. Acesse aqui.
- Fonte: https://nanonets.com/blog/build-your-own-zendesk-answer-bot-with-llms/
- :tem
- :é
- :não
- :onde
- $UP
- 06
- 08
- 1
- 2000
- 28
- 32
- 40
- 7
- a
- acima
- Acesso
- Conta
- precisão
- preciso
- Aja
- Açao Social
- ações
- ativo
- adicionar
- Adição
- endereço
- aderência
- admin
- Agente
- agentes
- AI
- Todos os Produtos
- juntamente
- tb
- an
- análise
- analisado
- análise
- e
- responder
- qualquer
- qualquer lugar
- api
- CHAVES DE API
- app
- aparece
- SOMOS
- Ordem
- Chega
- artigo
- artigos
- AS
- aspecto
- At
- tentativa
- aumentado
- Auth
- auto
- automaticamente
- automatizando
- Automação
- Backend
- Bancário
- indústria bancária
- base
- baseado
- basic
- BE
- torna-se
- sido
- antes
- abaixo
- benéfico
- Benefícios
- Blog
- corpo
- Bot
- Break
- construir
- Prédio
- negócio
- negócios
- mas a
- by
- chamada
- chamado
- chamadas
- Campanha
- Campanhas
- CAN
- capacidades
- casas
- centralizada
- correntes
- Alterações
- caracteres
- chatbot
- chatbots
- código
- Codebase
- Codificação
- COERENTE
- COM
- combinar
- vem
- comentar
- comentários
- Comunicação
- Completa
- componente
- componentes
- condições
- Contato
- não contenho
- contém
- conteúdo
- contexto
- continuar
- continuamente
- Correspondente
- poderia
- crio
- criado
- Criar
- criação
- Credenciais
- crítico
- crucial
- Atual
- Atualmente
- personalizadas
- cliente
- A satisfação do cliente
- Atendimento ao Cliente
- Suporte ao cliente
- dados,
- banco de dados
- dependências
- Implantação
- desejado
- Developer
- dirigido
- diretamente
- do
- documentação
- INSTITUCIONAIS
- download
- durante
- cada
- Eficaz
- eficiência
- eficiente
- eficientemente
- ou
- elemento
- outro
- incorporado
- empregada
- permite
- Ponto final
- COMPROMETIMENTO
- aumentar
- Melhora
- garantir
- assegurando
- Todo
- Cada
- exemplo
- exemplos
- Exceto
- existente
- Expandir
- exposto
- externo
- facilitar
- falso
- ritmo acelerado
- Característica
- Funcionalidades
- retornos
- Buscou
- campo
- Envie o
- Primeiro nome
- fluxo
- seguinte
- Escolha
- para a frente
- Frequência
- da
- função
- mais distante
- gerar
- gerado
- gerando
- geração
- generativo
- IA generativa
- ter
- gif
- Bom estado, com sinais de uso
- guia
- Manipulação
- Ter
- ter
- cabeçalhos
- ajudar
- história
- hospedeiro
- Como funciona o dobrador de carta de canal
- http
- HTTPS
- humano
- ID
- if
- executar
- implementação
- importar
- importante
- melhorar
- melhorar
- in
- incluir
- Incluindo
- Entrada
- incorporar
- Aumenta
- índice
- indexado
- indústria
- INFORMAÇÕES
- informativo
- informado
- entrada
- Inquéritos
- instalar
- instância
- em vez disso
- instruções
- Integração
- interação
- interações
- interno
- para dentro
- Introdução
- IP
- IT
- json
- apenas por
- Chave
- chaves
- Conhecimento
- língua
- grande
- mais recente
- Alavancagem
- aproveitando
- como
- LINK
- LLM
- local
- fazer
- gerencia
- manualmente
- mercado
- Tendências de mercado
- Marketing
- material
- método
- modelos
- modificações
- modificar
- Monitore
- mais
- a maioria
- mover
- nome
- necessário
- você merece...
- necessário
- Cria
- Novo
- produto novo
- caderno
- agora
- numpy
- obtido
- of
- Oferece
- on
- uma vez
- queridos
- só
- OpenAI
- operação
- Operações
- Otimize
- or
- original
- OS
- Outros
- A Nossa
- Acima de
- próprio
- página
- páginas
- pandas
- parte
- particularmente
- passou
- Senha
- passado
- caminho
- Realizar
- atuação
- realização
- executa
- permissões
- Personalizado
- plataforma
- platão
- Inteligência de Dados Platão
- PlatãoData
- ponto
- positivo
- Publique
- potencialmente
- alimentado
- poderoso
- processo
- Produto
- informações do produto
- projeto
- projetos
- oferece
- fornecer
- fornece
- fornecendo
- público
- puxando
- fins
- Python
- qualidade
- consultas
- questão
- Links
- Taxa
- Preços
- RE
- mundo real
- recentemente
- Recomenda
- referência
- refere-se
- refletir
- regularmente
- relevante
- substituir
- resposta
- repositório
- representando
- solicitar
- pedidos
- requeridos
- resposta
- respostas
- responsável
- retenção
- retorno
- rever
- Opinões
- revisão
- Rota
- regras
- Execute
- corrida
- s
- vendas
- satisfação
- salvo
- cronograma
- escrita
- sem problemas
- Pesquisar
- segundo
- Vejo
- envia
- servidor
- serviço
- Sessão
- conjunto
- contexto
- Configurações
- mudança
- mostrando
- de forma considerável
- simples
- fragmento
- Fontes
- específico
- padrões
- começado
- começa
- Status
- loja
- armazenar
- simplificar
- Tanga
- discordaram
- sujeito
- assinaturas
- tal
- adequado
- ajuda
- certo
- SWIFT
- .
- visadas
- Tarefa
- terminal
- condições
- teste
- ensaio
- texto
- que
- A
- deles
- Eles
- então
- isto
- Através da
- Assim
- bilhete
- bilhetes
- oportuno
- Título
- para
- hoje
- token
- para
- Trem
- transação
- transformadores
- Tendências
- desencadear
- verdadeiro
- tentar
- tutorial
- Atualizar
- Atualizada
- URL
- us
- usar
- Utilizador
- utilização
- geralmente
- utilizar
- v1
- valor
- via
- VIMEO
- Visite a
- Caminho..
- we
- semana
- quando
- sempre que
- qual
- enquanto
- precisarão
- de
- de gestão de documentos
- fluxos de trabalho
- mundo
- Vocês
- investimentos
- Zendesk
- zefirnet