Pessoal, boa tarde
Toda vez que rodo com o Gemini ele não completa, informando "cota excedida".
Como ajustar isso?
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!