Nessas 40 análises de sentimentos, durou cerca de 33 segundos.
Mas se eu tivesse 40.000 análises para fazer, duraria cerca de 33.000 segundos ou 9 horas e 10 minutos.
Em produção, esse tempo me parece ser inviável.
Como acelerar esse processamento?
Nessas 40 análises de sentimentos, durou cerca de 33 segundos.
Mas se eu tivesse 40.000 análises para fazer, duraria cerca de 33.000 segundos ou 9 horas e 10 minutos.
Em produção, esse tempo me parece ser inviável.
Como acelerar esse processamento?
Oi, Sergio, tudo bem?
Esse tempo de espera de 33 segundos para 40 análises é totalmente normal. O que está acontecendo no código da aula é que o programa manda a primeira resenha para a API do Gemini e fica esperando a resposta voltar pela internet. Ele só manda a segunda resenha quando a primeira termina.
Realmente, fazer isso uma por uma para 40.000 análises levaria horas. O tempo que isso vai levar depende sempre de duas coisas:
Em um ambiente real de produção, nós contornamos isso mudando a forma de enviar os dados. Em vez de mandar um texto por vez na fila, nós ajustamos o código para mandar "pacotes" com vários textos juntos de uma vez só, ou fazemos com que o código envie várias perguntas simultaneamente.
O único detalhe é que as APIs têm limites de uso por minuto, então em uma versão gratuita, menor seria sua capacidade e com toda certeza o servidor negaria essa solicitação, então não dá para simplesmente despejar 40.000 textos de uma vez só.
Em resumo, a possibilidade existe, mas vai depender da capacidade da API.
Bons estudos!
Sucesso ✨
Entendi.
Poderia dar um pequeno exemplo de como seria feito para enviar um "pacote" de vários textos de uma vez e como seriam capturadas as respostas deste pacote?
Oi, Sergio! Tudo bem?
Uma forma de enviar vários textos de uma vez, o que chamamos de batch processing, é organizar os dados em uma lista e processá-los dentro da mesma rotina. Em APIs como a do Gemini, dá para fazer isso usando programação assíncrona em Python com a biblioteca asyncio. Assim, o código não precisa esperar a resposta de uma requisição para só então enviar a próxima; várias chamadas podem ser feitas quase ao mesmo tempo.
Um exemplo simplificado em Python seria algo assim:
import asyncio
# Simula uma chamada para a API
async def analisar_sentimento(texto):
# Aqui entraria a chamada real ao Gemini
await asyncio.sleep(1)
return f"Resultado para: {texto[:10]}..."
async def processar_pacote(lista_de_textos):
tarefas = [analisar_sentimento(t) for t in lista_de_textos]
resultados = await asyncio.gather(*tarefas)
return resultados
# Exemplo de uso
textos_para_analisar = ["Ótimo produto", "Não gostei", "Entrega rápida"]
# resultados = asyncio.run(processar_pacote(textos_para_analisar))
Mesmo usando esse tipo de abordagem, é importante respeitar os limites da API. Existem cotas de requisições por minuto (RPM). Se você tentar enviar algo como 40 mil chamadas de uma vez, a API provavelmente vai bloquear. O mais seguro é dividir o processamento em pequenos lotes, por exemplo de 50 em 50, esse código é só um exemplo do que poderia ser feito em uma cota mais robustaz.
Também vale consultar a documentação oficial do Google Generative AI para Python, que explica com mais detalhes como lidar com múltiplas requisições.
Bons estudos!