Fluxos / JevModel
Classificação de texto no Airtable: rotule registros automaticamente com uma automação Run a script e o Jev
Classifique um campo de texto longo no Airtable sem sair da base: dispare uma automação quando um registro atender a condições, chame o JevModel numa ação Run a script com fetch() e grave no registro o rótulo, a probabilidade e uma marca de revisão. Inclui secrets, limites de scripts do Airtable, um caminho de preenchimento retroativo com CSV e Batch, testes e quando uma ferramenta no-code serve melhor.
Última atualização:
Resposta rápida: uma ação de script, uma requisição por registro
- As automações do Airtable não têm uma ação genérica de “enviar requisição HTTP”, então APIs de IA externas são chamadas numa ação Run a script com fetch(). Dispare com “When a record matches conditions” (texto não vazio, categoria vazia), passe o ID do registro e o texto como variáveis de entrada e guarde a chave num secret do Airtable lido com input.secret().
- O script envia só o texto para /api/v1/systemone do JevModel com um Choice de 2–12 categorias definidas por você e depois, com table.updateRecordAsync(), grava o rótulo escolhido num campo de seleção única, a probabilidade num campo numérico e marca uma caixa de revisão para probabilidade baixa, other ou erro.
- O Airtable documenta limites por execução de script, entre eles 50 requisições fetch e timeout de 30 segundos por fetch, e a ação não está disponível em testes do plano Team. Cada registro rotulado é uma requisição Jev comum cobrada em tokens; contas verificadas começam com 100.000 tokens grátis. Para registros já existentes, exporte um CSV e use o Console → Batch (50 linhas por lote antes de comprar, 1.000 depois).
Como fica a classificação de texto no Airtable?
Bases do Airtable costumam acumular texto livre que alguém separa à mão: envios de formulário, pedidos de clientes, feedback, inscrições num programa, ideias de conteúdo. Classificar significa ler o texto de um campo de texto longo e preencher uma categoria de uma lista curta e fixa, para que visões, filtros e a próxima automação funcionem sem uma pessoa ler cada linha antes. Uma tabela prática precisa de quatro campos: o texto de origem (Long text), Category (seleção única com opções idênticas aos IDs dos rótulos, por exemplo billing, bug, feature_request, other), Confidence (número com duas casas decimais) e Needs review (caixa de seleção). Mantenha a lista curta e excludente e inclua sempre other, para o modelo ter um destino honesto para texto que não se encaixa. Se a urgência também importa, pergunte à parte como sim/não em vez de colocar urgent na lista; misturar as duas piora ambas as respostas. Este guia cobre uma categoria por registro. Se um registro pode pertencer a várias ao mesmo tempo, use um campo de seleção múltipla e leia antes o guia multi-label.
Classificação de feedback de clientes: um tema, uma prioridade e por que sentimento não bastaRoute customer support with JevChoice, Score, and NoulComo configurar a automação do Airtable passo a passo?
Cinco passos. 1) Crie os quatro campos acima e adicione cada ID de rótulo como opção de seleção única antes da primeira execução; o script grava a opção pelo nome, então os nomes precisam bater. 2) Em Automations, crie uma automação com o gatilho “When a record matches conditions” e duas condições: o campo de texto não está vazio e Category está vazio. Ela dispara quando um registro entra nesse estado, por exemplo quando chega um envio de formulário, e gravar Category tira o registro da condição, então a automação não entra em loop com a própria atualização. 3) Adicione a ação “Run a script”. Na barra lateral de variáveis de entrada, adicione recordId mapeado para o ID de registro do Airtable vindo do gatilho e text mapeado para o campo de texto. 4) Crie uma chave de API do JevModel em Console → API keys com uma conta de e-mail verificado e adicione na aba Secrets do editor como JEVMODEL_API_KEY; o script lê com input.secret("JEVMODEL_API_KEY"). O Airtable restringe a edição de scripts com secrets a quem tem acesso a eles e oculta os secrets na saída do console. 5) Teste a ação com um registro de exemplo, confira o histórico e o log de execução e só então ative a automação. Se a chamada ao Jev falhar, deixe Category vazio e marque Needs review, para um erro temporário nunca rotular errado um registro.
JevModel API: request and responseYour first Jev decisionQuais limites do Airtable e do JevModel considerar?
No lado do Airtable, a central de ajuda lista os limites da ação Run a script: timeout de script documentado em 30 segundos (ampliado temporariamente para 120 segundos no momento em que este texto foi escrito), 30 segundos por fetch, 12 segundos para chamadas à API de scripting, 512 MB de memória, 50 requisições fetch e 30 consultas selectRecords por execução, e até 15 mutações por segundo, cada uma alterando até 50 registros. A ação existe em todos os planos com limitações diferentes, mas não durante o teste do plano Team. Um registro por execução, como no exemplo, fica bem abaixo disso. No lado do JevModel, a requisição inteira (state mais questions) precisa caber em 8.000 caracteres, então corte texto longo antes de enviar; o exemplo mantém os primeiros 6.000. Uma requisição faz de 1 a 8 perguntas; um Choice tem de 2 a 12 opções cujos IDs começam com letra minúscula e usam só minúsculas, dígitos e sublinhados, e um Score tem de 2 a 10 níveis ordenados. Não há campo model nem chave de idempotência: rodar a automação de novo num registro é uma requisição nova, cobrada de novo. Execuções com falha são reembolsadas. Cada registro rotulado é uma requisição comum à API cobrada em tokens do seu saldo; contas verificadas começam com 100.000 tokens grátis, e os pacotes pagos estão na página de preços.
JevModel pricing and free Jev runsJevModel API: request and responseComparação: Run a script vs ferramenta no-code vs exportar CSV para o Batch
Os três enviam a mesma pergunta Jev; muda onde a lógica fica e como os resultados voltam para a base. A tabela compara a forma do fluxo, não a precisão, e nenhuma linha é benchmark.
Classificação de texto no Zapier: AI by Zapier Classify vs Vertex Classify Text vs HTTP → JevCategorize Text no Make.com: AI Toolkit vs HTTP → Jev para rótulos tipados e limiaresBatch text classification with the JevModel API| Dimensão | Run a script do Airtable → Jev | Ferramenta no-code (Zapier, Make, n8n…) | Exportar CSV → Console → Batch |
|---|---|---|---|
| Onde roda | Dentro da base, como ação de automação | Na ferramenta, com gatilho e ações de Airtable | No navegador, uma vez |
| Tempo | Logo depois que o registro atende às condições | Depende do polling ou webhook da ferramenta | Depois, para o acumulado |
| Gravar resultados | table.updateRecordAsync() no mesmo script | Uma etapa de “atualizar registro” na ferramenta | Reimportar ou colar as respostas exportadas |
| Saída do Jev | Rótulo Choice com probabilidades | A mesma resposta, mapeada pela ferramenta | Respostas por linha (50 linhas por lote antes de comprar, 1.000 depois) |
Exemplo de código: classificar um registro e gravar o rótulo (ilustrativo)
Cole o script na ação Run a script e troque tabela, campos e definições de rótulos pelos da sua base. A requisição segue o contrato documentado do JevModel: POST /api/v1/systemone com uma chave Bearer de conta verificada, um state e perguntas nomeadas, aqui um Choice chamado category; uma resposta bem-sucedida tem code 0 e data.answers. Não há campo model porque o site sempre chama typesafe/jev-1.13 via OpenRouter; o JevModel é independente da TypeSafe AI, que desenvolve o Jev. O script envia só o texto, não nomes, e-mails nem outras colunas. Um valor de seleção única é gravado como objeto com name, e essa opção já precisa existir no campo. Registros abaixo do limiar de exemplo, rotulados como other e chamadas com falha recebem Needs review, então uma visão filtrada por essa caixa vira a fila humana. 0,7 é um marcador; escolha seu limiar com uma amostra rotulada.
JevModel API: request and responseChoice, Score, and NoulJev probability, confidence and human-review thresholds// Illustrative only. Airtable automation → "Run a script" action.
// Input variables: recordId (Airtable record ID from the trigger), text (the long-text field).
// Secret: JEVMODEL_API_KEY (Secrets tab in the script editor).
// Fields: Category (single select), Confidence (number), Needs review (checkbox).
const { recordId, text } = input.config();
const table = base.getTable("Requests");
const res = await fetch("https://jevmodel.app/api/v1/systemone", {
method: "POST",
headers: {
Authorization: "Bearer " + input.secret("JEVMODEL_API_KEY"),
"Content-Type": "application/json",
},
body: JSON.stringify({
// The whole request must stay within 8,000 characters.
state: { text: String(text || "").slice(0, 6000) },
questions: {
category: {
type: "choice",
instructions: "Which team should handle this request submitted through our form?",
criteria: {
billing: "Invoices, payments, refunds, or plan changes.",
bug: "Something is broken, shows an error, or behaves unexpectedly.",
feature_request: "Asks for something the product does not do yet.",
other: "Anything that fits none of the labels above.",
},
},
},
}),
});
const out = await res.json();
if (out.code !== 0) {
// Leave Category empty and hand the record to a person.
await table.updateRecordAsync(recordId, { "Needs review": true });
console.log("Jev call failed: " + out.message);
} else {
const { choice, probabilities } = out.data.answers.category;
const p = probabilities ? probabilities[choice] : 0;
await table.updateRecordAsync(recordId, {
Category: { name: choice }, // the option must already exist in the field
Confidence: p,
"Needs review": p < 0.7 || choice === "other", // 0.7 is a placeholder
});
}
Como testar os rótulos e tratar os registros existentes?
Comece por registros cuja categoria uma pessoa já conhece. Exporte algumas centenas em CSV com o texto e o rótulo humano, envie o texto ao JevModel Console → Batch com a mesma pergunta Choice e exporte as respostas por linha. Depois compare as duas colunas por rótulo numa planilha; o Batch não calcula a precisão por você. Veja quais pares se confundem e como a concordância muda ao subir o limiar de probabilidade, reescreva definições vagas e rode a mesma amostra de novo antes de ativar a automação. Esse mesmo caminho por CSV é o jeito mais simples de rotular o acumulado: a automação só dispara para registros que passam a atender às condições, e um script que percorre muitos registros numa execução logo bate no limite de 50 fetch. Depois do lançamento, mantenha uma visão filtrada por Needs review e ordenada por Confidence, e confira toda semana a fatia de other; se ela cresce, a lista de categorias já não reflete o que as pessoas enviam. Não deixe um rótulo apagar, ocultar ou enviar e-mail antes de medir com que frequência ele erra, e mantenha o campo editável para correções.
Evaluate a Jev workflowJev probability, confidence and human-review thresholdsClassificação de texto no Google Sheets: a função =AI() vs Apps Script → API JevQual configuração escolher para o Airtable?
Escolha a ação Run a script quando o trabalho acontece na base, você consegue editar um script curto e seu plano inclui a ação. Escolha uma ferramenta no-code se ela já roda suas outras automações ou se o mesmo texto também precisa ir para Slack, e-mail ou um CRM; os guias de Zapier, Make, n8n, Power Automate e Pipedream mostram a mesma requisição Jev em cada uma. Escolha CSV e Console → Batch para um acumulado pontual ou para testar definições antes de existir qualquer automação. Se seus dados estão no Google Sheets e não no Airtable, o guia de Google Sheets cobre o mesmo padrão com Apps Script. Checklist para qualquer caminho: 1) defina rótulos com um other explícito; 2) mantenha a urgência numa pergunta sim/não separada; 3) envie só o texto, cortado abaixo do limite de 8.000 caracteres por requisição; 4) deixe a categoria vazia e marque o registro quando a chamada falhar; 5) comece com rótulos e uma visão de revisão, e adicione ações seguintes só depois de medir a concordância numa amostra rotulada. O JevModel é só texto e não é open source; anexos, imagens e áudio no Airtable não são classificados nessa configuração.
Classificação de texto multilabel: um Choice, várias perguntas sim/não ou uma segunda passagemNó Text Classifier do n8n: integrado vs chamar Jev em um workflowClassificação de texto no Power Automate: modelos AI Builder vs HTTP → JevClassificação de texto no Pipedream: ação Hugging Face vs HTTP → JevJev é multimodal / baixável? O que o JevModel realmente éPerguntas frequentes
Uma automação do Airtable chama uma API de IA sem script?
Não para uma API qualquer. A central de ajuda do Airtable diz que as automações não têm uma ação genérica de “enviar requisição HTTP”; chamadas externas são feitas com fetch() dentro de Run a script. Sem escrever script, use uma ferramenta no-code como Zapier, Make ou n8n com o gatilho de Airtable e uma etapa HTTP.
Por que usar “When a record matches conditions” e não “When a record is created”?
Um registro criado à mão na grade pode nascer vazio e receber o texto um instante depois, então um gatilho de criação pode enviar um campo vazio. Exigir “texto não vazio e Category vazio” espera haver algo para classificar, e preencher Category tira o registro da condição, então ele não é enviado de novo.
Como rotular milhares de registros existentes do Airtable?
Exporte uma visão para CSV, rode no JevModel Console → Batch com a mesma pergunta Choice (50 linhas por lote antes de comprar, 1.000 depois) e importe as respostas pelo ID do registro. A automação foi pensada para registros novos; uma execução permite 50 requisições fetch, então percorrer uma tabela grande numa execução não escala.
Quanto custa classificar registros do Airtable com o Jev?
Cada registro classificado é uma requisição comum à API cobrada em tokens do seu saldo no JevModel; contas verificadas começam com 100.000 tokens grátis, e várias perguntas na mesma requisição são cobradas juntas. Texto curto e uma requisição por registro mantêm o uso baixo. As execuções de automação contam à parte no seu plano do Airtable. Veja o guia de preços para os pacotes atuais.
JevModel é independente e não é afiliado à TypeSafe AI.