mirror of
https://github.com/mcloh/poc-grok-websearch.git
synced 2026-11-05 22:04:12 +00:00
Audit Grok finalist selection with equal 12-intent screening across seven OCI IDs
This commit is contained in:
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