Skip to content

fix(ia): AI_MODEL para de vazar entre providers (destrava o Gemini na Vercel) - #43

Merged
BarryBits merged 1 commit into
mainfrom
fix/ai-model-nao-vaza-entre-providers
Aug 5, 2026
Merged

fix(ia): AI_MODEL para de vazar entre providers (destrava o Gemini na Vercel)#43
BarryBits merged 1 commit into
mainfrom
fix/ai-model-nao-vaza-entre-providers

Conversation

@BarryBits

Copy link
Copy Markdown
Owner

Bloqueia a regeração do Plano de Voo da Vertímetal.

O defeito

resolveModel protegia o override de modelo contra vazamento de família (caller pede gpt-5-nano, cliente está no Gemini, ignora) — mas não aplicava a mesma régua ao fallback de ambiente. E AI_MODEL é compartilhado pelos dois providers:

return process.env.GEMINI_MODEL || process.env.AI_MODEL || 'gemini-2.0-flash';

Config real desta casa: AI_MODEL=gpt-4o-mini. Com GEMINI_MODEL ausente — que é o caso na Vercel hoje — rodar no Gemini chamava a API do Google pedindo um modelo da OpenAI. O erro que volta é "modelo não encontrado", que não parece em nada com "faltou configurar", e manda quem depura atrás do prompt em vez do ambiente.

É o mesmo bug que o 24b9967 (resguardo de provider) corrigiu, sobrevivendo num caminho vizinho: o resguardo continuava dependendo de alguém lembrar de setar GEMINI_MODEL.

A correção

A régua de família passa a valer para toda fonte de nome — override, OPENAI_MODEL/GEMINI_MODEL e AI_MODEL — e o que não passa cai no default do próprio provider. Nome neutro (fine-tune, alias) segue respeitado. Bônus: um GEMINI_MODEL preenchido com nome de GPT por engano agora é ignorado em vez de quebrar a chamada.

Efeito prático: pra ligar o Gemini na Vercel basta GEMINI_API_KEY. GEMINI_MODEL vira escolha de modelo, não requisito escondido.

Prova

Os 6 testes novos cobrem os dois sentidos do vazamento e o cenário real da Vertímetal. 4 deles falham contra o código antigo (conferido rodando a suíte nova contra o ai-client.ts do HEAD); os outros 2 travam os caminhos que já funcionavam — se passassem nos dois lados não provariam nada.

Gate

1492/1492 testes (+6) · tsc limpo · 0 erro/warning novo de eslint.

Ainda depende de ação na Vercel

Este PR remove a armadilha, mas não substitui a chave: GEMINI_API_KEY continua obrigatória (o código exige ≥ 20 caracteres). Recomendado também AI_PROVIDER=gemini e GEMINI_MODEL=gemini-2.5-flash-lite — este último agora por escolha, já que o comentário do plano-voo-v2-service registra que gemini-2.5-flash quebrava o modo-JSON.

🤖 Generated with Claude Code

`resolveModel` protegia o OVERRIDE de modelo contra vazamento de familia
(caller pede "gpt-5-nano", cliente esta no Gemini, ignora), mas nao
aplicava a mesma regua ao fallback de ambiente. E `AI_MODEL` e
COMPARTILHADO pelos dois providers.

Config real desta casa: `AI_MODEL=gpt-4o-mini`. Com `GEMINI_MODEL`
ausente, rodar no Gemini chamava a API do Google pedindo um modelo da
OpenAI. O erro que voltava era "modelo nao encontrado" — que nao parece
em nada com "faltou configurar", e manda quem depura atras do prompt em
vez do ambiente.

Era o mesmo bug que o commit do resguardo (24b9967) corrigiu, sobrevivendo
num caminho vizinho: o resguardo continuava dependendo de alguem lembrar
de setar `GEMINI_MODEL`. Resiliencia nao pode depender disso.

Agora a regua de familia vale pra toda fonte de nome — override,
`OPENAI_MODEL`/`GEMINI_MODEL` e `AI_MODEL` — e o que nao passa cai no
default do proprio provider. Nome neutro (fine-tune, alias) segue
respeitado; um `GEMINI_MODEL` preenchido com nome de GPT por engano
tambem passa a ser ignorado em vez de quebrar a chamada.

Efeito pratico: pra ligar o Gemini na Vercel basta `GEMINI_API_KEY`.
`GEMINI_MODEL` vira escolha de modelo, nao requisito escondido.

Os 6 testes novos cobrem os dois sentidos do vazamento e o cenario real
da Vertimetal; 4 deles falham contra o codigo antigo (conferido com
stash), os outros 2 travam os caminhos que ja funcionavam.

Gate: 1492/1492 testes, tsc limpo, 0 erro/warning novo de eslint.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Aug 5, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
atr-os Ready Ready Preview Aug 5, 2026 2:49am

@supabase

supabase Bot commented Aug 5, 2026

Copy link
Copy Markdown

This pull request has been ignored for the connected project tdlxqqgechxhkygdmsxq because there are no changes detected in supabase directory. You can change this behaviour in Project Integrations Settings ↗︎.


Preview Branches by Supabase.
Learn more about Supabase Branching ↗︎.

@BarryBits
BarryBits merged commit c9c0d5e into main Aug 5, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant