Vai criar uma aplicação usando a OpenAI, mas não sabe quanto pode custar?
Me siga no X | Me siga no LinkedIn | Apoie a Newsletter | Solicite uma consultoria
Em 2023, a OpenAI consolidou sua posição como principal provedora de APIs com soluções como ChatGPT, Whisper e DALL-E. Diversas empresas e organizações começaram a fazer uso desses serviços como forma de modernizar seus negócios.
No entanto, nada é de graça. Para incorporar estes serviços da OpenAI em operações comerciais e maximizar o retorno sobre o investimento, é necessário compreender o custo total desses serviços.
A OpenAI oferece um serviço de pagamento no estilo “pague o que você utilizar”. A princípio, é um modelo simples de entender. No entanto, se não levarmos em consideração as características do negócio, os custos da OpenAI podem ir de “de graça” para “meu deus”.
Neste artigo, iremos explorar alguns dos diferentes elementos que podem contribuem para o custo de integrar seu negócio com a OpenAI.
Modelo de Pagamento da OpenAI
A OpenAI oferece como modelo de pagamento um serviço de pague o quanto você utilizar, dessa forma, os usuários pagam somente por aquilo que foi de fato utilizado.
No entanto, o valor varia de acordo com o serviço. Por exemplo, APIs de modelos de linguagem são tabeladas com base em 1) no modelo selecionado (modelos maiores tendem a ser mais caros de ser utilizados) e 2) na quantidade de tokens utilizados (considerando tanto pergunta como resposta).
Serviços de audios (utilizando Whisper) são tabelados de acordo com o tamanho do áudio a ser processado, enquanto que serviços de imagens (DALL-E) são tabelados de acordo com a resolução da imagem. Nesse texto, vamos focar nos serviços disponibilizados via API de modelos de linguagem. Para uma visão geral dos custos dos serviços da OpenAI, consulte o site oficial.
Custos Básicos da OpenAI
Para entender o custo da OpenAI no orçamento da sua empresa, precisamos entender quais variáveis que precisamos monitorar. Considere inicialmente:
Tipo de serviço
Preço por chamada
Testes e experimentação
Tipo de serviço
O primeiro passo é entender quais serviços precisamos utilizar. Como estamos focados no uso de modelos de linguagem, há basicamente três tipos de serviços que podemos utilizar: criação de embeddings, consulta aos modelos, e fine-tuning do modelo.
Embeddings: Embeddings são representações numéricas utilizadas para avaliar o grau de similaridade entre textos. Embeddings são comumente empregados em tarefas como busca, classificação ou recomendação.
Consulta ao modelo: A consulta ao modelo talvez seja o principal serviço da OpenAI a ser utilizado. Com um modelo como o GPT4, é possível criar aplicações que escrevam textos, analisem documentos, traduzam livros, etc.
Fine-tuning: Embora os modelos de linguagem natural tenham sido treinados em uma vasta quantidade de dados, eles certamente não tem acesso a informações proprietárias da sua organização. O processo de fine-tuning torna o modelo capaz de aprender com novos dados, tornando-o, assim, capaz de responder perguntas então desconhecidas. Uma vez que um modelo tenha sido ajustado, você não precisará mais fornecer exemplos no prompt.
Preço por chamada
Sabendo quais tipos de serviço iremos utilizar, o próximo passo é avaliar o custo de cada chamada a estes serviços. Por exemplo:
Embeddings: O custo para criar um embedding é $0.0001 utilizando o
text-embedding-ada-002
. Note que existe um limite para o tamanho do embedding criado. Na OpenAI, o modelotext-embedding-ada-002
tem limite de 8191 tokens. Isto significa que conteúdos que gerem mais tokens precisam ser segmentados, aumentando o custo de criação dos embeddings.Consulta ao modelo: Há basicamente dois modelos disponíveis atualmente: o
gpt-4
e ogpt-3.5-turbo
. Estes modelos oferecem dois tamanhos de janela de contexto que podem ser utilizadas:gpt-4:
8k e 32kgpt-3.5-turbo:
4k e 16k
Além disto, estes modelos ainda precificam em termos de tokens enviados (input tokens) e tokens retornados (output tokens). O
gpt-4
, por ser o estado da arte dos modelos linguísticos é, naturalmente, o mais caro: cada requisição de input tokens custa $0.03 ($0.06 para output tokens), isto considerando a janela de 8k. Ogpt-3.5-turbo
, por outro lado, custa cerca de 20 vezes menos: $0.0015, utilizando a janela de 4k (para input tokens), e 0.003, utilizando a janela de 16k (também para input tokens).Fine-tuning: O processo de fine-tuning conta como duas etapas: treino e uso. O custo deste serviço varia de $0.00016 (para treino, usando o modelo
ada
) até $0.12 (para uso do modelodavinci
).
Compreender quanto custa cada solicitação ajudará a estimar o custo total com base no número de chamadas previstas para o seu projeto.
Testes e experimentação
Antes de disponibilizar o serviço para que outros usuários façam uso, é necessário realizar experimentos em ambiente de desenvolvimento para avaliar a qualidade dos prompts e das respostas fornecidas. Para que os testes sejam mais realistas, é necessário utilizar os serviços da OpenAI.
Em experimentos envolvendo modelos linguísticos, especialmente para fins de avaliação, recomenda-se utilizar o gpt-3.5-turbo
. Esse modelo tem se destacado ao fornecer resultados de alta qualidade a um custo relativamente acessível. Assim que a infraestrutura estiver preparada, é possível considerar a exploração de outros modelos. Modelos de menor escala, com custo e latência reduzidos, podem ser utilizados inicialmente. À medida que a plataforma amadurece, também é viável contemplar o emprego de modelos mais avançados, como o poderoso gpt-4
.
Quanto custaria um ChatBot?
Para ilustrar o custo dos serviços da OpenAI, podemos considerar por um minuto a criação de um ChatBot para nossa empresa.
Esse ChatBot deve armazenar dados como 100 PDFs com apresentações institucionais, 200 páginas de conteúdo HTML do site na intranet, bem como 100 outros documentos relevantes. No total, nossos dados compreendem 50 mil palavras; ou mais ou menos 75 mil tokens.
Com todo esse conteúdo, nosso primeiro passo é criar os embeddings e salva-los em algum lugar. Como sabemos, existe um limite de 8191 tokens para criação dos embeddings. Logo, com 10 requisições conseguimos vetorizar todo nosso conteúdo por apenas $0.001. No entanto, vamos diminuir o tamanho do embedding para 1k tokens (explicaremos a razão nos próximos mais a frente). Dessa forma, o custo final para criar os embeddings usando o modelo text-embedding-ada-002
seria de ~$0.075.
Em seguida, podemos opcionalmente fazer o fine-tuning do modelo com os novos dados. No entanto, o limite do serviço de fine-tuning é de 1k tokens (por isso optamos por quebrar os tokens com esse tamanho). Como temos cerca de 75 mil tokens, em vetores de 1k tokens cada, o custo desse serviço, usando o modelo ada (mais barato) é de ~$ 0.03. Se utilizássemos o modelo davince
(mais caro), o custo seria de ~$2.25; cerca 75 vezes mais caro.
Após o fine-tuning, podemos partir para o uso do nosso modelo. Para isso, precisamos descrever nossas variáveis:
Quantidade de tokens necessários: Como a OpenAI precifica seus serviços com base no número de tokens utilizados, precisamos saber quantos tokens vamos consumir em cada requisição. Simplificadamente, podemos multiplicar a quantidade de palavras por 1.3.
Quantidade total de tokens: Precisamos também considerar os tokens do prompt. Para isso, calculamos o total de tokens como:
tokens = (palavrasNoPrompt + palavrasNoChat) * 1.3
.Preço por token: Como apresentamos mais acima, o preço por token varia de acordo com o modelo linguístico utilizado. Neste exemplo, utilizaremos o
GPT-4 32K,
que custa $ 0.06 a cada 1k tokens. Logo:precoPorToken = 0.06 / 1000 tokens.
Calcular o preço total: Para estimar o custo total, precisamos consider tanto os tokens da mensagem que queremos enviar, quanto os tokens do prompt. Logo:
precoTotal = tokens * precoPorToken
.
Vamos primeiro considerar um cenário simples: precisamos processar uma única mensagem, usando o gpt-4 8k
. Esta mensagem tem 10 palavras, somado a 100 palavras de prompt, totalizando 110 palavras. Ou seja:
tokens = 110 * 1.33
precoPorTokens = 0.06 / 1000
precoTotal = tokens * precoPorTokens = 0.0088
Excelente! Agora sabemos o custo de cada mensagem: $ 0.0088 (por dia).
Imaginando que nosso chat recebe 100 mensagens de chat por dia, cada uma com 10 palavras (mais 100 de prompt), temos 11.000 palavras por dia (ou 14.300 tokens por dia). Nessa configuração, por dia, seriamos faturados em $ 0.858.
Suponha agora que nosso serviço de chat recebe 100 usuários diários, cada um enviando, novamente, 100 mensagens por dia, cada uma com 10 palavras (mais 100 de prompt).
usuarios = 100
mensagens = (10 + 100) * 100
tokens = mensagens * 1.33 * usuarios
precoPorTokens = 0.06 / 1000
precoTotal = tokens * precoPorTokens = 88.77
Nossa, rapidamente o custo com os serviços da OpenAI cresceram significativamente: de $ 0.0088 para $ 88.77 por dia!
Agora ficou mais fácil fazer algumas previsões do uso desses serviços, e do valor que eles precisam agregar ao negócio.
Há, no entanto, algumas estratégias que podem ser adotadas para minimizar estes custos, por exemplo:
Otimização de Chamadas: É possível otimizar o uso dos serviços, por exemplo, armazenando em cache de respostas. Em um ChatBot conversacional, é esperado que várias dúvidas de usuários sejam duvidas frequentes. Para estes casos, as respostas, inclusive, poderiam estar armazenadas em um banco de dados, evitando a consulta ao serviço da OpenAI.
Comparação com Alternativas: Dependendo do tipo de tarefa, pode-se utilizar outros serviços mais baratos (como o modelo gpt-3.5-turbo) ou até mesmo alternativas OpenSource, como o LLaMa, do Facebook. No segundo caso, embora não haja custos diretos, há o custo indireto de manter duas (ou mais) infraestruturas de LLMs disponíveis para seu negócio.
Além dos custos da OpenAI, há ainda outros custos, como do banco de dados para armazenamento dos embeddings (não queremos ficar gerando embeddings o tempo todo), um serviço de caching (não queremos realizar consultas repetidas), ou do próprio serviço de nuvem para hospedar o ChatBot. Nesse texto blog, focamos somente nos custos da OpenAI.
Conclusão
Utilizar os serviços da OpenAI em negócios seguramente fornecem vantagens competitivas a seus usuários. No entanto, o custo envolvido deve ser levado em consideração, principalmente pois estes aumentam a media que o seu uso aumenta.
Neste texto, obviamente, calculamos os valores próximos do limite mínimo de custo, ou seja, sem contar, por exemplo, a criação de embeddings seja feita e refeita várias vezes, buscando melhores ajustes. Em um cenário real, é provável várias atividades sejam repetidas, enquanto a equipe se familiariza.
Por fim, acesse regularmente o site da OpenAI para avaliar quais serviços e modelos estão disponíveis, uma vez que novos modelos são regularmente adicionados (e modelos antigos são depreciados).
Se você chegou até aqui, aproveito para compartilhar algumas novidades:
Estou realizando a palestra “5 coisas que todo dev deveria saber sobre GenAI” em empresas e universidades. Caso você queria agendar uma palestra, entre em contato!
Estou planejando criar um minicurso sobre OpenAI, com duração de 2h, explicando conceitos básicos e uso dos principais serviços, no valor simbólico de R$100, em formato remoto e gravado (não será síncrono). Você participaria?
Por fim, não se esqueça de compartilhar o texto com outros colegas que poderiam ter interesse nesse texto!