Uma forma de otimizar o uso da API e evitar exceder o limite gratuito de tokens é processar os textos em lotes (batch) ao invés de enviar todas as reviews de uma vez.
Isso principalmente reduz o tamanho do prompt por requisição
Exemplo de implementação:
batch_size = 20
all_classifications = []
for i in range(0, reviews.shape[0], batch_size):
batch = reviews['reviewText'][i:i+batch_size]
prompt = "Classifique cada texto como Positive, Neutral ou Negative. Retorne apenas as classificações sem qualquer explicação, markdown, ou similares.\n"
for idx, review in enumerate(batch):
prompt += f"{idx+1}. {review}\n"
response = client.models.generate_content(
model="gemini-2.5-flash",
contents=prompt
)
all_classifications.extend(response.text.strip().split("\n"))