Pessoal, boa tarde
Toda vez que rodo com o Gemini ele não completa, informando "cota excedida".
Como ajustar isso?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Pessoal, boa tarde
Toda vez que rodo com o Gemini ele não completa, informando "cota excedida".
Como ajustar isso?
Olá, André. Como vai?
Esse erro de "cota excedida" (Quota exceeded ou ResourceExhausted) é um comportamento padrão muito comum quando estamos utilizando as chaves de API gratuitas do Google Gemini para projetos de Inteligência Artificial e análise de dados.
A versão gratuita da API do Gemini possui limites rígidos de requisições para garantir o bom funcionamento dos servidores. O Pandas processa as linhas de um DataFrame de forma extremamente rápida. Se o seu código faz uma requisição para a API do Gemini para cada linha da sua planilha usando uma estrutura de laço tradicional (como o .apply() ou um loop for), você atingirá o limite de requisições por minuto (RPM) em poucos segundos.
Para contornar esse limite da versão gratuita e conseguir rodar a sua análise de sentimentos até o final, você pode aplicar três estratégias práticas:
time.sleep)A forma mais simples de respeitar a cota de requisições por minuto é forçar o Python a esperar alguns segundos antes de enviar o próximo review para a IA. Para fazer isso, utilizamos a biblioteca nativa time.
Veja este exemplo de como estruturar a sua função de análise:
import time
def analisar_sentimento_com_pausa(texto):
try:
# Substitua pelo comando real de chamada do seu modelo Gemini
resposta = model.generate_content(f"Analise o sentimento deste review: {texto}")
# Pausa de 2 a 4 segundos entre cada linha para não estourar a cota por minuto
time.sleep(3)
return resposta.text
except Exception as e:
print(f"Erro ao processar: {e}")
# Se der erro de cota, faz uma pausa maior e tenta novamente (opcional)
time.sleep(10)
return "Erro de Cota"
# Aplicando a função na coluna do seu DataFrame Pandas
df['Sentimento'] = df['Review'].apply(analisar_sentimento_com_pausa)
Em vez de enviar um e-mail ou review por vez para o Gemini, você pode agrupar vários reviews em um único bloco de texto e pedir para a IA retornar as respostas formatadas (como uma lista ou JSON).
Por exemplo, você envia 10 reviews de uma vez só no mesmo prompt:
"Analise o sentimento dos 10 reviews abaixo e retorne apenas uma lista com Positivo, Negativo ou Neutro para cada um deles..."
Dessa forma, você gasta apenas 1 requisição para processar 10 linhas do seu Pandas, economizando muito a sua cota de RPM.
Se a sua base de dados tiver milhares de linhas, rodar o script inteiro na API gratuita vai demorar bastante por conta das pausas. Para fins de aprendizado e para validar se o seu código está funcionando perfeitamente, reduza o tamanho do DataFrame usando o método .head() ou .sample():
# Cria um DataFrame menor com apenas 20 linhas para testar o fluxo sem estourar a cota
df_teste = df.sample(20)
df_teste['Sentimento'] = df_teste['Review'].apply(analisar_sentimento_com_pausa)
Experimente adicionar o time.sleep(3) dentro da sua função de chamada da API. Isso costuma resolver de imediato o bloqueio das chaves gratuitas de testes.
Espero que possa ter lhe ajudado!