fix(ia): AI_MODEL para de vazar entre providers (destrava o Gemini na Vercel) - #43
Merged
Merged
Conversation
`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>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
This pull request has been ignored for the connected project Preview Branches by Supabase. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bloqueia a regeração do Plano de Voo da Vertímetal.
O defeito
resolveModelprotegia o override de modelo contra vazamento de família (caller pedegpt-5-nano, cliente está no Gemini, ignora) — mas não aplicava a mesma régua ao fallback de ambiente. EAI_MODELé compartilhado pelos dois providers:Config real desta casa:
AI_MODEL=gpt-4o-mini. ComGEMINI_MODELausente — 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 setarGEMINI_MODEL.A correção
A régua de família passa a valer para toda fonte de nome — override,
OPENAI_MODEL/GEMINI_MODELeAI_MODEL— e o que não passa cai no default do próprio provider. Nome neutro (fine-tune, alias) segue respeitado. Bônus: umGEMINI_MODELpreenchido 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_MODELvira 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.tsdo 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_KEYcontinua obrigatória (o código exige ≥ 20 caracteres). Recomendado tambémAI_PROVIDER=geminieGEMINI_MODEL=gemini-2.5-flash-lite— este último agora por escolha, já que o comentário doplano-voo-v2-serviceregistra quegemini-2.5-flashquebrava o modo-JSON.🤖 Generated with Claude Code