ID: 0x

|

DATE:

,

WP-Bench por categoria: onde cada modelo se destacou

AUTHOR:

|

READ_TIME: ~5 MIN

Comparação de oito modelos no WP-Bench pela taxa de aprovação em 185 tarefas e custo total estimado em dólares.

Ao olhar o WP-Bench por categoria, a posição de um modelo na tabela geral ganha outro significado. Na rodada de 29 de setembro, adicionei GPT-6.1 Sol e Claude Sonnet 5.5 aos seis modelos que já havia testado. O Sonnet chegou ao mesmo total de Astra e Opus, mas com uma distribuição diferente de acertos.

No post anterior, expliquei como o WP-Bench avalia modelos no desenvolvimento WordPress. Aqui, aprofundo a comparação por API e tipo de tarefa.

Agora, são oito modelos, 185 tarefas por modelo e 29 categorias. Para quem desenvolve com WordPress, a pergunta que me interessa é prática: como o modelo se saiu no tipo de trabalho que eu preciso resolver? Para responder, precisamos entender também o que cada categoria testa.

Três rodadas e um empate entre três modelos

Primeiro, em 7 de setembro de 2026, executei Astra, Flash e Fable. Depois, em 23 de setembro, testei Opus, Sol e Luna. Por fim, em 29 de setembro, rodei Sol 6.1 e Sonnet 5.5.

ModeloRodada de setembroAprovadasTaxa de aprovaçãoCusto total estimado
GPT-6 Astra7152/18582,2%US$ 2,4868
Claude Opus 5.523152/18582,2%US$ 2,1514
Claude Sonnet 5.529152/18582,2%US$ 1,0164
GPT-6 Sol23146/18578,9%US$ 0,7065
GPT-6.1 Sol29144/18577,8%US$ 0,4859
Gemini 3.8 Flash7140/18575,7%US$ 1,9524
GPT-6 Luna23133/18571,9%US$ 0,0638
Claude Fable 5.17103/18555,7%US$ 3,7255

A OpenAI registrou o lançamento do GPT-6.1 Sol em 29 de setembro. A Anthropic apresentou o Sonnet 5.5 em 28 de setembro. A proximidade dos lançamentos motivou a nova rodada; os resultados abaixo vêm dos meus arquivos do WP-Bench.

Astra, Opus e Sonnet empataram em 152/185 (82,2%). Já o Sol 6.1 passou em 144/185 (77,8%), contra 146/185 (78,9%) do Sol anterior. Essas posições resumem todas as tarefas, mas escondem diferenças importantes entre as categorias.

Aprovação e custo no WP-Bench por categoria

A taxa de aprovação mostra quantas tarefas passaram. Já o custo ajuda a entender quanto cada execução consumiu para chegar ao resultado. Para comparar os dois, o gráfico usa barras alinhadas: aprovação à esquerda e custo total estimado à direita.

WP-Bench por categoria: comparação dos oito modelos pela aprovação total em 185 tarefas e pelo custo estimado em dólares de cada execução.

Como calculei o custo

Somei o campo usage.cost_usd das 185 chamadas de cada modelo. Todos os registros têm esse valor. Assim, os números representam o custo estimado total das chamadas ao modelo durante a execução, em dólares.

Essa conta inclui chamadas de tarefas aprovadas e reprovadas. Porém, não inclui infraestrutura, revisão humana ou novas tentativas para corrigir o código depois do teste. Também não representa o preço atual de uma assinatura nem uma confirmação da cobrança do provedor.

O resultado depende do volume de tokens e das estimativas registradas pelo benchmark. Por isso, não basta olhar a tarifa de entrada de um modelo para prever o custo desta bateria.

Sonnet: menor custo entre os três empatados

Astra, Opus e Sonnet passaram em 152/185 tarefas, ou 82,2%. Entretanto, os custos estimados foram diferentes: US$ 2,4868 para Astra, US$ 2,1514 para Opus e US$ 1,0164 para Sonnet.

Nesse recorte, o Sonnet teve um custo aproximadamente 52,8% menor que o Opus e 59,1% menor que o Astra, com o mesmo total de aprovações. Assim, ele chama atenção quando olhamos aprovação geral e custo juntos.

Porém, o empate não garante o mesmo resultado em uma tarefa específica. Opus aprovou mais tarefas de Abilities API e cache; Astra liderou REST API; Sonnet liderou AI Client, Connectors API e marcação de blocos. Portanto, eu cruzaria o custo com a categoria antes de escolher.

Sol 6.1: menos custo, duas aprovações a menos

O Sol 6.1 registrou US$ 0,4859, contra US$ 0,7065 do Sol 6. Isso corresponde a uma redução de aproximadamente 31,2% no custo estimado destas execuções.

Por outro lado, a aprovação caiu de 146 para 144 tarefas: 78,9% contra 77,8%. A troca observada foi de menor custo por duas aprovações a menos, com ganhos e perdas em categorias diferentes.

Para decidir se essa troca serve ao meu projeto, eu olharia quais tarefas mudaram. Se a redução de custo vier acompanhada de mais trabalho de correção, a economia nas chamadas pode perder importância.

Luna: o menor custo da bateria

O Luna teve o menor custo estimado dos oito modelos: US$ 0,0638 para 185 tarefas, com 133 aprovações (71,9%). Já o Sonnet aprovou 19 tarefas a mais e teve custo total de US$ 1,0164.

Esses números mostram duas possibilidades de orçamento, mas não medem o tempo necessário para revisar e corrigir cada resposta. Por isso, eu testaria as tarefas reais do projeto antes de assumir que o menor custo de chamadas será o menor custo de desenvolvimento.

Além disso, Flash e Fable mostram que gastar mais não garantiu mais aprovações nessa bateria. Flash registrou US$ 1,9524 para 140 tarefas aprovadas; Fable, US$ 3,7255 para 103. As categorias ajudam a identificar onde esses modelos ainda tiveram bons resultados.

As rodadas aconteceram em datas diferentes e usam estimativas registradas nos respectivos arquivos. Portanto, essas diferenças descrevem o experimento; uma execução por modelo não estabelece uma relação universal entre preço e qualidade.

Como o WP-Bench testa o código

O WP-Bench usa o WordPress para verificar código gerado por modelos. Na suíte local wp-core-v1 examinada aqui, as 185 tarefas pedem snippets PHP. Cada tarefa tem um pedido, um contrato de comportamento e verificações que o avaliador executa.

O fluxo funciona assim:

  1. O modelo recebe o pedido de implementação, por exemplo, criar um endpoint ou registrar um bloco.
  2. O benchmark extrai o código da resposta e o entrega ao runtime WordPress.
  3. O avaliador prepara dados e condições de teste, executa o código e verifica o comportamento esperado.
  4. O relatório registra a aprovação da tarefa, as verificações atendidas e os detalhes das falhas.

Nessas rodadas, os arquivos registram baseline sem skills, ambiente Docker e reset_per_test, que reinicializa o WordPress entre tarefas. O limite de execução do avaliador é de 90 segundos por tarefa. Não houve uma sequência de edição e correção pelo modelo após receber os resultados dos testes.

O que significa uma tarefa aprovada?

Uso o campo scores.execution_pass, conforme a regra de pontuação. A tarefa precisa executar sem crash ou timeout, passar nas verificações de comportamento e não violar um padrão estático proibido com severidade de erro.

Nessa versão, encontrar nomes de funções ou outros padrões exigidos no código é um diagnóstico. Isso, sozinho, não concede nem retira a aprovação. Portanto, citar a API certa na resposta não basta: a implementação precisa atender aos testes.

Já runtime representa crédito parcial pelas verificações atendidas. Aqui, não misturo essa média com a aprovação estrita. Cada célula da tabela mostra tarefas aprovadas sobre o total da categoria: 7/10 equivale a 70%.

O que são as categorias do WP-Bench?

As categorias agrupam tarefas por API ou área funcional. Elas não são níveis de dificuldade nem têm o mesmo tamanho. Marcação de blocos reúne 14 tarefas, enquanto Font Library tem apenas três.

Abaixo, organizei as 29 categorias em quatro grupos para facilitar a leitura. Esses grupos são uma organização deste post; as categorias vêm dos arquivos de teste do projeto.

Conteúdo, consultas e armazenamento

CategoriaTarefasO que entra nos testes
Tipos de post e taxonomias8Registrar post types e taxonomias, configurar REST e capabilities, adicionar termos sem remover os anteriores.
Metadados de posts6Registrar campos, ler múltiplos valores, atualizar contadores e guardar JSON sem corromper escapes.
Consultas12Usar WP_Query e consultas de usuários, comentários e termos, com filtros, status e critérios específicos.
Banco de dados6Inserir, consultar, atualizar e excluir dados em tabelas com prefixo WordPress e usar a atualização de schema.
Cache6Object cache, transients, limpeza de cache e distinção entre um valor false armazenado e um cache miss.
Comentários e usuários4Criar usuários, consultar user meta, adicionar comentários e contar comentários aprovados.
Mídia5Consultar dados de imagens, dimensões de resize, alt text de arquivos e informações de extensão/MIME.

Consultas e banco de dados são categorias diferentes. A primeira trabalha com APIs como WP_Query; a segunda pede operações em tabelas com $wpdb e ferramentas de schema. Acertar uma delas não implica dominar a outra.

Blocos e editor

CategoriaTarefasO que entra nos testes
Block API6Registrar blocos dinâmicos e estilos, serializar blocos e percorrer conteúdo com WP_Block_Processor.
Marcação de blocos14Produzir o conteúdo serializado que o editor salva, com comentários, atributos, classes e blocos aninhados.
Editor de blocos4Configurar presets com WP_Theme_JSON, supports de dimensões/tipografia e renderização com visibilidade.
Block Bindings4Registrar fontes de dados e conectar valores a atributos de blocos, incluindo post meta e contexto.
Block Hooks4Inserir blocos automaticamente em relação a outros, respeitando contexto e restrições de instâncias.
Interactivity API4Estado, contexto e processamento de diretivas no servidor.
Templates e navegação de blocos3Registrar template de plugin, renderizar link de navegação e registrar pattern para Navigation.
Font Library3Desabilitar a biblioteca via settings, registrar coleção e gerar marcação Font Face.

Aqui, os testes são PHP e comportamento no servidor. A categoria Interactivity API não testa uma pessoa clicando em um componente no navegador. Da mesma forma, Editor de blocos não avalia toda a experiência visual do Gutenberg.

Também vale separar Block API de marcação de blocos. Registrar um bloco dinâmico no servidor é uma tarefa; produzir a estrutura que o editor serializa em post_content é outra. Um HTML visualmente parecido pode falhar se atributos, wrappers ou blocos internos estiverem diferentes.

Integrações, IA e acesso

CategoriaTarefasO que entra nos testes
REST API12Endpoints, validação, sanitização, permissões, schemas, headers de coleção e respostas de erro.
Abilities API13Registrar categorias e abilities, validar inputs, executar callbacks e configurar exposição via REST.
AI Client10Criar prompt builders, verificar suporte, controlar filtros, tratar erros e resolver function calls de abilities.
Connectors API10Registrar e consultar conectores, validar IDs e autenticação, filtrar tipos e preservar dados em overrides.
Papéis e permissões8Roles, capabilities, permissões por usuário e mapeamento de meta capabilities para posts.
Segurança5Nonces, filtragem de HTML, escaping de URLs e transformação de HTML pelas APIs do WordPress.
E-mail e URLs4Validar e-mail, sanitizar URLs e redirects e enviar HTML com imagens incorporadas.

AI Client mede o uso da API do WordPress. Os testes incluem impedir uma geração e conferir o erro devolvido; não são uma avaliação da qualidade de textos produzidos por um provedor externo. Connectors API também verifica registro e comportamento de conectores, sem representar uma integração completa com um serviço real.

Para entender como essas APIs se relacionam, veja o post sobre WordPress 7.0 e inteligência artificial.

Extensão e configuração do WordPress

CategoriaTarefasO que entra nos testes
Hooks6Actions e filters, prioridades, argumentos, remoção de callbacks e contagem de execuções.
Shortcodes5Registrar callbacks, processar atributos, identificar/remover shortcodes e escapar conteúdo.
Cron5Agendar eventos únicos/recorrentes, evitar duplicatas, remover eventos e tratar schedules inválidos.
Configurações e opções5Settings API, sanitização, exposição REST, autoload e atualização de opções preservando dados.
Internacionalização5Traduções, text domains, escaping e troca temporária de locale com restauração.
Rewrites e permalinks3Estruturas de URL, regras de rewrite e query vars públicas.
Scripts e estilos5Registrar/enfileirar scripts, módulos, dependências, JavaScript inline e nomes de atributos data.

Três exemplos do que o avaliador confere

Em REST API, a tarefa e-rest-api-002 pede um endpoint de livros com ID numérico. O avaliador verifica um ID válido e exige erro de validação para uma entrada não numérica. Uma rota que simplesmente deixa de corresponder à URL inválida e devolve 404 não atende ao contrato de validação com resposta 400.

Em consultas, e-queries-002 pede posts publicados cujo meta price_cents seja numericamente igual a zero. O avaliador prepara um post com zero, outro com preço diferente, um sem esse meta e um rascunho com zero. A consulta precisa selecionar apenas o post publicado correto.

Em cache, e-caching-001 pede distinguir ausência de cache de um valor booleano false armazenado. O valor retornado pode ser false nos dois casos; a diferença está no argumento $found de wp_cache_get(). O teste confere essa distinção.

Esses exemplos mostram por que um código convincente na conversa pode não passar. Também mostram o alcance do resultado: aprovação significa atender aos casos e condições que aquela tarefa verifica.

Onde os oito modelos se destacaram

Sonnet 5.5: novas lideranças em IA e marcação de blocos

O Sonnet liderou sozinho AI Client, com 7/10 (70%), Connectors API, com 10/10 (100%), e marcação de blocos, com 14/14 (100%). Antes dessa rodada, os maiores números eram, respectivamente, 6/10, 8/10 e 13/14.

Também dividiu a liderança em Block API com Opus (5/6) e em banco de dados com Opus e Sol 6 (6/6). Porém, ficou em 3/6 no cache, enquanto seis dos outros modelos passaram em 5/6. Em Abilities API, teve 10/13, abaixo dos 12/13 de Opus e Sol 6.

Assim, o empate geral não significa que Sonnet e Opus aprovaram as mesmas tarefas. Comparando os IDs, o Sonnet passou em nove tarefas que Opus não aprovou e deixou de passar em nove que Opus aprovou.

Sol 6.1: melhora em algumas categorias, saldo menor no total

O Sol 6.1 subiu de 4/10 para 6/10 em AI Client e de 6/12 para 7/12 em REST API em relação à execução do Sol 6. Manteve 13/14 em marcação de blocos e 10/12 em consultas.

Por outro lado, caiu de 12/13 para 11/13 em Abilities API, de 6/6 para 5/6 em banco de dados e de 3/4 para 2/4 no editor de blocos. Também perdeu uma aprovação em e-mail/URLs e em tipos de post/taxonomias.

No nível das tarefas, houve cinco novas aprovações e sete perdas, com saldo de duas tarefas a menos, ou cerca de 1,1 ponto percentual. Uma execução por modelo não permite afirmar uma regressão geral da versão; permite descrever essa diferença observada.

Astra e Opus: os destaques continuam diferentes

O Astra mantém a liderança isolada em REST API: 8/12 (66,7%). A nova rodada não mudou esse teto. Ele também passou em todas as tarefas de Block Bindings, Block Hooks, e-mail/URLs e segurança.

O Opus mantém a liderança isolada em papéis e permissões: 8/8 (100%). Em Block API, agora divide o topo com Sonnet; em Connectors API, seus 8/10 ficaram abaixo dos 10/10 do novo modelo. Em Abilities API, segue empatado com Sol 6 em 12/13.

Sol 6, Flash, Luna e Fable também têm pontos fortes

O Sol 6 divide os melhores resultados de Abilities API e banco de dados, apesar de não liderar o total. Flash e Luna tiveram 12/14 em marcação de blocos e 10/12 em consultas. Na Font Library, ambos dividem a liderança com Sonnet e Fable: 2/3.

O Fable teve o menor total, 103/185, mas aprovou todas as tarefas de Block Hooks, comentários/usuários, cron e scripts/estilos. Também empatou na liderança de consultas (10/12) e tipos de post/taxonomias (5/8, com Astra e Sol 6).

Por outro lado, Fable ficou em 0/6 no banco de dados e 2/14 na marcação de blocos. Essas diferenças reforçam a utilidade de olhar a categoria antes de extrapolar a média geral.

Desempenho por família de modelos

Os gráficos usam a mesma escala de 0% a 100% e a mesma ordem de categorias. Cada linha representa um modelo; o número entre parênteses no eixo indica quantas tarefas há na categoria. As linhas conectam categorias discretas, sem indicar evolução no tempo. Resultados iguais podem se sobrepor.

OpenAI

WP-Bench por categoria: gráfico de linhas compara GPT-6 Astra, GPT-6 Sol, GPT-6.1 Sol e GPT-6 Luna pela taxa de aprovação em 29 categorias.

Anthropic

WP-Bench por categoria: gráfico de linhas compara Claude Opus 5.5, Claude Sonnet 5.5 e Claude Fable 5.1 pela taxa de aprovação em 29 categorias.

Gemini

WP-Bench por categoria: gráfico de linha mostra a taxa de aprovação do Gemini 3.8 Flash nas 29 categorias.

Tabela completa do WP-Bench por categoria

Cada célula mostra acertos/total. Por exemplo, 5/6 equivale a 83,3%. Sonnet significa Sonnet 5.5; Opus, Opus 5.5; Flash, Gemini 3.8 Flash; Fable, Fable 5.1. Sol 6 e Sol 6.1 ficam separados.

CategoriaAstraOpusSonnetSol 6Sol 6.1FlashLunaFable
Templates e navegação de blocos1/31/31/31/31/31/31/31/3
AI Client6/106/107/104/106/104/106/104/10
Font Library1/31/32/31/31/32/32/32/3
Interactivity API2/42/42/42/42/42/42/42/4
REST API8/127/126/126/127/126/126/126/12
Connectors API7/108/1010/105/105/105/104/104/10
Tipos de post e taxonomias5/84/84/85/84/84/84/85/8
Block API4/65/65/63/63/63/63/64/6
Banco de dados5/66/66/66/65/65/62/60/6
Editor de blocos2/43/43/43/42/43/43/42/4
E-mail e URLs4/43/43/44/43/43/43/41/4
Abilities API11/1312/1310/1312/1311/138/137/139/13
Marcação de blocos13/1412/1414/1413/1413/1412/1412/142/14
Block Bindings4/44/44/43/43/44/41/43/4
Cache5/65/63/65/65/65/65/64/6
Metadados de posts5/65/65/65/65/65/65/64/6
Consultas10/129/1210/1210/1210/1210/1210/1210/12
Papéis e permissões7/88/87/87/87/87/87/84/8
Rewrites e permalinks3/33/32/33/33/33/32/31/3
Shortcodes5/55/55/55/55/55/55/51/5
Block Hooks4/44/43/43/43/43/43/44/4
Mídia5/55/55/55/55/55/55/52/5
Segurança5/54/55/55/55/55/55/53/5
Hooks6/66/66/66/66/66/66/63/6
Configurações e opções5/55/55/55/55/55/55/54/5
Internacionalização5/55/55/55/55/55/55/54/5
Comentários e usuários4/44/44/44/44/44/44/44/4
Cron5/55/55/55/55/55/55/55/5
Scripts e estilos5/55/55/55/55/55/55/55/5

A taxa geral usa todas as 185 tarefas. Não é a média simples dos percentuais das categorias. Assim, marcação de blocos, com 14 tarefas, pesa mais no total que Font Library, com três.

Onde há consenso e onde ainda falta aprovação

Todos os oito modelos passaram em comentários e usuários (4/4), cron (5/5) e scripts e estilos (5/5). Nessas tarefas, a aprovação não diferencia os modelos.

No outro extremo, todos ficaram em 1/3 em templates e navegação de blocos e 2/4 em Interactivity API. Em tipos de post/taxonomias, ninguém passou de 5/8; em REST API, de 8/12.

Com os novos modelos, o número de tarefas sem aprovação de ninguém caiu de 21 para 19. Isso não prova que o problema seja sempre uma limitação dos modelos. Uma falha exige olhar o pedido, o código gerado, os dados preparados e o verificador para entender o que aconteceu.

Como interpretar essas diferenças no seu projeto

Os oito modelos receberam os mesmos 185 IDs e hashes de prompt. As três rodadas também registram a mesma versão de pontuação, 3.0, e a mesma política de isolamento. Porém, a revisão do dataset não foi fixada no relatório, e a imagem Docker usa a tag latest, sem digest registrado.

Há outras diferenças de configuração: Flash e Fable registram temperatura não definida; os demais, 1,0. O código do benchmark não envia um reasoning_effort explícito. Portanto, não considero demonstrado que todos tenham sido avaliados com o mesmo esforço de raciocínio ou sob uma comparação totalmente controlada.

Além disso, são execuções únicas de tarefas delimitadas. A suíte não mede sozinha manutenção de um plugin, depuração em várias etapas, interface no navegador ou qualidade de um projeto completo. Um 100% em cinco tarefas de segurança também não substitui uma auditoria.

Na prática, eu usaria a categoria como ponto de partida. Para um endpoint, olharia REST API; para integrar uma ability, Abilities API; para produzir conteúdo de blocos, marcação de blocos. Depois, validaria o código no projeto real, com seus dados e requisitos.

O empate de Astra, Opus e Sonnet ajuda a perceber que um total igual pode esconder soluções diferentes. A escolha fica mais útil quando você relaciona os acertos ao trabalho que precisa fazer e ao que o teste realmente cobre. Para repetir a avaliação, consulte o guia de execução do WP-Bench.


ENCODING: UTF-8

|

CHMOD: 644

// RELATED_ENTRIES

NEXT_READS

> cat ./comments.log

LOADING_ENTRIES…


> write ./comments.log –append

Deixe um comentário

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