Pular para o conteúdo
Todos os artigos
5 min de leitura

Um pedido de IA é apenas o princípio.

Segue uma tarefa através de autorização, execução durável, registo de utilização e um resultado a que o utilizador pode voltar.

a equipa supastack

Antes de o modelo correr

O utilizador fornece um prompt e um alias como cheap, fast ou smart. O servidor de produção verifica autenticação, propriedade do workspace e permissão antes de aceitar a tarefa. IDs de modelo e segredos de fornecedor ficam atrás dessa fronteira — o alias amigável é o único vocabulário de modelo que o cliente precisa, porque o mapeamento para um modelo real de fornecedor é configuração, não contrato.

Um registo de tarefa durável dá ao pedido uma identidade antes de a execução em segundo plano começar. Essa identidade liga submissão, worker, registos de utilização e resultado. Também dá ao utilizador uma forma de recuperar o trabalho depois de navegar para outro lado.

A ordem importa: o trabalho caro só começa depois de as verificações baratas passarem. Verificar autenticação, propriedade e permissão antes de qualquer coisa ser enfileirada impede que pedidos não autenticados ou não pagos cheguem sequer a um fornecedor — e torna a falha explicável ao utilizador. O guia do módulo de AI documenta onde vivem essas verificações; o post sobre limites de workspace explica porque a propriedade é derivada no servidor em vez de confiada pelo cliente.

Decide de quem são as chaves e os limites

Uma funcionalidade de AI é uma decisão de gasto. O supastack permite aos workspaces trazer as suas próprias chaves de fornecedor — guardadas encriptadas, nunca expostas a clientes — ou correr com chaves da plataforma, e aplica orçamentos por workspace contra um catálogo de preços de modelos. Seja qual for a tua implementação, as perguntas são as mesmas: quem paga, e onde o limite é aplicado?

A aplicação pertence ao workflow do servidor, não a uma estimativa do lado do browser. Um orçamento verificado depois da geração apenas regista o excesso; verificado antes do dispatch, previne-o. A configuração de chaves de fornecedor cobre o lado da configuração.

Torna a execução explícita

O Trigger.dev executa o workflow ai.generate. O router consciente de capacidades escolhe um modelo conforme a política configurada e os requisitos do pedido. Trata essa política como uma entrada operacional: um alias indisponível não deve aparecer como uma escolha funcional na interface.

Uma falha de rede durante a submissão pode deixar o cliente incerto sobre se o trabalho foi enfileirado. O caminho de produção usa uma chave de idempotência delimitada à tarefa e uma submissão guardada para que a recuperação reutilize o pedido original. Enviar uma nova tarefa após cada timeout arrisca trabalho e custo duplicados.

A durabilidade é também o que mantém a interface simples: o ecrã lê o estado da tarefa e renderiza-o em vez de orquestrar retries. Quando a geração atravessa chamadas de modelo, passos de ferramentas ou agendamentos, o contrato explícito de workflow — enqueue, status, cancel — é o que mantém «em progresso» honesto.

Nomeia os modos de falha

Entre o pedido e o resultado há um conjunto específico e finito de coisas que correm mal. Desenha para cada uma pelo nome em vez de para «erros» no abstrato — cada tarefa deve terminar num estado explicável: em fila, a correr, falhada com uma razão, ou completa com um resultado. A recuperação de tarefas é a referência do kit para o lado da recuperação.

O requisito de interface por baixo é que nenhum estado pode mentir. Um spinner que sobrevive ao trabalho, ou uma mensagem de sucesso para uma tarefa que nunca correu, é um ticket de suporte e uma disputa de faturação à espera de acontecer.

  • Submissão com timeout — recupera através da submissão guardada e da chave de idempotência delimitada à tarefa em vez de reenfileirar.
  • Fornecedor falhou a meio da tarefa — marca a tarefa como falhada com uma razão que a interface consiga mostrar.
  • Orçamento esgotado — rejeita antes do dispatch, não depois do gasto.
  • Utilizador navegou para outro lado — o registo durável e o URL de recuperação restauram estado e resultado.

Acompanha o que aconteceu

A geração produz mais do que texto. A aplicação regista a utilização e um resultado de tarefa, e a interface lê o estado através da API autenticada. O registo de utilização é o que torna o orçamento aplicável — é escrito antes de o resultado ser devolvido, não estimado depois.

O email de conclusão é um passo separado com registos de entrega separados. Uma resposta de modelo bem-sucedida não estabelece que um email foi entregue. Manter estes resultados distintos torna as falhas mais fáceis de explicar e repetir sem voltar a executar o modelo desnecessariamente.

O resultado também precisa de um lar a que o utilizador possa voltar: uma página de tarefa, uma lista de histórico, um URL de recuperação entregue nesse email de conclusão. Uma geração que só existe numa notificação transitória é trabalho que te vão pedir para produzir duas vezes.

Verifica cada fronteira

Usa adaptadores fake deterministas para testar primeiro as decisões da aplicação: acesso recusado, aliases desativados, submissões duplicadas, recuperação de resultado e erros genéricos. Estes testes devem correr sem credenciais de fornecedor.

Usa depois o processo de smoke de fornecedor explicitamente opt-in para integrações reais. Exige a configuração sandbox documentada e uma aprovação para fazer chamadas externas. A distinção mantém o desenvolvimento comum rápido enquanto torna as provas de produção específicas e rastreáveis.

Mantém essa divisão estável à medida que o produto muda: cobertura determinista perto de cada decisão de fronteira, para que uma troca de fornecedor, uma mudança de política do router ou um alias novo falhe um teste em vez de falhar um cliente.

Perguntas frequentes sobre funcionalidades de AI em SaaS

Algumas perguntas surgem em cada conversa sobre pôr AI atrás de um paywall.

  • Onde deve acontecer a autorização para funcionalidades de AI? — Antes de qualquer coisa ser enfileirada: autentica, resolve o workspace, verifica a permissão, depois cria a tarefa. Verificações corridas após a geração apenas documentam o abuso.
  • Preciso de suporte bring-your-own-key? — Se os teus clientes têm as suas próprias relações com fornecedores, sim: decide quem paga e quem detém os limites de taxa. Guarda as chaves encriptadas e mantém-nas fora dos clientes — o guia de configuração de AI cobre o modelo.
  • Como impeço que retries cobrem em duplicado? — Delimita a chave de idempotência à tarefa e reutiliza a submissão guardada durante a recuperação, para que um timeout não possa criar uma segunda execução faturável.
  • Que dados de utilização devo registar? — Por tarefa: modelo, unidades consumidas, custo contra o catálogo de preços e o workspace — o suficiente para aplicar orçamentos e responder a perguntas de gasto sem repetir jobs.
  • Quando pertence a geração a um job em segundo plano? — Sempre que puder sobreviver a um pedido. A latência do modelo, os retries e o trabalho em vários passos pedem execução durável; só as chamadas instantâneas e baratas pertencem ao inline.

Perguntas frequentes

14 perguntas

O que é o supastack?

O supastack é uma base modular para construir produtos SaaS com IA. Reúne a infraestrutura comum para que possas concentrar-te nas funcionalidades próprias do teu produto.

Suporta web e mobile?

Sim. O supastack inclui apps Next.js e Expo como pontos de partida para experiências web e mobile.

Que autenticação está incluída?

O Better Auth cobre email/palavra-passe, OTP e login social. Os workspaces pessoais são aprovisionados com a conta para que os registos fiquem delimitados desde o primeiro dia.

Como é suportada a IA?

O supastack inclui IA multi-fornecedor configurável, registo de utilização, orçamentos e suporte encriptado de chaves próprias (BYOK).

Como são geridas as subscrições?

Para produtos construídos sobre o kit, a faturação Stripe, as subscrições e as permissões formam a base do acesso pago. Os segredos de fornecedor ficam no servidor.

Onde vive o código próprio do meu produto?

As funcionalidades próprias do produto ficam num codebase separado, enquanto o produto configura e integra os módulos base do supastack.

Como funciona o preço do supastack?

O kit é uma compra única com atualizações vitalícias: Uma framework por 249 $ (preço de lançamento temporário — 100 $ de desconto sobre o preço normal de 349 $) ou Todas as frameworks (Next.js, iOS, Android) por 499 $ (preço de lançamento temporário — 100 $ de desconto sobre o preço normal de 599 $), mais 75 $ por lugar de programador adicional. Sem subscrição do kit. O checkout neste site entrega a tua chave de licença por email, com acesso ao repo por convite GitHub.

Como é que os workspaces delimitam os meus dados?

Os registos do utilizador são delimitados por workspaceId. Identidade, permissões, utilização de IA, eventos de faturação e entradas de auditoria ficam dentro do limite do workspace pessoal.

Como funcionam os jobs em segundo plano?

O Trigger.dev é o runtime de jobs explícito. O contrato JobRunner só promete enqueue, status e cancel — a semântica de workflow permanece específica e explícita do Trigger.dev.

Como difere o email da divulgação?

O email transacional cobre fluxos de produto como avisos de conclusão de tarefas. A divulgação fria e as campanhas pertencem ao próprio produto, fora do módulo de email deste kit.

Como funcionam as compras no aplicativo móvel?

O aplicativo móvel inclui compras nativas e restauração via RevenueCat, com acesso verificado pelo servidor. Configure as contas das lojas e conclua os testes em dispositivos antes de publicar. A cobrança web permanece separada.

Onde residem as chaves dos fornecedores de IA?

As credenciais BYOK são encriptadas e ficam no servidor. As chaves são higienizadas nos logs; a utilização e os orçamentos ficam visíveis ao nível do workspace.

Quais métodos de pagamento o checkout aceita?

O checkout hospedado na Stripe aceita cartões e também pode oferecer Alipay e WeChat Pay quando essas carteiras estiverem ativadas na conta Stripe — útil para compradores na China. As autorizações de carteira são confirmadas de forma assíncrona, então a página da licença é atualizada assim que o pagamento é liquidado.

Posso solicitar um reembolso?

Depois de obter acesso ao repositório, o supastack é seu para sempre, portanto não pode ser reembolsado. Mas fique tranquilo: você recebe o código-fonte completo com atualizações vitalícias para criar e lançar produtos ilimitados para você ou seus clientes. Você apenas não pode revender o código nem redistribuir o repositório como starter kit ou modelo.

PT