after-gpt-prompt-reducer

Como eu Reduzi o Custo e Uso de Tokens da API do ChatGPT em 40%

Tenho usado a API da OpenAI por várias semanas e tenho pensado em como o ChatGPT é inteligente e consegue entender minhas instruções mesmo quando faltam palavras no texto.

Foi aí que me ocorreu uma ideia: “E se eu pudesse reduzir as palavras usadas nos meus prompts da API para economizar tokens?”

É exatamente isso que vou demonstrar neste post, e você vai ver que é um processo bem simples. Vou dividir o conteúdo em duas seções: uma para aqueles que querem aprender o código e como eu o fiz, e a outra com um aplicativo pronto onde você pode simplesmente inserir o texto desejado.

Como o redutor de prompts funciona

A primeira coisa que você precisa saber é que o nosso prompt passará por duas fases de limpeza:

  1. Primeiro, vamos remover as palavras de parada do texto. Palavras de parada se referem a um conjunto de palavras frequentemente usadas em um determinado idioma. Por exemplo, no português, palavras como “o,” “é,” e “e” são bons exemplos de palavras de parada.
  2. Em seguida, vamos lematizar todos os verbos. O lematizador é um processo que reduz as palavras à sua forma base ou raiz, o que ajuda a simplificar e padronizar as formas verbais e facilita para modelos de linguagem como o GPT entenderem e gerarem texto.

Portanto, vamos dar um exemplo com esta descrição do jogo Baldur’s Gate 3, retirada da Wikipedia:

“Baldur’s Gate III é um jogo eletrônico de RPG com elementos para um jogador e multijogador. Jogadores podem criar um ou mais personagens e formar um grupo ao lado de uma variedade de personagens já criados para explorar o enredo do jogo.”

Se colocássemos isso no Tokenizador da OpenAI, ele nos diria que gastaríamos 82 tokens:


Depois de usar nosso redutor de prompts, o texto que obtemos é:

“Baldurs Gate III jogo eletrônico RPG elementos jogador multijogador Jogadores podem criar personagens formar grupo lado variedade personagens criados explorar enredo jogo”

gpt-depois-do-redutor-prompt
Passamos de 82 para 54 tokens, o que representa uma redução de 34,15% no uso de tokens.

Possíveis Casos de Uso: Por Que Você Iria Querer Reduzir o Uso de Tokens?

Se você já usou a API da OpenAI, provavelmente sabe que ela cobra com base no número de tokens, incluindo tanto os seus prompts quanto as respostas da OpenAI. Embora o uso de um modelo como o GPT-3.5 possa não ser muito caro, o uso do GPT-4 com dados extensos pode se tornar caro.

No meu caso, desenvolvi um aplicativo que busca descrições de produtos em um arquivo .xlsx e as reescreve. Para cada produto em um site, envio uma descrição de produto ao GPT-4 e recebo a descrição de produto reescrita em retorno. Se você, como eu, estiver enviando uma quantidade grande de conteúdo para a API, reduzir os tokens pode ser uma boa ideia.

Também criei um script que extrai descrições de páginas da web e gera títulos e descrições para SEO. Este script usa o mesmo método de limpeza de texto que estou demonstrando aqui.

Como o código do Redutor de Prompts da OpenAI funciona

Seção 1: Entendendo o Código

O código é bastante simples e, além de importar os módulos, gira em torno de 12 linhas de código.
Primeiro, você começa importando os módulos de que precisa, que são:

import nltk  # Kit de ferramentas de linguagem natural para processamento de texto
from nltk.corpus import stopwords  # Conjunto de palavras de parada para filtrar palavras comuns
from nltk.stem import WordNetLemmatizer  # Lematização para normalização de palavras
import string  # Fornece uma coleção de caracteres de pontuação

Em seguida, você faz o download de alguns recursos que precisará, e só precisa executar esta parte uma vez. Depois de baixá-la, você pode excluir essas linhas:

# Baixe os recursos necessários do NLTK
nltk.download('stopwords')  # Baixe o conjunto de palavras de parada
nltk.download('punkt')  # Baixe o tokenizador punkt
nltk.download('wordnet')  # Baixe o conjunto de dados WordNet para lematização

Em seguida, insira a função completa para processar o texto:

# Função para pré-processamento de texto
def preprocess_text(text):

    # Crie um objeto lematizador para o inglês
  lematizador = WordNetLemmatizer()   

    # Carregue o conjunto de palavras de parada para o inglês
    palavras_de_parada = set(stopwords.words('english'))    

    # Divida o texto de entrada em palavras (tokenização)
    palavras = text.split()

    # Aplique lematização, remova palavras de parada, remova espaços em branco e remova caracteres especiais
  palavras_filtradas = [lematizador.lemmatize(palavra) for palavra in palavras if palavra.lower() not in palavras_de_parada and palavra.strip() != '']   

    # Remova aspas simples, hifens e sinais de pontuação
  palavras_filtradas = [palavra.replace("'", "").replace("-", "") for palavra in palavras_filtradas]
    palavras_filtradas = [''.join(char for char in palavra if char not in string.punctuation) for palavra in palavras_filtradas]

    # Reconstrua o texto processado a partir das palavras filtradas
  texto_processado = ' '.join(palavras_filtradas)   

  return texto_processado

Em seguida, você precisará adicionar apenas mais três linhas de código para inserir seu texto e receber a saída formatada:

# Processar texto
texto = "Seu texto aqui"
texto_processado = preprocess_text(texto)
print(texto_processado)

Aqui está o código completo no GitHub: https://github.com/ViniciusStanula/gpt-prompt-reducer

Seção 2: Usando o Aplicativo Pronto

Se você não sabe como programar em Python e está apenas curioso para ver como esse redutor de instruções funciona, criei um aplicativo web simples para você usar:
prompt-reducer-streamlit-app

  1. Vá até o aplicativo web em https://gpt-prompt-reducer.streamlit.app/;
  2. Insira seu texto ou prompt;
  3. Clique no botão;
  4. E obtenha seus resultados.

Então, basicamente é isso. Espero que tenha gostado do conteúdo e ficaria feliz em ver suas aplicações e receber qualquer feedback que você tenha.

Sobre Vinicius Stanula

Especialista de SEO, faixa azul de Jiu Jitsu, eu amo esportes, SEO, dados, tecnologia e gatos. Espero poder contribuir cada vez mais com essa comunidade de SEO que tanto amo.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *