mirror of
https://github.com/mcloh/poc-grok-websearch.git
synced 2026-11-06 06:14:11 +00:00
Audit Grok finalist selection with equal 12-intent screening across seven OCI IDs
This commit is contained in:
@@ -181,6 +181,8 @@ Consulte o [relatório](evidence/RELATORIO.md) e o [resumo estruturado](evidence
|
|||||||
|
|
||||||
Veja o [sumário executivo e o consolidado de todos os modelos testados](benchmarks/README.md).
|
Veja o [sumário executivo e o consolidado de todos os modelos testados](benchmarks/README.md).
|
||||||
|
|
||||||
|
Uma [auditoria retrospectiva de seleção](benchmarks/screening/README.md) acrescentou as mesmas 12 perguntas em cada um dos sete IDs (84 respostas). O corte operacional ponderado indicou `grok-4.3`, `grok-4.20-non-reasoning`. A escolha original dos dois modelos do lote de 100 perguntas foi heurística e antecedeu essa auditoria.
|
||||||
|
|
||||||
Foi executada a mesma lista de 100 intenções nos dois candidatos de uso geral, Grok 4.3 e Grok 4.20 non-reasoning: 25 de culinária, 25 de esportes, 25 de clima e 25 de entretenimento por modelo. As 200 interações tiveram HTTP 200 e busca confirmada, sem retries ou duplicação de chamadas. Os hashes do payload compartilhado coincidiram nos 100 pares.
|
Foi executada a mesma lista de 100 intenções nos dois candidatos de uso geral, Grok 4.3 e Grok 4.20 non-reasoning: 25 de culinária, 25 de esportes, 25 de clima e 25 de entretenimento por modelo. As 200 interações tiveram HTTP 200 e busca confirmada, sem retries ou duplicação de chamadas. Os hashes do payload compartilhado coincidiram nos 100 pares.
|
||||||
|
|
||||||
- [Lista das 100 intenções](benchmarks/INTENCOES.md).
|
- [Lista das 100 intenções](benchmarks/INTENCOES.md).
|
||||||
|
|||||||
@@ -1,10 +1,14 @@
|
|||||||
# Benchmarks Grok via OCI — consumo, ferramentas e custo
|
# 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.
|
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, com faixas de contexto curto e longo quando aplicáveis.
|
||||||
|
|
||||||
## Sumário executivo
|
## 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 auditoria retrospectiva com os sete IDs selecionou Grok 4.3 e Grok 4.20 non-reasoning, pelo corte operacional de 70/100.** A escolha original de Grok 4.3 e 4.20 non-reasoning foi heurística. O [pré-teste posterior de 12 perguntas por ID](screening/README.md) estabelece uma comparação uniforme e registra sua cronologia e limitações.
|
||||||
|
|
||||||
|
A confirmação da segunda vaga depende do cache observado: no cenário contábil secundário sem desconto de cache, somente Grok 4.3 passa o corte. O teste não pontua qualidade factual.
|
||||||
|
|
||||||
|
No lote anterior de 100 intenções, Grok 4.3 custou **US$ 0,040643 por interação**, contra **US$ 0,071787** no 4.20 non-reasoning: economia de **43,38%** entre esses dois candidatos. Esse resultado não estabelece superioridade perante todos os modelos.
|
||||||
|
|
||||||
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.
|
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.
|
||||||
|
|
||||||
@@ -18,7 +22,7 @@ A comparação usou **as mesmas 100 intenções por modelo**, distribuídas entr
|
|||||||
|
|
||||||
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.
|
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.
|
**Investimento conhecido:** US$ 20,963443 em **294 respostas com uso**, incluindo US$ 9,458169 nas 84 respostas da auditoria. Essa etapa exigiu 91 tentativas HTTP, com sete rejeições de infraestrutura sem custo determinável por ausência de `usage`. A qualidade factual ainda não foi pontuada.
|
||||||
|
|
||||||
## Escopo e evidências
|
## Escopo e evidências
|
||||||
|
|
||||||
@@ -27,11 +31,12 @@ O resultado é explicado pelo comportamento de execução: embora as tarifas por
|
|||||||
| Validação da POC | 14/10/2026 | 3 | Confirmar rotas Responses, REST público e busca com Grok 4.3 |
|
| 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 |
|
| 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 |
|
| 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** |
|
| Auditoria retrospectiva | 15/10/2026 | 84 respostas / 91 tentativas HTTP | Mesmas 12 perguntas nos sete IDs, três por tema; corte ponderado |
|
||||||
|
| **Total com uso preservado** | **14–15/10/2026** | **294** | **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.
|
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.
|
As quatro 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
|
## Resultado financeiro consolidado
|
||||||
|
|
||||||
@@ -46,34 +51,37 @@ Valores por **1 milhão de tokens**, exceto websearch:
|
|||||||
| Grok 4.6 | 2,00 | 0,50 | 6,00 |
|
| Grok 4.6 | 2,00 | 0,50 | 6,00 |
|
||||||
| Grok 4.7 | 2,00 | 0,50 | 6,00 |
|
| Grok 4.7 | 2,00 | 0,50 | 6,00 |
|
||||||
|
|
||||||
|
As tarifas da tabela são de contexto curto. A faixa longa dobra as tarifas da família 4.20/4.3 para 2,50/0,40/5,00 e da família 4.6/4.7 para 4,00/1,00/12,00 (entrada/cache/saída, por milhão). A aplicação observada está documentada no [adendo](screening/ADENDO-CONTABILIDADE.md).
|
||||||
|
|
||||||
**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.
|
**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.
|
Fontes: [lista de preços Oracle](https://www.oracle.com/cloud/price-list/), [preços congelados do benchmark](oracle-prices.json) e [preços complementares e faixas longas](screening/oracle-prices.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
|
### Custos por etapa
|
||||||
|
|
||||||
| Etapa | Entrada sem cache USD | Cache USD | Saída USD | Websearch USD | Total USD |
|
| 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 |
|
| 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 |
|
| 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 |
|
| Benchmark pareado | 5,428386 | 0,501094 | 0,518558 | 4,795000 | 11,243038 |
|
||||||
| **Total** | **5,543062** | **0,506918** | **0,550294** | **4,905000** | **11,505274** |
|
| Auditoria retrospectiva | 4,575965 | 1,239002 | 0,953202 | 2,690000 | 9,458169 |
|
||||||
|
| **Total** | 10,119027 | 1,745920 | 1,503496 | 7,595000 | 20,963443 |
|
||||||
|
|
||||||
### Todos os identificadores testados
|
### 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**.
|
Inventário das quatro etapas, com amostras diferentes: **as médias históricas não são ranking**. A comparação uniforme dos sete IDs está na [auditoria de seleção](screening/README.md).
|
||||||
|
|
||||||
| Identificador OCI | Chamadas | Custo dos tokens¹ USD | Websearch USD | Total USD | Média histórica USD/interação |
|
| Identificador OCI | Respostas | 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-non-reasoning` | 13 | 0,481469 | 0,415000 | 0,896469 | 0,068959 |
|
||||||
| `xai.grok-4.20-0309-reasoning` | 1 | 0,013099 | 0,005000 | 0,018099 | 0,018099 |
|
| `xai.grok-4.20-0309-reasoning` | 13 | 0,506283 | 0,305000 | 0,811283 | 0,062406 |
|
||||||
| `xai.grok-4.20-non-reasoning` | 101 | 3,956892 | 3,245000 | 7,201892 | 0,071306 |
|
| `xai.grok-4.20-non-reasoning` | 113 | 4,468418 | 3,640000 | 8,108418 | 0,071756 |
|
||||||
| `xai.grok-4.20-reasoning` | 1 | 0,012605 | 0,010000 | 0,022605 | 0,022605 |
|
| `xai.grok-4.20-reasoning` | 13 | 0,462307 | 0,290000 | 0,752307 | 0,057870 |
|
||||||
| `xai.grok-4.3` | 104 | 2,549742 | 1,615000 | 4,164742 | 0,040046 |
|
| `xai.grok-4.3` | 116 | 2,863576 | 1,810000 | 4,673576 | 0,040289 |
|
||||||
| `xai.grok-4.6` | 1 | 0,020772 | 0,005000 | 0,025772 | 0,025772 |
|
| `xai.grok-4.6` | 13 | 1,547842 | 0,485000 | 2,032842 | 0,156372 |
|
||||||
| `xai.grok-4.7` | 1 | 0,035204 | 0,015000 | 0,050204 | 0,050204 |
|
| `xai.grok-4.7` | 13 | 3,038548 | 0,650000 | 3,688548 | 0,283734 |
|
||||||
|
|
||||||
¹ 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.
|
O [consolidado atual](screening/financial-consolidation.json) preserva valores completos; o [baseline de 210 respostas](financial-consolidation.json) continua intacto. Sete rejeições da auditoria sem `usage` estão fora dos custos conhecidos, sem serem tratadas como custo zero.
|
||||||
|
|
||||||
### Comparação controlada — 100 intenções por modelo
|
### Comparação controlada — 100 intenções por modelo
|
||||||
|
|
||||||
@@ -123,6 +131,10 @@ As médias desta seção usam **100 interações por modelo**, sem misturar os t
|
|||||||
|
|
||||||
## Metodologia
|
## Metodologia
|
||||||
|
|
||||||
|
### Auditoria posterior da seleção
|
||||||
|
|
||||||
|
A seleção inicial abaixo explica uma decisão histórica de escopo, sem corte equitativo entre todos os modelos. Após questionamento metodológico, foram feitas 84 novas inferências: as mesmas 12 perguntas, três por tema, nos sete IDs. Pesos, corte, gates e agrupamento de aliases foram congelados antes dessas chamadas. O [relatório da auditoria](screening/README.md) apresenta notas, variabilidade, exceções operacionais e a dupla indicada para uma próxima comparação completa. A auditoria não transforma o desenho inicial em prospectivo.
|
||||||
|
|
||||||
### Por que Grok 4.3 e Grok 4.20 non-reasoning receberam as 100 intenções
|
### 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.
|
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.
|
||||||
@@ -162,42 +174,40 @@ custo = (entrada sem cache × tarifa entrada
|
|||||||
+ web_search_calls × 5 / 1.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.
|
`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. O custo é calculado por SKUs Oracle. Na auditoria posterior, `cost_in_usd_ticks` também foi usado para resolver a faixa longa por correspondência única ao cálculo dos SKUs, conforme o [adendo contábil](screening/ADENDO-CONTABILIDADE.md).
|
||||||
|
|
||||||
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.
|
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
|
## Estatísticas consolidadas de tokens e tool calls
|
||||||
|
|
||||||
### Inventário histórico por identificador — 210 interações
|
### Inventário histórico por identificador — 294 respostas
|
||||||
|
|
||||||
| Identificador OCI | Entrada² | Cache² | Saída³ | Raciocínio³ | Total de tokens | Chamadas websearch |
|
| Identificador OCI | Entrada | Cache¹ | Saída | Raciocínio² | Total de tokens | Websearch |
|
||||||
|---|---:|---:|---:|---:|---:|---:|
|
|---|---|---|---|---|---|---|
|
||||||
| `xai.grok-4.20-0309-non-reasoning` | 10.036 | 1.024 | 196 | 0 | 10.232 | 2 |
|
| `xai.grok-4.20-0309-non-reasoning` | 586.469 | 269.312 | 12.464 | 0 | 598.933 | 83 |
|
||||||
| `xai.grok-4.20-0309-reasoning` | 7.712 | 256 | 1.491 | 1.375 | 9.203 | 1 |
|
| `xai.grok-4.20-0309-reasoning` | 493.766 | 188.928 | 34.980 | 25.922 | 528.746 | 61 |
|
||||||
| `xai.grok-4.20-non-reasoning` | 4.826.397 | 2.198.656 | 92.994 | 0 | 4.919.391 | 649 |
|
| `xai.grok-4.20-non-reasoning` | 5.425.184 | 2.451.328 | 104.333 | 0 | 5.529.517 | 728 |
|
||||||
| `xai.grok-4.20-reasoning` | 7.882 | 1.024 | 1.531 | 1.329 | 9.413 | 2 |
|
| `xai.grok-4.20-reasoning` | 423.457 | 139.392 | 31.739 | 23.469 | 455.196 | 58 |
|
||||||
| `xai.grok-4.3` | 2.072.301 | 321.792 | 118.899 | 72.106 | 2.191.200 | 323 |
|
| `xai.grok-4.3` | 2.323.819 | 354.560 | 132.436 | 80.151 | 2.456.255 | 362 |
|
||||||
| `xai.grok-4.6` | 8.712 | 1.280 | 878 | 732 | 9.590 | 1 |
|
| `xai.grok-4.6` | 981.041 | 449.024 | 43.216 | 35.777 | 1.024.257 | 97 |
|
||||||
| `xai.grok-4.7` | 16.570 | 3.456 | 1.208 | 988 | 17.778 | 3 |
|
| `xai.grok-4.7` | 1.812.889 | 1.144.704 | 53.315 | 43.212 | 1.866.204 | 130 |
|
||||||
| **Total** | **6.949.610** | **2.527.488** | **217.197** | **76.530** | **7.166.807** | **981** |
|
| **Total** | 12.046.625 | 4.997.248 | 412.483 | 208.531 | 12.459.108 | 1.519 |
|
||||||
|
|
||||||
² 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.
|
¹ Cache é subconjunto da entrada. ² Raciocínio é subconjunto da saída. Total = entrada + saída.
|
||||||
|
|
||||||
### Médias unitárias de todos os identificadores — histórico
|
### Médias unitárias históricas — amostras diferentes
|
||||||
|
|
||||||
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.
|
Estas médias misturam etapas e não classificam os modelos. Para médias pareadas dos sete IDs, usar a [amostra uniforme de 12 perguntas](screening/README.md).
|
||||||
|
|
||||||
| Identificador OCI | Interações na amostra | Tokens médios/interação | Buscas médias/interação | USD médios/interação |
|
| ID OCI | Respostas | Tokens/interação | Buscas/interação | USD/interação |
|
||||||
|---|---:|---:|---:|---:|
|
|---|---|---|---|---|
|
||||||
| `xai.grok-4.20-0309-non-reasoning` | 1 | 10.232,00 | 2,00 | 0,02195980 |
|
| `xai.grok-4.20-0309-non-reasoning` | 13 | 46.071,77 | 6,38 | 0,06895913 |
|
||||||
| `xai.grok-4.20-0309-reasoning` | 1 | 9.203,00 | 1,00 | 0,01809870 |
|
| `xai.grok-4.20-0309-reasoning` | 13 | 40.672,77 | 4,69 | 0,06240639 |
|
||||||
| `xai.grok-4.20-non-reasoning` | 101 | 48.706,84 | 6,43 | 0,07130587 |
|
| `xai.grok-4.20-non-reasoning` | 113 | 48.933,78 | 6,44 | 0,07175591 |
|
||||||
| `xai.grok-4.20-reasoning` | 1 | 9.413,00 | 2,00 | 0,02260480 |
|
| `xai.grok-4.20-reasoning` | 13 | 35.015,08 | 4,46 | 0,05786978 |
|
||||||
| `xai.grok-4.3` | 104 | 21.069,23 | 3,11 | 0,04004560 |
|
| `xai.grok-4.3` | 116 | 21.174,61 | 3,12 | 0,04028945 |
|
||||||
| `xai.grok-4.6` | 1 | 9.590,00 | 1,00 | 0,02577200 |
|
| `xai.grok-4.6` | 13 | 78.789,00 | 7,46 | 0,15637246 |
|
||||||
| `xai.grok-4.7` | 1 | 17.778,00 | 3,00 | 0,05020400 |
|
| `xai.grok-4.7` | 13 | 143.554,15 | 10,00 | 0,28373446 |
|
||||||
|
|
||||||
Tokens totais de entrada + saída, já incluindo cache e raciocínio nos respectivos contadores.
|
|
||||||
|
|
||||||
### Lote pareado isolado — 200 interações
|
### Lote pareado isolado — 200 interações
|
||||||
|
|
||||||
@@ -216,9 +226,9 @@ As **959 chamadas de busca** custaram **US$ 4,795**, ou **42,65%** do custo do l
|
|||||||
|
|
||||||
## Limitações e conclusão
|
## 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.
|
**Corte operacional da auditoria:** Grok 4.3 e Grok 4.20 non-reasoning. A amostra confirma os dois candidatos originais segundo a regra operacional congelada. O lote anterior de 100 perguntas continua demonstrando menor custo do Grok 4.3 frente ao 4.20 non-reasoning; os demais modelos não receberam esse lote completo.
|
||||||
|
|
||||||
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.
|
O [pré-teste retrospectivo](screening/README.md) amplia a evidência para todos os sete IDs, com 12 perguntas iguais, mas não sustenta extrapolação para 100 intenções nem ranking de qualidade factual. Aliases são agrupados em cinco configurações para a seleção das vagas.
|
||||||
|
|
||||||
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.
|
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.
|
||||||
|
|
||||||
@@ -231,7 +241,8 @@ Para uma decisão mais ampla de produto, o próximo passo é avaliar as resposta
|
|||||||
| [INTENCOES.md](INTENCOES.md) / [intents.json](intents.json) | Lista de 100 intenções e prompts exatos com hashes |
|
| [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 |
|
| [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 |
|
| [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 |
|
| [Consolidado atual](screening/financial-consolidation.json) / [baseline](financial-consolidation.json) | 294 respostas com custo conhecido / histórico preservado de 210 |
|
||||||
|
| [Auditoria da seleção](screening/README.md) | 12 perguntas × sete IDs, corte ponderado e resultados |
|
||||||
| [run_benchmark.py](run_benchmark.py) | Coletor: padrão dry run; execução paga exige flags e orçamento |
|
| [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 |
|
| [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 |
|
| [Relatório do lote](results/comparison-2026-10-15/REPORT.md) | Custos e estatísticas por categoria |
|
||||||
@@ -250,4 +261,4 @@ python benchmarks/run_benchmark.py
|
|||||||
python benchmarks/report.py
|
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.
|
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. O consolidado agrega as evidências das etapas descritas; sua regeneração não faz inferências. A auditoria retrospectiva acrescentou 84 novas respostas, documentadas separadamente.
|
||||||
|
|||||||
@@ -50,17 +50,15 @@ def calculate_cost(usage, model, prices):
|
|||||||
calls = usage['server_side_tool_usage_details']['web_search_calls']
|
calls = usage['server_side_tool_usage_details']['web_search_calls']
|
||||||
if any(not isinstance(v, int) or v < 0 for v in [total_in, cached, output, calls]) or cached > total_in:
|
if any(not isinstance(v, int) or v < 0 for v in [total_in, cached, output, calls]) or cached > total_in:
|
||||||
return {'status': 'unknown', 'reason': 'Invalid usage counters'}
|
return {'status': 'unknown', 'reason': 'Invalid usage counters'}
|
||||||
# A amostra tem prompts curtos. Bloquear inferência de faixa em contexto longo:
|
|
||||||
# uso agregado de um loop de ferramentas não identifica o tamanho de cada passo.
|
|
||||||
if total_in >= 200000:
|
|
||||||
return {'status': 'unknown', 'reason': 'Long-context band needs per-step verification'}
|
|
||||||
detail = usage['server_side_tool_usage_details']
|
detail = usage['server_side_tool_usage_details']
|
||||||
if any(v for k, v in detail.items() if k != 'web_search_calls'):
|
if any(v for k, v in detail.items() if k != 'web_search_calls'):
|
||||||
return {'status': 'unknown', 'reason': 'Other billable tools observed'}
|
return {'status': 'unknown', 'reason': 'Other billable tools observed'}
|
||||||
rate = prices['models']['grok-4.3' if model.endswith('4.3') else 'grok-4.20']
|
family = 'grok-4.20' if model.startswith('xai.grok-4.20-') else model.removeprefix('xai.')
|
||||||
regular_cost = D(total_in-cached)*D(rate['input_short']['usd'])/D(1000000)
|
rate = prices['models'][family]
|
||||||
cached_cost = D(cached)*D(rate['cached_short']['usd'])/D(1000000)
|
def priced(band):
|
||||||
output_cost = D(output)*D(rate['output_short']['usd'])/D(1000000)
|
regular_cost = D(total_in-cached)*D(rate['input_'+band]['usd'])/D(1000000)
|
||||||
|
cached_cost = D(cached)*D(rate['cached_'+band]['usd'])/D(1000000)
|
||||||
|
output_cost = D(output)*D(rate['output_'+band]['usd'])/D(1000000)
|
||||||
search_cost = D(calls)*D(prices['web_search']['usd_per_1000'])/D(1000)
|
search_cost = D(calls)*D(prices['web_search']['usd_per_1000'])/D(1000)
|
||||||
return {'status': 'computed_from_measured_usage', 'input_usd': str(regular_cost),
|
return {'status': 'computed_from_measured_usage', 'input_usd': str(regular_cost),
|
||||||
'cached_input_usd': str(cached_cost), 'output_usd': str(output_cost),
|
'cached_input_usd': str(cached_cost), 'output_usd': str(output_cost),
|
||||||
@@ -70,6 +68,21 @@ def calculate_cost(usage, model, prices):
|
|||||||
'output_tokens': output,
|
'output_tokens': output,
|
||||||
'reasoning_tokens': usage.get('output_tokens_details', {}).get('reasoning_tokens'),
|
'reasoning_tokens': usage.get('output_tokens_details', {}).get('reasoning_tokens'),
|
||||||
'web_search_calls': calls}
|
'web_search_calls': calls}
|
||||||
|
if total_in < 200000:
|
||||||
|
return priced('short')
|
||||||
|
# Uso de loops pode ser agregado. Resolver a faixa somente quando a fórmula
|
||||||
|
# dos SKUs Oracle coincide exatamente com o custo nativo carregado pela OCI.
|
||||||
|
ticks = usage.get('cost_in_usd_ticks')
|
||||||
|
if not isinstance(ticks, int) or ticks < 0:
|
||||||
|
return {'status': 'unknown', 'reason': 'Long-context band needs native cost reconciliation'}
|
||||||
|
native = D(ticks)/D(10000000000)
|
||||||
|
matches = [(band, priced(band)) for band in ['short', 'long']
|
||||||
|
if D(priced(band)['total_usd']) == native]
|
||||||
|
if len(matches) != 1:
|
||||||
|
return {'status': 'unknown', 'reason': 'No unique Oracle price band matching native cost'}
|
||||||
|
band, result = matches[0]
|
||||||
|
return {**result, 'pricing_band': band,
|
||||||
|
'band_validation': 'Oracle SKU formula equals cost_in_usd_ticks / 10^10; not OCI invoice reconciliation'}
|
||||||
except (KeyError, TypeError):
|
except (KeyError, TypeError):
|
||||||
return {'status': 'unknown', 'reason': 'Missing billing usage counters'}
|
return {'status': 'unknown', 'reason': 'Missing billing usage counters'}
|
||||||
|
|
||||||
|
|||||||
36
benchmarks/screening/ADENDO-CONTABILIDADE.md
Normal file
36
benchmarks/screening/ADENDO-CONTABILIDADE.md
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
# Adendo de contabilidade — resolução sem nova inferência
|
||||||
|
|
||||||
|
Durante a coleta, a interação `I075` com `xai.grok-4.7` retornou HTTP 200 e resposta final com fontes e citações. A classificação financeira inicial foi conservadoramente marcada como desconhecida porque o uso agregado ultrapassou 200 mil tokens de entrada. O coletor concluiu o grupo e parou, como previsto no protocolo.
|
||||||
|
|
||||||
|
## Memória de cálculo
|
||||||
|
|
||||||
|
Uso da mesma resposta original, preservada sem repetir a chamada:
|
||||||
|
|
||||||
|
- Entrada agregada: **249.047 tokens**, dos quais **193.408 em cache**.
|
||||||
|
- Saída agregada: **6.231 tokens**, dos quais **5.191 de raciocínio**.
|
||||||
|
- Websearch tarifado: **15 chamadas**.
|
||||||
|
- Campo nativo transportado na resposta OCI: `cost_in_usd_ticks = 5657360000`.
|
||||||
|
- `context_details.input_tokens = 56428` não é o mesmo contador que a entrada total do loop. Não foi usado em substituição ao total para precificação.
|
||||||
|
|
||||||
|
A [documentação oficial do campo de custo](https://docs.x.ai/developers/cost-tracking) define 10.000.000.000 ticks por USD. Ela foi consultada apenas como documentação; **nenhuma chamada de inferência foi enviada à API direta da xAI**.
|
||||||
|
|
||||||
|
Os SKUs Oracle de contexto longo para Grok 4.7, congelados antes do teste, são US$ 4 de entrada, US$ 1 de cache e US$ 12 de saída por milhão de tokens; a busca custa US$ 5 por mil chamadas.
|
||||||
|
|
||||||
|
```text
|
||||||
|
Entrada sem cache: (249047 - 193408) × 4 / 1.000.000 = USD 0,222556
|
||||||
|
Cache: 193408 × 1 / 1.000.000 = USD 0,193408
|
||||||
|
Saída: 6231 × 12 / 1.000.000 = USD 0,074772
|
||||||
|
Websearch: 15 × 5 / 1.000 = USD 0,075000
|
||||||
|
Total calculado pelos SKUs Oracle = USD 0,565736
|
||||||
|
Custo nativo: 5657360000 / 10.000.000.000 = USD 0,565736
|
||||||
|
```
|
||||||
|
|
||||||
|
A fórmula de contexto curto resultaria em USD 0,320368 e não coincide com o valor nativo. Assim, a faixa longa foi identificada de maneira única por conciliação aritmética dos SKUs Oracle com a mesma resposta. Isso não constitui conciliação com a fatura da conta OCI.
|
||||||
|
|
||||||
|
## Tratamento neutro e rastreável
|
||||||
|
|
||||||
|
O evento inicial com custo desconhecido permanece no registro. Um evento adicional `cost_reconciled` resolve a faixa e a confiabilidade financeira da **mesma execução**, preservando os contadores e o hash do payload. Os pesos, o corte, a amostra e os critérios de busca não foram alterados. Não se penaliza o modelo pela limitação do classificador de custos quando a cobrança pode ser determinada.
|
||||||
|
|
||||||
|
A partir desse diagnóstico, qualquer interação com uso agregado acima de 200 mil tokens terá a faixa resolvida somente se uma das fórmulas de preço congeladas coincidir exatamente com o campo nativo. Se não houver correspondência única, continuará com custo desconhecido e exigirá diagnóstico.
|
||||||
|
|
||||||
|
Também foi observado que o parâmetro `max_output_tokens=2400` não impediu que o `usage` agregado da execução com ferramentas reportasse mais de 2400 tokens de saída. O valor configurado permanece igual nos modelos. A medição e a cobrança usam o uso total retornado, não um teto teórico de tokens por interação. Não houve truncamento indicado nessa resposta.
|
||||||
24
benchmarks/screening/ADENDO-TAXA.md
Normal file
24
benchmarks/screening/ADENDO-TAXA.md
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# Adendo operacional — rejeições por limite compartilhado de tokens
|
||||||
|
|
||||||
|
Após seis intenções completas (42 respostas com uso), os sete identificadores receberam HTTP 429 no envio da intenção `I056`. O erro reportou consumo de 634.873 tokens diante de uma quota compartilhada de 600.000 tokens por minuto. Os identificadores de credenciais retornados no erro permanecem apenas nos arquivos privados e não são publicados.
|
||||||
|
|
||||||
|
## Recuperação limitada e igual para os sete IDs
|
||||||
|
|
||||||
|
As rejeições não retornaram resposta do modelo nem contadores de uso. Não são usadas como nota de qualidade ou de busca de um modelo. Para completar a mesma amostra de 12 respostas em cada ID:
|
||||||
|
|
||||||
|
- preservar cada tentativa 429 e seu corpo bruto em arquivo privado separado;
|
||||||
|
- registrar eventos `infrastructure_rejected`, sem apagar ou sobrescrever as tentativas no ledger;
|
||||||
|
- após a janela de taxa, repetir **uma vez** o grupo rejeitado, nos mesmos sete IDs e com o mesmo payload;
|
||||||
|
- não reexecutar nem escolher entre respostas já concluídas; inclusive os casos caros de contexto longo permanecem na amostra;
|
||||||
|
- inserir pausa de 75 segundos antes dos grupos restantes, mantendo concorrência 2 e rotação da ordem dos IDs;
|
||||||
|
- se houver outra rejeição, interromper novamente para diagnóstico; não há loop automático de retries.
|
||||||
|
|
||||||
|
A pausa não entra na latência individual: o cronômetro mede a requisição. O ritmo de envio mudou durante a coleta e isso é uma limitação operacional declarada; os sete IDs de cada intenção seguem a mesma política de execução e a comparação de tempo é relativa ao mesmo caso.
|
||||||
|
|
||||||
|
## Transparência de amostra e custo
|
||||||
|
|
||||||
|
A matriz avaliável continua com 12 respostas por ID, totalizando 84 inferências concluídas. Com a recuperação, há sete tentativas HTTP adicionais rejeitadas por infraestrutura, registradas separadamente. Portanto, não será declarado que foram feitos somente 84 POSTs HTTP.
|
||||||
|
|
||||||
|
Os sete erros não serão contabilizados como custo zero: não há `usage` para precificá-los. Eles ficam fora das médias da matriz de respostas com custo conhecido e mantêm uma reserva conservadora de US$ 0,50 por tentativa no controle interno do orçamento acumulado. O relatório financeiro continuará identificado como custo conhecido calculado a preço de lista, sem conciliação com fatura.
|
||||||
|
|
||||||
|
O protocolo primário continua preservado. Pesos, corte, gates para as 12 respostas de cada ID, amostra e preços não foram alterados. Este adendo documenta uma recuperação manual de falha compartilhada de infraestrutura e o controle de taxa necessário para completar a amostra, em vez de transformar a falta de resposta em uma penalização artificial de todos os candidatos.
|
||||||
65
benchmarks/screening/PROTOCOLO.md
Normal file
65
benchmarks/screening/PROTOCOLO.md
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
# Pré-teste retrospectivo de seleção — protocolo v1
|
||||||
|
|
||||||
|
## Objetivo e limites
|
||||||
|
|
||||||
|
Auditar a escolha original dos candidatos Grok 4.3 e 4.20 non-reasoning com uma amostra comparável dos sete identificadores. Este teste foi planejado depois do lote de 100 intenções; não é uma validação prospectiva nem torna a seleção original um processo baseado em corte prévio. Seus resultados podem confirmar ou contestar a escolha original.
|
||||||
|
|
||||||
|
## Amostra e execução
|
||||||
|
|
||||||
|
- Doze prompts do dataset original, três por tema. São 84 novas interações: 12 por identificador, incluindo os nomes com e sem `0309`.
|
||||||
|
- Seleção determinística: ordenar, em cada tema, `SHA256(seed|category|id|prompt_sha256)` e escolher os três primeiros. Seed: `grok-retrospective-screening-v1`. A seleção usa apenas os prompts e seus metadados, sem métricas de resultados na função de amostragem. O caráter retrospectivo e o acesso prévio aos resultados originais permanecem declarados.
|
||||||
|
- [Dataset congelado](intents-12.json), com os mesmos prompts e data de referência do lote original, 15/10/2026. A cada intenção todos os IDs recebem o mesmo payload, diferindo somente `model`.
|
||||||
|
- OCI Chicago `/v1/responses`, `store:false`, ferramenta nativa web_search, máximo de 2400 tokens de saída e instrução de até 200 palavras. Defaults de raciocínio e amostragem do serviço, como no lote original. Essa configuração avalia a mesma restrição operacional da POC, não a melhor configuração possível de cada modelo.
|
||||||
|
- Concorrência 2. Ordem dos sete IDs rotacionada por intenção. Um piloto com a primeira intenção (sete chamadas) integra as 84 finais e não será repetido. Sem retries.
|
||||||
|
- Registrar custo de entrada sem cache, cache, saída (raciocínio incluído), buscas, uso bruto, HTTP, truncamento, latência e hashes. Contadores ausentes ou transporte falho não serão tratados como custo zero. Erros de HTTP ou custo desconhecido interrompem novos grupos para diagnóstico.
|
||||||
|
|
||||||
|
## Regras de pontuação definidas antes das novas inferências
|
||||||
|
|
||||||
|
Os [pesos e gates](scoring-rules.json) são congelados no manifesto antes de executar a primeira chamada. Cada tema pesa 25%; as três intenções dentro do tema têm pesos iguais.
|
||||||
|
|
||||||
|
Para cada intenção e identificador:
|
||||||
|
|
||||||
|
```text
|
||||||
|
R = 1 se a busca é confiável, 0 caso contrário
|
||||||
|
C = menor custo observado entre respostas confiáveis da intenção / custo do ID
|
||||||
|
L = menor latência entre respostas confiáveis da intenção / latência do ID
|
||||||
|
|
||||||
|
Se R = 0: C = 0 e L = 0
|
||||||
|
Nota por intenção = 100 × (0,50 × C + 0,30 × R + 0,20 × L)
|
||||||
|
Nota por tema = média das três intenções
|
||||||
|
Nota do ID = soma de 25% × nota de cada tema
|
||||||
|
```
|
||||||
|
|
||||||
|
Uma busca confiável, para este teste, exige HTTP 200, custo conhecido, busca `search completed` com fontes e citações, texto final não vazio e ausência de sinal de truncamento. Isso é **confiabilidade operacional**, não uma nota de veracidade factual. Uma resposta curta e barata que falha nesses critérios não recebe vantagem de custo ou tempo.
|
||||||
|
|
||||||
|
Corte: **nota >= 70/100**, **12 custos conhecidos** e **pelo menos 11 buscas confiáveis em 12 chamadas**. A nota é relativa aos sete IDs e a esta amostra; 70 não é um padrão universal de qualidade. Não serão forçados dois aprovados caso os critérios não sejam atendidos.
|
||||||
|
|
||||||
|
## Aliases e duas vagas
|
||||||
|
|
||||||
|
Os resultados dos sete IDs são apresentados individualmente. Para as vagas, agrupar os dois nomes non-reasoning de 4.20 e os dois nomes reasoning de 4.20 conforme a versão apontada pela documentação. A nota de cada configuração é a média das notas de seus IDs; cada ID do grupo precisa cumprir os gates de custo e confiabilidade. O corte de 70 aplica-se à nota agrupada. Classificar as configurações aprovadas por nota e indicar as duas primeiras.
|
||||||
|
|
||||||
|
Assim, aliases da mesma versão não ocupam duas vagas, e não se escolhe a execução de alias que teve a nota mais conveniente. Os grupos com dois IDs têm 24 chamadas registradas, contra 12 dos demais; essa repetição é informada e não equivale a 24 intenções diferentes. As 12 intenções têm o mesmo peso em todos os grupos.
|
||||||
|
|
||||||
|
Desempate: menor custo médio por interação, menor mediana de latência, nome da configuração em ordem alfabética.
|
||||||
|
|
||||||
|
## Variabilidade e conclusão
|
||||||
|
|
||||||
|
Bootstrap estratificado e pareado de 2000 reamostragens, seed 20261015: sortear três casos com reposição dentro de cada tema e usar os mesmos índices em todos os modelos. Os gates de elegibilidade permanecem os da amostra original. Informar a faixa descritiva de 95% das notas e frequência nas duas primeiras vagas. Isso descreve sensibilidade à escolha dos casos; não é intervalo populacional, não mede a variação entre repetições da mesma pergunta e não corrige retrospectivamente o viés da seleção original.
|
||||||
|
|
||||||
|
Se os candidatos indicados diferirem dos dois originais, registrar a divergência e recomendar o mesmo lote completo para os novos candidatos. Este pré-teste não autoriza inferir como esses candidatos responderiam às 100 intenções; uma nova execução ampliada seria uma etapa distinta.
|
||||||
|
|
||||||
|
## Contabilidade e reprodução
|
||||||
|
|
||||||
|
Preços em [oracle-prices.json](oracle-prices.json), com SKUs de todas as famílias testadas. Cálculo por uso medido a preço de lista, incluindo US$ 5/1000 chamadas de websearch; cache e raciocínio não são contados duas vezes. Não é fatura conciliada, e impostos, descontos ou infraestrutura ficam fora.
|
||||||
|
|
||||||
|
Os novos gastos são controlados junto ao histórico do experimento, respeitando o limite acumulado autorizado. Orçamento é parâmetro operacional, não parte da nota. Respostas brutas e registros de autorização permanecem locais e fora do Git.
|
||||||
|
|
||||||
|
Na raiz do repositório:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python benchmarks/screening/run_screening.py
|
||||||
|
# Após carregar .env e conferir o limite acumulado autorizado:
|
||||||
|
python benchmarks/screening/run_screening.py --execute --budget-total-usd LIMITE --intent-limit 1
|
||||||
|
# Retomar sem repetir o piloto:
|
||||||
|
python benchmarks/screening/run_screening.py --execute --budget-total-usd LIMITE
|
||||||
|
```
|
||||||
85
benchmarks/screening/README.md
Normal file
85
benchmarks/screening/README.md
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
# Auditoria retrospectiva da seleção Grok via OCI
|
||||||
|
|
||||||
|
## Sumário executivo
|
||||||
|
|
||||||
|
**Resultado do corte: Grok 4.3 e Grok 4.20 non-reasoning.** A amostra confirma os dois candidatos originais segundo a regra operacional congelada. A seleção anterior foi uma hipótese heurística; o lote de 100 intenções antecedeu esta auditoria e não passa a ser prospectivo por causa dela.
|
||||||
|
|
||||||
|
Foram avaliadas **12 novas respostas por identificador**, com as mesmas perguntas e três casos de cada tema: culinária, esportes, clima e entretenimento. As 84 respostas exigiram 91 tentativas HTTP: 7 rejeições de quota compartilhada foram recuperadas uma vez, com preservação das evidências. O custo dessas rejeições sem `usage` permanece desconhecido.
|
||||||
|
|
||||||
|
**Custo conhecido desta etapa: US$ 9,458169**, com tokens e websearch incluídos. **Acumulado conhecido do projeto: US$ 20,963443 em 294 respostas**, frente ao teto autorizado de US$ 50. Valores calculados a preço de lista Oracle; não são conciliação de fatura.
|
||||||
|
|
||||||
|
## Critérios de corte
|
||||||
|
|
||||||
|
Os critérios foram congelados antes das novas inferências: **50% eficiência de custo total, 30% confiabilidade operacional da busca e 20% eficiência de latência**. Cada tema pesa 25%, com três casos igualmente ponderados. Para cada pergunta, eficiência é a razão entre o melhor custo/tempo confiável e o custo/tempo do identificador. Falhas operacionais recebem zero em todos os componentes.
|
||||||
|
|
||||||
|
O corte é **70/100**, com **12 custos conhecidos e ao menos 11 buscas confiáveis por ID**. Busca confiável exige HTTP 200, busca concluída com fontes e citações, texto final e ausência de truncamento; **não mede correção factual**. Os sete IDs foram testados, mas representam cinco configurações: aliases com e sem `0309` têm suas notas promediadas e não ocupam duas vagas.
|
||||||
|
|
||||||
|
## Resultado dos sete identificadores
|
||||||
|
|
||||||
|
| ID OCI | Nota /100 | Busca confiável | Passa corte | Tokens/interação | Buscas/interação | USD/interação | Mediana s |
|
||||||
|
|---|---|---|---|---|---|---|---|
|
||||||
|
| `xai.grok-4.3` | 97,15 | 12/12 | sim | 22.087,92 | 3,25 | 0,042403 | 11,37 |
|
||||||
|
| `xai.grok-4.20-0309-non-reasoning` | 74,01 | 12/12 | sim | 49.058,42 | 6,75 | 0,072876 | 12,64 |
|
||||||
|
| `xai.grok-4.20-non-reasoning` | 72,76 | 12/12 | sim | 50.843,83 | 6,58 | 0,075544 | 12,38 |
|
||||||
|
| `xai.grok-4.20-reasoning` | 72,24 | 12/12 | sim | 37.148,58 | 4,67 | 0,060809 | 29,15 |
|
||||||
|
| `xai.grok-4.20-0309-reasoning` | 67,93 | 12/12 | não | 43.295,25 | 5,00 | 0,066099 | 33,05 |
|
||||||
|
| `xai.grok-4.6` | 45,51 | 12/12 | não | 84.555,58 | 8,00 | 0,167256 | 65,83 |
|
||||||
|
| `xai.grok-4.7` | 43,34 | 12/12 | não | 154.035,50 | 10,58 | 0,303195 | 50,16 |
|
||||||
|
|
||||||
|
## Seleção por configuração
|
||||||
|
|
||||||
|
| Configuração | Nota /100 | Passa corte | Selecionada | Frequência top 2 no bootstrap |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| `grok-4.3` | 97,15 | sim | sim | 100,0% |
|
||||||
|
| `grok-4.20-non-reasoning` | 73,39 | sim | sim | 99,8% |
|
||||||
|
| `grok-4.20-reasoning` | 70,08 | sim | não | 0,0% |
|
||||||
|
| `grok-4.6` | 45,51 | não | não | 0,0% |
|
||||||
|
| `grok-4.7` | 43,34 | não | não | 0,0% |
|
||||||
|
|
||||||
|
A configuração 4.20 reasoning também superou o corte agrupado (70,08), mas ficou em terceiro. Seu custo médio agrupado foi menor que o do non-reasoning, porém a maior latência reduziu sua nota com os pesos definidos. O corte de 70 é aplicado à média da configuração; cada alias precisa atender aos gates de custo conhecido e confiabilidade, não a um corte individual adicional.
|
||||||
|
|
||||||
|
A frequência no bootstrap descreve a sensibilidade a 2.000 reamostragens pareadas dos casos, estratificadas por tema. Não é probabilidade de superioridade nem intervalo de confiança populacional. Os grupos com aliases têm duas execuções de cada pergunta; continuam tendo somente 12 intenções distintas.
|
||||||
|
|
||||||
|
## Consumo e resultado financeiro
|
||||||
|
|
||||||
|
| Indicador | Total nas 84 respostas | Média/interação |
|
||||||
|
|---|---|---|
|
||||||
|
| Tokens de entrada, cache incluído | 5.097.015 | 60.678,75 |
|
||||||
|
| Tokens de cache, subconjunto da entrada | 2.469.760 | 29.401,90 |
|
||||||
|
| Tokens de saída, raciocínio incluído | 195.286 | 2.324,83 |
|
||||||
|
| Tokens de raciocínio, subconjunto da saída | 132.001 | 1.571,44 |
|
||||||
|
| **Total de tokens: entrada + saída** | **5.292.301** | **63.003,58** |
|
||||||
|
| Chamadas tarifadas de websearch | 538 | 6,40 |
|
||||||
|
|
||||||
|
| Componente | Total USD | USD/interação |
|
||||||
|
|---|---|---|
|
||||||
|
| Entrada sem cache | 4,575965 | 0,054476 |
|
||||||
|
| Entrada em cache | 1,239002 | 0,014750 |
|
||||||
|
| Saída | 0,953202 | 0,011348 |
|
||||||
|
| Websearch | 2,690000 | 0,032024 |
|
||||||
|
| Total | 9,458169 | 0,112597 |
|
||||||
|
|
||||||
|
Preços e SKUs estão em [oracle-prices.json](oracle-prices.json), incluindo as faixas curta e longa. Websearch custa US$ 5 por 1.000 chamadas. Cache e raciocínio não são somados novamente aos tokens totais. O acumulado de todas as etapas e sete IDs consta no [consolidado de 294 respostas](financial-consolidation.json); o [baseline anterior de 210](../financial-consolidation.json) foi preservado.
|
||||||
|
|
||||||
|
## Metodologia, exceções e limites
|
||||||
|
|
||||||
|
- Amostra determinística por hash dos prompts, sem usar métricas financeiras na função de seleção. Os 12 casos saem do dataset anterior de 100; não são holdout. Os dois candidatos originais já haviam recebido essas perguntas.
|
||||||
|
- Mesmo payload por pergunta, alterando somente o modelo; OCI Chicago Responses, ferramenta nativa `web_search`, sem API de inferência direta xAI. Ordem rotacionada e concorrência 2.
|
||||||
|
- Critérios, prompts e preços registrados antes das chamadas no [protocolo](PROTOCOLO.md) e no manifesto publicado no resumo. O piloto integra as 84 respostas.
|
||||||
|
- A aplicação do preço longo foi conciliada contra o contador monetário nativo, com correspondência única ao cálculo por SKUs Oracle; ver [adendo contábil](ADENDO-CONTABILIDADE.md). Nenhuma resposta cara foi descartada ou repetida.
|
||||||
|
- Sete HTTP 429 foram rejeições de quota compartilhada. A recuperação única e a inclusão de pausas entre grupos estão no [adendo operacional](ADENDO-TAXA.md). O tempo da pausa não integra a latência da requisição; a mudança de ritmo limita a comparação.
|
||||||
|
- `max_output_tokens=2400` é um parâmetro comum; o uso agregado de saída do ciclo de ferramentas superou esse valor em algumas respostas. A cobrança usa o `usage` integral.
|
||||||
|
- O estado de cache não foi controlado. Há uma [sensibilidade contábil sem desconto de cache](SENSIBILIDADES.md), exploratória e posterior ao início da coleta, sem alterar a seleção primária nem simular uma execução física sem cache.
|
||||||
|
|
||||||
|
Nesse cenário secundário, apenas `grok-4.3` supera o corte. A segunda vaga depende do desconto de cache observado e não se mantém nessa hipótese contábil; isso restringe a robustez da confirmação da dupla.
|
||||||
|
|
||||||
|
## Conclusão e implicação
|
||||||
|
|
||||||
|
A amostra confirma os dois candidatos originais segundo a regra operacional congelada. A auditoria dá suporte operacional à dupla, sob estes pesos e nesta amostra. A economia de 43,38% do Grok 4.3 no lote anterior continua válida apenas contra Grok 4.20 non-reasoning. Não se pode extrapolar o desempenho dos demais modelos para 100 intenções nem afirmar qualidade factual equivalente.
|
||||||
|
|
||||||
|
## Evidências e reprodução
|
||||||
|
|
||||||
|
- [Relatório detalhado](results/screening-2026-10-15-v1/REPORT.md), [resumo estruturado](results/screening-2026-10-15-v1/summary.json), [CSV das 84 respostas](results/screening-2026-10-15-v1/interactions.csv) e [hashes](results/screening-2026-10-15-v1/sha256.json).
|
||||||
|
- [12 prompts](intents-12.json), [regras congeladas](scoring-rules.json), [baseline do estudo](study.json), [preços](oracle-prices.json) e [consolidado financeiro](financial-consolidation.json).
|
||||||
|
|
||||||
|
Na raiz do projeto, a validação sem inferência é `python benchmarks/screening/run_screening.py`. Os relatórios são regenerados a partir dos registros privados locais com `python benchmarks/screening/report_screening.py` e `python benchmarks/screening/consolidate_financial.py`. Execução paga exige flags explícitas e orçamento; credenciais, respostas brutas e ledger operacional não são publicados.
|
||||||
15
benchmarks/screening/SENSIBILIDADES.md
Normal file
15
benchmarks/screening/SENSIBILIDADES.md
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# Sensibilidade complementar — cache
|
||||||
|
|
||||||
|
A nota de corte principal permanece a definida em `scoring-rules.json`, congelada antes das novas chamadas. Esta análise secundária não altera a seleção principal.
|
||||||
|
|
||||||
|
Como a amostra é retirada de um conjunto já usado pelos dois candidatos originais, ela não é holdout. O estado de cache da API gerenciada não foi controlado. Por isso será calculado também um cenário contábil sem desconto de cache:
|
||||||
|
|
||||||
|
```text
|
||||||
|
custo hipotético = input_tokens × tarifa de entrada sem cache / 1.000.000
|
||||||
|
+ output_tokens × tarifa de saída / 1.000.000
|
||||||
|
+ web_search_calls × tarifa de busca / 1.000
|
||||||
|
```
|
||||||
|
|
||||||
|
Reaplicar a mesma regra de pontuação aos mesmos 84 registros, mudando apenas essa precificação hipotética da entrada. As latências e os tokens continuam sendo os observados, e não há nova inferência. Isso testa sensibilidade ao desconto financeiro de cache; não simula uma execução fisicamente sem cache nem remove seus efeitos sobre tempo de resposta.
|
||||||
|
|
||||||
|
A análise foi especificada durante a coleta e será identificada como secundária e exploratória. A classificação primária usa o custo efetivamente calculado do uso medido a preço de lista, com cache.
|
||||||
50
benchmarks/screening/consolidate_financial.py
Normal file
50
benchmarks/screening/consolidate_financial.py
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
"""Consolidar histórico original + auditoria, sem inferência e sem dupla contagem."""
|
||||||
|
from pathlib import Path
|
||||||
|
from decimal import Decimal
|
||||||
|
import hashlib
|
||||||
|
import json
|
||||||
|
|
||||||
|
ROOT=Path(__file__).resolve().parent
|
||||||
|
D=lambda value:Decimal(str(value))
|
||||||
|
INTS=['interactions','input_tokens','cached_input_tokens','output_tokens','reasoning_tokens','total_tokens','web_search_calls']
|
||||||
|
MONEY=['input_usd','cached_input_usd','output_usd','web_search_usd','total_usd']
|
||||||
|
|
||||||
|
def aggregate(values):
|
||||||
|
row={key:int(sum(D(v[key]) for v in values)) for key in INTS}
|
||||||
|
row.update({key:str(sum(D(v[key]) for v in values)) for key in MONEY})
|
||||||
|
row['mean_usd']=str(D(row['total_usd'])/row['interactions'])
|
||||||
|
return row
|
||||||
|
|
||||||
|
def main():
|
||||||
|
baseline_path=ROOT.parent/'financial-consolidation.json'
|
||||||
|
baseline=json.loads(baseline_path.read_text());study=json.loads((ROOT/'study.json').read_text())
|
||||||
|
assert baseline['total']['interactions']==210
|
||||||
|
assert hashlib.sha256(baseline_path.read_bytes()).hexdigest()==study['baseline_financial_sha256']
|
||||||
|
source=ROOT/'results/screening-2026-10-15-v1';rows=json.loads((source/'measured-usage.json').read_text())
|
||||||
|
assert len(rows)==84 and len({(r['model'],r['intent_id']) for r in rows})==84
|
||||||
|
records=[]
|
||||||
|
for row in rows:
|
||||||
|
c=row['cost'];assert c.get('total_usd') is not None
|
||||||
|
record={'model':row['model'],'interactions':1,'total_tokens':c['input_tokens']+c['output_tokens'],
|
||||||
|
**{key:c[key] for key in INTS if key not in ['interactions','total_tokens']},
|
||||||
|
**{key:c[key] for key in MONEY}}
|
||||||
|
assert D(c['total_usd'])==sum(D(c[key]) for key in MONEY if key!='total_usd')
|
||||||
|
records.append(record)
|
||||||
|
summary=json.loads((source/'summary.json').read_text())
|
||||||
|
stage=aggregate(records)
|
||||||
|
total=aggregate([baseline['total'],stage])
|
||||||
|
by_model={model:aggregate([previous]+[r for r in records if r['model']==model]) for model,previous in baseline['by_model'].items()}
|
||||||
|
assert total['interactions']==294
|
||||||
|
for key in INTS+MONEY:assert sum(D(row[key]) for row in by_model.values())==D(total[key])
|
||||||
|
report={'scope':'294 interações com custo conhecido: histórico original de 210 + auditoria retrospectiva de 84. As etapas são diferentes e não formam uma amostra única para ranking.',
|
||||||
|
'valuation_date':'2026-10-15','currency':'USD','pricing_basis':'Uso medido a preços de lista Oracle; não é fatura conciliada. Faixas de contexto longo resolvidas conforme adendo.',
|
||||||
|
'sources':{'baseline':'../financial-consolidation.json','screening':'results/screening-2026-10-15-v1/measured-usage.json','pricing':'oracle-prices.json','accounting_addendum':'ADENDO-CONTABILIDADE.md'},
|
||||||
|
'source_sha256':{'baseline':hashlib.sha256(baseline_path.read_bytes()).hexdigest(),'screening':hashlib.sha256((source/'measured-usage.json').read_bytes()).hexdigest()},
|
||||||
|
'screening_http_attempts':summary['http_attempts'],
|
||||||
|
'screening_infrastructure_rejections_without_usage':summary['unknown_cost_infrastructure_attempts'],
|
||||||
|
'unknown_cost_note':'Rejeições sem usage não foram valoradas como zero; estão fora do total conhecido.',
|
||||||
|
'total':total,'by_stage':{**baseline['by_stage'],'retrospective_screening':stage},'by_model':by_model}
|
||||||
|
(ROOT/'financial-consolidation.json').write_text(json.dumps(report,ensure_ascii=False,indent=2)+'\n')
|
||||||
|
print('Chamadas:',total['interactions'],'Custo acumulado USD:',total['total_usd'])
|
||||||
|
|
||||||
|
if __name__=='__main__':main()
|
||||||
203
benchmarks/screening/financial-consolidation.json
Normal file
203
benchmarks/screening/financial-consolidation.json
Normal file
@@ -0,0 +1,203 @@
|
|||||||
|
{
|
||||||
|
"scope": "294 interações com custo conhecido: histórico original de 210 + auditoria retrospectiva de 84. As etapas são diferentes e não formam uma amostra única para ranking.",
|
||||||
|
"valuation_date": "2026-10-15",
|
||||||
|
"currency": "USD",
|
||||||
|
"pricing_basis": "Uso medido a preços de lista Oracle; não é fatura conciliada. Faixas de contexto longo resolvidas conforme adendo.",
|
||||||
|
"sources": {
|
||||||
|
"baseline": "../financial-consolidation.json",
|
||||||
|
"screening": "results/screening-2026-10-15-v1/measured-usage.json",
|
||||||
|
"pricing": "oracle-prices.json",
|
||||||
|
"accounting_addendum": "ADENDO-CONTABILIDADE.md"
|
||||||
|
},
|
||||||
|
"source_sha256": {
|
||||||
|
"baseline": "f21cc006fbdab19431617c3a277a2a9a7a97a98ba8e8e74dcb3ca5aaff05958f",
|
||||||
|
"screening": "5282c1859b63a1ae18b6162ec9b1c378f4971af8a431edfce16cc223907b18f8"
|
||||||
|
},
|
||||||
|
"screening_http_attempts": 91,
|
||||||
|
"screening_infrastructure_rejections_without_usage": 7,
|
||||||
|
"unknown_cost_note": "Rejeições sem usage não foram valoradas como zero; estão fora do total conhecido.",
|
||||||
|
"total": {
|
||||||
|
"interactions": 294,
|
||||||
|
"input_tokens": 12046625,
|
||||||
|
"cached_input_tokens": 4997248,
|
||||||
|
"output_tokens": 412483,
|
||||||
|
"reasoning_tokens": 208531,
|
||||||
|
"total_tokens": 12459108,
|
||||||
|
"web_search_calls": 1519,
|
||||||
|
"input_usd": "10.11902675",
|
||||||
|
"cached_input_usd": "1.7459200",
|
||||||
|
"output_usd": "1.5034960",
|
||||||
|
"web_search_usd": "7.595",
|
||||||
|
"total_usd": "20.96344275",
|
||||||
|
"mean_usd": "0.07130422704081632653061224490"
|
||||||
|
},
|
||||||
|
"by_stage": {
|
||||||
|
"poc_validation": {
|
||||||
|
"interactions": 3,
|
||||||
|
"input_tokens": 31481,
|
||||||
|
"cached_input_tokens": 12672,
|
||||||
|
"output_tokens": 3348,
|
||||||
|
"reasoning_tokens": 2370,
|
||||||
|
"total_tokens": 34829,
|
||||||
|
"web_search_calls": 9,
|
||||||
|
"input_usd": "0.02351125",
|
||||||
|
"cached_input_usd": "0.0025344",
|
||||||
|
"output_usd": "0.0083700",
|
||||||
|
"web_search_usd": "0.045",
|
||||||
|
"total_usd": "0.07941565",
|
||||||
|
"mean_usd": "0.02647188333333333333333333333"
|
||||||
|
},
|
||||||
|
"compatibility_matrix": {
|
||||||
|
"interactions": 7,
|
||||||
|
"input_tokens": 69948,
|
||||||
|
"cached_input_tokens": 9344,
|
||||||
|
"output_tokens": 6426,
|
||||||
|
"reasoning_tokens": 5158,
|
||||||
|
"total_tokens": 76374,
|
||||||
|
"web_search_calls": 13,
|
||||||
|
"input_usd": "0.0911645",
|
||||||
|
"cached_input_usd": "0.0032896",
|
||||||
|
"output_usd": "0.0233660",
|
||||||
|
"web_search_usd": "0.065",
|
||||||
|
"total_usd": "0.1828201",
|
||||||
|
"mean_usd": "0.02611715714285714285714285714"
|
||||||
|
},
|
||||||
|
"paired_benchmark": {
|
||||||
|
"interactions": 200,
|
||||||
|
"input_tokens": 6848181,
|
||||||
|
"cached_input_tokens": 2505472,
|
||||||
|
"output_tokens": 207423,
|
||||||
|
"reasoning_tokens": 69002,
|
||||||
|
"total_tokens": 7055604,
|
||||||
|
"web_search_calls": 959,
|
||||||
|
"input_usd": "5.42838625",
|
||||||
|
"cached_input_usd": "0.5010944",
|
||||||
|
"output_usd": "0.5185575",
|
||||||
|
"web_search_usd": "4.795",
|
||||||
|
"total_usd": "11.24303815",
|
||||||
|
"mean_usd": "0.05621519075"
|
||||||
|
},
|
||||||
|
"retrospective_screening": {
|
||||||
|
"interactions": 84,
|
||||||
|
"input_tokens": 5097015,
|
||||||
|
"cached_input_tokens": 2469760,
|
||||||
|
"output_tokens": 195286,
|
||||||
|
"reasoning_tokens": 132001,
|
||||||
|
"total_tokens": 5292301,
|
||||||
|
"web_search_calls": 538,
|
||||||
|
"input_usd": "4.57596475",
|
||||||
|
"cached_input_usd": "1.2390016",
|
||||||
|
"output_usd": "0.9532025",
|
||||||
|
"web_search_usd": "2.690",
|
||||||
|
"total_usd": "9.45816885",
|
||||||
|
"mean_usd": "0.1125972482142857142857142857"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"by_model": {
|
||||||
|
"xai.grok-4.20-0309-non-reasoning": {
|
||||||
|
"interactions": 13,
|
||||||
|
"input_tokens": 586469,
|
||||||
|
"cached_input_tokens": 269312,
|
||||||
|
"output_tokens": 12464,
|
||||||
|
"reasoning_tokens": 0,
|
||||||
|
"total_tokens": 598933,
|
||||||
|
"web_search_calls": 83,
|
||||||
|
"input_usd": "0.39644625",
|
||||||
|
"cached_input_usd": "0.0538624",
|
||||||
|
"output_usd": "0.0311600",
|
||||||
|
"web_search_usd": "0.415",
|
||||||
|
"total_usd": "0.89646865",
|
||||||
|
"mean_usd": "0.06895912692307692307692307692"
|
||||||
|
},
|
||||||
|
"xai.grok-4.20-0309-reasoning": {
|
||||||
|
"interactions": 13,
|
||||||
|
"input_tokens": 493766,
|
||||||
|
"cached_input_tokens": 188928,
|
||||||
|
"output_tokens": 34980,
|
||||||
|
"reasoning_tokens": 25922,
|
||||||
|
"total_tokens": 528746,
|
||||||
|
"web_search_calls": 61,
|
||||||
|
"input_usd": "0.38104750",
|
||||||
|
"cached_input_usd": "0.0377856",
|
||||||
|
"output_usd": "0.0874500",
|
||||||
|
"web_search_usd": "0.305",
|
||||||
|
"total_usd": "0.81128310",
|
||||||
|
"mean_usd": "0.06240639230769230769230769231"
|
||||||
|
},
|
||||||
|
"xai.grok-4.20-non-reasoning": {
|
||||||
|
"interactions": 113,
|
||||||
|
"input_tokens": 5425184,
|
||||||
|
"cached_input_tokens": 2451328,
|
||||||
|
"output_tokens": 104333,
|
||||||
|
"reasoning_tokens": 0,
|
||||||
|
"total_tokens": 5529517,
|
||||||
|
"web_search_calls": 728,
|
||||||
|
"input_usd": "3.71732000",
|
||||||
|
"cached_input_usd": "0.4902656",
|
||||||
|
"output_usd": "0.2608325",
|
||||||
|
"web_search_usd": "3.640",
|
||||||
|
"total_usd": "8.10841810",
|
||||||
|
"mean_usd": "0.07175591238938053097345132743"
|
||||||
|
},
|
||||||
|
"xai.grok-4.20-reasoning": {
|
||||||
|
"interactions": 13,
|
||||||
|
"input_tokens": 423457,
|
||||||
|
"cached_input_tokens": 139392,
|
||||||
|
"output_tokens": 31739,
|
||||||
|
"reasoning_tokens": 23469,
|
||||||
|
"total_tokens": 455196,
|
||||||
|
"web_search_calls": 58,
|
||||||
|
"input_usd": "0.35508125",
|
||||||
|
"cached_input_usd": "0.0278784",
|
||||||
|
"output_usd": "0.0793475",
|
||||||
|
"web_search_usd": "0.290",
|
||||||
|
"total_usd": "0.75230715",
|
||||||
|
"mean_usd": "0.05786978076923076923076923077"
|
||||||
|
},
|
||||||
|
"xai.grok-4.3": {
|
||||||
|
"interactions": 116,
|
||||||
|
"input_tokens": 2323819,
|
||||||
|
"cached_input_tokens": 354560,
|
||||||
|
"output_tokens": 132436,
|
||||||
|
"reasoning_tokens": 80151,
|
||||||
|
"total_tokens": 2456255,
|
||||||
|
"web_search_calls": 362,
|
||||||
|
"input_usd": "2.46157375",
|
||||||
|
"cached_input_usd": "0.0709120",
|
||||||
|
"output_usd": "0.3310900",
|
||||||
|
"web_search_usd": "1.810",
|
||||||
|
"total_usd": "4.67357575",
|
||||||
|
"mean_usd": "0.04028944612068965517241379310"
|
||||||
|
},
|
||||||
|
"xai.grok-4.6": {
|
||||||
|
"interactions": 13,
|
||||||
|
"input_tokens": 981041,
|
||||||
|
"cached_input_tokens": 449024,
|
||||||
|
"output_tokens": 43216,
|
||||||
|
"reasoning_tokens": 35777,
|
||||||
|
"total_tokens": 1024257,
|
||||||
|
"web_search_calls": 97,
|
||||||
|
"input_usd": "1.064034",
|
||||||
|
"cached_input_usd": "0.224512",
|
||||||
|
"output_usd": "0.259296",
|
||||||
|
"web_search_usd": "0.485",
|
||||||
|
"total_usd": "2.032842",
|
||||||
|
"mean_usd": "0.1563724615384615384615384615"
|
||||||
|
},
|
||||||
|
"xai.grok-4.7": {
|
||||||
|
"interactions": 13,
|
||||||
|
"input_tokens": 1812889,
|
||||||
|
"cached_input_tokens": 1144704,
|
||||||
|
"output_tokens": 53315,
|
||||||
|
"reasoning_tokens": 43212,
|
||||||
|
"total_tokens": 1866204,
|
||||||
|
"web_search_calls": 130,
|
||||||
|
"input_usd": "1.743524",
|
||||||
|
"cached_input_usd": "0.840704",
|
||||||
|
"output_usd": "0.454320",
|
||||||
|
"web_search_usd": "0.650",
|
||||||
|
"total_usd": "3.688548",
|
||||||
|
"mean_usd": "0.2837344615384615384615384615"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
94
benchmarks/screening/intents-12.json
Normal file
94
benchmarks/screening/intents-12.json
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
{
|
||||||
|
"reference_date": "2026-10-15",
|
||||||
|
"timezone": "America/Sao_Paulo",
|
||||||
|
"selection_rule": "SHA256(seed|category|id|prompt_sha256), três menores hashes por categoria; ordem alternada por tema",
|
||||||
|
"selection_seed": "grok-retrospective-screening-v1",
|
||||||
|
"source_dataset_sha256": "8a0853e741894e8dca737250845297eb75de60e0494b9aeb2f07fd2506d6acde",
|
||||||
|
"retrospective": true,
|
||||||
|
"intents": [
|
||||||
|
{
|
||||||
|
"id": "I006",
|
||||||
|
"category": "culinaria",
|
||||||
|
"intent": "festival gastronômico em andamento",
|
||||||
|
"prompt": "Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais festivais gastronômicos estão acontecendo nesta semana em São Paulo, com datas e participantes? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória.",
|
||||||
|
"prompt_sha256": "36d5d240061a327be7d16f82eb8c3405e02a255cd17ec92d91f8d62c5a2d1838"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "I047",
|
||||||
|
"category": "esportes",
|
||||||
|
"intent": "próximo card do UFC",
|
||||||
|
"prompt": "Data de referência: 2026-10-15; fuso America/Sao_Paulo. Qual é o próximo evento do UFC, quais lutas estão confirmadas e onde assistir no Brasil? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória.",
|
||||||
|
"prompt_sha256": "4bf73cf45fe62d1d17e484418e5c107f3bd191034403cd6748819cf732167c45"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "I075",
|
||||||
|
"category": "clima",
|
||||||
|
"intent": "comparação de previsões atuais",
|
||||||
|
"prompt": "Data de referência: 2026-10-15; fuso America/Sao_Paulo. Compare as previsões atuais do INMET e de outro serviço para a temperatura e chuva em Belo Horizonte amanhã; destaque divergências. Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória.",
|
||||||
|
"prompt_sha256": "8c4fda5910f4c2872bac055d0fa55a46bbea65f1343476b325c2766d063ee01c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "I100",
|
||||||
|
"category": "entretenimento",
|
||||||
|
"intent": "visitação e bilheteria de atração atual",
|
||||||
|
"prompt": "Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais são os horários de funcionamento e preços de ingresso atuais do Museu do Futebol em São Paulo e há aviso de fechamento nesta semana? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória.",
|
||||||
|
"prompt_sha256": "f36c95b21499a98c811a51af02247698803d7f387a10737c739ab40795277293"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "I017",
|
||||||
|
"category": "culinaria",
|
||||||
|
"intent": "concurso gastronômico recente",
|
||||||
|
"prompt": "Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quem venceu o concurso de melhor queijo no campeonato brasileiro mais recente? Informe o nome e a data do concurso. Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória.",
|
||||||
|
"prompt_sha256": "36c3c21fe52815081f09b828331c5c5577a32dc91a296eb0bf059fafd041ee9d"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "I027",
|
||||||
|
"category": "esportes",
|
||||||
|
"intent": "partidas da seleção feminina",
|
||||||
|
"prompt": "Data de referência: 2026-10-15; fuso America/Sao_Paulo. Qual é o próximo jogo confirmado da seleção brasileira feminina de futebol, com adversário, local e transmissão? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória.",
|
||||||
|
"prompt_sha256": "5042539efe0822fbcd47645e86e11a9f25dc7276be67ec89e302f99935b9d91f"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "I056",
|
||||||
|
"category": "clima",
|
||||||
|
"intent": "condição para trilha em data próxima",
|
||||||
|
"prompt": "Data de referência: 2026-10-15; fuso America/Sao_Paulo. Qual é a previsão atual para trilha em Campos do Jordão no próximo sábado de manhã, com chuva e temperatura? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória.",
|
||||||
|
"prompt_sha256": "e4745eff05345e016e8e3a962ab2ac7df60a25bbd98356af67733cc06854e26f"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "I099",
|
||||||
|
"category": "entretenimento",
|
||||||
|
"intent": "evento de cultura pop próximo",
|
||||||
|
"prompt": "Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais eventos de cultura pop ou quadrinhos estão confirmados no estado de São Paulo para os próximos 30 dias? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória.",
|
||||||
|
"prompt_sha256": "1cb9897fe374c88a1319dbabe4f530faf68a1dcb89bf80edfd1c0043aec60653"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "I004",
|
||||||
|
"category": "culinaria",
|
||||||
|
"intent": "brunch do próximo domingo",
|
||||||
|
"prompt": "Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais hotéis em São Paulo anunciam brunch para o próximo domingo, com preços e horários? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória.",
|
||||||
|
"prompt_sha256": "8496f2847c6920205e32ef7f297b0a76e1d94fba27e5b1200feb8003cdd9ad11"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "I039",
|
||||||
|
"category": "esportes",
|
||||||
|
"intent": "próxima etapa da Fórmula 1",
|
||||||
|
"prompt": "Data de referência: 2026-10-15; fuso America/Sao_Paulo. Qual é o próximo Grande Prêmio de Fórmula 1 e quais são os horários oficiais de treinos, classificação e corrida em Brasília? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória.",
|
||||||
|
"prompt_sha256": "dfae3c7a38e6bc2cb0be6fb392d474296acba3fb7aacf1b906d3643687ada978"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "I061",
|
||||||
|
"category": "clima",
|
||||||
|
"intent": "onda de calor vigente",
|
||||||
|
"prompt": "Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais estados brasileiros têm alertas oficiais vigentes de onda de calor e até quando? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória.",
|
||||||
|
"prompt_sha256": "b0e7eddb6280bfcdc0ce87ff6069583c40b176d01de9c59721c16e4a25ddaa12"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "I091",
|
||||||
|
"category": "entretenimento",
|
||||||
|
"intent": "lançamento recente de álbum",
|
||||||
|
"prompt": "Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais álbuns de artistas brasileiros foram lançados nos últimos sete dias? Informe artista, título e data. Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória.",
|
||||||
|
"prompt_sha256": "2c0f83d9cb7ae97778646aedc15e690380621be6f1c0816d45c4179628b747e2"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
120
benchmarks/screening/oracle-prices.json
Normal file
120
benchmarks/screening/oracle-prices.json
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
{
|
||||||
|
"retrieved_at": "2026-10-15T10:32:35.169069-03:00",
|
||||||
|
"price_list_url": "https://www.oracle.com/cloud/price-list/",
|
||||||
|
"data_url": "https://www.oracle.com/a/ocom/docs/pricing/cloud-price-list.json",
|
||||||
|
"data_sha256": "354aa11836c07e2c065700b0efd80253e8c12d9e643e55160fc1ccd9ea7235d9",
|
||||||
|
"currency": "USD",
|
||||||
|
"pricing": "standard; USD por 1 milhão de tokens; busca por 1000 chamadas",
|
||||||
|
"models": {
|
||||||
|
"grok-4.20": {
|
||||||
|
"input_short": {
|
||||||
|
"sku": "B111910",
|
||||||
|
"usd": 1.25
|
||||||
|
},
|
||||||
|
"cached_short": {
|
||||||
|
"sku": "B111911",
|
||||||
|
"usd": 0.2
|
||||||
|
},
|
||||||
|
"output_short": {
|
||||||
|
"sku": "B112076",
|
||||||
|
"usd": 2.5
|
||||||
|
},
|
||||||
|
"input_long": {
|
||||||
|
"sku": "B112077",
|
||||||
|
"usd": 2.5
|
||||||
|
},
|
||||||
|
"cached_long": {
|
||||||
|
"sku": "B112078",
|
||||||
|
"usd": 0.4
|
||||||
|
},
|
||||||
|
"output_long": {
|
||||||
|
"sku": "B112079",
|
||||||
|
"usd": 5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"grok-4.3": {
|
||||||
|
"input_short": {
|
||||||
|
"sku": "B112080",
|
||||||
|
"usd": 1.25
|
||||||
|
},
|
||||||
|
"cached_short": {
|
||||||
|
"sku": "B112081",
|
||||||
|
"usd": 0.2
|
||||||
|
},
|
||||||
|
"output_short": {
|
||||||
|
"sku": "B112082",
|
||||||
|
"usd": 2.5
|
||||||
|
},
|
||||||
|
"input_long": {
|
||||||
|
"sku": "B112083",
|
||||||
|
"usd": 2.5
|
||||||
|
},
|
||||||
|
"cached_long": {
|
||||||
|
"sku": "B112084",
|
||||||
|
"usd": 0.4
|
||||||
|
},
|
||||||
|
"output_long": {
|
||||||
|
"sku": "B112085",
|
||||||
|
"usd": 5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"grok-4.6": {
|
||||||
|
"input_short": {
|
||||||
|
"sku": "B112086",
|
||||||
|
"usd": 2
|
||||||
|
},
|
||||||
|
"cached_short": {
|
||||||
|
"sku": "B112087",
|
||||||
|
"usd": 0.5
|
||||||
|
},
|
||||||
|
"output_short": {
|
||||||
|
"sku": "B112589",
|
||||||
|
"usd": 6
|
||||||
|
},
|
||||||
|
"input_long": {
|
||||||
|
"sku": "B112590",
|
||||||
|
"usd": 4
|
||||||
|
},
|
||||||
|
"cached_long": {
|
||||||
|
"sku": "B112591",
|
||||||
|
"usd": 1
|
||||||
|
},
|
||||||
|
"output_long": {
|
||||||
|
"sku": "B112592",
|
||||||
|
"usd": 12
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"grok-4.7": {
|
||||||
|
"input_short": {
|
||||||
|
"sku": "B113303",
|
||||||
|
"usd": 2
|
||||||
|
},
|
||||||
|
"cached_short": {
|
||||||
|
"sku": "B113304",
|
||||||
|
"usd": 0.5
|
||||||
|
},
|
||||||
|
"output_short": {
|
||||||
|
"sku": "B113305",
|
||||||
|
"usd": 6
|
||||||
|
},
|
||||||
|
"input_long": {
|
||||||
|
"sku": "B113306",
|
||||||
|
"usd": 4
|
||||||
|
},
|
||||||
|
"cached_long": {
|
||||||
|
"sku": "B113307",
|
||||||
|
"usd": 1
|
||||||
|
},
|
||||||
|
"output_long": {
|
||||||
|
"sku": "B113308",
|
||||||
|
"usd": 12
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"web_search": {
|
||||||
|
"sku": "B112610",
|
||||||
|
"usd_per_1000": 5
|
||||||
|
},
|
||||||
|
"screening_checked_at": "2026-10-15T14:45:08.802114+00:00",
|
||||||
|
"screening_feed_sha256": "354aa11836c07e2c065700b0efd80253e8c12d9e643e55160fc1ccd9ea7235d9"
|
||||||
|
}
|
||||||
180
benchmarks/screening/report_screening.py
Normal file
180
benchmarks/screening/report_screening.py
Normal file
@@ -0,0 +1,180 @@
|
|||||||
|
"""Pontuação congelada e relatório retrospectivo, sem inferência adicional."""
|
||||||
|
import argparse
|
||||||
|
from collections import Counter
|
||||||
|
from decimal import Decimal
|
||||||
|
import csv
|
||||||
|
import copy
|
||||||
|
import hashlib
|
||||||
|
import json
|
||||||
|
import math
|
||||||
|
from pathlib import Path
|
||||||
|
import random
|
||||||
|
import statistics
|
||||||
|
import sys
|
||||||
|
|
||||||
|
ROOT=Path(__file__).resolve().parent
|
||||||
|
sys.path.insert(0,str(ROOT))
|
||||||
|
from run_screening import MODELS, read_results
|
||||||
|
D=lambda value:Decimal(str(value))
|
||||||
|
|
||||||
|
def config(model):return model.removeprefix('xai.').replace('-0309','')
|
||||||
|
|
||||||
|
def metrics(rows):
|
||||||
|
known=[r for r in rows if r.get('cost',{}).get('total_usd') is not None]
|
||||||
|
n=len(rows)
|
||||||
|
def total(key):return sum((D(r['cost'][key]) for r in known if r['cost'].get(key) is not None),D(0))
|
||||||
|
return {'interactions':n,'known_costs':len(known),'reliable_searches':sum(r.get('reliable_search',False) for r in rows),
|
||||||
|
'total_usd':str(total('total_usd')),'mean_usd':str(total('total_usd')/n) if n and len(known)==n else None,
|
||||||
|
**{k:str(total(k)) for k in ['input_usd','cached_input_usd','output_usd','web_search_usd']},
|
||||||
|
**{k:int(total(k)) for k in ['input_tokens','cached_input_tokens','output_tokens','reasoning_tokens','web_search_calls']},
|
||||||
|
'mean_total_tokens':str((total('input_tokens')+total('output_tokens'))/n) if n else None,
|
||||||
|
'median_seconds':statistics.median(r['seconds'] for r in rows) if n else None}
|
||||||
|
|
||||||
|
def score(rows,dataset,rules):
|
||||||
|
index={(r['model'],r['intent_id']):r for r in rows}
|
||||||
|
assert len(index)==len(rows)==84
|
||||||
|
per_model={}
|
||||||
|
for intent in dataset['intents']:
|
||||||
|
group=[index[(model,intent['id'])] for model in MODELS]
|
||||||
|
reliable=[r for r in group if r['reliable_search']]
|
||||||
|
best_cost=min((D(r['cost']['total_usd']) for r in reliable),default=None)
|
||||||
|
best_time=min((D(r['seconds']) for r in reliable),default=None)
|
||||||
|
assert len({r['shared_payload_sha256'] for r in group})==1
|
||||||
|
for row in group:
|
||||||
|
ok=row['reliable_search']
|
||||||
|
amount=D(row['cost']['total_usd']) if row['cost'].get('total_usd') is not None else None
|
||||||
|
cost=(D(1) if amount==0 else best_cost/amount) if ok else D(0)
|
||||||
|
latency=(D(1) if D(row['seconds'])==0 else best_time/D(row['seconds'])) if ok else D(0)
|
||||||
|
rel=D(1) if ok else D(0)
|
||||||
|
w=rules['weights']
|
||||||
|
row['score_components']={'cost':float(cost*100),'search_reliability':float(rel*100),'latency':float(latency*100)}
|
||||||
|
row['operational_score']=float(100*(D(w['cost'])*cost+D(w['search_reliability'])*rel+D(w['latency'])*latency))
|
||||||
|
for model in MODELS:
|
||||||
|
selected=[r for r in rows if r['model']==model]
|
||||||
|
by_category={c:statistics.mean(r['operational_score'] for r in selected if r['category']==c)
|
||||||
|
for c in ['culinaria','esportes','clima','entretenimento']}
|
||||||
|
value=sum(by_category.values())*rules['category_weight']
|
||||||
|
stat=metrics(selected)
|
||||||
|
gate=stat['known_costs']==rules['required_known_costs'] and stat['reliable_searches']>=rules['minimum_confirmed_searches']
|
||||||
|
per_model[model]={'model':model,'configuration':config(model),'score':value,'by_category':by_category,
|
||||||
|
'operational_gate_passed':gate,'passed':gate and value>=rules['cutoff_score'],**stat}
|
||||||
|
groups={}
|
||||||
|
for name in dict.fromkeys(config(m) for m in MODELS):
|
||||||
|
members=[m for m in MODELS if config(m)==name]
|
||||||
|
stat=metrics([r for r in rows if r['model'] in members])
|
||||||
|
value=statistics.mean(per_model[m]['score'] for m in members)
|
||||||
|
gate=all(per_model[m]['operational_gate_passed'] for m in members)
|
||||||
|
groups[name]={'configuration':name,'members':members,'score':value,
|
||||||
|
'operational_gate_passed':gate,'passed':gate and value>=rules['cutoff_score'],**stat}
|
||||||
|
sortkey=lambda g:(-g['score'],D(g['mean_usd']) if g['mean_usd'] is not None else D('Infinity'),g['median_seconds'],g['configuration'])
|
||||||
|
ranked=sorted(groups.values(),key=sortkey)
|
||||||
|
selected=[g['configuration'] for g in ranked if g['passed']][:2]
|
||||||
|
# Reamostrar casos iguais em todos os IDs, mantendo os estratos de três por tema.
|
||||||
|
rng=random.Random(20261015);scores={m:[] for m in MODELS};group_scores={g:[] for g in groups};top=Counter()
|
||||||
|
strata=[[i['id'] for i in dataset['intents'] if i['category']==c] for c in ['culinaria','esportes','clima','entretenimento']]
|
||||||
|
for _ in range(2000):
|
||||||
|
sample=[rng.choice(stratum) for stratum in strata for _ in range(3)]
|
||||||
|
idscore={m:statistics.mean(index[(m,key)]['operational_score'] for key in sample) for m in MODELS}
|
||||||
|
for m in MODELS:scores[m].append(idscore[m])
|
||||||
|
candidates=[]
|
||||||
|
for name,g in groups.items():
|
||||||
|
value=statistics.mean(idscore[m] for m in g['members']);group_scores[name].append(value)
|
||||||
|
if g['operational_gate_passed'] and value>=rules['cutoff_score']:
|
||||||
|
sampled=[index[(m,key)] for m in g['members'] for key in sample]
|
||||||
|
amounts=[D(r['cost']['total_usd']) for r in sampled]
|
||||||
|
candidates.append((-value,sum(amounts)/len(amounts),statistics.median(r['seconds'] for r in sampled),name))
|
||||||
|
for candidate in sorted(candidates)[:2]:top[candidate[-1]]+=1
|
||||||
|
def interval(values):
|
||||||
|
a=sorted(values);return [a[math.floor(.025*len(a))],a[math.ceil(.975*len(a))-1]]
|
||||||
|
for m in MODELS:per_model[m]['case_bootstrap_95_range']=interval(scores[m])
|
||||||
|
for name,g in groups.items():
|
||||||
|
g['case_bootstrap_95_range']=interval(group_scores[name]);g['bootstrap_top2_frequency']=top[name]/2000
|
||||||
|
return per_model,ranked,selected
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser=argparse.ArgumentParser();parser.add_argument('--run-id',default='screening-2026-10-15-v1');args=parser.parse_args()
|
||||||
|
assert all(c.isalnum() or c in '-_' for c in args.run_id)
|
||||||
|
source=ROOT.parent/'runs'/args.run_id
|
||||||
|
manifest=json.loads((source/'manifest.json').read_text());events=[json.loads(l) for l in (source/'events.jsonl').read_text().splitlines()]
|
||||||
|
rows=read_results(events);dataset=json.loads((ROOT/'intents-12.json').read_text());rules=json.loads((ROOT/'scoring-rules.json').read_text())
|
||||||
|
assert len({(r['model'],r['intent_id']) for r in rows})==len(rows)
|
||||||
|
print(f'{len(rows)}/84 chamadas coletadas')
|
||||||
|
if len(rows)!=84:print('Pontuação final não calculada para uma matriz incompleta.');return
|
||||||
|
assert hashlib.sha256((ROOT/'PROTOCOLO.md').read_bytes()).hexdigest()==manifest['protocol_sha256']
|
||||||
|
models,groups,selected=score(rows,dataset,rules)
|
||||||
|
prices=json.loads((ROOT/'oracle-prices.json').read_text())
|
||||||
|
no_cache=copy.deepcopy(rows)
|
||||||
|
for row in no_cache:
|
||||||
|
family='grok-4.20' if row['model'].startswith('xai.grok-4.20-') else row['model'].removeprefix('xai.')
|
||||||
|
rate=prices['models'][family]['input_'+row['cost'].get('pricing_band','short')]['usd']
|
||||||
|
c=row['cost']
|
||||||
|
c['input_usd']=str(D(c['input_tokens'])*D(rate)/D(1000000))
|
||||||
|
c['cached_input_usd']='0'
|
||||||
|
c['total_usd']=str(sum(D(c[k]) for k in ['input_usd','cached_input_usd','output_usd','web_search_usd']))
|
||||||
|
_,no_cache_groups,no_cache_selected=score(no_cache,dataset,rules)
|
||||||
|
original={'grok-4.3','grok-4.20-non-reasoning'}
|
||||||
|
confirmed=set(selected)==original and len(selected)==2
|
||||||
|
report={'retrospective':True,'run_id':args.run_id,'reference_date':dataset['reference_date'],
|
||||||
|
'method':'12 prompts idênticos x sete IDs; três por tema; critérios congelados antes das novas inferências; recuperações de rejeições compartilhadas de infraestrutura documentadas à parte',
|
||||||
|
'http_attempts':sum(e['event']=='started' for e in events),
|
||||||
|
'infrastructure_rejections':sum(e['event']=='infrastructure_rejected' for e in events),
|
||||||
|
'unknown_cost_infrastructure_attempts':sum(e['event']=='infrastructure_rejected' for e in events),
|
||||||
|
'manifest':manifest,'rules':rules,'total':metrics(rows),'by_model':models,'configurations':groups,
|
||||||
|
'selected_configurations':selected,'original_selection_confirmed':confirmed,
|
||||||
|
'cache_discount_sensitivity':{'secondary':True,'method':'Mesmos tokens e latências observados; entrada em cache reprecificada como entrada normal, sem novas chamadas. Não simula execução fisicamente sem cache.','selected_configurations':no_cache_selected,'configurations':no_cache_groups},
|
||||||
|
'original_selection':['grok-4.3','grok-4.20-non-reasoning'],
|
||||||
|
'conclusion':'A amostra confirma os dois candidatos originais segundo a regra operacional congelada.' if confirmed else 'A amostra não confirma os dois candidatos originais como as duas primeiras configurações segundo a regra congelada.',
|
||||||
|
'limits':'Nota operacional relativa, sem pontuação factual. Auditoria retrospectiva; 12 casos não permitem inferir o resultado de 100 intenções nos demais modelos.'}
|
||||||
|
target=ROOT/'results'/args.run_id;target.mkdir(parents=True,exist_ok=True)
|
||||||
|
(target/'summary.json').write_text(json.dumps(report,ensure_ascii=False,indent=2)+'\n')
|
||||||
|
public=[{k:v for k,v in r.items() if k!='provider_response_id'} for r in rows]
|
||||||
|
(target/'measured-usage.json').write_text(json.dumps(public,ensure_ascii=False,indent=2)+'\n')
|
||||||
|
prompts={r['id']:r['prompt'] for r in dataset['intents']}
|
||||||
|
fields=['intent_id','category','model','http','reliable_search','truncated','final_answer_chars','seconds','input_tokens','cached_input_tokens','output_tokens','reasoning_tokens','web_search_calls','input_usd','cached_input_usd','output_usd','web_search_usd','total_usd','cost_score','search_score','latency_score','operational_score','prompt_sha256','shared_payload_sha256','prompt']
|
||||||
|
with (target/'interactions.csv').open('w') as handle:
|
||||||
|
writer=csv.DictWriter(handle,fieldnames=fields,lineterminator='\n');writer.writeheader()
|
||||||
|
for row in rows:
|
||||||
|
flat={**row,**row['cost'],'cost_score':row['score_components']['cost'],
|
||||||
|
'search_score':row['score_components']['search_reliability'],'latency_score':row['score_components']['latency'],'prompt':prompts[row['intent_id']]}
|
||||||
|
writer.writerow({key:flat.get(key) for key in fields})
|
||||||
|
fmt=lambda v:f'{float(v):.4f}'
|
||||||
|
lines=['# Pré-teste retrospectivo — 12 consultas por identificador', '',
|
||||||
|
'**'+report['conclusion']+'**', '',
|
||||||
|
f"84 novas respostas avaliadas; {report['http_attempts']} tentativas HTTP, das quais {report['infrastructure_rejections']} rejeitadas por infraestrutura; custo conhecido US$ {report['total']['total_usd']}; buscas operacionais confiáveis {report['total']['reliable_searches']}/84.", '',
|
||||||
|
'A seleção original antecedeu este teste. Esta etapa é uma auditoria posterior e não reescreve a cronologia.', '',
|
||||||
|
'## Classificação por identificador', '',
|
||||||
|
'| ID OCI | Nota /100 | Busca confiável | Gate operacional | Corte >=70 | USD/interação | Tokens/interação | Mediana s | Faixa bootstrap das notas |',
|
||||||
|
'|---|---:|---:|---|---|---:|---:|---:|---|']
|
||||||
|
for row in sorted(models.values(),key=lambda r:-r['score']):
|
||||||
|
lo,hi=row['case_bootstrap_95_range'];lines.append(f"| `{row['model']}` | {fmt(row['score'])} | {row['reliable_searches']}/12 | {row['operational_gate_passed']} | {row['passed']} | {fmt(row['mean_usd']) if row['mean_usd'] is not None else 'unknown'} | {float(row['mean_total_tokens']):.2f} | {row['median_seconds']:.3f} | {lo:.2f}–{hi:.2f} |")
|
||||||
|
lines+=['','## Corte por configuração, com aliases agrupados', '',
|
||||||
|
'| Configuração | IDs agrupados | Nota /100 | Aprovada | Selecionada | Frequência top 2 no bootstrap |', '|---|---:|---:|---|---|---:|']
|
||||||
|
for row in groups:
|
||||||
|
lines.append(f"| `{row['configuration']}` | {len(row['members'])} | {fmt(row['score'])} | {row['passed']} | {row['configuration'] in selected} | {row['bootstrap_top2_frequency']:.1%} |")
|
||||||
|
lines+=['','## Sensibilidade ao desconto de cache', '',
|
||||||
|
'Análise secundária e exploratória, sem alterar a seleção principal. Nos mesmos registros, cobrar toda a entrada pela tarifa sem cache e reaplicar os mesmos pesos. Selecionadas nesse cenário contábil: '+', '.join('`'+v+'`' for v in no_cache_selected)+'. Não é uma simulação física de serviço sem cache.', '',
|
||||||
|
'A amostra não é holdout: os dois candidatos originais já receberam esses prompts no lote anterior. O cache da API não foi controlado. A sensibilidade apenas verifica a contribuição do desconto financeiro, mantendo tokens e tempos observados.', '',
|
||||||
|
'## Interpretação dos aliases', '',
|
||||||
|
'A nota agrupada é a média dos IDs da configuração. As duas versões de alias não ocupam vagas separadas. O gate operacional exige 12 custos conhecidos e ao menos 11 buscas confiáveis por ID; o corte de 70 aplica-se à nota da configuração.', '',
|
||||||
|
'## Regra e limites', '',
|
||||||
|
'- Pesos: 50% custo total, 30% busca operacional confiável e 20% latência; 25% por tema, com três consultas cada.',
|
||||||
|
'- Eficiência de custo e tempo normalizada pela melhor resposta confiável da mesma intenção. Uma resposta não confiável recebe zero nos três componentes.',
|
||||||
|
'- Busca confiável requer HTTP 200, custo conhecido, search completed, fontes, citações, texto final não vazio e ausência de sinal de truncamento. Não é avaliação factual.',
|
||||||
|
'- Faixa bootstrap: sensibilidade descritiva aos casos em 2000 reamostragens estratificadas e pareadas. Não é intervalo de confiança populacional e não mede repetições independentes da mesma pergunta.',
|
||||||
|
'- Gates de custo e confiabilidade ficam fixos na reamostragem; o corte de 70 é reaplicado às notas de cada reamostragem.',
|
||||||
|
'- As 84 respostas avaliadas são novas; nenhuma resposta do lote original de 200 foi reutilizada como execução deste pré-teste.',
|
||||||
|
'- As rejeições compartilhadas por HTTP 429 foram preservadas e recuperadas uma vez após controle de taxa; não foram computadas como custo zero ou como falha de um modelo. Veja o [adendo operacional](../../ADENDO-TAXA.md).',
|
||||||
|
'- O contador financeiro cobre respostas com usage; o custo das rejeições sem usage permanece desconhecido e não integra as médias nem o custo conhecido publicado.',
|
||||||
|
'- O limite de 2400 tokens de saída e os defaults do modelo são iguais aos do experimento. Truncamentos são penalizados; isso avalia esta configuração operacional, não a capacidade máxima de cada modelo.',
|
||||||
|
'- Custos calculados a preço de lista Oracle incluem tokens e websearch; não são fatura conciliada.',
|
||||||
|
'- O caso de contexto longo foi conciliado sem repetir a inferência; a memória de cálculo consta no [adendo de contabilidade](../../ADENDO-CONTABILIDADE.md).',
|
||||||
|
'- O parâmetro max_output_tokens=2400 não limitou o uso agregado de saída do loop a 2400 em todas as respostas. Os custos usam o usage total retornado, incluindo etapas internas.', '',
|
||||||
|
'## Evidências', '',
|
||||||
|
'- [Protocolo anterior às novas chamadas](../../PROTOCOLO.md).',
|
||||||
|
'- [Dataset de 12 intenções](../../intents-12.json), [regras de corte](../../scoring-rules.json) e [sensibilidade de cache](../../SENSIBILIDADES.md).',
|
||||||
|
'- [CSV das 84 interações](interactions.csv), [métricas medidas](measured-usage.json) e [resumo com bootstrap](summary.json).', '']
|
||||||
|
(target/'REPORT.md').write_text('\n'.join(lines))
|
||||||
|
(target/'sha256.json').write_text(json.dumps({name:hashlib.sha256((target/name).read_bytes()).hexdigest() for name in ['summary.json','measured-usage.json','interactions.csv','REPORT.md']},indent=2)+'\n')
|
||||||
|
print(report['conclusion']);print('Selecionadas:',selected);print('Custo novo USD:',report['total']['total_usd'])
|
||||||
|
|
||||||
|
if __name__=='__main__':main()
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
# Pré-teste retrospectivo — 12 consultas por identificador
|
||||||
|
|
||||||
|
**A amostra confirma os dois candidatos originais segundo a regra operacional congelada.**
|
||||||
|
|
||||||
|
84 novas respostas avaliadas; 91 tentativas HTTP, das quais 7 rejeitadas por infraestrutura; custo conhecido US$ 9.45816885; buscas operacionais confiáveis 84/84.
|
||||||
|
|
||||||
|
A seleção original antecedeu este teste. Esta etapa é uma auditoria posterior e não reescreve a cronologia.
|
||||||
|
|
||||||
|
## Classificação por identificador
|
||||||
|
|
||||||
|
| ID OCI | Nota /100 | Busca confiável | Gate operacional | Corte >=70 | USD/interação | Tokens/interação | Mediana s | Faixa bootstrap das notas |
|
||||||
|
|---|---:|---:|---|---|---:|---:|---:|---|
|
||||||
|
| `xai.grok-4.3` | 97.1490 | 12/12 | True | True | 0.0424 | 22087.92 | 11.370 | 95.68–99.31 |
|
||||||
|
| `xai.grok-4.20-0309-non-reasoning` | 74.0107 | 12/12 | True | True | 0.0729 | 49058.42 | 12.639 | 70.94–77.03 |
|
||||||
|
| `xai.grok-4.20-non-reasoning` | 72.7615 | 12/12 | True | True | 0.0755 | 50843.83 | 12.383 | 69.97–76.11 |
|
||||||
|
| `xai.grok-4.20-reasoning` | 72.2381 | 12/12 | True | True | 0.0608 | 37148.58 | 29.154 | 69.53–75.30 |
|
||||||
|
| `xai.grok-4.20-0309-reasoning` | 67.9261 | 12/12 | True | False | 0.0661 | 43295.25 | 33.049 | 63.87–71.67 |
|
||||||
|
| `xai.grok-4.6` | 45.5086 | 12/12 | True | False | 0.1673 | 84555.58 | 65.825 | 43.92–47.39 |
|
||||||
|
| `xai.grok-4.7` | 43.3442 | 12/12 | True | False | 0.3032 | 154035.50 | 50.155 | 40.61–46.41 |
|
||||||
|
|
||||||
|
## Corte por configuração, com aliases agrupados
|
||||||
|
|
||||||
|
| Configuração | IDs agrupados | Nota /100 | Aprovada | Selecionada | Frequência top 2 no bootstrap |
|
||||||
|
|---|---:|---:|---|---|---:|
|
||||||
|
| `grok-4.3` | 1 | 97.1490 | True | True | 100.0% |
|
||||||
|
| `grok-4.20-non-reasoning` | 2 | 73.3861 | True | True | 99.8% |
|
||||||
|
| `grok-4.20-reasoning` | 2 | 70.0821 | True | False | 0.0% |
|
||||||
|
| `grok-4.6` | 1 | 45.5086 | False | False | 0.0% |
|
||||||
|
| `grok-4.7` | 1 | 43.3442 | False | False | 0.0% |
|
||||||
|
|
||||||
|
## Sensibilidade ao desconto de cache
|
||||||
|
|
||||||
|
Análise secundária e exploratória, sem alterar a seleção principal. Nos mesmos registros, cobrar toda a entrada pela tarifa sem cache e reaplicar os mesmos pesos. Selecionadas nesse cenário contábil: `grok-4.3`. Não é uma simulação física de serviço sem cache.
|
||||||
|
|
||||||
|
A amostra não é holdout: os dois candidatos originais já receberam esses prompts no lote anterior. O cache da API não foi controlado. A sensibilidade apenas verifica a contribuição do desconto financeiro, mantendo tokens e tempos observados.
|
||||||
|
|
||||||
|
## Interpretação dos aliases
|
||||||
|
|
||||||
|
A nota agrupada é a média dos IDs da configuração. As duas versões de alias não ocupam vagas separadas. O gate operacional exige 12 custos conhecidos e ao menos 11 buscas confiáveis por ID; o corte de 70 aplica-se à nota da configuração.
|
||||||
|
|
||||||
|
## Regra e limites
|
||||||
|
|
||||||
|
- Pesos: 50% custo total, 30% busca operacional confiável e 20% latência; 25% por tema, com três consultas cada.
|
||||||
|
- Eficiência de custo e tempo normalizada pela melhor resposta confiável da mesma intenção. Uma resposta não confiável recebe zero nos três componentes.
|
||||||
|
- Busca confiável requer HTTP 200, custo conhecido, search completed, fontes, citações, texto final não vazio e ausência de sinal de truncamento. Não é avaliação factual.
|
||||||
|
- Faixa bootstrap: sensibilidade descritiva aos casos em 2000 reamostragens estratificadas e pareadas. Não é intervalo de confiança populacional e não mede repetições independentes da mesma pergunta.
|
||||||
|
- Gates de custo e confiabilidade ficam fixos na reamostragem; o corte de 70 é reaplicado às notas de cada reamostragem.
|
||||||
|
- As 84 respostas avaliadas são novas; nenhuma resposta do lote original de 200 foi reutilizada como execução deste pré-teste.
|
||||||
|
- As rejeições compartilhadas por HTTP 429 foram preservadas e recuperadas uma vez após controle de taxa; não foram computadas como custo zero ou como falha de um modelo. Veja o [adendo operacional](../../ADENDO-TAXA.md).
|
||||||
|
- O contador financeiro cobre respostas com usage; o custo das rejeições sem usage permanece desconhecido e não integra as médias nem o custo conhecido publicado.
|
||||||
|
- O limite de 2400 tokens de saída e os defaults do modelo são iguais aos do experimento. Truncamentos são penalizados; isso avalia esta configuração operacional, não a capacidade máxima de cada modelo.
|
||||||
|
- Custos calculados a preço de lista Oracle incluem tokens e websearch; não são fatura conciliada.
|
||||||
|
- O caso de contexto longo foi conciliado sem repetir a inferência; a memória de cálculo consta no [adendo de contabilidade](../../ADENDO-CONTABILIDADE.md).
|
||||||
|
- O parâmetro max_output_tokens=2400 não limitou o uso agregado de saída do loop a 2400 em todas as respostas. Os custos usam o usage total retornado, incluindo etapas internas.
|
||||||
|
|
||||||
|
## Evidências
|
||||||
|
|
||||||
|
- [Protocolo anterior às novas chamadas](../../PROTOCOLO.md).
|
||||||
|
- [Dataset de 12 intenções](../../intents-12.json), [regras de corte](../../scoring-rules.json) e [sensibilidade de cache](../../SENSIBILIDADES.md).
|
||||||
|
- [CSV das 84 interações](interactions.csv), [métricas medidas](measured-usage.json) e [resumo com bootstrap](summary.json).
|
||||||
@@ -0,0 +1,85 @@
|
|||||||
|
intent_id,category,model,http,reliable_search,truncated,final_answer_chars,seconds,input_tokens,cached_input_tokens,output_tokens,reasoning_tokens,web_search_calls,input_usd,cached_input_usd,output_usd,web_search_usd,total_usd,cost_score,search_score,latency_score,operational_score,prompt_sha256,shared_payload_sha256,prompt
|
||||||
|
I006,culinaria,xai.grok-4.20-0309-non-reasoning,200,True,False,4575,20.383,46573,23424,1623,0,7,0.02893625,0.0046848,0.0040575,0.035,0.07267855,63.79426942337182,100.0,69.0477358583133,75.70668188334857,36d5d240061a327be7d16f82eb8c3405e02a255cd17ec92d91f8d62c5a2d1838,a01b683667a7a74ae1a4640b9a173a432fbf34247cdf4d1ad937e3d2cb532ef6,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais festivais gastronômicos estão acontecendo nesta semana em São Paulo, com datas e participantes? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I006,culinaria,xai.grok-4.20-0309-reasoning,200,True,False,2258,26.385,45862,22016,2554,1720,5,0.0298075,0.0044032,0.006385,0.025,0.0655957,70.68260571958223,100.0,53.340913397763885,76.00948553934388,36d5d240061a327be7d16f82eb8c3405e02a255cd17ec92d91f8d62c5a2d1838,a01b683667a7a74ae1a4640b9a173a432fbf34247cdf4d1ad937e3d2cb532ef6,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais festivais gastronômicos estão acontecendo nesta semana em São Paulo, com datas e participantes? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I006,culinaria,xai.grok-4.20-non-reasoning,200,True,False,3423,16.368,46359,23296,1406,0,7,0.02882875,0.0046592,0.003515,0.035,0.07200295,64.39284779304181,100.0,85.98484848484848,79.3933935934906,36d5d240061a327be7d16f82eb8c3405e02a255cd17ec92d91f8d62c5a2d1838,a01b683667a7a74ae1a4640b9a173a432fbf34247cdf4d1ad937e3d2cb532ef6,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais festivais gastronômicos estão acontecendo nesta semana em São Paulo, com datas e participantes? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I006,culinaria,xai.grok-4.20-reasoning,200,True,False,2168,28.205,45961,22144,2484,1674,5,0.02977125,0.0044288,0.00621,0.025,0.06541005,70.8832205448551,100.0,49.89895408615494,75.42140108965854,36d5d240061a327be7d16f82eb8c3405e02a255cd17ec92d91f8d62c5a2d1838,a01b683667a7a74ae1a4640b9a173a432fbf34247cdf4d1ad937e3d2cb532ef6,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais festivais gastronômicos estão acontecendo nesta semana em São Paulo, com datas e participantes? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I006,culinaria,xai.grok-4.3,200,True,False,2339,14.074,22867,1280,1650,932,3,0.02698375,0.000256,0.004125,0.015,0.04636475,100.0,100.0,100.0,100.0,36d5d240061a327be7d16f82eb8c3405e02a255cd17ec92d91f8d62c5a2d1838,a01b683667a7a74ae1a4640b9a173a432fbf34247cdf4d1ad937e3d2cb532ef6,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais festivais gastronômicos estão acontecendo nesta semana em São Paulo, com datas e participantes? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I006,culinaria,xai.grok-4.6,200,True,False,1851,72.888,63095,25472,2984,2225,7,0.075246,0.012736,0.017904,0.035,0.140886,32.90940902573712,100.0,19.309076939962683,50.316519900861095,36d5d240061a327be7d16f82eb8c3405e02a255cd17ec92d91f8d62c5a2d1838,a01b683667a7a74ae1a4640b9a173a432fbf34247cdf4d1ad937e3d2cb532ef6,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais festivais gastronômicos estão acontecendo nesta semana em São Paulo, com datas e participantes? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I006,culinaria,xai.grok-4.7,200,True,False,2106,34.047,70396,27776,2511,1572,7,0.08524,0.013888,0.015066,0.035,0.149194,31.076819443141144,100.0,41.336975357593914,53.80580479308936,36d5d240061a327be7d16f82eb8c3405e02a255cd17ec92d91f8d62c5a2d1838,a01b683667a7a74ae1a4640b9a173a432fbf34247cdf4d1ad937e3d2cb532ef6,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais festivais gastronômicos estão acontecendo nesta semana em São Paulo, com datas e participantes? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I047,esportes,xai.grok-4.20-0309-reasoning,200,True,False,1617,25.777,37725,16256,2364,1687,6,0.02683625,0.0032512,0.00591,0.03,0.06599745,58.29164611663026,100.0,37.33560926407262,66.61294491112966,4bf73cf45fe62d1d17e484418e5c107f3bd191034403cd6748819cf732167c45,4184d87bcb3b26483f5e018deaca7622fb571e5fe4790faab784767891e31c86,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Qual é o próximo evento do UFC, quais lutas estão confirmadas e onde assistir no Brasil? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I047,esportes,xai.grok-4.20-non-reasoning,200,True,False,2337,11.601,35130,17024,898,0,6,0.0226325,0.0034048,0.002245,0.03,0.0582823,66.00803331371617,100.0,82.95836565813292,79.59568978848466,4bf73cf45fe62d1d17e484418e5c107f3bd191034403cd6748819cf732167c45,4184d87bcb3b26483f5e018deaca7622fb571e5fe4790faab784767891e31c86,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Qual é o próximo evento do UFC, quais lutas estão confirmadas e onde assistir no Brasil? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I047,esportes,xai.grok-4.20-reasoning,200,True,False,1903,24.493,39440,18048,2154,1535,5,0.02674,0.0036096,0.005385,0.025,0.0607346,63.34280624224083,100.0,39.29285918425673,69.52997495797176,4bf73cf45fe62d1d17e484418e5c107f3bd191034403cd6748819cf732167c45,4184d87bcb3b26483f5e018deaca7622fb571e5fe4790faab784767891e31c86,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Qual é o próximo evento do UFC, quais lutas estão confirmadas e onde assistir no Brasil? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I047,esportes,xai.grok-4.3,200,True,False,1241,9.624,18156,1280,848,462,3,0.021095,0.000256,0.00212,0.015,0.038471,100.0,100.0,100.0,100.0,4bf73cf45fe62d1d17e484418e5c107f3bd191034403cd6748819cf732167c45,4184d87bcb3b26483f5e018deaca7622fb571e5fe4790faab784767891e31c86,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Qual é o próximo evento do UFC, quais lutas estão confirmadas e onde assistir no Brasil? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I047,esportes,xai.grok-4.6,200,True,False,1080,48.973,73845,27776,2503,2006,8,0.092138,0.013888,0.015018,0.04,0.161044,23.888502521050146,100.0,19.651644783860494,45.87458021729717,4bf73cf45fe62d1d17e484418e5c107f3bd191034403cd6748819cf732167c45,4184d87bcb3b26483f5e018deaca7622fb571e5fe4790faab784767891e31c86,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Qual é o próximo evento do UFC, quais lutas estão confirmadas e onde assistir no Brasil? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I047,esportes,xai.grok-4.7,200,True,False,1673,36.256,125866,69504,3036,2267,9,0.112724,0.034752,0.018216,0.045,0.210692,18.259354887703378,100.0,26.544571932921446,44.438591830435975,4bf73cf45fe62d1d17e484418e5c107f3bd191034403cd6748819cf732167c45,4184d87bcb3b26483f5e018deaca7622fb571e5fe4790faab784767891e31c86,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Qual é o próximo evento do UFC, quais lutas estão confirmadas e onde assistir no Brasil? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I047,esportes,xai.grok-4.20-0309-non-reasoning,200,True,False,2222,10.436,58559,27648,885,0,8,0.03863875,0.0055296,0.0022125,0.04,0.08638085,44.536491595069975,100.0,92.21924108853968,70.71209401524293,4bf73cf45fe62d1d17e484418e5c107f3bd191034403cd6748819cf732167c45,4184d87bcb3b26483f5e018deaca7622fb571e5fe4790faab784767891e31c86,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Qual é o próximo evento do UFC, quais lutas estão confirmadas e onde assistir no Brasil? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I075,clima,xai.grok-4.20-non-reasoning,200,True,False,1828,20.007,41294,1152,863,0,7,0.0501775,0.0002304,0.0021575,0.035,0.0875654,51.5856719663246,100.0,63.05792972459639,68.40442192808158,8c4fda5910f4c2872bac055d0fa55a46bbea65f1343476b325c2766d063ee01c,cbd7bc81f287da9c05923bacfecb386f9bdb40dad93747d8358e92e272147a8b,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Compare as previsões atuais do INMET e de outro serviço para a temperatura e chuva em Belo Horizonte amanhã; destaque divergências. Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I075,clima,xai.grok-4.20-reasoning,200,True,False,1512,29.73,35244,16000,3079,2467,5,0.024055,0.0032,0.0076975,0.025,0.0599525,75.34498144364288,100.0,42.435250588631014,76.15954083954765,8c4fda5910f4c2872bac055d0fa55a46bbea65f1343476b325c2766d063ee01c,cbd7bc81f287da9c05923bacfecb386f9bdb40dad93747d8358e92e272147a8b,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Compare as previsões atuais do INMET e de outro serviço para a temperatura e chuva em Belo Horizonte amanhã; destaque divergências. Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I075,clima,xai.grok-4.3,200,True,False,1576,14.337,21542,256,1405,956,3,0.0266075,0.0000512,0.0035125,0.015,0.0451712,100.0,100.0,87.99609402245937,97.59921880449187,8c4fda5910f4c2872bac055d0fa55a46bbea65f1343476b325c2766d063ee01c,cbd7bc81f287da9c05923bacfecb386f9bdb40dad93747d8358e92e272147a8b,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Compare as previsões atuais do INMET e de outro serviço para a temperatura e chuva em Belo Horizonte amanhã; destaque divergências. Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I075,clima,xai.grok-4.6,200,True,False,1312,109.758,61493,22656,4955,4282,7,0.077674,0.011328,0.02973,0.035,0.153732,29.383082247027293,100.0,11.494378541883052,46.99041683189026,8c4fda5910f4c2872bac055d0fa55a46bbea65f1343476b325c2766d063ee01c,cbd7bc81f287da9c05923bacfecb386f9bdb40dad93747d8358e92e272147a8b,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Compare as previsões atuais do INMET e de outro serviço para a temperatura e chuva em Belo Horizonte amanhã; destaque divergências. Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I075,clima,xai.grok-4.7,200,True,False,1671,80.826,249047,193408,6231,5191,15,0.222556,0.193408,0.074772,0.075,0.565736,7.9845016049889,100.0,15.608838740009404,37.11401855049633,8c4fda5910f4c2872bac055d0fa55a46bbea65f1343476b325c2766d063ee01c,cbd7bc81f287da9c05923bacfecb386f9bdb40dad93747d8358e92e272147a8b,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Compare as previsões atuais do INMET e de outro serviço para a temperatura e chuva em Belo Horizonte amanhã; destaque divergências. Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I075,clima,xai.grok-4.20-0309-non-reasoning,200,True,False,2016,12.616,45724,23936,888,0,7,0.027235,0.0047872,0.00222,0.035,0.0692422,65.23651761498046,100.0,100.0,82.61825880749024,8c4fda5910f4c2872bac055d0fa55a46bbea65f1343476b325c2766d063ee01c,cbd7bc81f287da9c05923bacfecb386f9bdb40dad93747d8358e92e272147a8b,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Compare as previsões atuais do INMET e de outro serviço para a temperatura e chuva em Belo Horizonte amanhã; destaque divergências. Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I075,clima,xai.grok-4.20-0309-reasoning,200,True,False,1856,41.401,39652,19712,2902,2171,5,0.024925,0.0039424,0.007255,0.025,0.0611224,73.90285721764852,100.0,30.4726938962827,73.0459673880808,8c4fda5910f4c2872bac055d0fa55a46bbea65f1343476b325c2766d063ee01c,cbd7bc81f287da9c05923bacfecb386f9bdb40dad93747d8358e92e272147a8b,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Compare as previsões atuais do INMET e de outro serviço para a temperatura e chuva em Belo Horizonte amanhã; destaque divergências. Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I100,entretenimento,xai.grok-4.20-reasoning,200,True,False,1481,17.598,13078,1792,1772,1277,3,0.0141075,0.0003584,0.00443,0.015,0.0338959,100.0,100.0,55.72224116376861,91.14444823275372,f36c95b21499a98c811a51af02247698803d7f387a10737c739ab40795277293,6e5c9d7b53e95209ec804472db0eff7c662620453ac504653ccea5573e8493c8,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais são os horários de funcionamento e preços de ingresso atuais do Museu do Futebol em São Paulo e há aviso de fechamento nesta semana? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I100,entretenimento,xai.grok-4.3,200,True,False,1307,11.496,16671,1280,1108,660,4,0.01923875,0.000256,0.00277,0.02,0.04226475,80.19898378672535,100.0,85.29923451635351,87.15933879663338,f36c95b21499a98c811a51af02247698803d7f387a10737c739ab40795277293,6e5c9d7b53e95209ec804472db0eff7c662620453ac504653ccea5573e8493c8,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais são os horários de funcionamento e preços de ingresso atuais do Museu do Futebol em São Paulo e há aviso de fechamento nesta semana? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I100,entretenimento,xai.grok-4.6,200,True,False,1311,77.868,80658,45568,3240,2662,6,0.07018,0.022784,0.01944,0.03,0.142404,23.80263194854077,100.0,12.593106282426671,44.41993723075572,f36c95b21499a98c811a51af02247698803d7f387a10737c739ab40795277293,6e5c9d7b53e95209ec804472db0eff7c662620453ac504653ccea5573e8493c8,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais são os horários de funcionamento e preços de ingresso atuais do Museu do Futebol em São Paulo e há aviso de fechamento nesta semana? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I100,entretenimento,xai.grok-4.7,200,True,False,1409,35.03,61196,25216,2849,2237,6,0.07196,0.012608,0.017094,0.03,0.131662,25.744633987027388,100.0,27.99314872966029,48.47094673944575,f36c95b21499a98c811a51af02247698803d7f387a10737c739ab40795277293,6e5c9d7b53e95209ec804472db0eff7c662620453ac504653ccea5573e8493c8,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais são os horários de funcionamento e preços de ingresso atuais do Museu do Futebol em São Paulo e há aviso de fechamento nesta semana? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I100,entretenimento,xai.grok-4.20-0309-non-reasoning,200,True,False,2205,12.663,37104,19584,901,0,5,0.0219,0.0039168,0.0022525,0.025,0.0530693,63.87101393837869,100.0,77.43820579641475,77.42314812847229,f36c95b21499a98c811a51af02247698803d7f387a10737c739ab40795277293,6e5c9d7b53e95209ec804472db0eff7c662620453ac504653ccea5573e8493c8,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais são os horários de funcionamento e preços de ingresso atuais do Museu do Futebol em São Paulo e há aviso de fechamento nesta semana? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I100,entretenimento,xai.grok-4.20-0309-reasoning,200,True,False,1439,26.051,27100,14208,2388,1818,4,0.016115,0.0028416,0.00597,0.02,0.0449266,75.44728512729652,100.0,37.64154926874208,75.25195241739668,f36c95b21499a98c811a51af02247698803d7f387a10737c739ab40795277293,6e5c9d7b53e95209ec804472db0eff7c662620453ac504653ccea5573e8493c8,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais são os horários de funcionamento e preços de ingresso atuais do Museu do Futebol em São Paulo e há aviso de fechamento nesta semana? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I100,entretenimento,xai.grok-4.20-non-reasoning,200,True,False,1812,9.806,37598,19200,709,0,4,0.0229975,0.00384,0.0017725,0.02,0.0486100,69.73030240691216,100.0,100.0,84.86515120345608,f36c95b21499a98c811a51af02247698803d7f387a10737c739ab40795277293,6e5c9d7b53e95209ec804472db0eff7c662620453ac504653ccea5573e8493c8,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais são os horários de funcionamento e preços de ingresso atuais do Museu do Futebol em São Paulo e há aviso de fechamento nesta semana? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I017,culinaria,xai.grok-4.3,200,True,False,741,10.199,11490,1280,784,538,3,0.0127625,0.000256,0.00196,0.015,0.0299785,100.0,100.0,100.0,100.0,36c3c21fe52815081f09b828331c5c5577a32dc91a296eb0bf059fafd041ee9d,6ecf80996df108806dcb5f8364df4f3b31317eb3c8b5ab0ba8cf9717b1995826,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quem venceu o concurso de melhor queijo no campeonato brasileiro mais recente? Informe o nome e a data do concurso. Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I017,culinaria,xai.grok-4.6,200,True,False,1157,102.319,126919,75392,4881,4199,10,0.103054,0.037696,0.029286,0.05,0.220036,13.624361468123398,100.0,9.967845659163988,38.8057498658945,36c3c21fe52815081f09b828331c5c5577a32dc91a296eb0bf059fafd041ee9d,6ecf80996df108806dcb5f8364df4f3b31317eb3c8b5ab0ba8cf9717b1995826,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quem venceu o concurso de melhor queijo no campeonato brasileiro mais recente? Informe o nome e a data do concurso. Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I017,culinaria,xai.grok-4.7,200,True,False,1664,53.465,252328,180864,4019,3205,13,0.285856,0.180864,0.048228,0.065,0.579948,5.169170339409741,100.0,19.07603104834939,36.39979137937475,36c3c21fe52815081f09b828331c5c5577a32dc91a296eb0bf059fafd041ee9d,6ecf80996df108806dcb5f8364df4f3b31317eb3c8b5ab0ba8cf9717b1995826,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quem venceu o concurso de melhor queijo no campeonato brasileiro mais recente? Informe o nome e a data do concurso. Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I017,culinaria,xai.grok-4.20-0309-non-reasoning,200,True,False,2234,11.498,36587,15616,820,0,6,0.02621375,0.0031232,0.00205,0.03,0.06138695,48.83529805602005,100.0,88.70238302313446,72.15812563263691,36c3c21fe52815081f09b828331c5c5577a32dc91a296eb0bf059fafd041ee9d,6ecf80996df108806dcb5f8364df4f3b31317eb3c8b5ab0ba8cf9717b1995826,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quem venceu o concurso de melhor queijo no campeonato brasileiro mais recente? Informe o nome e a data do concurso. Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I017,culinaria,xai.grok-4.20-0309-reasoning,200,True,False,1994,29.305,28197,13824,2760,2137,3,0.01796625,0.0027648,0.0069,0.015,0.04263105,70.3208107705534,100.0,34.802934652789624,72.12099231583461,36c3c21fe52815081f09b828331c5c5577a32dc91a296eb0bf059fafd041ee9d,6ecf80996df108806dcb5f8364df4f3b31317eb3c8b5ab0ba8cf9717b1995826,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quem venceu o concurso de melhor queijo no campeonato brasileiro mais recente? Informe o nome e a data do concurso. Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I017,culinaria,xai.grok-4.20-non-reasoning,200,True,False,2133,11.519,48418,1920,837,0,6,0.0581225,0.000384,0.0020925,0.03,0.0905990,33.089217320279474,100.0,88.54067193332754,64.25274304680525,36c3c21fe52815081f09b828331c5c5577a32dc91a296eb0bf059fafd041ee9d,6ecf80996df108806dcb5f8364df4f3b31317eb3c8b5ab0ba8cf9717b1995826,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quem venceu o concurso de melhor queijo no campeonato brasileiro mais recente? Informe o nome e a data do concurso. Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I017,culinaria,xai.grok-4.20-reasoning,200,True,False,1529,33.765,28098,2176,2611,1945,4,0.0324025,0.0004352,0.0065275,0.02,0.0593652,50.49844016359753,100.0,30.205834443950838,61.29038697058893,36c3c21fe52815081f09b828331c5c5577a32dc91a296eb0bf059fafd041ee9d,6ecf80996df108806dcb5f8364df4f3b31317eb3c8b5ab0ba8cf9717b1995826,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quem venceu o concurso de melhor queijo no campeonato brasileiro mais recente? Informe o nome e a data do concurso. Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I027,esportes,xai.grok-4.6,200,True,False,820,54.853,62331,23936,2491,2138,6,0.07679,0.011968,0.014946,0.03,0.133704,25.46479536887453,100.0,19.280622755364337,46.58852223551013,5042539efe0822fbcd47645e86e11a9f25dc7276be67ec89e302f99935b9d91f,8aa61e41d3c29bebf90a0972eb9d168f21c11e118ea694878bb2a38697dfc076,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Qual é o próximo jogo confirmado da seleção brasileira feminina de futebol, com adversário, local e transmissão? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I027,esportes,xai.grok-4.7,200,True,False,1341,71.967,108425,63744,3834,3192,8,0.089362,0.031872,0.023004,0.04,0.184238,18.48014524690889,100.0,14.695624383397947,42.17919750013404,5042539efe0822fbcd47645e86e11a9f25dc7276be67ec89e302f99935b9d91f,8aa61e41d3c29bebf90a0972eb9d168f21c11e118ea694878bb2a38697dfc076,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Qual é o próximo jogo confirmado da seleção brasileira feminina de futebol, com adversário, local e transmissão? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I027,esportes,xai.grok-4.20-0309-non-reasoning,200,True,False,2079,10.576,56073,20992,650,0,6,0.04385125,0.0041984,0.001625,0.03,0.07967465,42.73310268699015,100.0,100.0,71.36655134349508,5042539efe0822fbcd47645e86e11a9f25dc7276be67ec89e302f99935b9d91f,8aa61e41d3c29bebf90a0972eb9d168f21c11e118ea694878bb2a38697dfc076,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Qual é o próximo jogo confirmado da seleção brasileira feminina de futebol, com adversário, local e transmissão? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I027,esportes,xai.grok-4.20-0309-reasoning,200,True,False,2133,29.482,30303,14336,2291,1654,5,0.01995875,0.0028672,0.0057275,0.025,0.05355345,63.57657629900594,100.0,35.87273590665491,68.96283533083395,5042539efe0822fbcd47645e86e11a9f25dc7276be67ec89e302f99935b9d91f,8aa61e41d3c29bebf90a0972eb9d168f21c11e118ea694878bb2a38697dfc076,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Qual é o próximo jogo confirmado da seleção brasileira feminina de futebol, com adversário, local e transmissão? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I027,esportes,xai.grok-4.20-non-reasoning,200,True,False,2465,11.183,53126,21504,754,0,6,0.0395275,0.0043008,0.001885,0.03,0.0757133,44.96891563305258,100.0,94.57211839399088,71.39888149532446,5042539efe0822fbcd47645e86e11a9f25dc7276be67ec89e302f99935b9d91f,8aa61e41d3c29bebf90a0972eb9d168f21c11e118ea694878bb2a38697dfc076,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Qual é o próximo jogo confirmado da seleção brasileira feminina de futebol, com adversário, local e transmissão? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I027,esportes,xai.grok-4.20-reasoning,200,True,False,1928,28.579,29156,2048,2199,1689,4,0.033885,0.0004096,0.0054975,0.02,0.0597921,56.94305769491287,100.0,37.00619335875993,65.87276751920842,5042539efe0822fbcd47645e86e11a9f25dc7276be67ec89e302f99935b9d91f,8aa61e41d3c29bebf90a0972eb9d168f21c11e118ea694878bb2a38697dfc076,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Qual é o próximo jogo confirmado da seleção brasileira feminina de futebol, com adversário, local e transmissão? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I027,esportes,xai.grok-4.3,200,True,False,1767,11.866,13679,256,887,435,3,0.01677875,0.0000512,0.0022175,0.015,0.03404745,100.0,100.0,89.12860273049047,97.8257205460981,5042539efe0822fbcd47645e86e11a9f25dc7276be67ec89e302f99935b9d91f,8aa61e41d3c29bebf90a0972eb9d168f21c11e118ea694878bb2a38697dfc076,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Qual é o próximo jogo confirmado da seleção brasileira feminina de futebol, com adversário, local e transmissão? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I056,clima,xai.grok-4.7,200,True,False,1204,50.692,103264,52736,4116,3402,9,0.101056,0.026368,0.024696,0.045,0.197120,20.810267857142858,100.0,22.181014755780005,44.84133687972743,e4745eff05345e016e8e3a962ab2ac7df60a25bbd98356af67733cc06854e26f,61e787af198c22ac8612e1f1bcf0d9477ea740725c8ca3aa81bb300854e658a5,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Qual é a previsão atual para trilha em Campos do Jordão no próximo sábado de manhã, com chuva e temperatura? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I056,clima,xai.grok-4.20-0309-non-reasoning,200,True,False,2502,17.428,61917,31104,1113,0,6,0.03851625,0.0062208,0.0027825,0.03,0.07751955,52.917231846676096,100.0,64.51686940555427,69.36198980444891,e4745eff05345e016e8e3a962ab2ac7df60a25bbd98356af67733cc06854e26f,61e787af198c22ac8612e1f1bcf0d9477ea740725c8ca3aa81bb300854e658a5,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Qual é a previsão atual para trilha em Campos do Jordão no próximo sábado de manhã, com chuva e temperatura? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I056,clima,xai.grok-4.20-0309-reasoning,200,True,False,1563,48.034,42385,1920,3433,2896,4,0.05058125,0.000384,0.0085825,0.02,0.07954775,51.568020465695135,100.0,23.408419036515802,60.46569404015073,e4745eff05345e016e8e3a962ab2ac7df60a25bbd98356af67733cc06854e26f,61e787af198c22ac8612e1f1bcf0d9477ea740725c8ca3aa81bb300854e658a5,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Qual é a previsão atual para trilha em Campos do Jordão no próximo sábado de manhã, com chuva e temperatura? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I056,clima,xai.grok-4.20-non-reasoning,200,True,False,1453,16.135,63839,32128,828,0,6,0.03963875,0.0064256,0.00207,0.03,0.07813435,52.50085269794911,100.0,69.68701580415247,70.18782950980504,e4745eff05345e016e8e3a962ab2ac7df60a25bbd98356af67733cc06854e26f,61e787af198c22ac8612e1f1bcf0d9477ea740725c8ca3aa81bb300854e658a5,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Qual é a previsão atual para trilha em Campos do Jordão no próximo sábado de manhã, com chuva e temperatura? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I056,clima,xai.grok-4.20-reasoning,200,True,False,1414,30.851,50021,18304,2420,1857,5,0.03964625,0.0036608,0.00605,0.025,0.07435705,55.16786908571547,100.0,36.44614437133318,64.87316341712437,e4745eff05345e016e8e3a962ab2ac7df60a25bbd98356af67733cc06854e26f,61e787af198c22ac8612e1f1bcf0d9477ea740725c8ca3aa81bb300854e658a5,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Qual é a previsão atual para trilha em Campos do Jordão no próximo sábado de manhã, com chuva e temperatura? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I056,clima,xai.grok-4.3,200,True,False,1500,11.244,18582,256,1225,751,3,0.0229075,0.0000512,0.0030625,0.015,0.0410212,100.0,100.0,100.0,100.0,e4745eff05345e016e8e3a962ab2ac7df60a25bbd98356af67733cc06854e26f,61e787af198c22ac8612e1f1bcf0d9477ea740725c8ca3aa81bb300854e658a5,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Qual é a previsão atual para trilha em Campos do Jordão no próximo sábado de manhã, com chuva e temperatura? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I056,clima,xai.grok-4.6,200,True,False,860,102.996,104904,55808,4885,4370,8,0.098192,0.027904,0.02931,0.04,0.195406,20.992804724522276,100.0,10.916928812769427,42.679788124815026,e4745eff05345e016e8e3a962ab2ac7df60a25bbd98356af67733cc06854e26f,61e787af198c22ac8612e1f1bcf0d9477ea740725c8ca3aa81bb300854e658a5,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Qual é a previsão atual para trilha em Campos do Jordão no próximo sábado de manhã, com chuva e temperatura? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I099,entretenimento,xai.grok-4.20-0309-non-reasoning,200,True,False,2632,16.638,53111,25344,1198,0,9,0.03470875,0.0050688,0.002995,0.045,0.08777255,51.7031805501834,100.0,70.72364466883039,69.99631920885778,1cb9897fe374c88a1319dbabe4f530faf68a1dcb89bf80edfd1c0043aec60653,12210a170024f7526f968237648067c67042ad4289cfe9d242520e899a2f35f3,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais eventos de cultura pop ou quadrinhos estão confirmados no estado de São Paulo para os próximos 30 dias? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I099,entretenimento,xai.grok-4.20-0309-reasoning,200,True,False,2089,44.349,51195,24576,3466,2583,6,0.03327375,0.0049152,0.008665,0.03,0.07685395,59.048624045998935,100.0,26.53272903560396,64.83085783012027,1cb9897fe374c88a1319dbabe4f530faf68a1dcb89bf80edfd1c0043aec60653,12210a170024f7526f968237648067c67042ad4289cfe9d242520e899a2f35f3,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais eventos de cultura pop ou quadrinhos estão confirmados no estado de São Paulo para os próximos 30 dias? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I099,entretenimento,xai.grok-4.20-non-reasoning,200,True,False,2549,13.165,55250,23296,921,0,8,0.0399425,0.0046592,0.0023025,0.04,0.0869042,52.21980065405354,100.0,89.38093429548044,73.98608718612286,1cb9897fe374c88a1319dbabe4f530faf68a1dcb89bf80edfd1c0043aec60653,12210a170024f7526f968237648067c67042ad4289cfe9d242520e899a2f35f3,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais eventos de cultura pop ou quadrinhos estão confirmados no estado de São Paulo para os próximos 30 dias? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I099,entretenimento,xai.grok-4.20-reasoning,200,True,False,1799,26.069,22860,1024,2510,1892,3,0.027295,0.0002048,0.006275,0.015,0.0487748,93.0423087331983,100.0,45.13790325674172,85.5487350179475,1cb9897fe374c88a1319dbabe4f530faf68a1dcb89bf80edfd1c0043aec60653,12210a170024f7526f968237648067c67042ad4289cfe9d242520e899a2f35f3,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais eventos de cultura pop ou quadrinhos estão confirmados no estado de São Paulo para os próximos 30 dias? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I099,entretenimento,xai.grok-4.3,200,True,False,1590,11.767,22214,256,1153,661,3,0.0274475,0.0000512,0.0028825,0.015,0.0453812,100.0,100.0,100.0,100.0,1cb9897fe374c88a1319dbabe4f530faf68a1dcb89bf80edfd1c0043aec60653,12210a170024f7526f968237648067c67042ad4289cfe9d242520e899a2f35f3,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais eventos de cultura pop ou quadrinhos estão confirmados no estado de São Paulo para os próximos 30 dias? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I099,entretenimento,xai.grok-4.6,200,True,False,2044,67.584,86808,32640,3893,3023,10,0.108336,0.01632,0.023358,0.05,0.198014,22.918177502600827,100.0,17.41092566287879,44.94127388387617,1cb9897fe374c88a1319dbabe4f530faf68a1dcb89bf80edfd1c0043aec60653,12210a170024f7526f968237648067c67042ad4289cfe9d242520e899a2f35f3,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais eventos de cultura pop ou quadrinhos estão confirmados no estado de São Paulo para os próximos 30 dias? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I099,entretenimento,xai.grok-4.7,200,True,False,2365,115.561,238906,162432,12155,11008,14,0.305896,0.162432,0.14586,0.07,0.684188,6.632855297082089,100.0,10.182501016779018,35.35292785189685,1cb9897fe374c88a1319dbabe4f530faf68a1dcb89bf80edfd1c0043aec60653,12210a170024f7526f968237648067c67042ad4289cfe9d242520e899a2f35f3,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais eventos de cultura pop ou quadrinhos estão confirmados no estado de São Paulo para os próximos 30 dias? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I004,culinaria,xai.grok-4.20-0309-reasoning,200,True,False,2600,36.615,44539,1152,2981,2031,5,0.05423375,0.0002304,0.0074525,0.025,0.08691665,36.27803188456987,100.0,22.74204560972279,52.687425064229494,8496f2847c6920205e32ef7f297b0a76e1d94fba27e5b1200feb8003cdd9ad11,c2024c1b2f572734d238a57038f5e31328b005f104d70b5ae14f6aa53dafa256,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais hotéis em São Paulo anunciam brunch para o próximo domingo, com preços e horários? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I004,culinaria,xai.grok-4.20-non-reasoning,200,True,False,3953,28.633,35103,16384,1466,0,7,0.02339875,0.0032768,0.003665,0.035,0.06534055,48.25739911892386,100.0,29.08182865923934,59.945065291309795,8496f2847c6920205e32ef7f297b0a76e1d94fba27e5b1200feb8003cdd9ad11,c2024c1b2f572734d238a57038f5e31328b005f104d70b5ae14f6aa53dafa256,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais hotéis em São Paulo anunciam brunch para o próximo domingo, com preços e horários? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I004,culinaria,xai.grok-4.20-reasoning,200,True,False,2506,33.578,34515,2048,3048,2081,6,0.04058375,0.0004096,0.00762,0.03,0.07861335,40.1097905126801,100.0,24.79897551968551,55.01469036027715,8496f2847c6920205e32ef7f297b0a76e1d94fba27e5b1200feb8003cdd9ad11,c2024c1b2f572734d238a57038f5e31328b005f104d70b5ae14f6aa53dafa256,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais hotéis em São Paulo anunciam brunch para o próximo domingo, com preços e horários? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I004,culinaria,xai.grok-4.3,200,True,False,1839,8.327,12075,1152,1059,525,3,0.01365375,0.0002304,0.0026475,0.015,0.03153165,100.0,100.0,100.0,100.0,8496f2847c6920205e32ef7f297b0a76e1d94fba27e5b1200feb8003cdd9ad11,c2024c1b2f572734d238a57038f5e31328b005f104d70b5ae14f6aa53dafa256,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais hotéis em São Paulo anunciam brunch para o próximo domingo, com preços e horários? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I004,culinaria,xai.grok-4.6,200,True,False,1350,64.066,95219,56192,3657,2917,12,0.078054,0.028096,0.021942,0.06,0.188092,16.763950619909405,100.0,12.997533793275684,40.98148206860984,8496f2847c6920205e32ef7f297b0a76e1d94fba27e5b1200feb8003cdd9ad11,c2024c1b2f572734d238a57038f5e31328b005f104d70b5ae14f6aa53dafa256,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais hotéis em São Paulo anunciam brunch para o próximo domingo, com preços e horários? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I004,culinaria,xai.grok-4.7,200,True,False,1345,49.618,134879,91520,3610,2815,14,0.086718,0.04576,0.02166,0.07,0.224138,14.067962594473048,100.0,16.782216131242695,40.390424523485066,8496f2847c6920205e32ef7f297b0a76e1d94fba27e5b1200feb8003cdd9ad11,c2024c1b2f572734d238a57038f5e31328b005f104d70b5ae14f6aa53dafa256,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais hotéis em São Paulo anunciam brunch para o próximo domingo, com preços e horários? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I004,culinaria,xai.grok-4.20-0309-non-reasoning,200,True,False,4003,18.097,49689,23040,1479,0,7,0.03331125,0.004608,0.0036975,0.035,0.07661675,41.155034636681926,100.0,46.01315135105266,59.78014758855149,8496f2847c6920205e32ef7f297b0a76e1d94fba27e5b1200feb8003cdd9ad11,c2024c1b2f572734d238a57038f5e31328b005f104d70b5ae14f6aa53dafa256,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais hotéis em São Paulo anunciam brunch para o próximo domingo, com preços e horários? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I039,esportes,xai.grok-4.20-non-reasoning,200,True,False,2159,11.528,58862,29184,816,0,6,0.0370975,0.0058368,0.00204,0.03,0.0749743,57.74865520585054,100.0,59.46391394864677,70.76711039265463,dfae3c7a38e6bc2cb0be6fb392d474296acba3fb7aacf1b906d3643687ada978,dd25b050063dedccea0f1907a298be363b89877528cc7e9660a4304f0c987ab8,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Qual é o próximo Grande Prêmio de Fórmula 1 e quais são os horários oficiais de treinos, classificação e corrida em Brasília? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I039,esportes,xai.grok-4.20-reasoning,200,True,False,2131,18.588,50443,18304,1824,1242,4,0.04017375,0.0036608,0.00456,0.02,0.06839455,63.30423988461069,100.0,36.878631375080694,69.02784621732148,dfae3c7a38e6bc2cb0be6fb392d474296acba3fb7aacf1b906d3643687ada978,dd25b050063dedccea0f1907a298be363b89877528cc7e9660a4304f0c987ab8,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Qual é o próximo Grande Prêmio de Fórmula 1 e quais são os horários oficiais de treinos, classificação e corrida em Brasília? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I039,esportes,xai.grok-4.3,200,True,False,907,6.855,21951,1152,827,487,3,0.02599875,0.0002304,0.0020675,0.015,0.04329665,100.0,100.0,100.0,100.0,dfae3c7a38e6bc2cb0be6fb392d474296acba3fb7aacf1b906d3643687ada978,dd25b050063dedccea0f1907a298be363b89877528cc7e9660a4304f0c987ab8,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Qual é o próximo Grande Prêmio de Fórmula 1 e quais são os horários oficiais de treinos, classificação e corrida em Brasília? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I039,esportes,xai.grok-4.6,200,True,False,1059,39.388,62505,24064,2242,1751,6,0.076882,0.012032,0.013452,0.03,0.132366,32.709797077799436,100.0,17.40377780034528,49.835654098968774,dfae3c7a38e6bc2cb0be6fb392d474296acba3fb7aacf1b906d3643687ada978,dd25b050063dedccea0f1907a298be363b89877528cc7e9660a4304f0c987ab8,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Qual é o próximo Grande Prêmio de Fórmula 1 e quais são os horários oficiais de treinos, classificação e corrida em Brasília? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I039,esportes,xai.grok-4.7,200,True,False,1407,30.759,64006,27776,2511,1871,6,0.07246,0.013888,0.015066,0.03,0.131414,32.946756053388526,100.0,22.286160148249294,50.93061005634412,dfae3c7a38e6bc2cb0be6fb392d474296acba3fb7aacf1b906d3643687ada978,dd25b050063dedccea0f1907a298be363b89877528cc7e9660a4304f0c987ab8,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Qual é o próximo Grande Prêmio de Fórmula 1 e quais são os horários oficiais de treinos, classificação e corrida em Brasília? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I039,esportes,xai.grok-4.20-0309-non-reasoning,200,True,False,2242,9.995,46002,22784,885,0,6,0.0290225,0.0045568,0.0022125,0.03,0.0657918,65.80858100857553,100.0,68.58429214607304,76.62114893350238,dfae3c7a38e6bc2cb0be6fb392d474296acba3fb7aacf1b906d3643687ada978,dd25b050063dedccea0f1907a298be363b89877528cc7e9660a4304f0c987ab8,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Qual é o próximo Grande Prêmio de Fórmula 1 e quais são os horários oficiais de treinos, classificação e corrida em Brasília? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I039,esportes,xai.grok-4.20-0309-reasoning,200,True,False,1742,22.731,46401,22400,2268,1654,5,0.03000125,0.00448,0.00567,0.025,0.06515125,66.45559371462558,100.0,30.15705424310413,69.25920770593362,dfae3c7a38e6bc2cb0be6fb392d474296acba3fb7aacf1b906d3643687ada978,dd25b050063dedccea0f1907a298be363b89877528cc7e9660a4304f0c987ab8,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Qual é o próximo Grande Prêmio de Fórmula 1 e quais são os horários oficiais de treinos, classificação e corrida em Brasília? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I061,clima,xai.grok-4.20-reasoning,200,True,False,2027,30.465,36560,22016,2884,2067,6,0.01818,0.0044032,0.00721,0.03,0.0597932,60.408875925690545,100.0,28.92827835220745,65.99009363328676,b0e7eddb6280bfcdc0ce87ff6069583c40b176d01de9c59721c16e4a25ddaa12,8c75334566a6354de8c55ac1645d03838267b467477f42d0ca4a781c512ec191,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais estados brasileiros têm alertas oficiais vigentes de onda de calor e até quando? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I061,clima,xai.grok-4.3,200,True,False,981,9.779,16038,1152,913,574,3,0.0186075,0.0002304,0.0022825,0.015,0.0361204,100.0,100.0,90.12168933428777,98.02433786685755,b0e7eddb6280bfcdc0ce87ff6069583c40b176d01de9c59721c16e4a25ddaa12,8c75334566a6354de8c55ac1645d03838267b467477f42d0ca4a781c512ec191,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais estados brasileiros têm alertas oficiais vigentes de onda de calor e até quando? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I061,clima,xai.grok-4.6,200,True,False,1084,60.635,71105,28288,3226,2724,8,0.085634,0.014144,0.019356,0.04,0.159134,22.698103485113176,100.0,14.53450977158407,44.2559536968734,b0e7eddb6280bfcdc0ce87ff6069583c40b176d01de9c59721c16e4a25ddaa12,8c75334566a6354de8c55ac1645d03838267b467477f42d0ca4a781c512ec191,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais estados brasileiros têm alertas oficiais vigentes de onda de calor e até quando? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I061,clima,xai.grok-4.7,200,True,False,1324,30.07,199354,126848,2161,1324,14,0.145012,0.063424,0.012966,0.07,0.291402,12.395385069422996,100.0,29.308280678417027,42.059348670394904,b0e7eddb6280bfcdc0ce87ff6069583c40b176d01de9c59721c16e4a25ddaa12,8c75334566a6354de8c55ac1645d03838267b467477f42d0ca4a781c512ec191,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais estados brasileiros têm alertas oficiais vigentes de onda de calor e até quando? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I061,clima,xai.grok-4.20-0309-non-reasoning,200,True,False,1702,8.813,39606,15488,665,0,6,0.0301475,0.0030976,0.0016625,0.03,0.0649076,55.64895328127985,100.0,100.0,77.82447664063993,b0e7eddb6280bfcdc0ce87ff6069583c40b176d01de9c59721c16e4a25ddaa12,8c75334566a6354de8c55ac1645d03838267b467477f42d0ca4a781c512ec191,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais estados brasileiros têm alertas oficiais vigentes de onda de calor e até quando? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I061,clima,xai.grok-4.20-0309-reasoning,200,True,False,2262,39.62,49582,18176,2800,1938,6,0.0392575,0.0036352,0.007,0.03,0.0798927,45.211139440774936,100.0,22.243816254416963,57.05433297127086,b0e7eddb6280bfcdc0ce87ff6069583c40b176d01de9c59721c16e4a25ddaa12,8c75334566a6354de8c55ac1645d03838267b467477f42d0ca4a781c512ec191,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais estados brasileiros têm alertas oficiais vigentes de onda de calor e até quando? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I061,clima,xai.grok-4.20-non-reasoning,200,True,False,2337,13.476,67038,41088,966,0,8,0.0324375,0.0082176,0.002415,0.04,0.0830701,43.481830405886114,100.0,65.39774413772633,64.82046403048832,b0e7eddb6280bfcdc0ce87ff6069583c40b176d01de9c59721c16e4a25ddaa12,8c75334566a6354de8c55ac1645d03838267b467477f42d0ca4a781c512ec191,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais estados brasileiros têm alertas oficiais vigentes de onda de calor e até quando? Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I091,entretenimento,xai.grok-4.3,200,True,False,1678,15.541,56253,23168,1678,1064,5,0.04135625,0.0046336,0.004195,0.025,0.07518485,80.62668210417391,100.0,74.33241104176051,85.17982326043905,2c0f83d9cb7ae97778646aedc15e690380621be6f1c0816d45c4179628b747e2,13213d7230ac535ba62b00e7ffc6ada547afb4239e34bedc9a8cee6e23e0c824,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais álbuns de artistas brasileiros foram lançados nos últimos sete dias? Informe artista, título e data. Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I091,entretenimento,xai.grok-4.6,200,True,False,1310,61.08,83447,29952,3381,2748,8,0.10699,0.014976,0.020286,0.04,0.182252,33.261116476088056,100.0,18.91290111329404,50.41313846070283,2c0f83d9cb7ae97778646aedc15e690380621be6f1c0816d45c4179628b747e2,13213d7230ac535ba62b00e7ffc6ada547afb4239e34bedc9a8cee6e23e0c824,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais álbuns de artistas brasileiros foram lançados nos últimos sete dias? Informe artista, título e data. Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I091,entretenimento,xai.grok-4.7,200,True,False,1952,63.367,188652,119424,5074,4140,12,0.138456,0.059712,0.030444,0.06,0.288612,21.003648496943995,100.0,18.23030915145107,44.14788607876221,2c0f83d9cb7ae97778646aedc15e690380621be6f1c0816d45c4179628b747e2,13213d7230ac535ba62b00e7ffc6ada547afb4239e34bedc9a8cee6e23e0c824,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais álbuns de artistas brasileiros foram lançados nos últimos sete dias? Informe artista, título e data. Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I091,entretenimento,xai.grok-4.20-0309-non-reasoning,200,True,False,2621,14.072,45488,19328,1161,0,8,0.0327,0.0038656,0.0029025,0.04,0.0794681,76.28098570369745,100.0,82.09209778283116,84.55891240841495,2c0f83d9cb7ae97778646aedc15e690380621be6f1c0816d45c4179628b747e2,13213d7230ac535ba62b00e7ffc6ada547afb4239e34bedc9a8cee6e23e0c824,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais álbuns de artistas brasileiros foram lançados nos últimos sete dias? Informe artista, título e data. Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I091,entretenimento,xai.grok-4.20-0309-reasoning,200,True,False,2782,37.759,43113,20096,3282,2258,6,0.02877125,0.0040192,0.008205,0.03,0.07099545,85.38441548014697,100.0,30.594030562250058,78.8110138525235,2c0f83d9cb7ae97778646aedc15e690380621be6f1c0816d45c4179628b747e2,13213d7230ac535ba62b00e7ffc6ada547afb4239e34bedc9a8cee6e23e0c824,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais álbuns de artistas brasileiros foram lançados nos últimos sete dias? Informe artista, título e data. Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I091,entretenimento,xai.grok-4.20-non-reasoning,200,True,False,1725,11.552,56770,26496,875,0,8,0.0378425,0.0052992,0.0021875,0.04,0.0853292,71.04139028609198,100.0,100.0,85.520695143046,2c0f83d9cb7ae97778646aedc15e690380621be6f1c0816d45c4179628b747e2,13213d7230ac535ba62b00e7ffc6ada547afb4239e34bedc9a8cee6e23e0c824,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais álbuns de artistas brasileiros foram lançados nos últimos sete dias? Informe artista, título e data. Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
I091,entretenimento,xai.grok-4.20-reasoning,200,True,False,1910,33.081,30199,14464,3223,2414,6,0.01966875,0.0028928,0.0080575,0.03,0.06061905,100.0,100.0,34.92034702699435,86.98406940539887,2c0f83d9cb7ae97778646aedc15e690380621be6f1c0816d45c4179628b747e2,13213d7230ac535ba62b00e7ffc6ada547afb4239e34bedc9a8cee6e23e0c824,"Data de referência: 2026-10-15; fuso America/Sao_Paulo. Quais álbuns de artistas brasileiros foram lançados nos últimos sete dias? Informe artista, título e data. Pesquise na web para verificar a informação, cite URLs e datas das fontes e informe se o dado não estiver disponível ou confirmado. Não substitua informação atual por conhecimento de memória."
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"summary.json": "9a69140b2d39af301e9a119fef9912c5f31979315618eae95a5ab64e4c15360b",
|
||||||
|
"measured-usage.json": "5282c1859b63a1ae18b6162ec9b1c378f4971af8a431edfce16cc223907b18f8",
|
||||||
|
"interactions.csv": "6b885c47f3822be6dc6fb7729c043b0bf1fb9d4288fd7a81b8ff864c44b5fe90",
|
||||||
|
"REPORT.md": "8ed7d19223d3b4699701b37d4a7b433620d9628987d4f687e72aeb93d05721cd"
|
||||||
|
}
|
||||||
@@ -0,0 +1,635 @@
|
|||||||
|
{
|
||||||
|
"retrospective": true,
|
||||||
|
"run_id": "screening-2026-10-15-v1",
|
||||||
|
"reference_date": "2026-10-15",
|
||||||
|
"method": "12 prompts idênticos x sete IDs; três por tema; critérios congelados antes das novas inferências; recuperações de rejeições compartilhadas de infraestrutura documentadas à parte",
|
||||||
|
"http_attempts": 91,
|
||||||
|
"infrastructure_rejections": 7,
|
||||||
|
"unknown_cost_infrastructure_attempts": 7,
|
||||||
|
"manifest": {
|
||||||
|
"dataset_sha256": "5487cc3c1a0458d8064ceced8b5bf6610905fad30f5deaa581c063566cb7cfad",
|
||||||
|
"prices_sha256": "8876c4caaf82a4541fe0f79626b778dd7f0980209655c4d679bb6197a7012257",
|
||||||
|
"rules_sha256": "26d3b045b29940d457137d7edd117c3fad022c01f85ee669d7b564cbfa5d9001",
|
||||||
|
"study_sha256": "161ff2f534695771e38ffa3d7cb971845c4b9cc143006d8b8caaaec78477e0c3",
|
||||||
|
"system_sha256": "8a6fa58dbc2539af95cf138848caf4ac704abb6ee738ff197df2859f19788b42",
|
||||||
|
"protocol_sha256": "91f14676799ed4c0bb802bb8fa61369613a905aa0680d29fee028009cb14d61f",
|
||||||
|
"models": [
|
||||||
|
"xai.grok-4.20-0309-non-reasoning",
|
||||||
|
"xai.grok-4.20-0309-reasoning",
|
||||||
|
"xai.grok-4.20-non-reasoning",
|
||||||
|
"xai.grok-4.20-reasoning",
|
||||||
|
"xai.grok-4.3",
|
||||||
|
"xai.grok-4.6",
|
||||||
|
"xai.grok-4.7"
|
||||||
|
],
|
||||||
|
"reference_date": "2026-10-15",
|
||||||
|
"concurrency": 2,
|
||||||
|
"max_output_tokens": 2400,
|
||||||
|
"timeout_seconds": 150,
|
||||||
|
"retries": 0,
|
||||||
|
"region": "us-chicago-1",
|
||||||
|
"endpoint": "/v1/responses",
|
||||||
|
"retrospective": true
|
||||||
|
},
|
||||||
|
"rules": {
|
||||||
|
"version": "v1",
|
||||||
|
"retrospective": true,
|
||||||
|
"weights": {
|
||||||
|
"cost": 0.5,
|
||||||
|
"search_reliability": 0.3,
|
||||||
|
"latency": 0.2
|
||||||
|
},
|
||||||
|
"category_weight": 0.25,
|
||||||
|
"cutoff_score": 70,
|
||||||
|
"minimum_confirmed_searches": 11,
|
||||||
|
"required_known_costs": 12,
|
||||||
|
"primary_score": "Por intenção: 100*(0.50*menor_custo/custo_modelo + 0.30*busca_confiável + 0.20*menor_latência/latência_modelo). Eficiência recebe zero quando a busca não é confiável. Média de três intenções por tema; cada tema pesa 25%.",
|
||||||
|
"reliability": "HTTP 200, custo conhecido, busca completed com fontes e citações, texto final não vazio e resposta não truncada; não é nota de correção factual.",
|
||||||
|
"normalization": "Melhor custo e melhor latência entre respostas confiáveis da mesma intenção; falhas não entram como melhores.",
|
||||||
|
"aliases": "Notas dos IDs da mesma configuração são promediadas; ambos devem satisfazer os gates. Selecionar duas configurações distintas com nota >=70, por ordem de nota. Não forçar dois aprovados.",
|
||||||
|
"ties": [
|
||||||
|
"menor custo médio por interação",
|
||||||
|
"menor mediana de latência",
|
||||||
|
"nome da configuração em ordem alfabética"
|
||||||
|
],
|
||||||
|
"sampling": "12 consultas: três por tema; seleção usa apenas hashes dos prompts, sem acesso aos resultados financeiros na função de seleção.",
|
||||||
|
"uncertainty": "Bootstrap estratificado e pareado de 2000 reamostragens, seed 20261015; intervalo descritivo de variabilidade de casos, não confiança populacional nem avaliação factual."
|
||||||
|
},
|
||||||
|
"total": {
|
||||||
|
"interactions": 84,
|
||||||
|
"known_costs": 84,
|
||||||
|
"reliable_searches": 84,
|
||||||
|
"total_usd": "9.45816885",
|
||||||
|
"mean_usd": "0.1125972482142857142857142857",
|
||||||
|
"input_usd": "4.57596475",
|
||||||
|
"cached_input_usd": "1.2390016",
|
||||||
|
"output_usd": "0.9532025",
|
||||||
|
"web_search_usd": "2.690",
|
||||||
|
"input_tokens": 5097015,
|
||||||
|
"cached_input_tokens": 2469760,
|
||||||
|
"output_tokens": 195286,
|
||||||
|
"reasoning_tokens": 132001,
|
||||||
|
"web_search_calls": 538,
|
||||||
|
"mean_total_tokens": "63003.58333333333333333333333",
|
||||||
|
"median_seconds": 26.227
|
||||||
|
},
|
||||||
|
"by_model": {
|
||||||
|
"xai.grok-4.20-0309-non-reasoning": {
|
||||||
|
"model": "xai.grok-4.20-0309-non-reasoning",
|
||||||
|
"configuration": "grok-4.20-non-reasoning",
|
||||||
|
"score": 74.01065453292512,
|
||||||
|
"by_category": {
|
||||||
|
"culinaria": 69.21498503484565,
|
||||||
|
"esportes": 72.89993143074679,
|
||||||
|
"clima": 76.60157508419303,
|
||||||
|
"entretenimento": 77.326126581915
|
||||||
|
},
|
||||||
|
"operational_gate_passed": true,
|
||||||
|
"passed": true,
|
||||||
|
"interactions": 12,
|
||||||
|
"known_costs": 12,
|
||||||
|
"reliable_searches": 12,
|
||||||
|
"total_usd": "0.87450885",
|
||||||
|
"mean_usd": "0.0728757375",
|
||||||
|
"input_usd": "0.38518125",
|
||||||
|
"cached_input_usd": "0.0536576",
|
||||||
|
"output_usd": "0.0306700",
|
||||||
|
"web_search_usd": "0.405",
|
||||||
|
"input_tokens": 576433,
|
||||||
|
"cached_input_tokens": 268288,
|
||||||
|
"output_tokens": 12268,
|
||||||
|
"reasoning_tokens": 0,
|
||||||
|
"web_search_calls": 81,
|
||||||
|
"mean_total_tokens": "49058.41666666666666666666667",
|
||||||
|
"median_seconds": 12.6395,
|
||||||
|
"case_bootstrap_95_range": [
|
||||||
|
70.93604846765469,
|
||||||
|
77.02627691399306
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"xai.grok-4.20-0309-reasoning": {
|
||||||
|
"model": "xai.grok-4.20-0309-reasoning",
|
||||||
|
"configuration": "grok-4.20-reasoning",
|
||||||
|
"score": 67.926059113904,
|
||||||
|
"by_category": {
|
||||||
|
"culinaria": 66.939300973136,
|
||||||
|
"esportes": 68.27832931596575,
|
||||||
|
"clima": 63.521998133167465,
|
||||||
|
"entretenimento": 72.96460803334682
|
||||||
|
},
|
||||||
|
"operational_gate_passed": true,
|
||||||
|
"passed": false,
|
||||||
|
"interactions": 12,
|
||||||
|
"known_costs": 12,
|
||||||
|
"reliable_searches": 12,
|
||||||
|
"total_usd": "0.79318440",
|
||||||
|
"mean_usd": "0.06609870",
|
||||||
|
"input_usd": "0.37172750",
|
||||||
|
"cached_input_usd": "0.0377344",
|
||||||
|
"output_usd": "0.0837225",
|
||||||
|
"web_search_usd": "0.300",
|
||||||
|
"input_tokens": 486054,
|
||||||
|
"cached_input_tokens": 188672,
|
||||||
|
"output_tokens": 33489,
|
||||||
|
"reasoning_tokens": 24547,
|
||||||
|
"web_search_calls": 60,
|
||||||
|
"mean_total_tokens": "43295.25",
|
||||||
|
"median_seconds": 33.048500000000004,
|
||||||
|
"case_bootstrap_95_range": [
|
||||||
|
63.8727041625088,
|
||||||
|
71.66759604432121
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"xai.grok-4.20-non-reasoning": {
|
||||||
|
"model": "xai.grok-4.20-non-reasoning",
|
||||||
|
"configuration": "grok-4.20-non-reasoning",
|
||||||
|
"score": 72.76146105075577,
|
||||||
|
"by_category": {
|
||||||
|
"culinaria": 67.86373397720189,
|
||||||
|
"esportes": 73.92056055882125,
|
||||||
|
"clima": 67.80423848945831,
|
||||||
|
"entretenimento": 81.45731117754164
|
||||||
|
},
|
||||||
|
"operational_gate_passed": true,
|
||||||
|
"passed": true,
|
||||||
|
"interactions": 12,
|
||||||
|
"known_costs": 12,
|
||||||
|
"reliable_searches": 12,
|
||||||
|
"total_usd": "0.90652565",
|
||||||
|
"mean_usd": "0.07554380416666666666666666667",
|
||||||
|
"input_usd": "0.43264375",
|
||||||
|
"cached_input_usd": "0.0505344",
|
||||||
|
"output_usd": "0.0283475",
|
||||||
|
"web_search_usd": "0.395",
|
||||||
|
"input_tokens": 598787,
|
||||||
|
"cached_input_tokens": 252672,
|
||||||
|
"output_tokens": 11339,
|
||||||
|
"reasoning_tokens": 0,
|
||||||
|
"web_search_calls": 79,
|
||||||
|
"mean_total_tokens": "50843.83333333333333333333333",
|
||||||
|
"median_seconds": 12.383,
|
||||||
|
"case_bootstrap_95_range": [
|
||||||
|
69.96543401558118,
|
||||||
|
76.11276600401955
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"xai.grok-4.20-reasoning": {
|
||||||
|
"model": "xai.grok-4.20-reasoning",
|
||||||
|
"configuration": "grok-4.20-reasoning",
|
||||||
|
"score": 72.23809313842376,
|
||||||
|
"by_category": {
|
||||||
|
"culinaria": 63.908826140174874,
|
||||||
|
"esportes": 68.14352956483388,
|
||||||
|
"clima": 69.00759929665293,
|
||||||
|
"entretenimento": 87.89241755203336
|
||||||
|
},
|
||||||
|
"operational_gate_passed": true,
|
||||||
|
"passed": true,
|
||||||
|
"interactions": 12,
|
||||||
|
"known_costs": 12,
|
||||||
|
"reliable_searches": 12,
|
||||||
|
"total_usd": "0.72970235",
|
||||||
|
"mean_usd": "0.06080852916666666666666666667",
|
||||||
|
"input_usd": "0.34650875",
|
||||||
|
"cached_input_usd": "0.0276736",
|
||||||
|
"output_usd": "0.0755200",
|
||||||
|
"web_search_usd": "0.280",
|
||||||
|
"input_tokens": 415575,
|
||||||
|
"cached_input_tokens": 138368,
|
||||||
|
"output_tokens": 30208,
|
||||||
|
"reasoning_tokens": 22140,
|
||||||
|
"web_search_calls": 56,
|
||||||
|
"mean_total_tokens": "37148.58333333333333333333333",
|
||||||
|
"median_seconds": 29.1545,
|
||||||
|
"case_bootstrap_95_range": [
|
||||||
|
69.52862471644511,
|
||||||
|
75.30139296340401
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"xai.grok-4.3": {
|
||||||
|
"model": "xai.grok-4.3",
|
||||||
|
"configuration": "grok-4.3",
|
||||||
|
"score": 97.14903660620999,
|
||||||
|
"by_category": {
|
||||||
|
"culinaria": 100.0,
|
||||||
|
"esportes": 99.2752401820327,
|
||||||
|
"clima": 98.54118555711648,
|
||||||
|
"entretenimento": 90.7797206856908
|
||||||
|
},
|
||||||
|
"operational_gate_passed": true,
|
||||||
|
"passed": true,
|
||||||
|
"interactions": 12,
|
||||||
|
"known_costs": 12,
|
||||||
|
"reliable_searches": 12,
|
||||||
|
"total_usd": "0.50883360",
|
||||||
|
"mean_usd": "0.04240280",
|
||||||
|
"input_usd": "0.27343750",
|
||||||
|
"cached_input_usd": "0.0065536",
|
||||||
|
"output_usd": "0.0338425",
|
||||||
|
"web_search_usd": "0.195",
|
||||||
|
"input_tokens": 251518,
|
||||||
|
"cached_input_tokens": 32768,
|
||||||
|
"output_tokens": 13537,
|
||||||
|
"reasoning_tokens": 8045,
|
||||||
|
"web_search_calls": 39,
|
||||||
|
"mean_total_tokens": "22087.91666666666666666666667",
|
||||||
|
"median_seconds": 11.370000000000001,
|
||||||
|
"case_bootstrap_95_range": [
|
||||||
|
95.68117500841532,
|
||||||
|
99.30834306882593
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"xai.grok-4.6": {
|
||||||
|
"model": "xai.grok-4.6",
|
||||||
|
"configuration": "grok-4.6",
|
||||||
|
"score": 45.50858471800458,
|
||||||
|
"by_category": {
|
||||||
|
"culinaria": 43.367917278455145,
|
||||||
|
"esportes": 47.432918850592024,
|
||||||
|
"clima": 44.64205288452623,
|
||||||
|
"entretenimento": 46.59144985844491
|
||||||
|
},
|
||||||
|
"operational_gate_passed": true,
|
||||||
|
"passed": false,
|
||||||
|
"interactions": 12,
|
||||||
|
"known_costs": 12,
|
||||||
|
"reliable_searches": 12,
|
||||||
|
"total_usd": "2.007070",
|
||||||
|
"mean_usd": "0.1672558333333333333333333333",
|
||||||
|
"input_usd": "1.049170",
|
||||||
|
"cached_input_usd": "0.223872",
|
||||||
|
"output_usd": "0.254028",
|
||||||
|
"web_search_usd": "0.480",
|
||||||
|
"input_tokens": 972329,
|
||||||
|
"cached_input_tokens": 447744,
|
||||||
|
"output_tokens": 42338,
|
||||||
|
"reasoning_tokens": 35045,
|
||||||
|
"web_search_calls": 96,
|
||||||
|
"mean_total_tokens": "84555.58333333333333333333333",
|
||||||
|
"median_seconds": 65.825,
|
||||||
|
"case_bootstrap_95_range": [
|
||||||
|
43.91545712499182,
|
||||||
|
47.38907940711982
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"xai.grok-4.7": {
|
||||||
|
"model": "xai.grok-4.7",
|
||||||
|
"configuration": "grok-4.7",
|
||||||
|
"score": 43.344240404465566,
|
||||||
|
"by_category": {
|
||||||
|
"culinaria": 43.532006898649726,
|
||||||
|
"esportes": 45.84946646230471,
|
||||||
|
"clima": 41.33823470020622,
|
||||||
|
"entretenimento": 42.657253556701605
|
||||||
|
},
|
||||||
|
"operational_gate_passed": true,
|
||||||
|
"passed": false,
|
||||||
|
"interactions": 12,
|
||||||
|
"known_costs": 12,
|
||||||
|
"reliable_searches": 12,
|
||||||
|
"total_usd": "3.638344",
|
||||||
|
"mean_usd": "0.3031953333333333333333333333",
|
||||||
|
"input_usd": "1.717296",
|
||||||
|
"cached_input_usd": "0.838976",
|
||||||
|
"output_usd": "0.447072",
|
||||||
|
"web_search_usd": "0.635",
|
||||||
|
"input_tokens": 1796319,
|
||||||
|
"cached_input_tokens": 1141248,
|
||||||
|
"output_tokens": 52107,
|
||||||
|
"reasoning_tokens": 42224,
|
||||||
|
"web_search_calls": 127,
|
||||||
|
"mean_total_tokens": "154035.5",
|
||||||
|
"median_seconds": 50.155,
|
||||||
|
"case_bootstrap_95_range": [
|
||||||
|
40.6144424835464,
|
||||||
|
46.40546441452118
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"configuration": "grok-4.3",
|
||||||
|
"members": [
|
||||||
|
"xai.grok-4.3"
|
||||||
|
],
|
||||||
|
"score": 97.14903660620999,
|
||||||
|
"operational_gate_passed": true,
|
||||||
|
"passed": true,
|
||||||
|
"interactions": 12,
|
||||||
|
"known_costs": 12,
|
||||||
|
"reliable_searches": 12,
|
||||||
|
"total_usd": "0.50883360",
|
||||||
|
"mean_usd": "0.04240280",
|
||||||
|
"input_usd": "0.27343750",
|
||||||
|
"cached_input_usd": "0.0065536",
|
||||||
|
"output_usd": "0.0338425",
|
||||||
|
"web_search_usd": "0.195",
|
||||||
|
"input_tokens": 251518,
|
||||||
|
"cached_input_tokens": 32768,
|
||||||
|
"output_tokens": 13537,
|
||||||
|
"reasoning_tokens": 8045,
|
||||||
|
"web_search_calls": 39,
|
||||||
|
"mean_total_tokens": "22087.91666666666666666666667",
|
||||||
|
"median_seconds": 11.370000000000001,
|
||||||
|
"case_bootstrap_95_range": [
|
||||||
|
95.68117500841532,
|
||||||
|
99.30834306882593
|
||||||
|
],
|
||||||
|
"bootstrap_top2_frequency": 1.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"configuration": "grok-4.20-non-reasoning",
|
||||||
|
"members": [
|
||||||
|
"xai.grok-4.20-0309-non-reasoning",
|
||||||
|
"xai.grok-4.20-non-reasoning"
|
||||||
|
],
|
||||||
|
"score": 73.38605779184044,
|
||||||
|
"operational_gate_passed": true,
|
||||||
|
"passed": true,
|
||||||
|
"interactions": 24,
|
||||||
|
"known_costs": 24,
|
||||||
|
"reliable_searches": 24,
|
||||||
|
"total_usd": "1.78103450",
|
||||||
|
"mean_usd": "0.07420977083333333333333333333",
|
||||||
|
"input_usd": "0.81782500",
|
||||||
|
"cached_input_usd": "0.1041920",
|
||||||
|
"output_usd": "0.0590175",
|
||||||
|
"web_search_usd": "0.800",
|
||||||
|
"input_tokens": 1175220,
|
||||||
|
"cached_input_tokens": 520960,
|
||||||
|
"output_tokens": 23607,
|
||||||
|
"reasoning_tokens": 0,
|
||||||
|
"web_search_calls": 160,
|
||||||
|
"mean_total_tokens": "49951.125",
|
||||||
|
"median_seconds": 12.6395,
|
||||||
|
"case_bootstrap_95_range": [
|
||||||
|
70.7982235073648,
|
||||||
|
76.06598395249495
|
||||||
|
],
|
||||||
|
"bootstrap_top2_frequency": 0.9975
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"configuration": "grok-4.20-reasoning",
|
||||||
|
"members": [
|
||||||
|
"xai.grok-4.20-0309-reasoning",
|
||||||
|
"xai.grok-4.20-reasoning"
|
||||||
|
],
|
||||||
|
"score": 70.08207612616388,
|
||||||
|
"operational_gate_passed": true,
|
||||||
|
"passed": true,
|
||||||
|
"interactions": 24,
|
||||||
|
"known_costs": 24,
|
||||||
|
"reliable_searches": 24,
|
||||||
|
"total_usd": "1.52288675",
|
||||||
|
"mean_usd": "0.06345361458333333333333333333",
|
||||||
|
"input_usd": "0.71823625",
|
||||||
|
"cached_input_usd": "0.0654080",
|
||||||
|
"output_usd": "0.1592425",
|
||||||
|
"web_search_usd": "0.580",
|
||||||
|
"input_tokens": 901629,
|
||||||
|
"cached_input_tokens": 327040,
|
||||||
|
"output_tokens": 63697,
|
||||||
|
"reasoning_tokens": 46687,
|
||||||
|
"web_search_calls": 116,
|
||||||
|
"mean_total_tokens": "40221.91666666666666666666667",
|
||||||
|
"median_seconds": 29.606,
|
||||||
|
"case_bootstrap_95_range": [
|
||||||
|
67.02618846363141,
|
||||||
|
73.23189119873403
|
||||||
|
],
|
||||||
|
"bootstrap_top2_frequency": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"configuration": "grok-4.6",
|
||||||
|
"members": [
|
||||||
|
"xai.grok-4.6"
|
||||||
|
],
|
||||||
|
"score": 45.50858471800458,
|
||||||
|
"operational_gate_passed": true,
|
||||||
|
"passed": false,
|
||||||
|
"interactions": 12,
|
||||||
|
"known_costs": 12,
|
||||||
|
"reliable_searches": 12,
|
||||||
|
"total_usd": "2.007070",
|
||||||
|
"mean_usd": "0.1672558333333333333333333333",
|
||||||
|
"input_usd": "1.049170",
|
||||||
|
"cached_input_usd": "0.223872",
|
||||||
|
"output_usd": "0.254028",
|
||||||
|
"web_search_usd": "0.480",
|
||||||
|
"input_tokens": 972329,
|
||||||
|
"cached_input_tokens": 447744,
|
||||||
|
"output_tokens": 42338,
|
||||||
|
"reasoning_tokens": 35045,
|
||||||
|
"web_search_calls": 96,
|
||||||
|
"mean_total_tokens": "84555.58333333333333333333333",
|
||||||
|
"median_seconds": 65.825,
|
||||||
|
"case_bootstrap_95_range": [
|
||||||
|
43.91545712499182,
|
||||||
|
47.38907940711982
|
||||||
|
],
|
||||||
|
"bootstrap_top2_frequency": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"configuration": "grok-4.7",
|
||||||
|
"members": [
|
||||||
|
"xai.grok-4.7"
|
||||||
|
],
|
||||||
|
"score": 43.344240404465566,
|
||||||
|
"operational_gate_passed": true,
|
||||||
|
"passed": false,
|
||||||
|
"interactions": 12,
|
||||||
|
"known_costs": 12,
|
||||||
|
"reliable_searches": 12,
|
||||||
|
"total_usd": "3.638344",
|
||||||
|
"mean_usd": "0.3031953333333333333333333333",
|
||||||
|
"input_usd": "1.717296",
|
||||||
|
"cached_input_usd": "0.838976",
|
||||||
|
"output_usd": "0.447072",
|
||||||
|
"web_search_usd": "0.635",
|
||||||
|
"input_tokens": 1796319,
|
||||||
|
"cached_input_tokens": 1141248,
|
||||||
|
"output_tokens": 52107,
|
||||||
|
"reasoning_tokens": 42224,
|
||||||
|
"web_search_calls": 127,
|
||||||
|
"mean_total_tokens": "154035.5",
|
||||||
|
"median_seconds": 50.155,
|
||||||
|
"case_bootstrap_95_range": [
|
||||||
|
40.6144424835464,
|
||||||
|
46.40546441452118
|
||||||
|
],
|
||||||
|
"bootstrap_top2_frequency": 0.0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"selected_configurations": [
|
||||||
|
"grok-4.3",
|
||||||
|
"grok-4.20-non-reasoning"
|
||||||
|
],
|
||||||
|
"original_selection_confirmed": true,
|
||||||
|
"cache_discount_sensitivity": {
|
||||||
|
"secondary": true,
|
||||||
|
"method": "Mesmos tokens e latências observados; entrada em cache reprecificada como entrada normal, sem novas chamadas. Não simula execução fisicamente sem cache.",
|
||||||
|
"selected_configurations": [
|
||||||
|
"grok-4.3"
|
||||||
|
],
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"configuration": "grok-4.3",
|
||||||
|
"members": [
|
||||||
|
"xai.grok-4.3"
|
||||||
|
],
|
||||||
|
"score": 97.04049195066246,
|
||||||
|
"operational_gate_passed": true,
|
||||||
|
"passed": true,
|
||||||
|
"interactions": 12,
|
||||||
|
"known_costs": 12,
|
||||||
|
"reliable_searches": 12,
|
||||||
|
"total_usd": "0.54324000",
|
||||||
|
"mean_usd": "0.04527000",
|
||||||
|
"input_usd": "0.31439750",
|
||||||
|
"cached_input_usd": "0",
|
||||||
|
"output_usd": "0.0338425",
|
||||||
|
"web_search_usd": "0.195",
|
||||||
|
"input_tokens": 251518,
|
||||||
|
"cached_input_tokens": 32768,
|
||||||
|
"output_tokens": 13537,
|
||||||
|
"reasoning_tokens": 8045,
|
||||||
|
"web_search_calls": 39,
|
||||||
|
"mean_total_tokens": "22087.91666666666666666666667",
|
||||||
|
"median_seconds": 11.370000000000001,
|
||||||
|
"case_bootstrap_95_range": [
|
||||||
|
95.20345769097861,
|
||||||
|
99.30834306882593
|
||||||
|
],
|
||||||
|
"bootstrap_top2_frequency": 1.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"configuration": "grok-4.20-non-reasoning",
|
||||||
|
"members": [
|
||||||
|
"xai.grok-4.20-0309-non-reasoning",
|
||||||
|
"xai.grok-4.20-non-reasoning"
|
||||||
|
],
|
||||||
|
"score": 67.93084405713441,
|
||||||
|
"operational_gate_passed": true,
|
||||||
|
"passed": false,
|
||||||
|
"interactions": 24,
|
||||||
|
"known_costs": 24,
|
||||||
|
"reliable_searches": 24,
|
||||||
|
"total_usd": "2.32804250",
|
||||||
|
"mean_usd": "0.09700177083333333333333333333",
|
||||||
|
"input_usd": "1.46902500",
|
||||||
|
"cached_input_usd": "0",
|
||||||
|
"output_usd": "0.0590175",
|
||||||
|
"web_search_usd": "0.800",
|
||||||
|
"input_tokens": 1175220,
|
||||||
|
"cached_input_tokens": 520960,
|
||||||
|
"output_tokens": 23607,
|
||||||
|
"reasoning_tokens": 0,
|
||||||
|
"web_search_calls": 160,
|
||||||
|
"mean_total_tokens": "49951.125",
|
||||||
|
"median_seconds": 12.6395,
|
||||||
|
"case_bootstrap_95_range": [
|
||||||
|
65.13208173487911,
|
||||||
|
70.85715751322269
|
||||||
|
],
|
||||||
|
"bootstrap_top2_frequency": 0.0905
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"configuration": "grok-4.20-reasoning",
|
||||||
|
"members": [
|
||||||
|
"xai.grok-4.20-0309-reasoning",
|
||||||
|
"xai.grok-4.20-reasoning"
|
||||||
|
],
|
||||||
|
"score": 65.5062227964728,
|
||||||
|
"operational_gate_passed": true,
|
||||||
|
"passed": false,
|
||||||
|
"interactions": 24,
|
||||||
|
"known_costs": 24,
|
||||||
|
"reliable_searches": 24,
|
||||||
|
"total_usd": "1.86627875",
|
||||||
|
"mean_usd": "0.07776161458333333333333333333",
|
||||||
|
"input_usd": "1.12703625",
|
||||||
|
"cached_input_usd": "0",
|
||||||
|
"output_usd": "0.1592425",
|
||||||
|
"web_search_usd": "0.580",
|
||||||
|
"input_tokens": 901629,
|
||||||
|
"cached_input_tokens": 327040,
|
||||||
|
"output_tokens": 63697,
|
||||||
|
"reasoning_tokens": 46687,
|
||||||
|
"web_search_calls": 116,
|
||||||
|
"mean_total_tokens": "40221.91666666666666666666667",
|
||||||
|
"median_seconds": 29.606,
|
||||||
|
"case_bootstrap_95_range": [
|
||||||
|
63.234031445180484,
|
||||||
|
67.79390479015198
|
||||||
|
],
|
||||||
|
"bootstrap_top2_frequency": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"configuration": "grok-4.6",
|
||||||
|
"members": [
|
||||||
|
"xai.grok-4.6"
|
||||||
|
],
|
||||||
|
"score": 43.10385037403032,
|
||||||
|
"operational_gate_passed": true,
|
||||||
|
"passed": false,
|
||||||
|
"interactions": 12,
|
||||||
|
"known_costs": 12,
|
||||||
|
"reliable_searches": 12,
|
||||||
|
"total_usd": "2.678686",
|
||||||
|
"mean_usd": "0.2232238333333333333333333333",
|
||||||
|
"input_usd": "1.944658",
|
||||||
|
"cached_input_usd": "0",
|
||||||
|
"output_usd": "0.254028",
|
||||||
|
"web_search_usd": "0.480",
|
||||||
|
"input_tokens": 972329,
|
||||||
|
"cached_input_tokens": 447744,
|
||||||
|
"output_tokens": 42338,
|
||||||
|
"reasoning_tokens": 35045,
|
||||||
|
"web_search_calls": 96,
|
||||||
|
"mean_total_tokens": "84555.58333333333333333333333",
|
||||||
|
"median_seconds": 65.825,
|
||||||
|
"case_bootstrap_95_range": [
|
||||||
|
41.369607075039134,
|
||||||
|
45.069965045507836
|
||||||
|
],
|
||||||
|
"bootstrap_top2_frequency": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"configuration": "grok-4.7",
|
||||||
|
"members": [
|
||||||
|
"xai.grok-4.7"
|
||||||
|
],
|
||||||
|
"score": 40.876305988100796,
|
||||||
|
"operational_gate_passed": true,
|
||||||
|
"passed": false,
|
||||||
|
"interactions": 12,
|
||||||
|
"known_costs": 12,
|
||||||
|
"reliable_searches": 12,
|
||||||
|
"total_usd": "6.155272",
|
||||||
|
"mean_usd": "0.5129393333333333333333333333",
|
||||||
|
"input_usd": "5.073200",
|
||||||
|
"cached_input_usd": "0",
|
||||||
|
"output_usd": "0.447072",
|
||||||
|
"web_search_usd": "0.635",
|
||||||
|
"input_tokens": 1796319,
|
||||||
|
"cached_input_tokens": 1141248,
|
||||||
|
"output_tokens": 52107,
|
||||||
|
"reasoning_tokens": 42224,
|
||||||
|
"web_search_calls": 127,
|
||||||
|
"mean_total_tokens": "154035.5",
|
||||||
|
"median_seconds": 50.155,
|
||||||
|
"case_bootstrap_95_range": [
|
||||||
|
38.39072454922838,
|
||||||
|
43.65534628382452
|
||||||
|
],
|
||||||
|
"bootstrap_top2_frequency": 0.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"original_selection": [
|
||||||
|
"grok-4.3",
|
||||||
|
"grok-4.20-non-reasoning"
|
||||||
|
],
|
||||||
|
"conclusion": "A amostra confirma os dois candidatos originais segundo a regra operacional congelada.",
|
||||||
|
"limits": "Nota operacional relativa, sem pontuação factual. Auditoria retrospectiva; 12 casos não permitem inferir o resultado de 100 intenções nos demais modelos."
|
||||||
|
}
|
||||||
153
benchmarks/screening/run_screening.py
Normal file
153
benchmarks/screening/run_screening.py
Normal file
@@ -0,0 +1,153 @@
|
|||||||
|
"""Auditoria retrospectiva: 12 prompts x 7 IDs OCI; sem retry automático; dry run por padrão."""
|
||||||
|
import argparse
|
||||||
|
from concurrent.futures import ThreadPoolExecutor
|
||||||
|
from datetime import datetime, timezone
|
||||||
|
from decimal import Decimal
|
||||||
|
import fcntl
|
||||||
|
import hashlib
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
from pathlib import Path
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
from collections import Counter
|
||||||
|
|
||||||
|
ROOT=Path(__file__).resolve().parent
|
||||||
|
sys.path.insert(0,str(ROOT.parent))
|
||||||
|
import run_benchmark as core
|
||||||
|
|
||||||
|
MODELS=['xai.grok-4.20-0309-non-reasoning','xai.grok-4.20-0309-reasoning',
|
||||||
|
'xai.grok-4.20-non-reasoning','xai.grok-4.20-reasoning',
|
||||||
|
'xai.grok-4.3','xai.grok-4.6','xai.grok-4.7']
|
||||||
|
D=lambda value:Decimal(str(value))
|
||||||
|
|
||||||
|
def check_dataset(data):
|
||||||
|
assert len(data['intents'])==12
|
||||||
|
assert len({row['id'] for row in data['intents']})==12
|
||||||
|
for category in ['culinaria','esportes','clima','entretenimento']:
|
||||||
|
assert sum(row['category']==category for row in data['intents'])==3
|
||||||
|
for row in data['intents']:
|
||||||
|
assert hashlib.sha256(row['prompt'].encode()).hexdigest()==row['prompt_sha256']
|
||||||
|
|
||||||
|
def read_results(events):
|
||||||
|
rows=[]
|
||||||
|
positions={}
|
||||||
|
for event in events:
|
||||||
|
if event['event']=='finished':
|
||||||
|
row=event['result'];key=(row['intent_id'],row['model'])
|
||||||
|
assert key not in positions,'Resultado duplicado'
|
||||||
|
positions[key]=len(rows);rows.append(row)
|
||||||
|
elif event['event']=='cost_reconciled':
|
||||||
|
row=event['result'];key=(row['intent_id'],row['model'])
|
||||||
|
assert key in positions
|
||||||
|
original=rows[positions[key]]
|
||||||
|
assert original['cost'].get('total_usd') is None
|
||||||
|
assert original['usage']==row['usage'] and original['shared_payload_sha256']==row['shared_payload_sha256']
|
||||||
|
rows[positions[key]]=row
|
||||||
|
elif event['event']=='infrastructure_rejected':
|
||||||
|
key=(event['intent_id'],event['model'])
|
||||||
|
assert key in positions
|
||||||
|
original=rows[positions[key]]
|
||||||
|
assert original.get('http')==429 and original['cost'].get('total_usd') is None
|
||||||
|
rows.pop(positions[key])
|
||||||
|
positions={(r['intent_id'],r['model']):index for index,r in enumerate(rows)}
|
||||||
|
return rows
|
||||||
|
|
||||||
|
def invoke(model,intent,base,headers,prices,folder):
|
||||||
|
result=core.invoke(model,intent,base,headers,prices,folder)
|
||||||
|
raw=folder/f"{intent['id']}-{model}.json"
|
||||||
|
data=json.loads(raw.read_text()) if raw.exists() else {}
|
||||||
|
text='\n'.join(content.get('text','') for item in data.get('output',[])
|
||||||
|
if item.get('type')=='message' for content in item.get('content',[])
|
||||||
|
if content.get('type')=='output_text')
|
||||||
|
truncated=bool(data.get('incomplete_details')) or data.get('status') in ['incomplete','failed','cancelled']
|
||||||
|
result['final_answer_chars']=len(text)
|
||||||
|
result['truncated']=truncated
|
||||||
|
result['reliable_search']=bool(result.get('websearch_confirmed') and text.strip() and not truncated
|
||||||
|
and result['cost'].get('total_usd') is not None)
|
||||||
|
return result
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser=argparse.ArgumentParser()
|
||||||
|
parser.add_argument('--execute',action='store_true')
|
||||||
|
parser.add_argument('--budget-total-usd',type=Decimal)
|
||||||
|
parser.add_argument('--run-id',default='screening-2026-10-15-v1')
|
||||||
|
parser.add_argument('--intent-limit',type=int,default=12)
|
||||||
|
parser.add_argument('--cooldown-seconds',type=int,default=75)
|
||||||
|
args=parser.parse_args()
|
||||||
|
assert 1<=args.intent_limit<=12
|
||||||
|
assert args.run_id and all(c.isalnum() or c in '-_' for c in args.run_id)
|
||||||
|
dataset=json.loads((ROOT/'intents-12.json').read_text())
|
||||||
|
prices=json.loads((ROOT/'oracle-prices.json').read_text())
|
||||||
|
rules=json.loads((ROOT/'scoring-rules.json').read_text())
|
||||||
|
study=json.loads((ROOT/'study.json').read_text())
|
||||||
|
check_dataset(dataset)
|
||||||
|
assert sum(D(v) for v in rules['weights'].values())==1
|
||||||
|
assert D(rules['category_weight'])*4==1
|
||||||
|
print('12 intenções x 7 IDs = 84 respostas previstas; concorrência 2; sem retries automáticos (recuperações documentadas à parte).',flush=True)
|
||||||
|
if not args.execute:
|
||||||
|
print('Dry run: nenhuma inferência.');return
|
||||||
|
assert args.budget_total_usd and args.budget_total_usd>D(study['baseline_cost_usd'])
|
||||||
|
base=os.environ['OCI_BASE_URL'].rstrip('/')
|
||||||
|
assert base=='https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/v1'
|
||||||
|
headers={'Authorization':'Bearer '+os.environ['OCI_API_KEY'],'OpenAI-Project':os.environ['OCI_PROJECT_ID']}
|
||||||
|
folder=ROOT.parent/'runs'/args.run_id;folder.mkdir(parents=True,exist_ok=True)
|
||||||
|
lock=(folder/'run.lock').open('w');fcntl.flock(lock,fcntl.LOCK_EX|fcntl.LOCK_NB)
|
||||||
|
raw=folder/'raw';raw.mkdir(exist_ok=True)
|
||||||
|
manifest={'dataset_sha256':core.digest(dataset),'prices_sha256':core.digest(prices),
|
||||||
|
'rules_sha256':core.digest(rules),'study_sha256':core.digest(study),
|
||||||
|
'system_sha256':hashlib.sha256(core.SYSTEM.encode()).hexdigest(),
|
||||||
|
'protocol_sha256':hashlib.sha256((ROOT/'PROTOCOLO.md').read_bytes()).hexdigest(),
|
||||||
|
'models':MODELS,'reference_date':dataset['reference_date'],'concurrency':2,
|
||||||
|
'max_output_tokens':2400,'timeout_seconds':150,'retries':0,
|
||||||
|
'region':'us-chicago-1','endpoint':'/v1/responses','retrospective':True}
|
||||||
|
path=folder/'manifest.json'
|
||||||
|
if path.exists():assert json.loads(path.read_text())==manifest,'Manifesto alterado'
|
||||||
|
else:path.write_text(json.dumps(manifest,ensure_ascii=False,indent=2)+'\n')
|
||||||
|
log=folder/'events.jsonl'
|
||||||
|
events=[json.loads(line) for line in log.read_text().splitlines()] if log.exists() else []
|
||||||
|
rows=read_results(events)
|
||||||
|
done={(r['intent_id'],r['model']) for r in rows}
|
||||||
|
starts=Counter((e['intent_id'],e['model']) for e in events if e['event']=='started')
|
||||||
|
finishes=Counter((e['result']['intent_id'],e['result']['model']) for e in events if e['event']=='finished')
|
||||||
|
assert len(done)==len(rows) and starts==finishes,'Chamadas interrompidas ou duplicadas; revisar antes de continuar'
|
||||||
|
assert 0<=args.cooldown_seconds<=300
|
||||||
|
rejected=[e for e in events if e['event']=='infrastructure_rejected']
|
||||||
|
reserve=D('.50')
|
||||||
|
def used():return D(study['baseline_cost_usd'])+reserve*len(rejected)+sum(D(r['cost']['total_usd']) if r.get('cost',{}).get('total_usd') is not None else reserve for r in rows)
|
||||||
|
with ThreadPoolExecutor(max_workers=2) as pool:
|
||||||
|
for index,intent in enumerate(dataset['intents'][:args.intent_limit]):
|
||||||
|
# Rotação reduz associação entre identificador e posição de envio.
|
||||||
|
rotated=MODELS[index%7:]+MODELS[:index%7]
|
||||||
|
pending=[m for m in rotated if (intent['id'],m) not in done]
|
||||||
|
if not pending:continue
|
||||||
|
if used()+reserve*len(pending)>args.budget_total_usd:
|
||||||
|
print('STOP: limite acumulado, sem reserva para o próximo grupo.',flush=True);break
|
||||||
|
if any(e['event']=='finished' for e in events) and args.cooldown_seconds:
|
||||||
|
print(f'Controle de taxa: pausa de {args.cooldown_seconds}s antes do grupo {intent["id"]}.',flush=True)
|
||||||
|
remaining=args.cooldown_seconds
|
||||||
|
while remaining:
|
||||||
|
step=min(15,remaining);time.sleep(step);remaining-=step
|
||||||
|
futures=[]
|
||||||
|
for model in pending:
|
||||||
|
key=(intent['id'],model)
|
||||||
|
assert starts[key]<2,'Recuperação limitada a uma repetição após 429 documentado'
|
||||||
|
if starts[key]:
|
||||||
|
assert any(e['intent_id']==intent['id'] and e['model']==model for e in rejected),'Repetição sem rejeição infra documentada'
|
||||||
|
starts[key]+=1
|
||||||
|
|
||||||
|
core.append_event(log,{'event':'started','intent_id':intent['id'],'model':model,'at':datetime.now(timezone.utc).isoformat()})
|
||||||
|
futures.append(pool.submit(invoke,model,intent,base,headers,prices,raw))
|
||||||
|
stop=False
|
||||||
|
for future in futures:
|
||||||
|
row=future.result();rows.append(row);done.add((row['intent_id'],row['model']))
|
||||||
|
core.append_event(log,{'event':'finished','result':row})
|
||||||
|
events.append({'event':'finished','result':row})
|
||||||
|
print(f"{len(rows)}/84 {row['intent_id']} {row['model']} HTTP={row.get('http')} confiável={row['reliable_search']} USD={row['cost'].get('total_usd','unknown')}",flush=True)
|
||||||
|
stop|=row.get('http')!=200 or row.get('cost',{}).get('total_usd') is None
|
||||||
|
if stop:
|
||||||
|
print('STOP: diagnóstico necessário; não haverá repetição automática.',flush=True);break
|
||||||
|
total=sum(D(r['cost']['total_usd']) for r in rows if r.get('cost',{}).get('total_usd') is not None)
|
||||||
|
print(f'Concluídas={len(rows)}/84; custo conhecido US$ {total}; histórico acumulado conhecido US$ {D(study["baseline_cost_usd"])+total}',flush=True)
|
||||||
|
|
||||||
|
if __name__=='__main__':main()
|
||||||
24
benchmarks/screening/scoring-rules.json
Normal file
24
benchmarks/screening/scoring-rules.json
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"version": "v1",
|
||||||
|
"retrospective": true,
|
||||||
|
"weights": {
|
||||||
|
"cost": 0.5,
|
||||||
|
"search_reliability": 0.3,
|
||||||
|
"latency": 0.2
|
||||||
|
},
|
||||||
|
"category_weight": 0.25,
|
||||||
|
"cutoff_score": 70,
|
||||||
|
"minimum_confirmed_searches": 11,
|
||||||
|
"required_known_costs": 12,
|
||||||
|
"primary_score": "Por intenção: 100*(0.50*menor_custo/custo_modelo + 0.30*busca_confiável + 0.20*menor_latência/latência_modelo). Eficiência recebe zero quando a busca não é confiável. Média de três intenções por tema; cada tema pesa 25%.",
|
||||||
|
"reliability": "HTTP 200, custo conhecido, busca completed com fontes e citações, texto final não vazio e resposta não truncada; não é nota de correção factual.",
|
||||||
|
"normalization": "Melhor custo e melhor latência entre respostas confiáveis da mesma intenção; falhas não entram como melhores.",
|
||||||
|
"aliases": "Notas dos IDs da mesma configuração são promediadas; ambos devem satisfazer os gates. Selecionar duas configurações distintas com nota >=70, por ordem de nota. Não forçar dois aprovados.",
|
||||||
|
"ties": [
|
||||||
|
"menor custo médio por interação",
|
||||||
|
"menor mediana de latência",
|
||||||
|
"nome da configuração em ordem alfabética"
|
||||||
|
],
|
||||||
|
"sampling": "12 consultas: três por tema; seleção usa apenas hashes dos prompts, sem acesso aos resultados financeiros na função de seleção.",
|
||||||
|
"uncertainty": "Bootstrap estratificado e pareado de 2000 reamostragens, seed 20261015; intervalo descritivo de variabilidade de casos, não confiança populacional nem avaliação factual."
|
||||||
|
}
|
||||||
14
benchmarks/screening/study.json
Normal file
14
benchmarks/screening/study.json
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"scope": "Pré-teste retrospectivo de 12 prompts iguais por identificador; não altera a história da seleção original.",
|
||||||
|
"baseline_calls": 210,
|
||||||
|
"baseline_cost_usd": "11.50527390",
|
||||||
|
"baseline_source": "../financial-consolidation.json",
|
||||||
|
"expected_calls": 84,
|
||||||
|
"expected_total_calls_after": 294,
|
||||||
|
"new_inference_estimate_usd": [
|
||||||
|
5,
|
||||||
|
10
|
||||||
|
],
|
||||||
|
"baseline_financial_sha256": "f21cc006fbdab19431617c3a277a2a9a7a97a98ba8e8e74dcb3ca5aaff05958f",
|
||||||
|
"baseline_git_commit": "5510f2d45f93b8a73bc532e2092dad13e72fcc62"
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user