Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] Tratamento para quantidade de requisições.

Olá, pessoal.
Coloquei um tratamento de exceção. Por ser uma versão gratuita, o Gemini-2.5-Flash possui um limite de 10 requisições por minuto. A minha chave da API está salva como variável de ambiente no Windows.

import time
from google import genai
from google.genai import errors

client = genai.Client()
prompt = input("Como posso ajudar? ")

while prompt.lower() != "sair":
    try:
        # Envia a requisição para o modelo
        response = client.models.generate_content(
            model='gemini-2.5-flash', contents=prompt
        )
        print(response.text)
        print("\n")

        # Se deu tudo certo, pede a próxima pergunta
        prompt = input("Como posso ajudar? ")

    except errors.ClientError as e:
        # Tratamento específico para limite de requisições (Rate Limit)
        if e.status_code == 429:
            print(
                "Ops! Atingi o limite de requisições. Aguardando 10 segundos para tentar de novo..."
            )
            time.sleep(10)  # Pausa o script de verdade
            # Como não pedimos um novo input aqui, o loop reinicia tentando a mesma pergunta automaticamente!
        else:
            # Lida com outros erros da API (chave inválida, sem internet, etc.)
            print(f"Ocorreu um erro na API: {e}")
            prompt = input("Como posso ajudar? ")
1 resposta
solução!

Olá, Juan. Como vai?

Excelente iniciativa! Implementar o tratamento de erros em aplicações que consomem APIs é uma das competências mais importantes para uma pessoa desenvolvedora, especialmente quando lidamos com modelos de IA em camadas gratuitas que possuem limites de taxa (Rate Limits).

Seu código está muito bem estruturado, e o uso da biblioteca time para pausar a execução com o time.sleep() é a forma correta de lidar com o erro 429 (Too Many Requests). Isso evita que o seu script entre em um loop infinito de erros e acabe sendo bloqueado temporariamente pela plataforma.

Para agregar ainda mais valor ao seu projeto, gostaria de sugerir algumas boas práticas e melhorias técnicas:

  • Estratégia de Backoff Exponencial: Em vez de esperar sempre 10 segundos, você pode implementar um atraso que aumenta a cada tentativa falha (ex: 2s, 4s, 8s...). Isso é uma prática padrão de mercado para não sobrecarregar o servidor assim que ele volta a ficar disponível.
  • Contexto de Modelos: Notei que você utilizou o modelo gemini-2.5-flash. Como estamos em 2026, esse modelo é extremamente eficiente em termos de velocidade e custo-benefício. O limite de 50 requisições por minuto na versão gratuita (conforme as especificações atuais da Paid Tier que operamos aqui) é generoso, mas o seu tratamento garante que a aplicação não quebre caso o volume de mensagens suba repentinamente.
  • Segurança com Variáveis de Ambiente: Parabéns por salvar a chave como variável de ambiente no Windows! Nunca deixar a API Key exposta diretamente no código (hardcoded) é a regra número um de segurança para evitar que outras pessoas utilizem sua cota ou acessem seus dados.

Abaixo, deixo uma sugestão de como você poderia refinar o seu bloco except para tornar a espera dinâmica:

import time
# ... restante do código

tentativas = 0
while prompt.lower() != "sair":
    try:
        response = client.models.generate_content(
            model='gemini-2.5-flash', contents=prompt
        )
        print(response.text)
        tentativas = 0 # Reseta o contador em caso de sucesso
        prompt = input("Como posso ajudar? ")

    except errors.ClientError as e:
        if e.status_code == 429:
            tentativas += 1
            espera = 2 ** tentativas # Espera exponencial
            print(f"Limite atingido. Tentativa {tentativas}. Aguardando {espera}s...")
            time.sleep(espera)
        else:
            print(f"Erro: {e}")
            break

Essa abordagem torna seu Chatbot muito mais resiliente e profissional. Continue com esse olhar atento aos detalhes técnicos e de infraestrutura!

Espero que possa ter lhe ajudado!