Skip to content

feat(bird): sistema de logging de execução para benchmarks BIRD - #22

Open
LuizCorrei4 wants to merge 9 commits into
devfrom
feat/bird-logging
Open

LuizCorrei4 wants to merge 9 commits into
devfrom
feat/bird-logging

Conversation

@LuizCorrei4

Copy link
Copy Markdown
Collaborator

Descrição

Implementa a versão simples inicial de logging para as execuções do benchmark BIRD (Ata 16 - Item 5: Observabilidade e Logging de Execuções).

Esta funcionalidade permite que a equipe (Bernardo, Antonio e demais) execute testes de novos modelos (ex: GPT-6 Luna) mantendo rastreabilidade completa do raciocínio, prompts enviados, schemas RAG, prints de execução de nós e histórico de tentativas de autocorreção.


O que foi feito

  1. Módulo src/bird/logger.py:
    • Classe BirdExecutionLogger com context manager capture_trace() via _TeeStream (intercepta prints de console sem suprimir a saída ao vivo do terminal).
    • Formatação estruturada em blocos delimitados (=== [START QID: ...] === e === [END QID: ...] ===).
    • Seções detalhadas por pergunta:
      • Metadados, pergunta e dicas/evidence.
      • Contexto de Schema recuperado (RAG / completo / data exploration).
      • Fluxo de execução capturado via Tee ([PLANEJADOR], [RETRIEVER], [SCHEMA], [DATA_EXPLORATION], [EXECUTOR]).
      • Histórico de tentativas (prompts enviados, raciocínio CoT/thoughts, SQL gerada e mensagens de erro do sandbox).
      • Comparação com a Gold Query (linhas retornadas, EX match, similaridade de texto, latência e consumo de tokens).
    • Cabeçalho e rodapé com sumário executivo de acurácia (EX final, Pass@1, tokens totais).
  2. Integração no Orquestrador scripts/test_bird_eval.py:
    • Adicionadas flags de CLI --log {on,off} (padrão: on) e --log-file <caminho_opcional>.
    • O arquivo .log é gerado automaticamente na mesma pasta da execução (reports/bird/run_YYYY-MM-DD_HH-MM-SS/) ao lado dos arquivos .csv, .md e .json.
  3. Exportação no Pacote src/bird/__init__.py:
    • Exporta BirdExecutionLogger.
  4. Testes Unitários e de Integração tests/test_bird_eval.py:
    • Cobertura de ciclo de vida completo do logger (header, query simples, query com autocorreção em 2 tentativas, captura via Tee, footer).
    • Teste de comportamento desabilitado (--log off).
    • Teste de arquivo customizado (--log-file).
    • Todos os 22 testes de benchmark passando com sucesso.
  5. Documentação e Roadmap da Versão Complexa:
    • temp_notes/plano_implementacao_logging_bird.md com arquitetura técnica e plano de evolução (subpastas por query com prompts brutos + integração com LangSmith / Arize Phoenix).

Como testar

# Rodar todos os testes do módulo BIRD
.venv/bin/pytest tests/test_bird_eval.py -v

# Rodar execução dry-run e inspecionar o log gerado na pasta reports/bird/run_*/
.venv/bin/python scripts/test_bird_eval.py --sample-size 2 --dry-run

Fugant1 and others added 9 commits October 13, 2026 22:33
… + Factory pattern

Updated the bird and the graph the handle kwargs like temperature
- Implement BirdExecutionLogger in src/bird/logger.py with stdout Tee interception and structured .log output.
- Log run header (config, filters, timestamp), per-query block (Question, Evidence, RAG Schema, Node trace, Attempt history with prompt/CoT/SQL/sandbox status, and Gold comparison), and run footer (EX accuracy, Pass@1, tokens, elapsed time).
- Integrate logger into scripts/test_bird_eval.py with CLI flags --log (on/off) and --log-file.
- Save execution log automatically alongside .csv, .md, and .json in reports/bird/run_TIMESTAMP/.
- Add comprehensive test coverage in tests/test_bird_eval.py (22 tests passing).
… we can pass a provider like 'openai' to specify and use models that do not have the gpt keyword
…isable schemacrawler by default

- Pass model_kwargs to InsightEngine in test_bird_eval.py
- Add --schemacrawler and --exploration-selector flags to test_bird_eval.py
- Change global usar_schemacrawler default to False across engine, runtime, and CLI
- Log enrich_rag, schemacrawler, exploration_selector, and model_kwargs in ExecutionLogger
- Update BENCHMARK.md and README.md documentation
- Add test coverage for new flags in test_bird_eval.py
…and disable SchemaCrawler by default

    - Implement results_f1_score in src/bird/metrics.py for column-level Precision, Recall, and F1 evaluation
    - Expand BirdCSVReporter to 19 columns and include Recall/Precision/F1 in Markdown Executive Summary, Difficulty Breakdown, and Failure
  Analysis
    - Log column-level metrics per query and in the run summary footer in BirdExecutionLogger
    - Add CLI flags for --schemacrawler (disabled by default), --enrich-rag, and --use-exploration-selector in scripts/test_bird_eval.py
    - Add unit tests in tests/test_bird_eval.py and update src/bird/BENCHMARK.md documentation
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants