Em Resumo
Promptfoo é um framework de avaliação e "red-teaming" de LLMs de código aberto que ajuda desenvolvedores a testar aplicações de IA de forma sistemática. Ele suporta mais de 90 provedores de modelos, oferece mais de 67 plugins de ataque de segurança e roda 100% localmente para privacidade. Com 1.6 milhão de downloads no npm e uso em produção em empresas que atendem mais de 10 milhões de usuários, tornou-se o padrão para testes de LLMs. Comece com npm install -g promptfoo e promptfoo init --example getting-started.
Introdução
Você passou semanas construindo seu chatbot de suporte ao cliente alimentado por IA. Ele respondia às perguntas perfeitamente durante o desenvolvimento. Então, os usuários começaram a encontrar maneiras de fazê-lo vazar dados sensíveis, ignorar as barreiras de segurança e dar respostas inconsistentes.
Este cenário se repete todos os dias. As equipes lançam aplicações de LLM baseadas em intuição e testes manuais, apenas para descobrir vulnerabilidades e problemas de qualidade em produção. O custo de corrigir esses problemas após o lançamento é 100 vezes maior do que detectá-los durante o desenvolvimento.
Promptfoo resolve isso trazendo testes sistemáticos e automatizados para aplicações de LLM. Ele permite que você avalie prompts em múltiplos modelos, execute avaliações de "red-team" de segurança e detecte regressões antes que elas cheguem aos usuários.
Eu analisei a base de código do promptfoo (versão 0.121.2) e testei suas principais funcionalidades para trazer a você este guia completo. Você aprenderá como configurar avaliações, executar verificações de segurança, integrar com CI/CD e evitar armadilhas comuns.
Ao final, você terá um conjunto de testes funcional para sua aplicação de LLM e saberá como lançar com confiança.
O Que É Promptfoo e Por Que Você Precisa Dele
Promptfoo é uma ferramenta de linha de comando e uma biblioteca Node.js para avaliar e realizar "red-teaming" em aplicações de LLM. Pense nele como um framework de testes construído especificamente para as peculiaridades do desenvolvimento de IA.

Ferramentas de teste tradicionais falham com LLMs porque as saídas não são determinísticas. Você não pode afirmar correspondências exatas de string quando o mesmo prompt produz respostas diferentes a cada vez. Promptfoo resolve isso com:
- Asserções semânticas que verificam o significado em vez do texto exato
- Avaliações classificadas por LLM onde um modelo avalia a saída de outro
- Comparação multi-modelo para testar o mesmo prompt em GPT-4, Claude e outros
- Plugins de segurança que buscam automaticamente por vulnerabilidades
A ferramenta roda localmente em sua máquina. Seus prompts e dados de teste nunca saem do seu ambiente, a menos que você opte por recursos de nuvem. Este design focado na privacidade o torna adequado para testes com dados sensíveis.
O Problema Que o Promptfoo Resolve
A maioria das equipes testa aplicações de LLM manualmente. Eles enviam alguns prompts, leem as saídas e decidem se as coisas parecem boas. Essa abordagem tem três falhas fatais:
- Sem detecção de regressão - Você não consegue saber se uma atualização de modelo quebrou a funcionalidade existente
- Lacunas de cobertura - Testes manuais perdem casos de borda e entradas adversárias
- Sem métricas - Você não consegue acompanhar melhorias ou comparar modelos objetivamente
Promptfoo substitui isso por avaliações automatizadas que rodam a cada mudança. Você define os casos de teste uma vez e os executa contra qualquer modelo. Os resultados incluem taxas de aprovação/falha, comparações de custo e métricas de latência.
Quem Usa o Promptfoo
O projeto tem 1.6 milhão de downloads no npm e alimenta aplicações de LLM que atendem mais de 10 milhões de usuários finais. Empresas o utilizam para:
- Chatbots de suporte ao cliente que precisam de respostas consistentes e precisas
- Pipelines de geração de conteúdo que devem manter a voz da marca
- Aplicações de saúde e fintech com rigorosos requisitos de conformidade
- Sistemas sensíveis à segurança que não podem vazar dados ou aceitar entradas prejudiciais
Em março de 2026, Promptfoo se juntou à OpenAI. O projeto permanece de código aberto e licenciado sob MIT, com desenvolvimento contínuo sob a nova propriedade.
Começando: Instale e Execute Sua Primeira Avaliação
Você pode instalar o promptfoo globalmente ou executá-lo sem instalação usando npx.
Instalação
# Instalação global (recomendado)
npm install -g promptfoo
# Ou execute sem instalar
npx promptfoo@latest
# Usuários de macOS também podem usar Homebrew
brew install promptfoo
# Usuários de Python também podem usar pip
pip install promptfoo
Defina suas chaves de API como variáveis de ambiente:
export OPENAI_API_KEY=sk-abc123
export ANTHROPIC_API_KEY=sk-ant-xxx
Crie Sua Primeira Avaliação
Inicialize um projeto de exemplo:
promptfoo init --example getting-started
cd getting-started
Isso cria um arquivo promptfooconfig.yaml com prompts de exemplo, provedores e casos de teste.
Execute a avaliação:
promptfoo eval
Visualize os resultados na interface web:
promptfoo view
A interface de usuário abre em localhost:3000 e mostra uma comparação lado a lado das saídas de cada modelo, com status de aprovação/falha para cada asserção.
Entendendo o Arquivo de Configuração
O arquivo promptfooconfig.yaml define sua suíte de avaliação:
description: "Minha Primeira Suíte de Avaliação"
prompts:
- prompts/greeting.txt
- prompts/farewell.txt
providers:
- openai:gpt-4o
- anthropic:claude-sonnet-4-5
tests:
- vars:
input: "Hello"
assert:
- type: contains
value: "Hi"
- type: latency
threshold: 3000
- prompts: Arquivos ou texto inline para testar
- providers: Modelos para avaliar (suporta mais de 90 provedores)
- tests: Casos de teste com variáveis e asserções
Você pode escalar isso para centenas de casos de teste. Muitas equipes mantêm as configurações de avaliação em controle de versão e as executam em CI a cada pull request.
Principais Recursos: O Que o Promptfoo Pode Fazer
1. Avaliações Automatizadas
As avaliações automatizadas são a base do promptfoo. Você define os casos de teste com os resultados esperados, e a ferramenta os executa contra os modelos escolhidos.
Tipos de Asserção
Promptfoo inclui mais de 30 tipos de asserção embutidos:
| Asserção | Propósito |
|---|---|
contains |
A saída inclui uma substring |
equals |
Correspondência exata de string |
regex |
Corresponder a um padrão regex |
json-schema |
Validar estrutura JSON |
javascript |
Função JS personalizada retorna aprovação/falha |
python |
Função Python personalizada |
llm-rubric |
Usar um LLM para classificar a saída |
similar |
Pontuação de similaridade semântica |
latency |
Tempo de resposta abaixo do limite |
cost |
Custo por requisição abaixo do limite |
Exemplo com múltiplas asserções:
tests:
- vars:
question: "What is the capital of France?"
assert:
- type: contains
value: "Paris"
- type: javascript
value: output.length < 100
- type: latency
threshold: 2000
- type: cost
threshold: 0.001
Este teste verifica se a resposta menciona Paris, tem menos de 100 caracteres, responde em menos de 2 segundos e custa menos de $0.001.
Avaliações Classificadas por LLM
A asserção llm-rubric usa um LLM para classificar a saída de outro. Isso é poderoso para critérios subjetivos como tom ou utilidade:
assert:
- type: llm-rubric
value: "A resposta deve ser útil, inofensiva e honesta"
O LLM avaliador lê a saída e a pontua de acordo com sua rubrica. Você pode usar um modelo mais barato para a classificação a fim de reduzir custos.
2. Red Teaming e Testes de Segurança
Promptfoo inclui testes de segurança abrangentes através de seu módulo de "red team". Ele gera automaticamente entradas adversárias para sondar vulnerabilidades.

Vetores de Ataque Suportados
O sistema de "red team" inclui mais de 67 plugins organizados por categoria:
| Categoria | O Que Ele Testa |
|---|---|
| Injeção de Prompt | Ataques de injeção direta, indireta e de contexto |
| Jailbreaks | DAN, troca de persona, desvios de role-play |
| Exfiltração de Dados | SSRF, extração de prompt do sistema, vazamento de prompt |
| Conteúdo Nocivo | Discurso de ódio, atividades perigosas, pedidos de autoagressão |
| Conformidade | Vazamento de PII, violações HIPAA, exposição de dados financeiros |
| Áudio/Visual | Injeção de áudio e ataques baseados em imagem |
Executando uma Varredura de Red Team
Inicialize uma configuração de red team:
promptfoo redteam init
Execute a varredura de segurança:
promptfoo redteam run
Visualize o relatório:
promptfoo redteam report [directory]
O comando redteam run executa duas etapas:
- Gera sondas de ataque dinâmicas adaptadas à sua aplicação
- Avalia as sondas contra seu alvo e pontua as vulnerabilidades
Os resultados incluem classificações de severidade (Crítico, Alto, Médio, Baixo), casos de teste exploráveis e recomendações de remediação.
Exemplo de Saída do Red Team
Vulnerability Summary:
- Crítico: 2 (vazamento de PII, extração de prompt)
- Alto: 5 (jailbreaks, ataques de injeção)
- Médio: 12 (viés, respostas inconsistentes)
- Baixo: 23 (pequenas violações de política)
Corrija problemas críticos antes da implantação. Reexecute as varreduras após as alterações para verificar as correções.
3. Varredura de Código para Pull Requests
Promptfoo se integra com GitHub Actions para escanear pull requests em busca de problemas de segurança relacionados a LLMs.
# .github/workflows/promptfoo-scan.yml
name: Promptfoo Code Scan
on: [pull_request]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '22'
- run: npm install -g promptfoo
- run: promptfoo eval -c promptfooconfig.yaml
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
Isso detecta:
- Chaves de API codificadas em arquivos de configuração
- Padrões de prompt inseguros
- Validação de entrada ausente
- Potenciais vetores de injeção de prompt
4. Comparação de Modelos
Compare as saídas de múltiplos modelos lado a lado para escolher o melhor para o seu caso de uso.
# Execute a avaliação com múltiplos provedores
promptfoo eval
# Visualize a comparação na interface web
promptfoo view
A interface web exibe:
- Taxas de aprovação/falha por modelo
- Custo por 1000 requisições
- Latência média
- Diferenças de saída qualitativas
Essa abordagem orientada a dados evita o viés em relação a modelos familiares. Você pode descobrir que um modelo mais barato supera o GPT-4 em suas avaliações específicas.
Provedores Suportados: Mais de 90 Integrações LLM
Promptfoo suporta mais de 90 provedores de LLM prontos para uso. Você pode testar o mesmo prompt em OpenAI, Anthropic, Google, Amazon e modelos locais sem alterar seu código.
Principais Provedores
| Provedor | Modelos |
|---|---|
| OpenAI | GPT-4, GPT-4o, GPT-4o-mini, o1, o3 |
| Anthropic | Claude 3.5/3.7/4.5/4.6, Modelos Thinking |
| Gemini 1.5/2.0, Vertex AI | |
| Microsoft | Azure OpenAI, Phi |
| Amazon | Bedrock (Claude, Llama, Titan) |
| Meta | Llama 3, 3.1, 3.2 (via múltiplos provedores) |
| Ollama | Modelos locais (Llama, Mistral, Phi) |
Provedores Personalizados
Você pode escrever provedores personalizados em Python ou JavaScript se seu modelo não for suportado.
Exemplo em Python:
# custom_provider.py
from typing import Any
class CustomProvider:
async def call_api(self, prompt: str, options: dict, context: dict) -> dict:
response = await my_async_api.generate(prompt)
return {
"output": response.text,
"tokenUsage": {
"total": response.usage.total_tokens,
"prompt": response.usage.prompt_tokens,
"completion": response.usage.completion_tokens
}
}
Exemplo em JavaScript:
// customProvider.js
export default class CustomProvider {
async callApi(prompt) {
return {
output: await myApi.generate(prompt),
tokenUsage: { total: 50, prompt: 20, completion: 30 }
};
}
}
Registre provedores personalizados em sua configuração:
providers:
- id: file://custom_provider.py
config:
api_key: ${MY_API_KEY}
Interface de Linha de Comando: Comandos Essenciais
A CLI do Promptfoo oferece toda a funcionalidade que você precisa para os fluxos de trabalho diários.
Comandos Principais
# Executar avaliações
promptfoo eval -c promptfooconfig.yaml
# Abrir interface web
promptfoo view
# Compartilhar resultados online
promptfoo share
# Teste de red team
promptfoo redteam init
promptfoo redteam run
# Configuração
promptfoo init
promptfoo validate [config]
# Gerenciamento de resultados
promptfoo list
promptfoo show <id>
promptfoo delete <id>
promptfoo export <id>
# Utilitários
promptfoo cache clear
promptfoo retry <id>
Flags Úteis
--no-cache # Desabilitar cache para resultados atualizados
--max-concurrency <n> # Limitar chamadas de API paralelas
--output <file> # Escrever resultados para arquivo JSON
--verbose # Habilitar log de depuração
--env-file <path> # Carregar variáveis de ambiente de um arquivo
--filter <pattern> # Executar casos de teste específicos
Exemplo: Executar Avaliação com Configurações Personalizadas
promptfoo eval \
-c promptfooconfig.yaml \
--no-cache \
--max-concurrency 3 \
--output results.json \
--env-file .env
Isso executa avaliações novas (sem cache), limita a concorrência a 3 chamadas paralelas, salva os resultados em JSON e carrega as chaves de API do arquivo .env.
Integração CI/CD: Automatize Testes de LLM
Integre o promptfoo ao seu pipeline de CI/CD para detectar regressões antes da implantação.
Exemplo de GitHub Actions
name: LLM Tests
on: [push, pull_request]
jobs:
eval:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '22'
- run: npm install -g promptfoo
- run: promptfoo eval -c promptfooconfig.yaml
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
Portões de Qualidade
Defina limites de aprovação/falha em sua configuração:
commandLineOptions:
threshold: 0.8 # Requerer 80% de taxa de aprovação
Isso faz com que o CI falhe se as avaliações não atingirem o limite, impedindo que regressões sejam mescladas.
Cache em CI
Habilite o cache para acelerar as execuções de CI:
- uses: actions/cache@v4
with:
path: ~/.cache/promptfoo
key: ${{ runner.os }}-promptfoo-${{ hashFiles('promptfooconfig.yaml') }}
Resultados em cache pulam chamadas de API para testes inalterados, reduzindo o tempo e os custos do CI.
Interface Web: Visualize e Compartilhe Resultados
A interface web integrada (promptfoo view) oferece uma interface interativa para revisar avaliações.
Recursos
- Matriz de avaliação - Compare as saídas lado a lado
- Filtragem - Encontre casos de teste específicos por status ou provedor
- Visualização de diferenças - Veja exatamente o que mudou entre as execuções
- Compartilhamento - Gere links compartilháveis para revisão da equipe
- Atualizações em tempo real - Veja as avaliações rodarem ao vivo
Acesso e Segurança
A interface de usuário roda em localhost:3000 por padrão. Ela inclui proteção CSRF usando cabeçalhos Sec-Fetch-Site e Origin para bloquear requisições cross-site de origens não confiáveis.
Não exponha o servidor web local a redes não confiáveis. Para acesso da equipe, use o comando promptfoo share para fazer upload de resultados para a nuvem, ou hospede-o por conta própria com autenticação.
Banco de Dados e Cache
Local do Cache
- macOS/Linux:
~/.cache/promptfoo - Windows:
%LOCALAPPDATA%\promptfoo
O cache armazena os resultados da avaliação para acelerar execuções repetidas. Use --no-cache durante o desenvolvimento para garantir resultados atualizados.
Local do Banco de Dados
- Todas as plataformas:
~/.promptfoo/promptfoo.db(SQLite)
O banco de dados armazena execuções históricas de avaliação para comparação e análise de tendências. Não exclua este arquivo, a menos que você queira perder dados históricos.
Modelo de Segurança: O Que Você Pode Confiar
Promptfoo opera em um modelo de confiança por configuração. Compreender isso evita surpresas de segurança.
Entradas Confiáveis (Tratadas como Código)
Essas entradas são executadas como código e só devem vir de fontes confiáveis:
- Arquivos de configuração (
promptfooconfig.yaml) - Asserções personalizadas em JavaScript/Python/Ruby
- Configurações de provedor
- Funções de transformação
Entradas Não Confiáveis (Somente Dados)
Essas entradas são tratadas como dados e não devem desencadear a execução de código:
- Texto do prompt
- Variáveis de caso de teste
- Saídas do modelo
- Conteúdo remoto obtido durante as avaliações
Recomendações de Endurecimento
Para ambientes de alta segurança:
- Execute dentro de um contêiner ou VM com privilégios mínimos
- Use chaves de API dedicadas e com privilégios mínimos
- Evite colocar segredos em prompts ou arquivos de configuração
- Restrinja a saída de rede para código de terceiros
- Não exponha o servidor web local a redes não confiáveis
Desempenho: Otimize Suas Avaliações
Dicas de Otimização
- Use cache - Comportamento padrão acelera execuções repetidas
- Ajuste a concorrência -
--max-concurrencyequilibra velocidade vs. limites de taxa - Filtre testes - Use
--filterpara executar casos de teste específicos durante o desenvolvimento - Amostre conjuntos de dados - Use
--repeatcom subconjuntos para iteração antes de execuções completas
Escalando para Grandes Avaliações
Para avaliações em larga escala com milhares de casos de teste:
- Use o agendador (
src/scheduler/) para execuções distribuídas - Aproveite a geração remota para descarregar o processamento
- Exporte resultados para o Google Sheets para visibilidade da equipe
Extensibilidade: Construa Recursos Personalizados
Asserções Personalizadas
Escreva asserções personalizadas para verificações específicas do domínio:
// assertions/customCheck.js
export default function customCheck(output, context) {
const pass = output.includes('expected');
return {
pass,
score: pass ? 1 : 0,
reason: pass ? 'Output matched' : 'Missing expected content'
};
}
Use em sua configuração:
assert:
- type: file://assertions/customCheck.js
Servidor MCP
Promptfoo inclui um servidor Model Context Protocol (MCP) para integração com assistentes de IA como o Claude Code:
promptfoo mcp
Isso permite que agentes de IA:
- Execute avaliações diretamente do chat
- Acesse recursos de red team
- Consulte resultados armazenados
- Gere novos casos de teste
Casos de Uso do Mundo Real
Chatbot de Suporte ao Cliente
Uma empresa SaaS usa o promptfoo para testar seu chatbot de suporte antes de cada implantação:
- 500 casos de teste cobrindo perguntas comuns
- Avaliação entre GPT-4 e Claude para comparar a qualidade
- Varreduras de red team para vazamento de PII e jailbreaks
- A integração com CI bloqueia implantações com avaliações falhas
Resultado: Redução de 90% nos problemas relatados pelos clientes após a implementação de avaliações automatizadas.
Pipeline de Geração de Conteúdo
Uma equipe de marketing valida conteúdo gerado por IA para a voz da marca:
- Avaliações classificadas por LLM verificam tom e estilo
- Limites de latência garantem geração rápida
- Monitoramento de custos mantém despesas sob controle
- Comparação de modelos encontra o provedor de melhor custo-benefício
Resultado: Voz da marca consistente em todo o conteúdo com 40% menos custos de API.
Aplicação de Saúde
Uma startup de healthtech garante conformidade com testes rigorosos:
- Varreduras de red team para violações HIPAA
- Asserções personalizadas validam a precisão médica
- Todas as avaliações rodam localmente para privacidade de dados
- Trilhas de auditoria para requisitos regulatórios
Resultado: Auditoria SOC 2 aprovada com avaliações promptfoo como evidência.
Conclusão
Promptfoo traz testes sistemáticos para aplicações de LLM. Ele substitui processos manuais e propensos a erros por avaliações automatizadas que detectam regressões, problemas de segurança e problemas de qualidade antes da implantação.
Principais pontos:
- Instale com
npm install -g promptfooe comece compromptfoo init - Use asserções para validar saídas além da correspondência exata de strings
- Execute varreduras de red team para encontrar vulnerabilidades de segurança
- Integre com CI/CD para bloquear regressões
- Compare modelos objetivamente com avaliações lado a lado
- Provedores e asserções personalizadas estendem a funcionalidade
O futuro do desenvolvimento de IA é orientado a dados. Com o promptfoo, você tem as ferramentas para construir, testar e proteger aplicações de LLM em escala.
Se você também trabalha com APIs, considere usar o Apidog junto com o promptfoo. O Apidog lida com design, teste e documentação de API, enquanto o promptfoo se concentra na avaliação de LLM. Juntos, eles cobrem toda a pilha de testes de aplicações modernas.
FAQ
Para que serve o promptfoo?
Promptfoo é usado para testar e avaliar aplicações de LLM. Ele executa testes automatizados em prompts, compara saídas entre modelos e realiza avaliações de "red-team" de segurança para encontrar vulnerabilidades.
O promptfoo é gratuito?
Sim, o promptfoo é de código aberto e licenciado sob MIT. Você pode usá-lo gratuitamente para projetos pessoais e comerciais. Recursos de nuvem e suporte empresarial podem exigir planos pagos.
Como faço para instalar o promptfoo?
Execute npm install -g promptfoo para instalação global. Você também pode usar npx promptfoo@latest sem instalar, ou instalar via brew install promptfoo no macOS ou pip install promptfoo para Python.
Quais modelos o promptfoo suporta?
Promptfoo suporta mais de 90 provedores de LLM, incluindo OpenAI (GPT-4, GPT-4o, o1), Anthropic (Claude 3.5/4/4.5), Google (Gemini), Microsoft (Azure OpenAI), Amazon Bedrock e modelos locais via Ollama.
Como faço para executar uma varredura de red team?
Execute promptfoo redteam init para criar uma configuração, então promptfoo redteam run para executar a varredura de segurança. Visualize os resultados com promptfoo redteam report.
Posso usar o promptfoo em CI/CD?
Sim. Instale o promptfoo em seu pipeline de CI e execute promptfoo eval com seu arquivo de configuração. Defina portões de qualidade com a opção threshold para fazer o CI falhar se as avaliações não atingirem as taxas de aprovação.
O promptfoo envia meus dados para servidores externos?
Não. O promptfoo executa 100% localmente por padrão. Seus prompts e dados de teste nunca saem da sua máquina, a menos que você opte explicitamente por recursos de nuvem. Os arquivos de cache e banco de dados são armazenados localmente.
Como faço para comparar modelos com o promptfoo?
Liste múltiplos provedores em seu arquivo de configuração, então execute promptfoo eval. Visualize a comparação na interface web com promptfoo view, que mostra as taxas de aprovação/falha, custos e latência para cada modelo.
