Conceitos Iniciais
Afinal, o que dá para fazer na plataforma?
Cadastro e Login
Primeiros Passos - Criando Seu Projeto
Perfil
Sistema de Permissões
Dashboard de Projetos
Glossário da plataforma
Alterando o idioma da plataforma
Autenticação de 2 Fatores
Código de autenticação inválido
Módulo Insights
Módulo Agent Builder
Módulo de Chats
Weni Chats: Introdução sobre o módulo de Chats
Weni Chats: Dashboard de Atendimento humano
Weni Chats: Distribuição e Roteamento dos atendimentos
Weni Chats: Utilizando disparo ativo de fluxos
Usando grupos para controlar o atendimento humano
Módulo de Estúdio
Contatos
Grupos
Mensagens
Gatilhos e Campanhas
Como criar um disparador
Tipos de Gatilho
Como ignorar um gatilho em um fluxo
Introdução a Campanhas
Como criar uma campanha
Modificando eventos
Criando contatos com Webhooks externos
Histórico de Contato
Como baixar, extrair, transformar e combinar os dados arquivados do Weni Flows
Módulo de Aplicativos
Configurações
Como conectar e falar com o bot através das configurações
Como criar um canal no Facebook
Como criar um canal no Viber
Como criar um canal SMS - para desenvolvedores (RapidPro)
Canal de Web Chat
Conceitos Gerais de API e Integrações
Como criar um canal no twitter
Como criar um canal no Instagram
Como criar um canal SMS
Adicionando campos de criação de ticket no Zendesk
Adicionando o Discord como um canal
Criando um Canal do Slack
Adicionando um canal Viber (RapidPro)
Integração com o Microsoft Teams
Canais
Como utilizar o módulo aplicativos
Como criar um canal web
Como criar um canal no Telegram
Como criar um canal no WhatsApp Demo
WhatsApp: Integração Expressa Weni
Whatsapp: Como criar Template Messages
Whatsapp Template Messages: impedimentos e configurações
Envio de Mídias Suportadas - WhatsApp Cloud
Zendesk - Atendimento Humano
Twillio Flex - Atendimento Humano
Ticketer: Adicionando serviço de Ticketer no RapidPro
Whatsapp Business API
Disparo Ativo no WhatsApp
Precificação do Whatsapp Business API
Whatsapp Bussiness API: Como Verificar o meu Negócio
Whatsapp Bussiness API: Limitação de Disparos em Massa do WhatsApp
Recuperando acesso ao Gerenciador de Negócios
Opt-In: Obter aceitação para o WhatsApp
Boas práticas: Opt-Out
Configuração do Webhook: Status de envio das mensagens
Serviço Externo
Noções básicas sobre Integrações
Integração Nativa ChatGPT
Integração Nativa API Omie
Integração Nativa - VTEX
Code Action
Módulo de Configurações
Configurações gerais do Projeto
Weni Chats: Configurando o Atendimento humano
Weni Chats: Gestão do Atendimento Humano
Módulo de Fluxos
Chatbots Template
Chatbot Integrado a API Omie
Chatbot Integrado a API Sienge
Chatbot Integrado a API do Construtor de Vendas
Introdução a expressões e variáveis
Glossário de Variáveis
Glossário de Expressões
Criação de fluxos
Introdução a fluxos
Editor de fluxo e suas ferramentas
Cartas de ação
Classificação e Resposta Inteligente
Cartas de decisão
Adicionando mídias ao cartão de Enviar Mensagem
Call Webhook: Como fazer chamadas para sistemas externos
Importar e exportar fluxos
Utilizando expressões para captar a localização do usuário
Visualizando relatórios na plataforma
Marcadores de rota
Cartão de Mensagem do WhatsApp
UX Writing
Weni CLI
Introdução
Tutorial: Seu Primeiro Agente
Tutorial: Criando um Agente de Consulta de CEP
Anatomia de um Agente: Agentes Passivos
Anatomia de um Agente: Agentes Ativos
Conceitos Fundamentais
untitled category
untitled category
Weni Agentic AI
- Todas as categorias
- Weni CLI
- Conceitos Fundamentais
- Ferramentas (Tools)
Ferramentas (Tools)
Atualizado
por José David
As ferramentas são o núcleo funcional do seu agente. Elas são as capacidades que permitem a interação com o mundo externo: APIs, bancos de dados ou qualquer lógica de negócio personalizada.
Por que as Ferramentas são Importantes?
As ferramentas transformam seu agente de um simples conversador em um potente solucionador de problemas capaz de:
- Obter dados em tempo real de APIs externas.
- Realizar cálculos complexos e processamento de dados.
- Interagir com bancos de dados e sistemas de armazenamento.
- Executar lógica de negócio personalizada e específica às suas necessidades.
- Integrar-se com serviços de terceiros e outras plataformas.
- Automatizar tarefas e fluxos de trabalho.
Exemplo de uma Ferramenta: GetAddress
Esta é a estrutura básica de uma ferramenta em Python. Vamos voltar ao exemplo da Tool que consulta um endereço a partir de um código postal (CEP).
from weni import Tool, Context
from weni.responses import TextResponse
import requests
class GetAddress(Tool):
def execute(self, context: Context) -> TextResponse:
cep = context.parameters.get("cep", "")
address_response = self.get_address_by_cep(cep=cep)
return TextResponse(data=address_response)
def get_address_by_cep(self, cep):
url = f"https://viacep.com.br/ws/{cep}/json/"
response = requests.get(url)
if response.status_code == 200:
return response.json()
return {"error": f"Não foi possível encontrar o endereço para o CEP {cep}."}
Explicação do Código
Segue um resumo simples do que o código faz:
Imports
: Primeiro, importamos os componentes necessários:Tool
,Context
,TextResponse
: Componentes base da Weni CLI.requests
: Biblioteca popular do Python para fazer requisições HTTP.
- Definição da Classe: Criamos uma nova ferramenta chamada
GetAddress
que sabe buscar endereços. - Método
execute
: Esta é a parte principal executada quando o agente usa a ferramenta.
- Obtém o código postal (
cep
) fornecido pelo usuário. - Chama outra função (
get_address_by_cep
) para encontrar o endereço. - Retorna as informações do endereço ao agente.
Método get_address_by_cep
: É uma função auxiliar que:
- Recebe um código postal.
- Constrói uma URL para consultar uma API externa.
- Obtém a resposta e a retorna.
Passos para Criar sua Própria Ferramenta
Aqui está um fluxo de trabalho recomendado para criar suas ferramentas:
- Defina sua Classe: Crie uma nova classe Python que herde de
Tool
. - Implemente o Método
execute
: Escreva sua lógica de negócio principal dentro desse método. - Adicione Métodos Auxiliares: Separe lógicas complexas em funções menores e claras para manter seu código organizado.
- Implemente Tratamento de Erros: Utilize
try...except
para lidar com possíveis falhas em chamadas a APIs ou no processamento de dados. - Escreva Testes: Crie casos de teste no seu arquivo
test_definition.yaml
para validar a ferramenta localmente comweni run
. - Configure a Ferramenta no YAML: Adicione sua nova ferramenta à lista
tools
do seuagent_definition.yaml
.
Uso de Credenciais em Ferramentas
Nunca escreva chaves de API ou senhas diretamente no seu código. Para isso, utilize context.credentials
.
class GetAddressWithAuth(Tool):
def execute(self, context: Context) -> TextResponse:
cep = context.parameters.get("cep", "")
# Acesse a credencial de forma segura
api_key = context.credentials.get("mi_api_key")
headers = {"Authorization": f"Bearer {api_key}"}
# ...lógica para fazer uma requisição autenticada...
Boas Práticas Gerais para Ferramentas
- Responsabilidade Única: Cada ferramenta deve ter um propósito claro e focado.
- Tratamento de Erros Abrangente: Controle possíveis falhas em todas as chamadas externas e casos de borda.
- Validação de Entradas: Valide todos os parâmetros de entrada antes do processamento.
- Considerações de Segurança: Trate dados sensíveis adequadamente e siga as melhores práticas de segurança.
- Testabilidade: Projete suas ferramentas para serem fáceis de testar.
- Controle de Versão: Utilize um repositório (ex.: GitHub) para versionar suas ferramentas.