Skip to content

Feature/hitl#3

Merged
Petroncini merged 10 commits into
devfrom
feature/HITL
Apr 26, 2026
Merged

Feature/hitl#3
Petroncini merged 10 commits into
devfrom
feature/HITL

Conversation

@Fugant1
Copy link
Copy Markdown
Collaborator

@Fugant1 Fugant1 commented Apr 25, 2026

Novas Funcionalidades:

  • Implementação do sistema Human-In-The-Loop (HITL).
  • Empacotamento do fluxo como classe importavel.
  • Adição de seleção de modelo e injeção de contexto para o componente Critic.
  • Melhoria no planner.py com adição de preview de 500 caracteres para melhor visibilidade do schema.
  • Adição de toggle manual para HITL via CLI ou via construtor da classe.

Arquitetura e Refatoração:

  • Consolidação do namespace text_to_insight e unificação do Runtime com a API.

Documentação e Testes:

  • Atualização da documentação técnica para refletir o novo fluxo real de HITL e as responsabilidades dos agentes.
  • Finalização e validação dos testes.

Fugant1 and others added 10 commits April 2, 2026 12:47
…estes

- Planner retorna um JSON com decisão e pergunta
- Agora o schema sempre passa pelo Planner para que ele avalie se a pergunta é clara, ou não antes de chamar o code_agent
- Na main, ao invés de usarmos um simples Invoke, adicionei memória para que a pergunta do usuário seja feita fora do Grafo, desse modo podemos adicionar mais interações posteriormente
- Caso a pergunta seja absurda/não esta clara, o grafo é interrompido e é adicionada uma pergunta do agente ao estado, abrindo espaço para um input do usuário
- Mudei os testes para que estivessem coerentes com essa nova estrutura, adicionei um teste novo e re-rodei os testes em vcr para capturar as mudanças do Planner
…o schema, agora ele consegue captar um contexto razóavel da base de dados e ajuda na avaliação crítica
Resolve conflitos mantendo HITL, incorpora métricas de latência e tokens, e padroniza o planejador para manter consistência do estado para tomadas de decisões que não envolvem chamadas de LLMs => retorna 0 tokens gastos
Mudei a lógica do HITL para, ao invés de concatenar respostas, prover um hsitórico de conversa tanto para o planner quanto para o code_agent
Agora que possuimos histórico de conversa, dei acesso dele ao critic e possibilitei a seleção de openai ou google na hr de usar o modelo de API
O sistema agora suporta a desativação do HITL via linha de comando

- Introduz flag `--hitl {on,off}` via `argparse` (default: on).
- Altera `executar_consulta` para respeitar o estado de `hitl_ativado`.
- Registra `erro_execucao` e salva as métricas em CSV mesmo no encerramento por bloqueio.
- Exibe o estado atual do HITL no início da execução da main.
- Atualiza `DESENVOLVIMENTO.md` com tutorial e cenários de uso da flag.
- Adiciona `.gitattributes` para forçar padronização de quebra de linha (LF).
 Adicionei a classe da biblioteca ainda sem mudar a lógica na main e sem atualizar os testes para ela; Além disso, mudei a lógica do toggle para remover completamente essa opção do planner quando o hitl não esta disponível
…sta natural

- Alinha README e ARQUITETURA com o fluxo atual do grafo (7 nós, roteamento revisado e etapa de resposta natural após aprovação do crítico).
- Documenta o caminho de Human-in-the-Loop (espera_humana), a interrupção controlada e o comportamento quando o modo HITL está desligado.
- Atualiza a semântica do estado compartilhado com campos de conversa, resposta final e telemetria de tokens.
- Registra os status operacionais usados em runtime (aguardando_input e bloqueado_hitl).
- Corrige o guia de desenvolvimento com validação de import da classe Graph e com a estrutura real de módulos/pastas.
- Atualiza o índice técnico do projeto (INDICE.py) com a arquitetura vigente, componentes atuais e métricas/observabilidade.
- Sem alteração de lógica de código, apenas documentação
…pública

Este commit transforma a base de código em uma biblioteca semântica e
oficial, eliminando duplicidades e formalizando contratos de execução,
além de preparar o pacote para distribuição.

Principais alterações:

- Namespace e Empacotamento: Código base movido de `src` para
  `text_to_insight`. O pyproject.toml foi configurado para varredura do
  namespace oficial e criação do entrypoint de console `text-to-insight`.
- Unificação de Runtime: Lógica antes dividida entre main e InsightEngine
  foi centralizada em `runtime.py`, que agora cuida do estado, loop do grafo,
  métricas e controle central de HITL (ligado/desligado/pausado).
- Engine e CLI: Criação de uma CLI oficial (`cli.py`) suportando thread-id e
  db-path. A `InsightEngine` orquestra a execução via runtime (com métodos `run`
  e `resume`). O arquivo `main.py` virou apenas um adaptador fino da CLI.
- API Pública: Congelada no `__init__.py`, expondo apenas as três interfaces
  essenciais: InsightEngine, Graph e EstadoTextToInsight.
- Qualidade e Testes: Imports e assinaturas ajustados. Adição de novos
  testes de integração da Engine (fim a fim, com e sem HITL). Adição de
  `test_real_api_smoke.py` com o novo marker `real_api` no pytest.ini
  para monitoramento de provider/model drift.
- Documentação: README.md, DESENVOLVIMENTO.md e ARQUITETURA.md atualizados
  para refletir a nova estrutura de biblioteca, estratégias de teste,
  CI híbrida e contratos de HITL.
@Petroncini Petroncini merged commit d660b31 into dev Apr 26, 2026
3 of 6 checks passed
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.

4 participants