Todos os artigos
iaecommerceatendimentorag

Arquitetura de um assistente de suporte com IA para e-commerce: RAG sobre FAQ e escalonamento para humanos

Guia prático para arquitetar um assistente de suporte para e-commerce com RAG sobre FAQ, escalonamento para humanos e estimativa de custo por atendimento.

4 min de leitura

Assistentes de IA para suporte em e-commerce precisam responder com precisão, evitar alucinações e saber quando transferir para um atendente humano. Este artigo apresenta uma arquitetura prática usando RAG (Geração Aumentada por Recuperação) sobre uma base de FAQ, com decisão de escalonamento e um método para estimar custo por atendimento. Imagine uma loja virtual de médio porte com um FAQ de 200 perguntas frequentes.

Visão geral da solução

O assistente recebe a pergunta do cliente, busca trechos relevantes no FAQ, monta um prompt com contexto e pede ao modelo de linguagem uma resposta. Se a confiança for baixa ou o cliente pedir um humano, o sistema encaminha para a fila de atendimento.

A arquitetura se divide em quatro componentes principais: interface de chat, serviço de orquestração, base vetorial para o FAQ e integração com o sistema de tickets. O componente de IA usa um modelo de linguagem compatível com o SDK da OpenAI, acessível por variáveis de ambiente.

Arquitetura em camadas

  1. Canal de entrada: chat no site, WhatsApp ou aplicativo. Normaliza a mensagem e envia para o orquestrador.
  2. Orquestrador: coordena o fluxo, chama o recuperador, monta o prompt, decide escalonamento e registra métricas.
  3. Base vetorial: armazena embeddings das perguntas e respostas do FAQ. Pode ser um banco como pgvector, Qdrant ou Weaviate.
  4. Modelo de linguagem: gera a resposta final com base no contexto recuperado.
  5. Sistema de tickets: fila de atendimento humano, acionado quando necessário.

Pipeline RAG sobre FAQ

O passo inicial é indexar o FAQ. Cada entrada é convertida em embeddings (vetores) e armazenada com metadados, como categoria e resposta canônica. Durante a consulta, a pergunta do cliente é transformada em embedding e comparada por similaridade de cosseno com os vetores armazenados. Os trechos mais relevantes (top-k) são inseridos no prompt do modelo.

Exemplo de código para inicializar o cliente e buscar contexto:

python
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ['API_KEY'],
    base_url=os.environ['BASE_URL']
)

def buscar_contexto(pergunta, top_k=3):
    # Suponha que embedding_pergunta e busca_vetorial já estejam implementados
    vetor_pergunta = gerar_embedding(pergunta)
    resultados = busca_vetorial(vetor_pergunta, top_k=top_k)
    contexto = chr(10).join([item['texto'] for item in resultados])
    return contexto, resultados

O prompt final combina instruções, contexto e a pergunta. É importante incluir uma instrução para o modelo admitir quando não souber a resposta, reduzindo alucinações.

python
def gerar_resposta(pergunta, contexto):
    prompt = f'''
Você é um assistente de suporte de uma loja virtual.
Use apenas as informações do contexto para responder.
Se a informação não estiver no contexto, diga que não sabe e sugira falar com um atendente.

Contexto:
{contexto}

Pergunta: {pergunta}
'''
    resposta = client.chat.completions.create(
        model='nome-do-modelo-fornecido',
        messages=[{'role': 'user', 'content': prompt}],
        temperature=0.2
    )
    return resposta.choices[0].message.content

Estratégia de escalonamento para humano

Nem toda pergunta deve ser respondida automaticamente. Critérios comuns para escalonamento:

  • Baixa similaridade: se a pontuação do trecho mais relevante for inferior a um limiar (ex.: 0,75), o sistema encaminha para humano.
  • Pedido explícito: frases como 'quero falar com uma pessoa' acionam transferência imediata.
  • Sentimento negativo: detecção de frustração pode antecipar o escalonamento.
  • Tópicos sensíveis: reembolsos, cancelamentos e problemas de pagamento podem exigir atenção humana.

O orquestrador pode avaliar esses critérios antes de gerar a resposta final. Uma abordagem simples é usar a similaridade do RAG como proxy de confiança. Para casos intermediários, o assistente pode pedir confirmação ou oferecer a opção de falar com atendente.

Exemplo de decisão no orquestrador:

python
def decidir_escalonamento(resultados, pergunta):
    if not resultados:
        return True
    melhor_score = resultados[0]['score']
    if melhor_score < 0.75:
        return True
    if any(termo in pergunta.lower() for termo in ['humano', 'atendente', 'pessoa']):
        return True
    return False

Estimativa de custo por atendimento

Para estimar o custo por atendimento, é necessário medir o consumo de tokens em cada etapa:

  1. Embedding da pergunta: o texto do cliente é convertido em vetor. O custo depende do número de tokens da pergunta e do custo por token do modelo de embeddings.
  2. Recuperação: a busca vetorial em si tem custo de infraestrutura (banco de dados), geralmente fixo ou proporcional ao volume de dados.
  3. Geração da resposta: o prompt completo (instruções + contexto recuperado + pergunta) conta como tokens de entrada; a resposta gerada conta como tokens de saída. O custo total é a soma dos dois.
  4. Armazenamento dos embeddings: o FAQ indexado ocupa espaço no banco vetorial, com custo mensal por GB ou por vetor.

Uma forma prática de chegar a uma ordem de grandeza é instrumentar a aplicação para registrar, por atendimento, o total de tokens de entrada e saída do modelo de geração, e o total de tokens processados pelo modelo de embeddings. Multiplicando pelo custo unitário do provedor (que varia por modelo e contrato), obtém-se o custo variável por atendimento. A esse valor somam-se os custos fixos de infraestrutura e, se houver, o custo do atendente humano quando ocorre escalonamento.

É importante tratar essa estimativa como um exercício de orçamento, não como promessa de economia. O valor real depende do volume, da complexidade das perguntas e da taxa de escalonamento.

Considerações finais

A arquitetura descrita permite iniciar com um FAQ simples e evoluir para bases maiores, múltiplos modelos e políticas de escalonamento mais sofisticadas. O uso do SDK da OpenAI facilita a troca de provedores, mantendo o código portável. Ao medir tokens e custos desde o início, a equipe consegue ajustar o modelo e o limiar de escalonamento para equilibrar qualidade e despesa.

A TokenRecarga fornece acesso a modelos de IA para empresas brasileiras, com atendimento e faturamento no Brasil.

Quer entender como a sua empresa pode usar modelos de IA com atendimento e faturamento no Brasil? Fale com a gente — a equipe da TokenRecarga responde em português.

Quer usar isso na sua empresa?

Conte o que sua equipe precisa e preparamos uma proposta.

Continue lendo