Importante

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!

1
resposta

Limitação de tokens para a realização das atividades

Pessoal, bom momento!

Estou com problemas para executar a solicitação em IA do dicionário de resenhas classificadas, da aula "Revisando a categorização de resenhas". A algumas aulas já eu passei a utilizar o groq por conta das limitações de token do gemini, e novamente me encontro neste mesmo ponto com o groq. Meu código da solicitação tinha ficado da seguinte forma:

from groq import Groq

client = Groq()
completion = client.chat.completions.create(
    model="openai/gpt-oss-20b",
    messages=[
      {
        "role": "user",
        "content": f"""Você é um analista de dados. Vou te passar muitas resenhas negativas de análises de um produto e eu quero que você encontre cinco categorias diferentes para os tipos de reclamações. Quero que você me retorne as cinco categorias. cada categoria deve ser definida por APENAS uma palavra. Não escreva nada mais além das cinco categorias. Quero que elas sejam retornadas separadas por vírgulas e em letra minúscula, e sem acentos gráficos.
          
          Depois, eu quero que você me retorne apenas um texto no formato JSON contendo três chaves: 
          - 'resenha_original': itá conter a resenha original em inglês;
          - 'resenha_pt': irá conter a resenha traduzida para o português;
          - 'categoria': irá conter a categoria dentre as cinco definidas por você em que a resenha se encaixa.

          {{'resenha_original': 'I didn't like the color of the product',
          'resenha_pt': 'Eu não gostei da cor do produto',
          'categoria': 'design'}} 

          Aqui estão as resenhas negativas, separadas por '#####': {resenhas_negativas_unidas}
                        """
      }
    ],
    temperature=1, # 0: o menos criativo possível; 2: o mais criativo possível.
    max_completion_tokens=7000,
    top_p=1,
    reasoning_effort="medium",
    stream=True,
    stop=None
)

for chunk in completion:
    print(chunk.choices[0].delta.content or "", end="")

json_resenhas_classificadas = completion.text
print(json_resenhas_classificadas)

e, ao executá-lo, tive a seguinte mensagem de erro:

**APIStatusError: Error code: 413** - {'error': {'message': 'Request too large for model openai/gpt-oss-20bin organizationorg_01kvttmbdefg39db352catm4q6service tieron_demand on tokens per minute (TPM): Limit 8000, Requested 10641, please reduce your message size and try again. Need more tokens? Upgrade to Dev Tier today at https://console.groq.com/settings/billing', 'type': 'tokens', 'code': 'rate_limit_exceeded'}}

Como ainda estou bem no início da minha jornada, ainda não entendi muito bem como poderia editar a solicitação (e, honestamente, se há uma relação direta entre a complexidade da minha solicitação com a quantidade de tokens utilizados) para garantir que a quantidade de tokens não seja excedida. Alguém poderia me ajudar com alguma explicação e direcionamentos?

Peço desculpas desde já por possíveis problemas na exibição desta dúvida, mais precisamente na parte em que copiei o código...

Agradeço desde já!

1 resposta

Olá, Daniel, como vai?

A mensagem de erro indica que a requisição enviada ultrapassou o limite de tokens permitido pelo plano da API. Nesse cálculo entram tanto os tokens do texto enviado quanto a quantidade máxima de tokens reservada para a resposta. No seu código, além da variável resenhas_negativas_unidas conter muitas resenhas, o parâmetro max_completion_tokens=7000 faz com que a API considere uma resposta potencialmente muito grande. Somando esses fatores, o total ultrapassa o limite disponível.

Outro detalhe importante é a própria mensagem da API: tokens per minute (TPM): Limit 8000, Requested 10641. Isso significa que a requisição solicitou aproximadamente 10.641 tokens, enquanto o limite da sua conta é de 8.000 tokens por minuto. Nesse caso, o erro não está relacionado apenas à complexidade do prompt, mas também ao limite de capacidade disponível para cada requisição dentro da cota da API.

Uma alternativa é reduzir o valor de max_completion_tokens para algo mais próximo da necessidade da atividade, como 1000 ou 2000, caso seja suficiente.

Espero que essas informações ajudem. O fórum segue à disposição caso queira compartilhar novos testes ou dúvidas.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!