# Benchmarks Grok via OCI — consumo, ferramentas e custo Consolidação dos testes realizados em **14 e 15/10/2026**, com custos valorados pela lista Oracle consultada em **15/10/2026**. Todos os valores financeiros estão em **USD**, para processamento padrão e contexto curto. ## Sumário executivo **Decisão recomendada: manter Grok 4.3 como modelo padrão de custo para o chatbot cotidiano com websearch desta POC.** No conjunto avaliado, cada interação custou em média **US$ 0,040643**, contra **US$ 0,071787** no Grok 4.20 non-reasoning: economia de **43,38%**, com busca confirmada nos dois modelos em todas as consultas. A comparação usou **as mesmas 100 intenções por modelo**, distribuídas entre culinária, esportes, clima e entretenimento. A tabela abaixo apresenta o custo unitário observado, incluindo os tokens consumidos durante o uso das ferramentas e a cobrança do websearch. | Indicador por interação | Grok 4.20 non-reasoning | Grok 4.3 | |---|---:|---:| | Tokens médios: entrada + saída | 49.082,23 | 21.473,81 | | Chamadas médias de websearch | 6,47 | 3,12 | | Custo médio dos tokens — USD | 0,039437 | 0,025043 | | Custo médio do websearch — USD | 0,032350 | 0,015600 | | **Custo médio total — USD** | 0,071787 | 0,040643 | O resultado é explicado pelo comportamento de execução: embora as tarifas por token dos dois candidatos sejam iguais, o Grok 4.3 fez menos buscas e processou menos contexto. Ele custou menos em **95 dos 100 pares** e apresentou mediana de resposta de **10,60 s**, ante **13,55 s** do 4.20 non-reasoning. **Investimento no experimento:** US$ 11,243038 nas 200 interações do lote principal. O histórico completo, incluindo a POC e a triagem de todos os identificadores, soma US$ 11,505274 em 210 chamadas. Somente o lote pareado sustenta a comparação econômica entre os dois finalistas. A qualidade factual das respostas ainda não foi pontuada. ## Escopo e evidências | Etapa | Data | Chamadas | Objetivo | |---|---|---:|---| | Validação da POC | 14/10/2026 | 3 | Confirmar rotas Responses, REST público e busca com Grok 4.3 | | Matriz de compatibilidade | 14/10/2026 | 7 | Uma consulta de notícia por identificador Grok | | Benchmark pareado | 15/10/2026 | 200 | As mesmas 100 intenções em Grok 4.20 non-reasoning e Grok 4.3 | | **Total com uso preservado** | **14–15/10/2026** | **210** | **Inventário financeiro, não uma única amostra comparável** | Os sete identificadores incluem os aliases `xai.grok-4.20-reasoning` e `xai.grok-4.20-non-reasoning`, que, na documentação consultada, apontam para as versões `0309` correspondentes. Portanto, sete identificadores testados não representam sete configurações independentes de modelo. Voice Agent e Multi-Agent não integram este estudo. As três etapas são contabilizadas sem sobreposição. Os erros de diagnóstico sem contadores de uso não entram no total: ausência de `usage` não é tratada como prova de custo zero. O consolidado não substitui a fatura OCI. ## Resultado financeiro consolidado ### Preços de referência Valores por **1 milhão de tokens**, exceto websearch: | Família comercial | Entrada sem cache USD | Entrada em cache USD | Saída USD | |---|---:|---:|---:| | Grok 4.20 — rubrica comercial Grok 4.2 | 1,25 | 0,20 | 2,50 | | Grok 4.3 | 1,25 | 0,20 | 2,50 | | Grok 4.6 | 2,00 | 0,50 | 6,00 | | Grok 4.7 | 2,00 | 0,50 | 6,00 | **Websearch nativo xAI via OCI: US$ 5,00 por 1.000 chamadas**, SKU `B112610`. A contabilização usa o número de chamadas tarifadas informado pelo provedor, não o número de perguntas nem uma contagem manual de eventos. Fontes: [lista de preços Oracle](https://www.oracle.com/cloud/price-list/), [preços congelados do benchmark](oracle-prices.json) e [consolidado com SKUs complementares de 4.6/4.7](financial-consolidation.json). O consolidado registra preços, datas, hashes e contadores históricos suficientes para refazer a soma. O arquivo original de preços do lote foi preservado para manter o hash do manifesto. ### Custos por etapa | Etapa | Entrada sem cache USD | Cache USD | Saída USD | Websearch USD | Total USD | |---|---:|---:|---:|---:|---:| | Validação da POC | 0,023511 | 0,002534 | 0,008370 | 0,045000 | 0,079416 | | Matriz de compatibilidade | 0,091164 | 0,003290 | 0,023366 | 0,065000 | 0,182820 | | Benchmark pareado | 5,428386 | 0,501094 | 0,518558 | 4,795000 | 11,243038 | | **Total** | **5,543062** | **0,506918** | **0,550294** | **4,905000** | **11,505274** | ### Todos os identificadores testados A tabela abaixo consolida financeiramente as três etapas. Os tamanhos de amostra são diferentes; a média histórica é descritiva e **não deve ser usada como ranking entre os sete identificadores**. | Identificador OCI | Chamadas | Custo dos tokens¹ USD | Websearch USD | Total USD | Média histórica USD/interação | |---|---:|---:|---:|---:|---:| | `xai.grok-4.20-0309-non-reasoning` | 1 | 0,011960 | 0,010000 | 0,021960 | 0,021960 | | `xai.grok-4.20-0309-reasoning` | 1 | 0,013099 | 0,005000 | 0,018099 | 0,018099 | | `xai.grok-4.20-non-reasoning` | 101 | 3,956892 | 3,245000 | 7,201892 | 0,071306 | | `xai.grok-4.20-reasoning` | 1 | 0,012605 | 0,010000 | 0,022605 | 0,022605 | | `xai.grok-4.3` | 104 | 2,549742 | 1,615000 | 4,164742 | 0,040046 | | `xai.grok-4.6` | 1 | 0,020772 | 0,005000 | 0,025772 | 0,025772 | | `xai.grok-4.7` | 1 | 0,035204 | 0,015000 | 0,050204 | 0,050204 | ¹ Inclui entrada sem cache, cache e saída; tokens de raciocínio já estão na saída. Valores são arredondados somente na apresentação; o [JSON consolidado](financial-consolidation.json) preserva a precisão de cálculo. ### Comparação controlada — 100 intenções por modelo | Modelo | Total USD | Média USD/interação | Mediana USD/interação | P95 USD/interação | Websearch USD | Mediana de tempo (s) | |---|---:|---:|---:|---:|---:|---:| | `xai.grok-4.20-non-reasoning` | 7,178728 | 0,071787 | 0,069751 | 0,094497 | 3,235000 | 13,55 | | `xai.grok-4.3` | 4,064310 | 0,040643 | 0,038978 | 0,056172 | 1,560000 | 10,60 | A economia do Grok 4.3 neste lote foi de **US$ 3,114417 (43,38%)**. O P95 é o percentil empírico pelo método de posto mais próximo; não é uma garantia de custo máximo de futuras interações. | Categoria — 25 intenções por modelo | Grok 4.20 non-reasoning USD | Grok 4.3 USD | Economia com Grok 4.3 | |---|---:|---:|---:| | Culinária | 1,676109 | 1,053508 | 37,15% | | Esportes | 1,881921 | 0,976945 | 48,09% | | Clima | 1,818597 | 0,966295 | 46,87% | | Entretenimento | 1,802101 | 1,067563 | 40,76% | ## Consumo e custo médios por interação — lote de 100 intenções As médias desta seção usam **100 interações por modelo**, sem misturar os testes pontuais anteriores. O consumo inclui todas as etapas internas reportadas no `usage` da resposta OCI; não corresponde apenas ao tamanho do prompt digitado ou ao texto final apresentado ao usuário. ### Tokens e ferramentas por interação | Métrica média por interação | Grok 4.20 non-reasoning | Grok 4.3 | |---|---:|---:| | Entrada total, cache incluído | 48.154,53 | 20.327,28 | | Entrada atendida por cache¹ | 21.976,32 | 3.078,40 | | Entrada sem cache | 26.178,21 | 17.248,88 | | Saída total, raciocínio incluído | 927,70 | 1.146,53 | | Raciocínio reportado² | 0,00 | 690,02 | | **Total: entrada + saída** | **49.082,23** | **21.473,81** | | Chamadas de websearch | 6,47 | 3,12 | ¹ Cache é parte da entrada, não consumo adicional. ² Raciocínio é parte da saída, não uma parcela somada novamente. A diferença de consumo vem principalmente do volume de contexto recuperado e do número de buscas realizadas. ### Composição do custo médio por interação | Componente — USD/interação | Grok 4.20 non-reasoning | Grok 4.3 | |---|---:|---:| | Tokens de entrada sem cache | 0,03272276 | 0,02156110 | | Tokens de entrada em cache | 0,00439526 | 0,00061568 | | Tokens de saída, incluindo raciocínio | 0,00231925 | 0,00286632 | | Chamadas de websearch | 0,03235000 | 0,01560000 | | **Total por interação** | 0,07178728 | 0,04064310 | **Leitura financeira:** menor tarifa por token não foi o fator de diferenciação, pois os dois candidatos tinham os mesmos preços. O Grok 4.3 consumiu mais tokens de saída, mas a redução de entrada e de buscas mais que compensou esse componente. Os valores são custos calculados do uso medido a preço de lista, e não valores conciliados de uma fatura. ## Metodologia ### Por que Grok 4.3 e Grok 4.20 non-reasoning receberam as 100 intenções A escolha foi feita **antes da execução do lote completo**, para responder a uma pergunta de negócio: **qual dos candidatos de menor tarifa consegue atender consultas cotidianas com busca web pelo menor custo total por interação?** Os dois já tinham demonstrado busca nativa funcionando pela OCI e estavam na mesma faixa de preço: US$ 1,25 por milhão de tokens de entrada, US$ 0,20 de cache e US$ 2,50 de saída. | Candidato | Motivo para entrar no lote completo | Hipótese avaliada | |---|---|---| | **Grok 4.3** | Era o padrão funcional da POC, já validado no REST público, e tinha a tarifa base mais baixa entre as famílias testadas, empatada com 4.20. | Medir o custo de manter o padrão da aplicação nas 100 consultas cotidianas, incluindo busca e contexto. | | **Grok 4.20 non-reasoning** | Representava a alternativa focada em respostas diretas, sem tokens de raciocínio reportados na triagem. Na amostra inicial respondeu em 3,22–3,62 s, ante 9,24 s do 4.3, com a mesma tarifa unitária. | Testar se a rapidez e a ausência de raciocínio reportado se converteriam em menor consumo e menor custo da interação completa. | A triagem inicial tinha uma consulta por identificador. Esses números justificaram uma **hipótese de seleção**, não uma conclusão sobre desempenho ou qualidade. No lote ampliado, a vantagem inicial de tempo do 4.20 non-reasoning não se repetiu na mediana, e ele fez mais buscas; é justamente esse tipo de diferença que o experimento buscava medir. Os demais identificadores permaneceram na triagem por estes critérios de escopo: - **Grok 4.6 e 4.7:** tinham tarifas superiores — US$ 2,00 de entrada, US$ 0,50 de cache e US$ 6,00 de saída por milhão de tokens. Para o primeiro comparativo de consultas cotidianas, priorizaram-se os candidatos da faixa de menor custo. Não foi testado se uma eventual melhora de qualidade desses modelos compensaria a diferença de tarifa. - **Grok 4.20 reasoning:** o recorte inicial priorizou recuperação de informação atual e resposta direta, em vez de raciocínio complexo em múltiplas etapas. A variante permaneceu como compatibilidade confirmada, sem participar da disputa financeira de 100 intenções. Isso não demonstra inadequação ou inferioridade dessa variante. - **Identificadores com e sem `0309`:** os aliases apontavam para as mesmas versões na documentação consultada. Repetir as 100 intenções nos dois nomes não acrescentaria uma configuração independente ao estudo; foi utilizado o alias `xai.grok-4.20-non-reasoning`. Portanto, a conclusão de menor custo é **entre os dois candidatos selecionados**, não um ranking geral dos sete identificadores nem uma afirmação de qualidade equivalente. ### Desenho e execução 1. **Triagem de compatibilidade:** uma consulta sobre notícia atual por identificador, executando a rota `/api/chat` em processos locais isolados via FastAPI TestClient com inferência OCI real. HTTP 200 isolado não foi suficiente para confirmar busca. Os parâmetros e o runtime dessa etapa estão na [matriz original](../evidence/grok-websearch-models.json). 2. **Conjunto pareado:** seleção prévia de 100 intenções, com 25 de cada tema. As perguntas exigem informação atual, como previsão do tempo, agenda, preços, resultados e disponibilidade. Os [prompts e hashes](intents.json) e a [lista legível](INTENCOES.md) foram congelados com referência a 15/10/2026. 3. **Envio uniforme:** o coletor do benchmark chama diretamente a Responses API OCI em `us-chicago-1`, endpoint `/v1/responses`, com payload compartilhado idêntico entre os candidatos, diferindo somente `model`. Não chama a API direta da xAI. Cada interação é independente, sem histórico de conversa. 4. **Configuração:** `tools: [{"type":"web_search"}]`, `store:false`, máximo de 2.400 tokens de saída e instrução de resposta em até 200 palavras. Temperatura e esforço de raciocínio ficam nos padrões do serviço. Há duas inferências simultâneas, pareadas por intenção e alternadas entre temas. 5. **Piloto e retomada:** as quatro primeiras intenções, uma por tema, geraram oito chamadas e integram as 200 finais. Não houve retries automáticos nem repetição do piloto. O controle de orçamento pausou após 170 chamadas; a retomada enviou somente as 30 restantes. 6. **Confirmação de busca:** exigir HTTP 200, evento `web_search_call` com ação `search` e status `completed`, fontes não vazias e citações estruturadas. Todas as 200 interações satisfizeram o critério. 7. **Auditoria:** conferir 200 chamadas únicas, 100 pares, 25 intenções por tema/modelo, hashes iguais em cada par e composição aritmética dos custos. Há zero interações com custo desconhecido no lote concluído. A cobrança por interação é calculada assim: ```text entrada sem cache = input_tokens - cached_tokens custo = (entrada sem cache × tarifa entrada + cached_tokens × tarifa cache + output_tokens × tarifa saída) / 1.000.000 + web_search_calls × 5 / 1.000 ``` `cached_tokens` é subconjunto da entrada, e `reasoning_tokens` é subconjunto da saída: nenhum deles é somado novamente. O contexto recuperado pelas ferramentas já aparece nos tokens informados pelo serviço. O contador de chamadas tarifadas é `usage.server_side_tool_usage_details.web_search_calls`; aberturas de página e eventos falhos não são tarifados por uma contagem inferida nossa. `cost_in_usd_ticks` é preservado nas evidências históricas, mas não é a fonte da conversão financeira deste relatório. O custo corresponde ao **uso medido valorado a preço de lista**, sem impostos, descontos contratuais, VM, rede ou armazenamento. As chamadas de 14/10 foram reprecificadas pela referência de 15/10 para produzir um consolidado homogêneo. Não há conciliação com faturamento ou análise de todas as possíveis despesas da conta. ## Estatísticas consolidadas de tokens e tool calls ### Inventário histórico por identificador — 210 interações | Identificador OCI | Entrada² | Cache² | Saída³ | Raciocínio³ | Total de tokens | Chamadas websearch | |---|---:|---:|---:|---:|---:|---:| | `xai.grok-4.20-0309-non-reasoning` | 10.036 | 1.024 | 196 | 0 | 10.232 | 2 | | `xai.grok-4.20-0309-reasoning` | 7.712 | 256 | 1.491 | 1.375 | 9.203 | 1 | | `xai.grok-4.20-non-reasoning` | 4.826.397 | 2.198.656 | 92.994 | 0 | 4.919.391 | 649 | | `xai.grok-4.20-reasoning` | 7.882 | 1.024 | 1.531 | 1.329 | 9.413 | 2 | | `xai.grok-4.3` | 2.072.301 | 321.792 | 118.899 | 72.106 | 2.191.200 | 323 | | `xai.grok-4.6` | 8.712 | 1.280 | 878 | 732 | 9.590 | 1 | | `xai.grok-4.7` | 16.570 | 3.456 | 1.208 | 988 | 17.778 | 3 | | **Total** | **6.949.610** | **2.527.488** | **217.197** | **76.530** | **7.166.807** | **981** | ² A coluna entrada já inclui cache. ³ A coluna saída já inclui raciocínio. **Total de tokens = entrada + saída**. Os sete testes pontuais e as três validações da POC não são uma amostra equivalente ao lote pareado. ### Médias unitárias de todos os identificadores — histórico Este quadro atende à visão unitária do inventário completo. Ele mistura etapas com perguntas e tamanhos de amostra distintos: **não usar seus valores como comparação controlada ou ranking**. Para os modelos com uma única chamada, a média é apenas o valor daquela consulta. As médias dos finalistas nesta tabela incluem as validações anteriores; por isso diferem das médias do lote principal de 100 intenções. | Identificador OCI | Interações na amostra | Tokens médios/interação | Buscas médias/interação | USD médios/interação | |---|---:|---:|---:|---:| | `xai.grok-4.20-0309-non-reasoning` | 1 | 10.232,00 | 2,00 | 0,02195980 | | `xai.grok-4.20-0309-reasoning` | 1 | 9.203,00 | 1,00 | 0,01809870 | | `xai.grok-4.20-non-reasoning` | 101 | 48.706,84 | 6,43 | 0,07130587 | | `xai.grok-4.20-reasoning` | 1 | 9.413,00 | 2,00 | 0,02260480 | | `xai.grok-4.3` | 104 | 21.069,23 | 3,11 | 0,04004560 | | `xai.grok-4.6` | 1 | 9.590,00 | 1,00 | 0,02577200 | | `xai.grok-4.7` | 1 | 17.778,00 | 3,00 | 0,05020400 | Tokens totais de entrada + saída, já incluindo cache e raciocínio nos respectivos contadores. ### Lote pareado isolado — 200 interações | Métrica | Grok 4.20 non-reasoning | Grok 4.3 | Total do lote | |---|---:|---:|---:| | Tokens de entrada, cache incluído | 4.815.453 | 2.032.728 | 6.848.181 | | Tokens em cache | 2.197.632 | 307.840 | 2.505.472 | | Tokens de saída, raciocínio incluído | 92.770 | 114.653 | 207.423 | | Tokens de raciocínio | 0 | 69.002 | 69.002 | | Chamadas tarifadas de websearch | 647 | 312 | 959 | | Total de tokens: entrada + saída | 4.908.223 | 2.147.381 | 7.055.604 | | Buscas tarifadas por interação, média | 6,47 | 3,12 | 4,795 | | Interações com busca confirmada | 100/100 | 100/100 | 200/200 | As **959 chamadas de busca** custaram **US$ 4,795**, ou **42,65%** do custo do lote. O Grok 4.3 realizou **51,78% menos buscas**. Embora tenha gerado mais tokens de saída, incluindo 69.002 de raciocínio, sua menor entrada e menor quantidade de buscas compensaram esse componente de custo. ## Limitações e conclusão **Recomendação:** manter Grok 4.3 como padrão de custo para o conjunto de consultas cotidianas com websearch avaliado nesta POC. O ganho observado foi consistente no total, nas quatro categorias e em 95% dos pares; a tarifa unitária igual reforça a importância de medir a execução completa, incluindo ferramentas e contexto. Grok 4.6, Grok 4.7 e as variantes reasoning da família 4.20 tiveram busca confirmada na triagem, mas somente uma consulta por identificador. Não há evidência neste repositório para classificá-los acima ou abaixo dos finalistas em qualidade, custo médio de 100 intenções ou custo-benefício geral. Os aliases `0309` e sem data também não devem ser tratados como alternativas independentes. Este estudo mede custo, uso de ferramentas e latência observada. Não pontua correção factual, completude, precisão de datas, cobertura das fontes ou satisfação do usuário. Mais buscas não provam maior qualidade; menos buscas não provam pior qualidade. Uma execução por intenção, cache real do serviço e conteúdo volátil da web limitam a extrapolação. Os resultados valem para os identificadores, região, endpoint, preços e datas documentados. Para uma decisão mais ampla de produto, o próximo passo é avaliar as respostas dos mesmos 100 pares com uma rubrica factual e de utilidade, antes de transformar a economia em uma conclusão de custo-benefício com qualidade equivalente. ## Arquivos e reprodução | Arquivo | Conteúdo | |---|---| | [INTENCOES.md](INTENCOES.md) / [intents.json](intents.json) | Lista de 100 intenções e prompts exatos com hashes | | [PROTOCOLO.md](PROTOCOLO.md) | Regras de execução, custos, orçamento e retomada | | [oracle-prices.json](oracle-prices.json) | Preços e SKUs congelados do lote pareado | | [financial-consolidation.json](financial-consolidation.json) | Consolidação das 210 chamadas e SKUs dos sete identificadores | | [run_benchmark.py](run_benchmark.py) | Coletor: padrão dry run; execução paga exige flags e orçamento | | [report.py](report.py) | Regenera relatório do lote a partir dos registros locais, sem inferência | | [Relatório do lote](results/comparison-2026-10-15/REPORT.md) | Custos e estatísticas por categoria | | [CSV por interação](results/comparison-2026-10-15/interactions.csv) | 200 linhas com prompts, tokens e composição de custo | | [Uso medido](results/comparison-2026-10-15/measured-usage.json) | Métricas selecionadas de cada chamada do lote | | [Resumo](results/comparison-2026-10-15/summary.json) / [hashes](results/comparison-2026-10-15/sha256.json) | Totais, manifesto e integridade dos artefatos | | [Matriz original dos sete identificadores](../evidence/grok-websearch-models.json) | Resultados dos testes pontuais de compatibilidade | Executados na raiz do repositório: ```bash # Validar o dataset sem inferência: python benchmarks/run_benchmark.py # Regenerar o relatório se os registros locais da execução estiverem presentes: python benchmarks/report.py ``` Para uma nova execução paga, consultar o [protocolo](PROTOCOLO.md), definir orçamento autorizado e usar um novo `--run-id` quando apropriado. Credenciais, respostas brutas e registros operacionais não são versionados. Este README e o consolidado financeiro foram produzidos a partir das evidências existentes, sem novas chamadas de inferência.