Meus 2 cents,
Sobre a questao nao deterministica, estamos usando o seguinte procedimento:
-
Quando um usuario faz uma pergunta, a primeira coisa eh tokenizar e determinar se a pergunta ja nao existe no cache permantente (DB). Se sim, ja retorna a reposta padrao (estilo FAQ).
-
Caso o usuario faca a mesma pergunta novamente na mesma sessao, o fluxo pergunta se ele nao estava satifisfeito com a resposta anterior e oferece: a) entrar em modo de reposta avancada (sem uso do cache) ou b) transferir a pergunta para um atendente humano (mas com a resposta assincrona, podendo variar de horas a dias).
OBS: Por fluxo nao estou dizendo N8N (que ja usamos e abandonamos) - mas o fluxo de sistema usando python e tools.
-
Em caso da pergunta nao existir no cache ou ser modo avancado, uma IA supervisora "emula" o usuario e faz a pergunta para uma IA analisadora. Esta IA faz o RAG/CAG/Skills/etc necessario para chegar em uma ou mais respostas (em alguns casos, mais de um modelo e modo de RAG/CAG pode ser usado). A IA supervisora escolhe a resposta mais adequada, grava no cache e devolve para o usuario. Todas as perguntas e respostas geradas, assim como a indiacao da escolhida sao armazenadas para analise posterior (dashboard, estatisticas, etc).
-
Dentro do possivel, perguntas referentes a dados de aplicativos/ERP sao resolvidos via MCP ligado direto na API do proprio ERP.
-
A qualquer momento a pessoa pode pedir um atendente humano - mas eh avisada que entra em um fluxo que pode levar horas ou dias para ser respondido (no caso especifico eh aceitavel).
-
Usamos Openrouter e mescla de modelos conforme o tipo de assunto/atividade/custo de geracao (e tanto quanto possivel, gratis).
Existe um monte de detalhes aqui (como sub-IAs especializadas, semelhantes ao que o SKILLs do CLAUDE faz, mas via codigo python) - mas procurei dar uma ideia de como temos trabalhado.
E mesmo assim - ainda esta longe de ser algo perfeito.
Ou como voce colocou:
E isso, do ponto de vista de design de produto, é o inferno na Terra.
Saude e Sucesso !