Quando a IA gera respostas completamente diferentes para a mesma pergunta
Fevereiro de 2024. Marina Costa, Product Manager da ContentHub (plataforma de marketing de conteúdo com 120 clientes B2B), estava confusa.
Ela havia implementado um assistente de IA para gerar rascunhos de posts para LinkedIn. Funcionava bem em testes, mas quando liberaram para clientes, os feedbacks eram contraditórios:
Metade dos clientes amou: “Textos criativos, surpreendentes, cada um diferente do anterior!”
Outra metade odiou: “Textos malucos, fora do tom da marca, parecem escritos por pessoas diferentes!”
Marina testou. Mesmo prompt, mesma descrição do produto, 5 execuções:
Execução 1 (criativo, descontraído): “Cansado de software que parece ter saído dos anos 90? Nossa plataforma é tipo aquele amigo designer que entende suas dores. Chega de planilhas que mais confundem que ajudam!”
Execução 2 (formal, corporativo): “Apresentamos solução corporativa de gestão de projetos orientada a resultados, desenvolvida com base em metodologias ágeis consolidadas e compliance com normas ISO.”
Execução 3 (equilibrado): “Gerencie projetos de forma simples e eficaz. Nossa plataforma foi desenvolvida pensando em equipes que precisam de agilidade sem abrir mão de controle.”
Execução 4 (vendedor agressivo): “PARE DE PERDER TEMPO! Chegou a solução que vai REVOLUCIONAR sua forma de trabalhar. Não é mais uma ferramenta, é A ferramenta!”
Execução 5 (técnico demais): “Sistema integrado de gestão de workflows com arquitetura distribuída, APIs REST documentadas via OpenAPI 3.0, webhooks bidirecionais e SSO via SAML 2.0.”
Cinco tons completamente diferentes. Mesmo prompt. Mesmo input.
“É como se a IA tivesse personalidade múltipla,” disse Marina frustrada.
O problema? Ela estava usando os parâmetros padrão, que eram configurados para criatividade máxima (temperature = 0.9). Perfeito para brainstorming, terrível para consistência.
Ao ajustar temperature para 0.3 e mexer em outros parâmetros, tudo mudou:
- Consistência aumentou dramaticamente
- Tom ficou previsível
- Clientes pararam de reclamar de “textos malucos”
Mas ela perdeu algumas semanas e quase cancelaram 8 contas grandes por causa disso.
Este artigo explica exatamente o que cada parâmetro faz, quando ajustar, e como evitar problemas comuns que custam dinheiro e reputação.
O que são parâmetros de LLM e por que importam
Como LLMs geram texto (versão simplificada)
Quando você envia um prompt para GPT-4, Claude ou qualquer LLM, o modelo não “escreve” uma resposta como humano faria. O processo é diferente:
Passo a passo simplificado:
- Modelo lê seu prompt
- Prevê qual é a próxima palavra mais provável
- Escolhe uma palavra baseado em probabilidades
- Adiciona essa palavra ao texto
- Repete o processo até terminar a resposta
Exemplo concreto:
Prompt: “A capital do Brasil é”
O modelo calcula probabilidades:
- “Brasília” = 95% de probabilidade
- “brasília” = 3% (minúscula)
- “Brasilia” = 1,5% (sem acento)
- “o Distrito Federal” = 0,3%
- “São Paulo” = 0,1% (errado, mas possível em contexto de economia)
- “Paris” = 0,00001% (extremamente improvável)
Como ele escolhe?
Aqui entram os parâmetros. Eles controlam como o modelo escolhe entre as opções.
Com temperature = 0 (determinístico):
- Sempre escolhe a opção mais provável
- Resultado: sempre “Brasília”
- Previsível, consistente, sem surpresas
Com temperature = 1.0 (criativo):
- Escolhe baseado nas probabilidades, mas com mais aleatoriedade
- Pode escolher “brasília”, “Brasilia”, ou até “o Distrito Federal”
- Menos previsível, mais variado
Com temperature = 2.0 (caótico):
- Escolhe opções improváveis com frequência
- Pode até escolher “São Paulo” ocasionalmente
- Criativo demais = frequentemente errado
Por que ajustar parâmetros ao invés de aceitar padrões
Padrões são genéricos, não otimizados para seu caso:
APIs de LLM vêm com valores padrão que tentam agradar maioria dos casos. Mas “maioria” não é “seu caso específico”.
Exemplo: OpenAI GPT-4 (padrões):
- temperature = 1.0
- top_p = 1.0
- frequency_penalty = 0
- presence_penalty = 0
Esses valores são OK para:
- Conversação geral
- Brainstorming
- Escrita criativa
Mas ruins para:
- Extração de dados estruturados
- Classificação consistente
- Respostas factuais precisas
- Geração de código
Impacto de não ajustar:
Caso real: Startup de RH automatizando screening de currículos
Com padrões (temperature = 1.0):
- Mesmo currículo, avaliações diferentes a cada execução
- Candidato rejeitado hoje, aprovado amanhã
- Inconsistência inaceitável
- Compliance em risco
Com temperature = 0.2:
- Avaliações consistentes
- Mesmo currículo = mesma decisão
- Problema resolvido
Ajuste de 5 minutos salvou o produto.
Temperature: o parâmetro mais importante
O que é e como funciona
Definição técnica: Temperature controla a aleatoriedade da seleção de palavras (tokens) durante a geração.
Definição prática: Temperature controla o quanto a IA “arrisca” vs “joga seguro”.
Range típico: 0 a 2
- 0: determinístico, sempre a opção mais provável
- 1: balanceado (padrão na maioria das APIs)
- 2: muito criativo/aleatório (raramente útil)
Como impacta a escolha:
Imagine que o modelo está escolhendo próxima palavra após “A capital da França é”:
| Palavra | Probabilidade base | Com temp=0 | Com temp=0.5 | Com temp=1.0 | Com temp=2.0 |
|---|---|---|---|---|---|
| Paris | 98% | 100% | ~99% | ~90% | ~60% |
| paris | 1,5% | 0% | ~1% | ~8% | ~20% |
| Lyon | 0,3% | 0% | ~0% | ~1,5% | ~12% |
| Marseille | 0,1% | 0% | ~0% | ~0,4% | ~6% |
| Londres | 0,05% | 0% | ~0% | ~0,1% | ~2% |
Nota: números ilustrativos, não exatos
Observações:
- temp=0: sempre “Paris” (mais provável)
- temp=0.5: quase sempre “Paris”, raramente “paris”
- temp=1.0: geralmente “Paris”, às vezes variações
- temp=2.0: frequentemente “Paris”, mas pode escolher opções improváveis como “Lyon” ou até erros como “Londres”
Quando usar temperature baixo (0 - 0.3)
Use quando precisar de:
- Consistência
- Precisão factual
- Respostas determinísticas
- Conformidade/compliance
Casos de uso ideais:
- Extração de dados estruturados
# Exemplo: extrair dados de nota fiscal
prompt = """
Extraia os seguintes dados da nota fiscal:
- Valor total
- Data de emissão
- CNPJ do emissor
Nota fiscal: [texto]
Retorne em JSON.
"""
# Use temperature = 0
# Mesmo documento = sempre mesmo JSON
- Classificação de conteúdo
# Exemplo: categorizar tickets de suporte
prompt = """
Classifique o ticket em uma das categorias:
- Técnico
- Financeiro
- Comercial
- Outro
Ticket: [texto]
"""
# Use temperature = 0.2
# Consistência é crítica
- Respostas factuais
# Exemplo: FAQ automático
prompt = """
Responda a pergunta do cliente baseado apenas
na documentação fornecida.
Documentação: [...]
Pergunta: [...]
"""
# Use temperature = 0.3
# Fatos, não criatividade
- Geração de código
# Exemplo: gerar função Python
prompt = """
Crie uma função Python que:
- Receba lista de números
- Retorne média e mediana
Código limpo, type hints, docstring.
"""
# Use temperature = 0
# Código deve ser correto, não "criativo"
Desvantagens de temperature muito baixo:
- Respostas podem ser “robóticas”
- Menos variação (pode ser monótono)
- Em tarefas criativas, resultados pobres
Quando usar temperature médio (0.4 - 0.7)
Use quando precisar de:
- Equilíbrio entre consistência e variação
- Respostas naturais mas não aleatórias
- Múltiplas execuções com variações controladas
Casos de uso ideais:
- Assistentes conversacionais
# Chatbot de atendimento
# temperature = 0.5
# Respostas naturais mas consistentes
- Sumarização de textos
# Resumir artigos, documentos
# temperature = 0.6
# Variação no estilo, mas mantém precisão factual
- Tradução com contexto
# Traduzir textos considerando tom
# temperature = 0.5
# Alguma liberdade criativa, mas fiel ao original
- Reescrita/paráfrase
# Reescrever textos mantendo sentido
# temperature = 0.6
# Variação de estilo, preserva conteúdo
Quando usar temperature alto (0.8 - 1.5)
Use quando precisar de:
- Criatividade
- Variação máxima
- Brainstorming
- Evitar repetição
Casos de uso ideais:
- Geração de conteúdo criativo
# Criar posts de LinkedIn, títulos, slogans
# temperature = 0.9
# Criatividade é desejada
- Brainstorming de ideias
# Gerar 20 ideias de features para produto
# temperature = 1.2
# Quanto mais variado, melhor
- Criação de histórias/narrativas
# Escrever casos de uso fictícios
# temperature = 1.0
# Criatividade + variação
- Geração de alternativas
# "Me dê 10 formas diferentes de explicar X"
# temperature = 1.1
# Quer respostas bem diferentes
Desvantagens de temperature muito alto:
- Pode “alucinar” (inventar fatos)
- Inconsistência (problema para tarefas repetitivas)
- Às vezes gera respostas nonsense
Valores práticos recomendados por caso de uso
| Caso de uso | Temperature recomendado | Justificativa |
|---|---|---|
| Extração de dados | 0 - 0.1 | Máxima consistência |
| Classificação | 0.2 - 0.3 | Consistente mas não robótico |
| FAQ/Respostas factuais | 0.3 - 0.5 | Preciso mas natural |
| Chatbot atendimento | 0.5 - 0.7 | Natural e consistente |
| Sumarização | 0.5 - 0.7 | Variação controlada |
| Tradução | 0.3 - 0.5 | Fiel mas natural |
| Reescrita | 0.6 - 0.8 | Variação de estilo |
| Geração de código | 0 - 0.2 | Correto > criativo |
| Email drafting | 0.7 - 0.9 | Natural e variado |
| Marketing copy | 0.8 - 1.2 | Criativo |
| Brainstorming | 1.0 - 1.5 | Máxima variação |
Top-p (nucleus sampling): alternativa ao temperature
O que é e diferença para temperature
Definição técnica: Top-p (também chamado nucleus sampling) limita a escolha às palavras cuja probabilidade acumulada soma até p%.
Definição prática: Ao invés de mexer nas probabilidades (como temperature faz), top-p limita as opções consideradas.
Exemplo concreto:
Modelo está escolhendo próxima palavra. Probabilidades:
- “importante” = 40%
- “relevante” = 30%
- “crucial” = 15%
- “essencial” = 10%
- “fundamental” = 3%
- “significativo” = 1,5%
- “vital” = 0,5%
Com top-p = 0.9 (90%):
Soma acumulada:
- “importante” = 40% (total: 40%)
- “relevante” = 30% (total: 70%)
- “crucial” = 15% (total: 85%)
- “essencial” = 10% (total: 95%) → passa de 90%, para aqui
Modelo só pode escolher entre: importante, relevante, crucial, essencial (as 4 palavras que somam ~90% de probabilidade)
Com top-p = 0.5 (50%):
Soma acumulada:
- “importante” = 40% (total: 40%)
- “relevante” = 30% (total: 70%) → passa de 50%, para aqui
Modelo só pode escolher entre: importante, relevante
Temperature vs Top-p: qual usar?
Recomendação geral:
Use UM dos dois, não ambos simultaneamente.
Por quê?
Ambos controlam aleatoriedade/criatividade, mas de formas diferentes. Usar os dois cria interação complexa e imprevisível.
Quando preferir temperature:
- Mais intuitivo (0 = determinístico, 2 = caótico)
- Amplamente documentado (mais exemplos)
- Funciona bem na maioria dos casos
- Padrão na maioria dos tutoriais
Use: temperature (mantenha top-p = 1.0)
Quando preferir top-p:
- Quer criatividade mas evitando opções muito improváveis
- Geração de texto longo (top-p mantém qualidade mais consistente)
- Casos onde temperature alto causa problemas mas baixo é muito restritivo
Use: top-p (mantenha temperature = 1.0)
Valores típicos de top-p:
| Valor | Efeito | Quando usar |
|---|---|---|
| 0.1 - 0.3 | Muito conservador | Tarefas factuais, extração |
| 0.5 - 0.7 | Balanceado | Uso geral |
| 0.9 - 0.95 | Padrão | Maioria dos casos |
| 1.0 | Sem limitação | Máxima criatividade |
Regra prática:
Se você não sabe qual usar: ajuste temperature, deixe top-p = 1.0
Frequency penalty e presence penalty: controlando repetição
Frequency penalty: penalizar palavras muito usadas
O que faz:
Reduz probabilidade de palavras que já apareceram muito no texto gerado.
Range: -2.0 a 2.0 (tipicamente usa-se 0 a 1.0)
- 0: sem penalidade (padrão)
- 0.5: penalidade moderada
- 1.0+: penalidade forte
Exemplo prático:
Sem frequency penalty (0):
Nossa plataforma oferece integração com diversas ferramentas.
A plataforma permite que você conecte sua plataforma com
outras plataformas facilmente. A plataforma é...
↑ “plataforma” repete excessivamente
Com frequency penalty (0.6):
Nossa plataforma oferece integração com diversas ferramentas.
O sistema permite que você conecte sua solução com
outros produtos facilmente. A ferramenta é...
↑ variação de vocabulário
Quando usar:
- Geração de textos longos (artigos, posts)
- Quando repetição excessiva é problema
- Descrições de produtos (evitar palavras-chave repetidas)
- Conteúdo de marketing
Valores recomendados:
- 0.0: tarefas técnicas (repetição OK)
- 0.3-0.5: textos gerais (reduz repetição moderadamente)
- 0.6-0.9: textos criativos (força variação)
- 1.0+: raramente necessário (pode prejudicar coerência)
Presence penalty: incentivar novos tópicos
O que faz:
Penaliza palavras que já apareceram, independente de quantas vezes.
Diferença para frequency penalty:
- Frequency: quanto mais usou a palavra, maior a penalidade
- Presence: penaliza igualmente se usou 1x ou 10x
Range: -2.0 a 2.0 (tipicamente usa-se 0 a 1.0)
Efeito:
Incentiva o modelo a introduzir novos tópicos/conceitos ao invés de continuar desenvolvendo os mesmos.
Exemplo prático:
Prompt: “Escreva sobre benefícios de automação”
Sem presence penalty (0):
Automação reduz custos operacionais significativamente.
A redução de custos vem da eficiência. Com automação,
custos caem porque processos são mais eficientes...
↑ continua no mesmo tópico (custos/eficiência)
Com presence penalty (0.6):
Automação reduz custos operacionais. Além disso, melhora
a satisfação da equipe ao eliminar tarefas repetitivas.
Outro benefício é a redução de erros humanos...
↑ introduz novos tópicos (satisfação, erros)
Quando usar:
- Brainstorming (quer diversidade de ideias)
- Textos explorando múltiplos ângulos
- Geração de listas de benefícios/features
- Quando modelo “trava” no mesmo tópico
Valores recomendados:
- 0.0: quando foco em um tópico é desejado
- 0.3-0.5: explorar tópico mas com variação
- 0.6-0.9: forçar diversidade de tópicos
- 1.0+: raramente útil
Quando combinar frequency + presence penalties
Combinação típica:
Para textos longos que precisam:
- Variação de vocabulário (frequency)
- Explorar múltiplos aspectos (presence)
Exemplo: gerar artigo de blog
response = openai.chat.completions.create(
model="gpt-4",
messages=[...],
temperature=0.7, # criatividade moderada
frequency_penalty=0.5, # evita repetir mesmas palavras
presence_penalty=0.4 # incentiva novos tópicos
)
Resultado:
- Texto flui naturalmente
- Não repete palavras-chave excessivamente
- Explora múltiplos ângulos do tópico
Quando NÃO usar penalties:
- Extração de dados (repetição é esperada)
- Código (variáveis/funções repetem naturalmente)
- Tarefas altamente estruturadas
- Respostas curtas (1-2 parágrafos)
Max tokens: controlando tamanho da resposta
O que são tokens
Token: unidade básica que LLMs processam. Aproximadamente:
- 1 token ≈ 0,75 palavras (inglês)
- 1 token ≈ 0,5-0,6 palavras (português - palavras mais longas)
Exemplos:
- “Olá, como vai?” ≈ 6 tokens
- “A capital do Brasil é Brasília” ≈ 8 tokens
Max tokens: limite máximo de tokens que o modelo pode gerar na resposta.
Como definir max tokens apropriadamente
Regra prática:
Estime quantas palavras você quer na resposta e multiplique por 2 (para português).
Exemplos:
| Tipo de resposta | Palavras estimadas | Max tokens |
|---|---|---|
| Sim/não + justificativa curta | 20-30 | 60 |
| Parágrafo curto | 50-100 | 200 |
| Parágrafo longo | 150-250 | 500 |
| Múltiplos parágrafos | 300-500 | 1000 |
| Artigo curto | 500-800 | 1500 |
| Artigo médio | 1000-1500 | 3000 |
Consequências de max tokens muito baixo:
Resposta é cortada no meio:
"A automação oferece três benefícios principais:
1. Redução de custos através de...
2. Aumento de eficiência eliminando...
3. Melhora de" [CORTADO]
Consequências de max tokens muito alto:
- Custo desnecessário (você paga por tokens gerados)
- Modelo pode “enrolar” para preencher espaço
- Respostas verbosas
Recomendação:
Defina max tokens ~20% acima do esperado:
- Se espera ~200 palavras (400 tokens), use max_tokens=500
- Margem de segurança sem desperdiçar
Trade-off entre custo e completude
Custo é proporcional a tokens:
APIs de LLM cobram por token (input + output).
Exemplo OpenAI GPT-4 (preços abril 2026):
- Input: $0,03 / 1K tokens
- Output: $0,06 / 1K tokens
Cenário:
- 1.000 chamadas/dia
- Média de 500 tokens de input
- Média de 800 tokens de output
Custo mensal:
- Input: 1.000 × 30 × 0,5K × $0,03 = $450
- Output: 1.000 × 30 × 0,8K × $0,06 = $1.440
- Total: $1.890/mês
Se reduzir output médio de 800 para 400 tokens:
- Output: 1.000 × 30 × 0,4K × $0,06 = $720
- Total: $1.170/mês
- Economia: 38%
Como otimizar:
- Defina max tokens o mais precisamente possível
- Instrua o modelo a ser conciso:
Responda em no máximo 100 palavras. - Use modelos menores quando apropriado (GPT-3.5 vs GPT-4)
- Cache respostas comuns (evita regenerar)
Outros parâmetros menos comuns mas úteis
Stop sequences: quando parar a geração
O que faz:
Define strings que, quando geradas, param a geração imediatamente.
Exemplo:
response = openai.chat.completions.create(
model="gpt-4",
messages=[...],
stop=["###", "FIM", "\n\n\n"] # para se gerar qualquer um destes
)
Quando usar:
- Formatos estruturados:
# Gerar apenas uma seção de documento
stop=["## Próxima Seção"]
- Evitar continuação indesejada:
# Parar após gerar resposta, antes de exemplos adicionais
stop=["Exemplo:", "Por exemplo"]
- Controle fino de formato:
# Gerar lista até certo ponto
stop=["---", "TOTAL:"]
N: gerar múltiplas alternativas
O que faz:
Gera N respostas diferentes para o mesmo prompt (em uma única chamada).
Exemplo:
response = openai.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": "Crie slogan para app de produtividade"}],
n=5, # gera 5 slogans diferentes
temperature=0.9
)
# Retorna 5 opções
for choice in response.choices:
print(choice.message.content)
Quando usar:
- Brainstorming (gerar múltiplas ideias de uma vez)
- A/B testing (gerar variações para testar)
- Escolher melhor opção (gerar 5, humano escolhe melhor)
Cuidado:
Gerar N=5 custa 5x mais (você paga por cada resposta gerada).
Seed: reproduzir resultados idênticos
O que faz:
Define uma “semente” que torna geração reproduzível.
Exemplo:
# Primeira chamada
response1 = openai.chat.completions.create(
model="gpt-4",
messages=[...],
seed=42,
temperature=0.7
)
# Segunda chamada (mesmo seed)
response2 = openai.chat.completions.create(
model="gpt-4",
messages=[...],
seed=42, # mesmo valor
temperature=0.7
)
# response1 == response2 (idênticos)
Quando usar:
- Testes automatizados (garantir mesma saída)
- Debugging (reproduzir problema exato)
- Demonstrações (garantir exemplo funciona)
Limitação:
Nem todas as APIs suportam (OpenAI suporta desde nov/2023).
Caso real: ContentHub otimiza parâmetros e economiza 43%
Problema inicial
Contexto:
- ContentHub: plataforma de marketing de conteúdo
- Feature: gerar rascunhos de posts LinkedIn
- Volume: 15.000 posts/mês
- Custo: R$ 6.200/mês em APIs
Problemas relatados:
-
Inconsistência de tom:
- Mesmo cliente, posts com tons radicalmente diferentes
- Reclamação: “parece escrito por pessoas diferentes”
-
Verbosidade:
- Posts eram longos demais
- LinkedIn funciona melhor com 150-200 palavras
- Modelo gerava 300-400 palavras
-
Repetição de palavras-chave:
- “Nossa plataforma… a plataforma… na plataforma…”
- Parecia spam
-
Custo alto:
- R$ 6.200/mês só para esta feature
- Estava comendo margem do produto
Análise e ajustes realizados
Passo 1: Auditoria dos parâmetros (1 dia)
Marina analisou configuração atual:
# Configuração original (padrões)
{
"model": "gpt-4",
"temperature": 1.0, # padrão, muito criativo
"max_tokens": 2048, # muito alto para post
"top_p": 1.0,
"frequency_penalty": 0, # sem controle de repetição
"presence_penalty": 0
}
Problemas identificados:
-
temperature=1.0 causava inconsistência
- Posts muito variados
- Sem controle de tom
-
max_tokens=2048 desperdiçava tokens
- Posts raramente passavam de 600 tokens
- Pagando por margem desnecessária
-
Sem penalidades → repetição
- Palavras-chave repetiam excessivamente
Passo 2: Teste A/B com variações (1 semana)
Marina criou 5 configurações diferentes e testou com 100 posts cada:
Config A (conservadora):
{
"temperature": 0.3,
"max_tokens": 400,
"frequency_penalty": 0.5,
"presence_penalty": 0.3
}
Resultado: Muito robótico, sem personalidade
Config B (criativa controlada):
{
"temperature": 0.7,
"max_tokens": 600,
"frequency_penalty": 0.6,
"presence_penalty": 0.4
}
Resultado: Melhor equilíbrio, ainda alguma inconsistência
Config C (otimizada):
{
"temperature": 0.6,
"max_tokens": 500,
"frequency_penalty": 0.7,
"presence_penalty": 0.3
}
Resultado: Perfeito para LinkedIn, consistente
Config D (experimental):
{
"temperature": 0.9,
"max_tokens": 400,
"frequency_penalty": 0.9,
"presence_penalty": 0.6
}
Resultado: Criativo mas penalties muito altos causaram problemas
Config E (econômica):
{
"model": "gpt-3.5-turbo", # modelo mais barato
"temperature": 0.6,
"max_tokens": 500,
"frequency_penalty": 0.6
}
Resultado: 80% da qualidade, 1/10 do custo
Passo 3: Validação com clientes (2 semanas)
Testaram Config C e Config E com 50 clientes:
Feedback Config C (GPT-4 otimizado):
- 92% aprovação
- “Finalmente consistente!”
- “Tom perfeito, tamanho ideal”
Feedback Config E (GPT-3.5):
- 78% aprovação
- “Bom, mas às vezes genérico”
- “Prefiro pagar mais pelo GPT-4”
Decisão:
- Plano básico: Config E (GPT-3.5)
- Plano premium: Config C (GPT-4)
- Clientes escolhem (upsell opportunity!)
Resultados e economia gerada
Impacto operacional:
Antes:
- Temperature: 1.0 → tom inconsistente
- Max tokens: 2048 → desperdício
- Sem penalties → repetição
- Modelo: apenas GPT-4
Depois:
- Temperature: 0.6 → tom consistente
- Max tokens: 500 → tamanho ideal
- Frequency penalty: 0.7 → sem repetição
- Modelos: GPT-3.5 (básico) + GPT-4 (premium)
Impacto financeiro:
| Métrica | Antes | Depois | Variação |
|---|---|---|---|
| Custo/post (GPT-4) | R$ 0,41 | R$ 0,23 | -44% |
| Posts GPT-4/mês | 15.000 | 6.000 | -60% |
| Posts GPT-3.5/mês | 0 | 9.000 | novo |
| Custo total/mês | R$ 6.200 | R$ 3.510 | -43% |
Economia anual: R$ 32.280
Investimento para otimizar:
- 3 dias de trabalho de Marina
- R$ 180 em testes (APIs)
- Total: ~R$ 5.000
ROI: 546% no primeiro ano
Benefícios qualitativos:
- Churn de clientes: 11%/mês → 5%/mês
- NPS: 42 → 68
- Tickets de reclamação: -78%
- Oportunidade de upsell (plano premium)
Lição principal:
Ajustar parâmetros levou 3 dias e economizou R$ 32k/ano. ROI absurdo.
Checklist: otimizando parâmetros para seu caso de uso
Perguntas para definir temperature
1. Qual é a natureza da tarefa?
- Factual/técnica (extração, classificação) → 0 - 0.3
- Conversacional (chatbot, FAQ) → 0.5 - 0.7
- Criativa (marketing, brainstorm) → 0.8 - 1.2
2. Consistência é crítica?
- Sim (compliance, análise financeira) → 0 - 0.2
- Moderadamente (atendimento) → 0.3 - 0.5
- Não (ideação, variação desejada) → 0.8+
3. Mesmo input deve gerar mesmo output?
- Sempre → temperature = 0
- Geralmente → temperature = 0.2 - 0.4
- Não importa → temperature = 0.7+
4. Risco de erro é alto?
- Muito alto (legal, médico) → 0 - 0.2
- Moderado (negócios) → 0.3 - 0.5
- Baixo (marketing) → 0.7+
Perguntas para definir max tokens
1. Qual tamanho ideal de resposta?
- Curta (1 frase) → 50-100 tokens
- Parágrafo → 200-300 tokens
- Múltiplos parágrafos → 500-1000 tokens
- Documento → 1500+ tokens
2. Custo é preocupação?
- Sim, minimizar → definir o menor viável
- Balanceado → +20% de margem sobre o esperado
- Não é problema → limite alto para garantia
3. Resposta pode ser cortada?
- Nunca (dados estruturados) → margem de 50%
- Raramente (textos) → margem de 20%
- OK (brainstorm) → limite justo
Perguntas para definir penalties
1. Repetição de palavras é problema?
- Sim, muito (marketing copy) → frequency_penalty = 0.6-0.9
- Moderadamente (textos gerais) → 0.3-0.5
- Não (código, dados) → 0
2. Quer explorar múltiplos ângulos?
- Sim (análises, artigos) → presence_penalty = 0.4-0.7
- Não necessariamente → 0-0.3
- Não (foco único) → 0
3. Texto é longo?
- Sim (500+ palavras) → considere ambos penalties
- Moderado (100-500 palavras) → frequency_penalty apenas
- Curto (menos de 100 palavras) → sem penalties
Template de configuração por tipo de aplicação
Extração de dados:
{
"temperature": 0,
"max_tokens": 500, # ajustar conforme dados
"top_p": 1.0,
"frequency_penalty": 0,
"presence_penalty": 0
}
Chatbot de atendimento:
{
"temperature": 0.6,
"max_tokens": 300,
"top_p": 1.0,
"frequency_penalty": 0.3,
"presence_penalty": 0.2
}
Geração de conteúdo marketing:
{
"temperature": 0.8,
"max_tokens": 800,
"top_p": 1.0,
"frequency_penalty": 0.7,
"presence_penalty": 0.4
}
Sumarização:
{
"temperature": 0.5,
"max_tokens": 400,
"top_p": 1.0,
"frequency_penalty": 0.5,
"presence_penalty": 0.3
}
Classificação/Categorização:
{
"temperature": 0.2,
"max_tokens": 50,
"top_p": 1.0,
"frequency_penalty": 0,
"presence_penalty": 0
}
Código:
{
"temperature": 0,
"max_tokens": 2000, # código pode ser longo
"top_p": 1.0,
"frequency_penalty": 0,
"presence_penalty": 0
}
Conclusão: parâmetros são a diferença entre “funciona mais ou menos” e “funciona bem”
Ajustar parâmetros de LLM parece detalhe técnico menor, mas o impacto é enorme:
Três aprendizados principais:
-
Padrões são genéricos, não otimizados
- APIs vêm com valores “médios”
- Seu caso de uso é específico
- 30 minutos ajustando pode economizar milhares/ano
-
Temperature é o mais importante, mas não é o único
- Temperature: criatividade vs consistência
- Max tokens: custo vs completude
- Penalties: controle de repetição/variação
- Cada um tem impacto significativo
-
Teste sistemáticamente, não no feeling
- Crie dataset de validação (50-100 exemplos)
- Teste múltiplas configurações
- Meça objetivamente (não apenas “parece melhor”)
- Uma semana de testes pode salvar meses de problemas
Framework mental:
- Precisa de consistência? → temperature baixo (0-0.3)
- Precisa de criatividade? → temperature alto (0.8-1.2)
- Custo é problema? → reduza max_tokens ao mínimo viável
- Repetição incomoda? → adicione frequency_penalty
- Quer explorar ângulos? → adicione presence_penalty
O que fazer agora:
Se você está usando LLMs em produção:
- Audite seus parâmetros atuais (10 minutos)
- Identifique problemas (inconsistência? verbosidade? repetição?)
- Teste configurações alternativas (1 dia)
- Meça impacto (qualidade + custo)
- Implemente a melhor configuração
Casos reais que vimos:
- Economia de 30-50% em custos é comum
- Melhora de 20-40% em satisfação com qualidade
- ROI típico: 300-800% no primeiro ano
Ajustar parâmetros é um dos investimentos com melhor ROI em IA.
Precisa de ajuda para otimizar seus parâmetros?
Na Orient.me, fazemos auditorias de configuração de LLM:
- Analisamos seu caso de uso
- Testamos 10-15 configurações diferentes
- Medimos impacto em qualidade e custo
- Recomendamos configuração ótima
Tempo típico: 1 semana ROI médio: 450% no primeiro ano
Agende uma conversa gratuita para avaliar seu caso.