Como desenvolvedor indie que mantém vários apps móveis local-first, meus princípios sempre foram velocidade, utilidade e eficiência de custos. No TinyRecipe, o objetivo era simples: ajudar a reduzir o desperdício de alimentos gerando receitas práticas, passo a passo, com base somente nos ingredientes que já estão na geladeira ou na despensa.
Adicionar IA generativa a um app móvel pode rapidamente resultar em respostas lentas, dados JSON imprevisíveis e custos crescentes de API quando a arquitetura não é bem planejada. Veja como integrei o Firebase AI Logic, com Gemini no Vertex AI, para gerar receitas estruturadas rapidamente e manter os custos operacionais baixos.
O desafio central: limitar o LLM
Se você der liberdade total a um LLM para criar receitas, três problemas surgem de imediato:
- Alucinações e combinações estranhas: ele pode sugerir uma sopa feita com azeite, molho de soja e limão.
- Esquema inconsistente: converter texto livre ou Markdown sem estrutura em componentes nativos da interface gera falhas frágeis no cliente.
- Alto consumo de tokens: respostas sem limites consomem rapidamente o orçamento de tokens em instruções com várias etapas.
Para resolver isso, usei a integração de backend do Firebase com Vertex AI para impor instruções de sistema rigorosas e interpretar saídas estruturadas.
1. Restrições no prompt de sistema e validação de esquema JSON
Em vez de pedir uma boa receita ao modelo, o prompt de sistema o obriga a seguir um contrato rígido de esquema JSON:
{
"title": "String",
"prep_time_minutes": "Number",
"difficulty": "Easy | Medium | Hard",
"matched_pantry_items": ["Array of Strings"],
"missing_staples_required": ["Array of Strings"],
"instructions": [
{
"step_number": 1,
"text": "String"
}
]
}Duas restrições tornaram o recurso muito mais útil na prática:
- Isenção de itens básicos: os usuários não deveriam precisar marcar sal, pimenta, água da torneira ou óleo de cozinha na despensa. O prompt permite explicitamente esses itens básicos, simplificando a seleção.
- Isolamento rigoroso dos ingredientes: o modelo prioriza os ingredientes marcados como disponíveis na despensa digital antes de sugerir itens adicionais.
2. Otimizações no cliente: uma experiência sem atrito
Ninguém quer digitar “250 g de peito de frango em cubos” no teclado do celular enquanto está na cozinha.
[Usuário toca nas tags da despensa] -> [Cliente monta um array] -> [Solicitação ao Firebase AI] -> [Renderização da interface nativa]- Tags de seleção rápida por categoria: a interface oferece tags categorizadas para selecionar rapidamente ingredientes comuns da geladeira e da despensa.
- Cache local: antes de enviar uma solicitação ao Firebase AI Logic, o app calcula o hash do array de ingredientes selecionados. Se o usuário pedir uma receita com os mesmos ingredientes principais em pouco tempo, o TinyRecipe exibe o resultado em cache imediatamente, sem outra chamada à API.
3. Lições aprendidas e próximos passos
O Firebase AI Logic tornou surpreendentemente simples escalar um recurso de IA generativa sendo um desenvolvedor solo. Com esquemas JSON rigorosos na fronteira do modelo e estado local, o TinyRecipe oferece:
- geração em menos de dois segundos
- renderização previsível no cliente, sem falhas de análise
- desperdício mínimo de tokens de API
O recurso de despensa com IA já está disponível para iOS e Android.
