Radar IA 20 de outubro de 2026
✨ IA MÁGICA Agentes · Modelos · Automação
ÚLTIMAS
Automação e Ferramentas

Como criar um formulário que classifica pedidos com IA

Google Forms, planilha e Apps Script chamando a API do Gemini com categorias fixas e JSON Schema, fila de revisão para baixa confiança e aviso de LGPD.

Como criar um formulário que classifica pedidos com IA
Imagem: capa editorial — Automação e Ferramentas

Para criar um formulário que classifica pedidos com IA, ligue um Google Forms a uma planilha, crie no Apps Script um gatilho de envio de formulário que manda o texto do pedido para a API do Gemini (ou da OpenAI) com uma lista fechada de categorias e um JSON Schema de resposta, e grave a categoria na própria linha da planilha. Pedidos em que o modelo marca baixa confiança, escolhe “outro” ou indicam urgência alta vão para uma fila de revisão humana. No formulário, um aviso curto explica que o texto será analisado por IA e para quê.

O resultado é uma triagem que começa no momento do envio, com categorias que não variam de grafia e um caminho claro para os casos duvidosos. Este guia trata de pedidos que chegam por formulário (orçamento, suporte, solicitação interna). Para mensagens que chegam por e-mail, o assunto é outro e está no guia de triagem de e-mails de atendimento com IA.

Resumo rápido

  • Fluxo: Google Forms grava na planilha, o gatilho “ao enviar formulário” chama a IA e o script escreve categoria, urgência e confiança na mesma linha.
  • Use saída estruturada com JSON Schema e enum para as categorias: o modelo só pode responder com valores da lista.
  • Saída estruturada garante o formato, não o acerto. O script ainda valida a resposta e manda os casos duvidosos para revisão.
  • Inclua sempre a categoria “outro” e trate-a como “precisa de gente”.
  • Avise no formulário que a IA classifica o pedido, peça só os dados necessários e não use o nível gratuito da Gemini API com dados pessoais.

Como o fluxo funciona

São quatro peças, todas dentro do Google Workspace, exceto a chamada à API:

  1. Google Forms: perguntas objetivas (nome, contato, tipo de cliente) e uma pergunta aberta “Descreva seu pedido”.
  2. Planilha de respostas: cada envio vira uma linha. Você acrescenta à direita as colunas Categoria, Urgência, Confiança, Justificativa e Status.
  3. Apps Script: um gatilho instalável de envio de formulário recebe o evento, lê o texto e chama a IA.
  4. Fila de revisão: uma aba “Revisão” (ou um filtro por Status) onde ficam os pedidos que uma pessoa precisa olhar antes de encaminhar.

A documentação do Apps Script descreve duas versões do gatilho de envio: uma vinculada ao Forms, cujo evento traz o objeto response com a resposta inteira, e outra vinculada à planilha, cujo evento traz namedValues (perguntas e respostas por nome), values e range (as células que receberam os dados). A versão da planilha é a mais simples aqui, porque o range já diz em que linha gravar o resultado.

Defina as categorias antes de escrever qualquer código

A qualidade da classificação depende mais da lista de categorias do que do modelo. Algumas regras práticas:

  • Categorias que não se sobrepõem: se “Orçamento” e “Instalação” podem descrever o mesmo pedido, o modelo vai oscilar entre elas. Defina cada uma com uma frase e um exemplo.
  • Poucas categorias: comece com cinco a oito. Dá para dividir depois, com dados reais na mão.
  • “Outro” obrigatório: sem essa saída, o modelo é forçado a encaixar qualquer coisa em alguma categoria. A documentação da OpenAI recomenda dizer no prompt o que fazer quando a entrada não permite uma resposta válida, porque o modelo sempre tenta preencher o schema.
  • Uma intenção por pedido: se é comum o cliente pedir duas coisas no mesmo texto, leia o guia de classificação multilabel antes de decidir o schema.

Saída estruturada no Gemini e na OpenAI

Saída estruturada é quando você entrega à API um JSON Schema e o modelo devolve um JSON que segue aquele formato. Com um campo enum, a categoria só pode ser um dos valores listados, o que elimina “Orçamentos”, “orcamento” e “Pedido de orçamento” como variações da mesma coisa.

Item Gemini API (Interactions API) OpenAI (Responses API)
Onde vai o schema response_format com mime_type: "application/json" e o campo schema text.format com type: "json_schema", name, schema e strict: true
Lista fechada de valores enum em strings e números enum no schema
Exigências do schema Nem todos os recursos de JSON Schema são aceitos; schemas muito grandes ou aninhados podem ser rejeitados Exemplos usam additionalProperties: false e todos os campos em required
O que não é garantido A documentação avisa que o JSON é válido, mas os valores ainda precisam de validação Recusas podem vir fora do schema; resposta cortada por limite de tokens fica incompleta
Alternativa mais fraca Pedir JSON só no prompt JSON mode (json_object), que garante JSON válido mas não a aderência ao schema

Nos dois casos, trate a saída estruturada como garantia de formato. Quem garante que a categoria faz sentido é a sua validação e a revisão humana.

O script, passo a passo

1. Chave e gatilho

Na planilha de respostas, abra Extensões > Apps Script, salve a chave da API em Configurações do projeto > Propriedades do script (GEMINI_API_KEY) e rode uma vez:

function instalarGatilho() {
  ScriptApp.newTrigger('classificarPedido')
    .forSpreadsheet(SpreadsheetApp.getActive())
    .onFormSubmit()
    .create();
}

Gatilhos instaláveis rodam com a conta de quem os criou, então use uma conta da empresa, não a pessoal de um funcionário que pode sair.

2. Chamada com schema

const CATEGORIAS = ['Orçamento de instalação', 'Manutenção preventiva',
  'Conserto', 'Garantia', 'Financeiro', 'Outro'];

function classificarPedido(e) {
  const texto = e.namedValues['Descreva seu pedido'][0];
  const schema = {
    type: 'object',
    properties: {
      categoria: { type: 'string', enum: CATEGORIAS },
      urgencia: { type: 'string', enum: ['baixa', 'media', 'alta'] },
      confianca: { type: 'string', enum: ['alta', 'baixa'] },
      justificativa: { type: 'string', description: 'Uma frase curta.' }
    },
    required: ['categoria', 'urgencia', 'confianca', 'justificativa']
  };
  const corpo = {
    model: 'gemini-3.8-flash',
    store: false,
    input: 'Classifique o pedido de um cliente de assistência técnica. '
      + 'Se não houver informação suficiente ou nenhuma categoria servir, '
      + 'use "Outro" e confianca "baixa". Pedido:n' + texto,
    response_format: { type: 'text', mime_type: 'application/json', schema: schema }
  };
  const resp = UrlFetchApp.fetch('https://generativelanguage.googleapis.com/v1beta/interactions', {
    method: 'post', contentType: 'application/json',
    headers: { 'x-goog-api-key': PropertiesService.getScriptProperties().getProperty('GEMINI_API_KEY') },
    payload: JSON.stringify(corpo), muteHttpExceptions: true
  });
  gravar(e.range.getRow(), resp);
}

A Interactions API é a interface que a Google recomenda para projetos novos desde junho de 2026; a generateContent segue suportada. O nome do modelo é o dos exemplos da documentação em outubro de 2026: confira a página de modelos antes de usar. O parâmetro store: false desliga o armazenamento da interação, que por padrão fica guardada por 55 dias no nível pago e 1 dia no gratuito.

3. Validar e decidir a rota

function gravar(linha, resp) {
  const aba = SpreadsheetApp.getActive().getSheetByName('Respostas ao formulário 1');
  let r = null;
  if (resp.getResponseCode() === 200) {
    const passo = JSON.parse(resp.getContentText()).steps
      .filter(s => s.type === 'model_output').pop();
    try { r = JSON.parse(passo.content.find(c => c.type === 'text').text); } catch (err) {}
  }
  const valido = r && CATEGORIAS.includes(r.categoria);
  const revisar = !valido || r.confianca === 'baixa'
    || r.categoria === 'Outro' || r.urgencia === 'alta';
  aba.getRange(linha, 8, 1, 5).setValues([[
    valido ? r.categoria : 'ERRO', valido ? r.urgencia : '',
    valido ? r.confianca : '', valido ? r.justificativa : '',
    revisar ? 'Revisão' : 'Encaminhado'
  ]]);
}

Ajuste o nome da aba e a coluna inicial (8, no exemplo) ao seu formulário. Se a API falhar, a linha fica como ERRO e em revisão: nenhum pedido some.

A fila de revisão para baixa confiança

O campo confianca é uma autoavaliação do modelo, útil como sinal, mas não calibrada. Por isso a regra de revisão soma critérios objetivos: categoria “Outro”, resposta inválida, erro de API e urgência alta (onde um erro custa caro). Depois de algumas semanas, compare o que foi para revisão com a decisão final da equipe e ajuste. O guia sobre quando um classificador deve se abster mostra como medir esse ponto de corte.

Na prática, a fila é uma visão filtrada da planilha por Status = Revisão, com uma coluna “Categoria final” preenchida pela pessoa. Essa coluna vira seu conjunto de teste: sempre que mudar o prompt ou o modelo, reclassifique esses pedidos e veja quantos concordam com a decisão humana.

Privacidade e LGPD no formulário

Classificar um pedido com IA é tratamento de dados pessoais quando o texto identifica alguém. Pontos que a LGPD (Lei 13.709/2018) torna obrigatórios ou recomendáveis:

  • Informar: o artigo 9º garante ao titular acesso claro à finalidade do tratamento, à identificação do controlador e ao uso compartilhado de dados. Coloque na descrição do formulário algo como: “Usamos um serviço de IA para classificar seu pedido e encaminhá-lo à equipe certa. Uma pessoa revisa os casos duvidosos.”
  • Minimizar: o princípio da necessidade (artigo 6º) limita o tratamento ao mínimo necessário. Envie para a API só o texto do pedido, sem nome, CPF ou telefone, que ficam na planilha.
  • Revisão: o artigo 20 dá ao titular o direito de pedir revisão de decisões tomadas unicamente com base em tratamento automatizado que afetem seus interesses. Se a classificação definir prazo ou prioridade de atendimento, tenha um canal para contestação.
  • Escolher o nível da API: os termos da Gemini API dizem que, nos serviços não pagos, o conteúdo pode ser usado para melhorar produtos e lido por revisores humanos, e pedem para não enviar informação pessoal ou confidencial. Para dados de clientes, use o nível pago, em que a Google afirma não usar prompts e respostas para melhorar produtos.

Para o desenho completo de governança, veja LGPD e IA na empresa.

Exemplo: assistência técnica de climatização no Recife

Pense numa empresa de instalação e manutenção de ar-condicionado no Recife que recebe pedidos pelo site, por um link do Google Forms. Antes, uma atendente lia cada resposta e repassava ao técnico ou ao financeiro por mensagem.

Com o fluxo, um pedido como “o aparelho do quarto está pingando água desde ontem” chega classificado como Conserto, urgência média, confiança alta, e vai direto para a lista do técnico. Já “quero saber se a garantia cobre a troca do controle, comprei em março” vira Garantia, mas com confiança baixa, porque não diz se a compra foi com a empresa: vai para a fila de revisão, e a atendente pergunta antes de encaminhar. Um texto como “vocês vendem filtro de água?” cai em Outro e também passa por uma pessoa. A atendente deixa de ler tudo e passa a olhar só o que o sistema não resolveu sozinho.

A integração usa recursos que a empresa já tinha no Workspace. Se quiser ver onde mais o Gemini aparece no pacote, consulte a página de integrações do Google Gemini.

Erros comuns

  • Confiar no schema como se fosse validação: a categoria pode estar na lista e ainda assim errada. Valide no script e acompanhe a taxa de correção humana.
  • Classificar com perguntas de múltipla escolha mal desenhadas: se o próprio cliente pode escolher a categoria com segurança, uma pergunta fechada no formulário é mais barata e exata do que IA. Use a IA para o texto livre.
  • Esquecer o caminho de erro: sem tratar falha de API, a linha fica em branco e o pedido não entra em fila nenhuma.
  • Mudar as categorias sem histórico: renomear “Conserto” para “Reparo” quebra filtros e relatórios. Versione a lista e guarde a data da troca.
  • Mandar dados pessoais para a API: nome e telefone não ajudam a classificar e aumentam o risco.
  • Ignorar limites do Apps Script: cada execução tem até 6 minutos e há cotas diárias de chamadas externas; para picos grandes, enfileire e processe em lote com um gatilho de tempo.

Perguntas frequentes

Funciona com conta gratuita do Google?

Forms, Planilhas e Apps Script funcionam em contas pessoais, com cotas menores que as do Workspace (por exemplo, 20 mil chamadas de URL Fetch por dia, contra 100 mil). O ponto de atenção é a API: o nível gratuito do Gemini não deve receber dados pessoais.

Posso usar a OpenAI em vez do Gemini?

Sim. Troque a chamada pela Responses API com text.format do tipo json_schema e strict: true. A validação e a fila de revisão continuam iguais. Verifique também se a resposta veio como recusa, que a OpenAI documenta como um item à parte, fora do schema.

Preciso pedir consentimento para usar IA?

A LGPD tem outras bases legais além do consentimento, e a escolha depende do caso; vale consultar quem cuida de privacidade na empresa. Independentemente da base, informar a finalidade de forma clara é obrigação do artigo 9º.

A IA pode responder o cliente automaticamente?

Pode, mas é outro projeto. Comece só classificando e encaminhando. Resposta automática exige revisão do texto, regras de tom e cuidado com promessas de prazo.

Quantas categorias são demais?

Não há número oficial. Na prática, se a equipe discorda entre si sobre a categoria certa de um pedido, o modelo também vai errar. Una categorias até que pessoas diferentes classifiquem do mesmo jeito.

Fontes e leitura recomendada

Sobre

A Redação IA Mágica é formada por especialistas e pesquisadores em inteligência artificial aplicada, agentes autônomos, automações no-code/pro-code e grandes modelos de linguagem (LLMs). Nossos conteúdos cobrem implementações reais, análises e tutoriais aprofundados para profissionais e empresas.