Blog
Novidades do Dcision: modo sombra, motores lado a lado e GPT-Live
5 min de leitura
Na semana passada o Dcision passou a rodar três motores de decisão: Jev, Laya e OpenAI Decisions. Também passou a aceitar imagem, voz e documentos como entrada. A pergunta seguinte veio rápido: qual motor eu uso nesta decisão, e como sei que trocar não piora nada?
As novidades desta versão respondem isso e fecham algumas pontas que ficaram abertas.
Resumo
| Novidade | O que resolve | Onde fica |
|---|---|---|
| Comparar motores | Ver a mesma entrada respondida pelos três motores, lado a lado | Playground |
| Modo sombra | Medir em produção quanto um segundo motor concorda com o principal, sem mudar a resposta | Configurações da decisão e Visão geral |
| GPT-Live | Usar as perguntas e políticas da decisão numa sessão de voz da OpenAI | API pública |
| Recusa como motivo próprio | Saber quando o motor se recusou a responder, e cair no fallback | action_reason |
| Custo dos arquivos | Ver quanto custou transcrever áudio e ler documentos | metrics da resposta |
| Webhook com arquivos | Enviar formulários com anexos direto para o gatilho por webhook | /v1/hooks |
| Quatro templates novos | Notas fiscais, áudios, imagens e guardrail de LLM prontos para usar | Templates |
Comparar motores no Playground
O Playground ganhou o botão Comparar motores. Ele roda o mesmo estado, com o mesmo rascunho, no Jev, no Laya e no OpenAI Decisions ao mesmo tempo. O resultado aparece numa tabela: a resposta de cada pergunta com a confiança, a ação final, a latência e o custo estimado de cada motor. As linhas em que os motores discordam ficam destacadas.
Cada motor conta como uma execução do Playground, e os destinos não são entregues. Se um motor não estiver configurado no workspace, a coluna dele mostra o código do erro, e o resto da comparação continua.
Modo sombra em produção
Comparar alguns exemplos no Playground ajuda, mas o tráfego real é outra coisa. No modo sombra, você escolhe um motor sombra e uma porcentagem das execuções de produção (de 1% a 100%, padrão 10%). Essas execuções também rodam no motor sombra, em segundo plano, com exatamente a mesma entrada que o motor principal recebeu.
O que não muda:
- A resposta vem sempre do motor principal. O motor sombra nunca altera a ação, os destinos ou a latência de quem chamou.
- Execuções sombra não consomem créditos do Dcision. Com a chave do próprio workspace, o provedor cobra na sua conta.
- O Playground nunca roda sombra. Só versões publicadas, chamadas pela API, pelo webhook ou pelo MCP.
Na aba Visão geral, um cartão mostra a concordância geral e por pergunta, quantas execuções sombra rodaram, quantas falharam e a latência p50 do motor sombra. Concordar quer dizer escolher a mesma opção, dar o mesmo nível de nota ou ficar do mesmo lado de 50% numa pergunta de sim ou não. Com isso, a troca de motor vira uma decisão com dados.
GPT-Live: as perguntas da decisão na sessão de voz
A OpenAI integrou o Decisions ao GPT-Live: a sessão de voz delega perguntas ao Decisions enquanto a pessoa ainda está falando. Até aqui, quem queria isso precisava escrever as perguntas de novo no código da sessão, e as políticas, os registros e as ações ficavam de fora.
Agora são dois endpoints:
GET /v1/decisions/{slug}/openai-livedevolve a versão publicada da decisão como o objetodelegationda sessão (type: "decisions"), com as perguntas já no formato da OpenAI.POST /v1/decisions/{slug}/openai-live/answersrecebe asanswersde cada eventodecision.completed. O Dcision aplica as políticas, trata recusas, entrega aos destinos e registra a execução, como numa chamada normal da API.
O motor não é chamado de novo e o custo de motor é zero, porque a OpenAI já cobrou a sessão Live. A execução conta como uma decisão no seu plano.
Recusa vira motivo próprio
O OpenAI Decisions pode se recusar a responder uma pergunta. Antes, isso virava erro de motor. Agora a execução responde 200, a pergunta recusada fica fora de result e a decisão toma a ação de fallback com action_reason.type = "refusal" e o nome da pergunta. A ordem de avaliação ficou assim: políticas, recusa, opção other, confiança mínima e, por fim, continue.
Quanto custou ler os arquivos
Quando o estado traz arquivos, a resposta agora informa metrics.input_files, metrics.input_processing_ms e metrics.input_cost_usd. Documentos lidos localmente (PDF, Office, planilhas) custam zero. Áudio transcrito, imagem descrita para motores só de texto e arquivos lidos pela OpenAI entram no custo, e estimated_cost_usd já soma tudo.
Webhook com arquivos
O gatilho por webhook passou a aceitar multipart/form-data. Campos de texto viram textos do estado, arquivos viram entradas dos campos de imagem, áudio ou arquivo, e um campo state opcional com JSON serve de base. O corpo agora pode ter até 32 MB, e a assinatura HMAC continua valendo sobre os bytes brutos. Um formulário com anexo chega direto à decisão, sem servidor no meio.
Quatro templates novos
- Triagem de notas fiscais: lê o documento e decide entre pagar, revisar ou rejeitar, com escalonamento quando o vencimento está perto.
- Roteamento de áudios: transcreve a mensagem de voz e decide a intenção, a urgência e o sentimento.
- Moderação de imagens: avalia se a foto de um anúncio é segura e combina com a legenda.
- Guardrail de saída de LLM: confere a resposta de um LLM ou agente antes de ela chegar ao usuário. Tem um artigo só sobre ele.
Como começar
Abra uma decisão, vá ao Playground e clique em Comparar motores. Se a concordância for boa, ligue o modo sombra em Configurações e acompanhe a Visão geral por alguns dias antes de trocar o motor principal. A documentação em docs.dcision.io traz o passo a passo de cada novidade, nos cinco idiomas.