Agente de IA Dialfire - Guia

Agente de IA Dialfire - Guia: Alguns passos para um agente de IA pronto a utilizar - simples, flexível, fascinante.

Início rápido: Como iniciar o seu agente de IA na Dialfire

Bem-vindo ao mundo dos agentes de IA Dialfire!

Não se preocupe - não precisa de ser um ninja da tecnologia para ter o seu próprio agente de IA a funcionar. Com apenas alguns cliques, o seu agente está pronto e à espera para atender as suas chamadas.

É tão simples quanto isto:
  • Abra o menu Voice Automation na Dialfire para criar e gerir todos os agentes de IA.
  • Clique em Novo IVR no canto superior direito e selecione o seu agente de IA. Este é criado com um clique.
  • Pronto: O seu agente de IA começa com um modelo de amostra que está pronto a ser utilizado de imediato. Este modelo já contém todos os elementos de base importantes de que necessita para começar - perfeito para criar imediatamente as suas próprias personalizações a partir do mesmo.

Prompting 1x1 - começar de forma simples, crescer de forma inteligente 🎓

A coisa mais importante sobre o estímulo: começar com pouco e ir aumentando passo a passo.

Como começar:
  • Comece com uma versão minimalista que explique ao agente o que pretende fazer com ele. Em termos figurativos: diga ao agente para onde caminhar, não como mover os pés.
    Teste o que o agente já consegue fazer com isto - ficará surpreendido.
  • Em seguida, crie uma variante que seja suficiente para entrar em ação.
  • Entre em ação com um volume de chamadas gerenciável, que permita visualizar cada chamada individualmente.
  • Corrija os problemas que detetar no funcionamento em direto - muitas vezes, estes são completamente diferentes dos que lhe causaram problemas no "teste em seco". Esta é a parte em que deve investir a maior parte do seu tempo.

☝️Menos é muitas vezes mais:
  • Definir expectativas realistas: Os seres humanos cometem erros, tal como a IA - não existe algo 100% infalível.
  • Formular de forma clara e simples.
  • Evitar instruções contraditórias.
  • Se dizemos o que o bot não deve fazer, também dizemos o que ele deve fazer.
  • Utilizar o discurso literal apenas quando for necessário (por exemplo, cumprimento). Descreva "o que" o agente deve dizer, não "como" .
  • Evitar conhecimentos adicionais desnecessários.
  • Não se fixar em erros individuais e tentar compensá-los
  • As instruções adicionais pioram frequentemente o desempenho noutras áreas que anteriormente funcionavam bem. Em vez disso, procure instruções que possa eliminar, o que é frequentemente muito mais eficaz
  • Descreva o seu plano ao seu agente para que este compreenda o significado das instruções individuais e possa tomar melhores decisões.
  • O agente de IA não é um extraterrestre👽: Antes de explicar o mundo ao agente, teste se ele já conhece o conceito.
    Exemplo: "Você é um bot de serviço numa empresa de aluguer de automóveis" em vez de "Os clientes que têm problemas com um carro ligam-lhe".

Mesmo com estas regras simples, é possível criar agentes de IA úteis para utilização prática.

Atenção : À medida que adiciona mais e mais tarefas, acabará por notar que o seu agente se sente de alguma forma mais burro, perde a espontaneidade e comete erros. Isto é completamente natural e deve-se ao facto de, tal como um humano, a IA ter apenas uma quantidade limitada de atenção.

A boa notícia é que há soluções para isso, que apresentamos a seguir - assim, não há mais limites. 🎉

O primeiro prompt - a peça central do seu agente

O prompt é o cérebro do seu agente de IA - é aqui que define quem ele é, como fala e o que pode fazer.

☝️Importante: A estrutura não é fixa - a criatividade e a experiência fazem a diferença. Tudo o que já sabe sobre como trabalhar com IA continua a ser válido.

☝️Regra de base: Escreva a mensagem como se estivesse a escrever para um novo empregado antes de o deixar atender o telefone. Se levar isto a peito, pode saltar muitos tutoriais.

Estrutura aproximada da pergunta:

Contém as descrições básicas de como o bot se deve comportar:

  • Papel e objetivo - Quem fala? Qual é o objetivo do agente?
  • Tarefa - O que é que o agente deve fazer na conversa?
  • Barreiras de proteção - O que é que o agente nunca deve fazer numa conversa?
  • FAQs / Modelos de respostas - Exemplos de frases curtas e claras para o LLM

Contém instruções de controlo que são incorporadas diretamente no texto e que dão ainda mais dinamismo ao conjunto

Exceto no que diz respeito às instruções de controlo opcionais, não existe um formato específico que deva ser respeitado. Recomendamos o Markdown para a formatação - este formato é particularmente bem compreendido pela IA.

Exemplo de uma instrução de arranque simples:

# Your Role
You are Helena Fisher, a friendly AI phone agent from GreatProducts. You always speak politely, confidently, and in a natural tone.
 
# Your Task
Greet the customer and ask them to briefly explain their request.
$customer_request Customer's inquiry
 
Answer questions from the FAQ. For unknown requests, transfer the call using function "connect_agent". If resolved, say goodbye and use function "hangup".
 
@connect_agent Transfers the call to a human agent.
@hangup Ends the call.
 
# FAQ
Q: Wants to return product  
A: They can return products within 30 days if unused and in original packaging. 
  
Q: Delivery times  
A: Standard: 3–5 business days. Express: 1–2 business days.  
 
Q: Opening hours  
A: Mon–Fri: 8:00–18:00, Sat: 9:00–14:00. 
 

No exemplo, pode ver # Your Task como um título de secção em formato Markdown e $customer_request e @connect_agent como instruções de controlo. Iremos analisar estes dois elementos com mais pormenor dentro de momentos... fique atento 😉

Testes imediatos - experimentar, experimentar, otimizar 🧪

Antes de o seu agente de IA brilhar em utilização real, teste o seu pedido diretamente no menu Automação de voz. Aqui pode verificar facilmente como o seu agente responde, quer através de uma chamada ou de um chat.

É assim que funciona:
  • Abrir o menu: Navegar para Voice Automation →Test.
  • Selecione o modo de teste: Optar por Chamada (chamada simulada) ou Chat (interação de texto).
  • Iniciar a interação: Fale ou escreva os seus pedidos de teste exatamente como os seus clientes o fariam.
  • Observar os resultados: Verificar se o agente preenche corretamente as variáveis e executa as chamadas de função de forma fiável.

: Pequenas alterações num local podem ter um grande efeito em todo o processo. Teste novamente de imediato.

Vamos lá - o teu Agente de IA está pronto para começar! 🚀

🎉 Parabéns!

Já o fez: configurou e testou o seu agente de IA e agora está pronto para levar a experiência de serviço ao cliente para o próximo nível! No entanto, antes que o seu agente possa começar a trabalhar, ainda precisa de o atribuir à linha de entrada correta:

1️⃣ No menu Automatização de voz, vá para a área de teste e active a versão final do seu bot.

2️⃣ Ativar na sua linha de entrada:

  • Abra o item de menu Números de telefone e selecione a linha pretendida.
  • Em Definições de IVR, selecione o título do seu bot no menu pendente IVR.
  • Marque a caixa de seleção Activado e guarde - já está!

E voilà - o seu agente de IA está ativo e pronto para impressionar os seus clientes. Sente-se, desfrute do espetáculo e veja o seu novo colega virtual arrasar no seu serviço ao cliente! 🤘

A faturação do seu agente de IA é simples e transparente:
  • Todos os minutos de chamadas do AI Agent são cobrados à taxa do Conversational AI C - para além dos encargos normais das chamadas.
  • Além disso, a duração da saída de voz gerada também é facturada de acordo com a tarifa Conversational AI C.
  • 💡Poupança inteligente: as mensagens de voz que se repetem exatamente são guardadas temporariamente de forma automática. Não existem custos adicionais para a próxima chamada.

O que ainda não explicámos... 🤔

Apareceram duas coisas no prompt de exemplo que não queremos deixar para trás:

  • Marcadores de posição de variáveis, como $customer_request
  • Chamadas de função, como @connect_agent

Ambos são ferramentas centrais que tornam o seu agente ainda mais poderoso.

No próximo passo, mostraremos como funcionam os marcadores de posição de variáveis e as chamadas de função - e porque é que são a chave para conversas realmente inteligentes.

Marcador de posição de variável

Com os marcadores de posição variáveis inseridos , o seu agente torna-se um profissional de anotações: guarda automaticamente as informações da chamada diretamente no registo de dados, que pode depois processar mais tarde na Dialfire.

Sintaxe:

$Nomedocampo Descrição do campo → define um campo esperado

Exemplo:

$pedido_cliente Pedido de cliente → registos que solicitam os nomes dos clientes

☝️Importante:
  • Colocar o campo com $ à frente numa linha separada junto ao tópico a que o campo se refere. Desta forma, o agente sabe, com base no contexto envolvente, quando o campo tem de ser preenchido. No entanto, não faça referência à variável no resto do texto do aviso, ou seja, não diga: "Não se esqueça de preencher a variável XYZ"
  • Dê um nome à variável de modo a que faça sentido para o agente - por exemplo, "Nome" em vez de "Campo15" e escreva uma breve descrição a seguir ao nome do campo - isto fará com que funcione de forma muito mais fiável

Variável com opções de seleção

Escreva outra linha options: com valores permitidos diretamente sob a variável, separados por uma vírgula. O agente só pode utilizar estes valores. Por exemplo, isto teria o seguinte aspeto:

$quer_newsletter O cliente concorda em receber a newsletter
opções: sim, não

Chamadas de função - Acções de disparo

As chamadas de função são os botões de ação do seu agente. Elas acionam ações diretas quando algo precisa acontecer imediatamente.

As funções reais podem ser vistas no separador Script. Estas são funções JavaScript que podem ser alargadas conforme necessário.

Para poder usar essas funções, elas devem ser informadas ao agente no prompt. Isso é feito em uma nova linha com @ seguido pelo nome da função e uma descrição subsequente. Ao contrário das variáveis, a posição no prompt é irrelevante.

Em princípio, o próprio agente decide quando deseja utilizar as funções com base no contexto da chamada. No entanto, é possível intervir no prompt e fazer com que o agente anuncie a sua utilização. Isto assegura transições de chamadas muito naturais.

Exemplo:

  • A função está disponível no separador Script:

    função conectar_agent​{

    }

  • No prompt, dar a conhecer esta função com :

    @conectar_agent​e Ligar o autor da chamada com um humano.

  • E no texto que escreve, por exemplo:

    Se não souberes a resposta à pergunta, diz que vais transferir a chamada para um colega que certamente poderá ajudar e, ao mesmo tempo, usa a função «conectar agente».

Avançado - Saia da caixa

Bem-vindo ao próximo nível! 🎮

Os seus primeiros agentes de IA já estão a funcionar - agora vamos mostrar-lhe os segredos de como familiarizar o seu agente com o mundo exterior. Não se preocupe: apesar de se chamar "Avançado", não precisa de um doutoramento em ciências informáticas para o fazer - mas, claro, também não faz mal se for o caso. 🙂 Pense nisto como uma caixa de ferramentas cheia, à espera de ser utilizada para construir coisas fantásticas.

Consegues guardar um segredo?

Aquilo a que chamámos "prompt" até agora não é, de facto, um prompt estático. É um modelo dinâmico que é remontado em cada jogada.

Para os informáticos, isto soa imediatamente familiar: não é um pedaço de texto rígido, mas um sistema de renderização flexível - semelhante ao VueJS ou ao Angular, mas para agentes de IA.

E é exatamente aqui que as funções de modelo alargadas entram em jogo ...

Funções avançadas de modelos - os superpoderes do seu prompt 🦸‍♂️

O modelo prompt pode fazer muito mais do que simples substituições de valores. Ele domina uma sintaxe de modelo complexa que pode ser encaixada como desejar. Isto transforma o seu prompt num kit de construção flexível que mapeia ordenadamente até mesmo a lógica de diálogos complexos.

Substituições de valores com {{expression}}

O caso mais simples: {{data.nomedocampo}}

Mas atenção: há mais por detrás disto do que apenas nomes de campos - também são possíveis chamadas de funções. Isto permite-lhe introduzir conteúdo dinâmico diretamente no modelo.

Blocos condicionais com IF

Pode utilizar a diretiva IF para controlar o conteúdo que realmente aparece no prompt. Ou no meio do texto:

({{#if condition}} Aqui está um texto opcional {{/if}})

ou com várias alternativas, encerrando grandes blocos:

{{#if condition}}
{{#elif alternative_condition}}
{{#else}}
{{/if}}

Uso: Mostrar componentes alternativos/opcionais do prompt

Polimento com EACH

Utilize EACH para elementos repetidos:

{{#each itemVar @ array-expression}}
{{/each}}

Perfeito quando as coisas se repetem as vezes que quiser - por exemplo, listas de produtos ou contratos.

Com estas funções de modelo alargadas, pode dar dinamismo aos seus agentes.

E já reparaste nisso? Nos registos, também encontrará uma pequena ligação para o próximo aviso nas respostas do agente. Isto permite-lhe verificar facilmente se a mensagem gerada estava realmente correta.

Definir as suas próprias funções

Já falámos sobre funções, mas ainda não sobre a sintaxe realmente completa. No separador Script, define uma função em JavaScript da seguinte forma:

function nomedafunção (args){
}

O objeto args contém então os parâmetros que o agente passou quando foi chamado.

Declare a função no prompt atual, desta forma:

@nomedafunção Descrição do objetivo da função
-argument1: Descrição do parâmetro
options: valor1,valor2
optional: true
-argument2: Descrição do segundo parâmetro

Utilize options para especificar os valores permitidos se pretender permitir apenas determinadas opções. E com optional, especifica que este parâmetro não tem de estar presente.

E o que é que a função devolve?

O valor de retorno não tem de seguir qualquer formato especial. Podem ser devolvidas quaisquer estruturas de objectos ou mesmo uma simples cadeia de caracteres com uma instrução sobre o modo como o agente deve proceder.
A única coisa importante é que o agente possa entender o significado.

💡Dicas

  • A escolha correta dos nomes das funções e dos parâmetros, com descrições adequadas, é crucial para uma utilização fiável por parte do agente.
  • Utilizar as funções com moderação. Se o agente tiver muitas funções por onde escolher, isso ocupa muito do orçamento de atenção.

Marcadores de posição de variáveis vs. chamadas de funções - o quê, quando, porquê? 🤔

Os marcadores de posição de variáveis funcionam silenciosamente em segundo plano e escrevem valores reconhecidos (por exemplo, nome, código postal) no objeto de dados.

  • Vantagem: poupa o orçamento de atenção do LLM.
  • Desvantagem: O valor não pode ser verificado antes de o bot responder.

As chamadas de função são os intervenientes activos: o LLM chama uma função que efectua verificações ou validação em tempo de execução.

  • Área de aplicação: sempre que necessitar de resultados imediatos - por exemplo, validações ou consultas CRM.

💡Regras práticas :

  • Marcador de posição variável → para campos não críticos
  • Chamadas de função → para tudo o que precisa de ser validado ou processado imediatamente

O ambiente Javascript 💻

O Javascript fornece-lhe um ambiente de baixo código com o qual pode realizar funções avançadas.

Objectos globais

No ambiente Javascript, encontrará alguns objectos globais que pode utilizar a partir de qualquer função.

data {} - o objeto central cujos campos são transferidos diretamente para o registo de dados de contacto para processamento posterior

temp {} - um objeto temporário no qual pode armazenar dados serializáveis entre turnos

  • acções [] - para acionar comandos de controlo
  • tts_translation {} - um mapa de expressões regex em formato de cadeia de caracteres para substituições fonéticas para impor a pronúncia correta de certos termos
  • LOG () - uma função para registar as saídas, que podem ser vistas no registo de chamadas

Acionar chamadas API via HTTP

As funções globais estão disponíveis para chamadas API para sistemas externos:

GET​(url, options)
POST​(url, payload, options)
PUT​(url, payload, options)
DELETE​(url, options)

O resultado é um objeto de resposta com as seguintes funções:
status(,) text(,) json()

O pedido funciona de forma assíncrona. Isto significa que pode iniciar vários pedidos em paralelo e o script só espera até que o pedido esteja concluído quando uma das funções é acedida na resposta.

Utilização de ganchos de script

Pode implementar os seguintes hooks como uma função para poder reagir a determinados eventos:

  • onLoad() - no início do agente
  • onUpdate()→ após cada rodada
  • onClose() → no final da chamada (por exemplo, encerrar tarefas, operações de escrita)
  • onFieldUpdate(fieldname,value) - se definido, os marcadores de posição da variável não são simplesmente anexados ao objeto de dados, mas são processados através desta função
  • onFunctionCall(name,arguments) → se o agente invocar uma função indefinida... é assim que as funções dinâmicas podem ser implementadas

Socorro, o meu agente está a ficar mais burro - ou - para que serve um dedo apontado 🤔

Não começou bem com o teu agente? E agora ele não está a fazer o que é suposto fazer?

Já implementou todas as nossas dicas - e mesmo assim - é exasperante!

Então, provavelmente, está no ponto em que pode utilizar a nossa solução prometida para agentes realmente grandes.

Porque é que os prompts estáticos atingem os seus limites

Os agentes de IA, tal como os humanos, têm um orçamento de atenção limitado. Mas um novo empregado poderia trabalhar muito bem com o seu serviço, certo? A IA é assim tão estúpida? Porque é que consegue escrever textos longos, mas falha numa conversa como esta?

Resposta simples: O seu empregado tem um dedo indicador, mas a IA de hoje não tem!

Um ser humano pode memorizar (ou apontar o dedo indicador) para o ponto exato em que se encontra no guião da conversa, enquanto a IA tem de o descobrir de novo a cada resposta, com base no desenrolar da conversa. Isto requer muita atenção e deixa pouco tempo para a resposta efectiva.

Bem-vindo à engenharia de contexto!

Está no limiar da passagem de engenheiro de prompt para engenheiro de contexto. A ideia é adaptar dinamicamente o contexto (prompt) para que apenas as partes relevantes estejam disponíveis para a resposta seguinte. E este é o grande momento para os modelos de mensagens.

Tudo o que pode ser útil para a resposta seguinte na situação de diálogo atual deve entrar, tudo o resto deve sair.

Agentes de informação

Se estiver a trabalhar num agente que apenas deve fornecer informações, então faz sentido fornecer apenas a parte da base de dados de conhecimentos que é realmente relevante. Assim, primeiro o agente inicia uma chamada de função na qual a parte apropriada da base de dados de conhecimentos é recuperada.

Para bases de conhecimentos mais pequenas, pode simplesmente selecionar a partir de uma lista de tópicos, mas para bases de conhecimentos muito grandes é necessário um sistema RAG.

O documento para a área temática é então exibido no prompt através do modelo. O agente pode então concentrar-se totalmente na pergunta.

Agentes transaccionais

Para que o agente execute um processo complexo, é necessário dividi-lo em fases. É possível alternar entre as fases individuais por meio de chamadas de função.

💡 Isto resolve muitos problemas de uma só vez:
  • Atenção total nas fases individuais
  • Elevada fiabilidade do processo - cumpre exatamente as instruções
  • O processo pode ser controlado de forma determinística - o agente não pode simplesmente saltar fases
  • As fases individuais podem ser optimizadas e testadas de forma independente, sem influência nas outras fases
  • respostas não só melhores mas também mais rápidas devido ao contexto mais pequeno
  • O seu agente pode crescer indefinidamente

Exemplo de modelo de aviso

# Função
És um bot de encomendas por telefone na GreatProducts.
 
# Processo geral
Orienta o cliente ao longo do processo de encomenda:
- Cumprimento
- Registo do cesto de compras
- Registo dos dados do cliente
- Registo dos dados de pagamento
- Despedida
Concentra-te totalmente na tarefa atual.
 
# Tarefa atual
{{#if !temp.fase}}
Cumprimente o cliente.
Informe ao cliente que primeiro anotaremos os itens desejados e, ao mesmo tempo, ative a função “Nova_cesta_compra”
@Nova_cesta_compra Crie uma nova cesta de compras para o registo do pedido
{{#elif temp.fase===10}}
Pergunte ao cliente quais são os artigos desejados.
….
Quando todos os artigos tiverem sido registados, diga que agora precisa dos dados do cliente e, ao mesmo tempo, ative a função «Registar_dados».
@Registrar_datos Prepare o registo dos dados do cliente.
{{#elif temp.fase===20}}

{{#elif temp.fase===30}}
….
{{#elif temp.fase===40}}
Despeça-se do cliente e termine a conversa.
{{/if}}
 
#FAQ
P: Porquê?
R: Porque sim!
 
@desligar termina a conversa

Explicação

Defina em cada fase uma função que leva o agente para a fase seguinte. Dentro desta função, defina o campo temp.phase para o valor da fase seguinte.

Isso não cria uma lacuna estranha entre as fases? Não, de todo.

O agente prepara o cliente verbalmente para a nova fase. Depois disso, o agente não espera por uma reação do cliente, mas reage imediatamente com o prompt alterado ao resultado da chamada de função, de modo que ele começa a próxima fase sem interrupções, sem que haja uma lacuna na conversa.

As declarações de função também são exibidas e ocultadas pelo modelo, de modo que o agente vê apenas as funções relevantes. Isso faz uma grande diferença.

Como você altera o prompt dinamicamente durante a conversa, certifique-se de que o contexto em torno das fases seja mantido o suficiente para que o curso da conversa até o momento ainda faça sentido com o novo prompt. No exemplo, apenas a seção # Tarefa atual é alterada dinamicamente. A descrição geral do processo e as perguntas frequentes permanecem as mesmas.