caarleexx commited on
Commit
8b86df0
·
verified ·
1 Parent(s): 005aeea

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +62 -1
app.py CHANGED
@@ -463,7 +463,68 @@ RETORNE JSON:
463
  # ============================================================================
464
  # ORQUESTADOR PRINCIPAL v10 (SEM TRY-EXCEPT PARA DEPURAÇÃO)
465
  # ============================================================================
466
- def processar_pipeline(pergunta: str, historico: List, arquivo_anexo=None, dna=None) -> Tuple[str, List, Dict]:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
467
  if dna is None or not isinstance(dna, dict):
468
  dna = criar_dna()
469
 
 
463
  # ============================================================================
464
  # ORQUESTADOR PRINCIPAL v10 (SEM TRY-EXCEPT PARA DEPURAÇÃO)
465
  # ============================================================================
466
+ PIPELINE PRINCIPAL
467
+ def processar_pipeline(pergunta: str, historico: List, arquivo_anexo=None, dna=None) -> tuple:
468
+ if dna is None or not isinstance(dna, dict):
469
+ dna = criar_dna()
470
+ log("🧬 DNA inicializado")
471
+
472
+ log(f"🚀 PIPELINE v10: {pergunta[:60]}...")
473
+
474
+ if not pergunta.strip():
475
+ return "Digite uma pergunta válida", historico, dna
476
+
477
+ # Processa anexo
478
+ conteudo_anexo, tipo_anexo = processar_anexo(arquivo_anexo)
479
+ pergunta_completa = prompt_com_anexo(pergunta, conteudo_anexo, tipo_anexo)
480
+
481
+
482
+ # PASSOS 0-2
483
+ try:
484
+ p0 = passo_0_aluno(pergunta_completa, historico)
485
+ p1 = passo_1_triagem(pergunta_completa, p0, historico)
486
+ x1 = passo_x1_perguntas(pergunta_completa, p1, historico)
487
+ x2 = passo_x2_respostas(pergunta_completa, p1, x1)
488
+
489
+ # CENÁRIOS
490
+ p2 = passo_2_cenarios(pergunta_completa, p1, x1, x2)
491
+ p3 = passo_3_isolar(p2)
492
+ p4 = passo_4_validar(p1, p2, p3)
493
+
494
+
495
+ # LACUNAS
496
+ p5 = passo_5_lacunas(p1, p4)
497
+ if p5.get("decisao") == "INTERROMPIDO":
498
+ esclarecimento = p5.get("pergunta_clarificacao", "Preciso de mais informações")
499
+ return f"❓ **ESCLARECIMENTO NECESSÁRIO**:\n{esclarecimento}", historico, dna
500
+
501
+ # DECISÃO FINAL
502
+ p6 = passo_6_decidir(p2, p4, p5)
503
+ p7 = passo_7_sintetizar(p6)
504
+
505
+ # FORMATA RESPOSTA FINAL
506
+ resposta_final = formatar_resposta_para_chat(p7)
507
+
508
+ # NOVO HISTÓRICO
509
+ novo_historico = historico + [
510
+ {"role": "user", "content": pergunta},
511
+ {"role": "assistant", "content": resposta_final}
512
+ ]
513
+
514
+ # ATUALIZA DNA
515
+ dna["historico_chat"].append({"user": pergunta, "assistant": resposta_final})
516
+ dna["metadados"]["total_turnos"] += 1
517
+
518
+ log("✅ PIPELINE CONCLUÍDA")
519
+ return resposta_final, novo_historico, dna
520
+
521
+ except Exception as e:
522
+ erro_msg = f"❌ Erro na pipeline: {str(e)}"
523
+ log(f"ERRO: {e}", "ERROR")
524
+ return erro_msg, historico, dna
525
+
526
+
527
+ def processar_pipeline2(pergunta: str, historico: List, arquivo_anexo=None, dna=None) -> Tuple[str, List, Dict]:
528
  if dna is None or not isinstance(dna, dict):
529
  dna = criar_dna()
530