Files changed (1) hide show
  1. app.py +64 -2
app.py CHANGED
@@ -477,7 +477,6 @@ Responda de forma concisa e direta, focando apenas na sua missão.
477
  # Não exibe o conteúdo da resposta do modelo no chat, apenas a confirmação
478
  novo_trecho = f"✅ **[{nome_agente}]** concluiu sua análise em ({duracao:.1f}s).\n"
479
  history[-1][1] = msg_atual + novo_trecho
480
-
481
  yield history, timeline_execucao, pipeline_state
482
 
483
  except Exception as e:
@@ -566,5 +565,68 @@ def ui_v29_stop_logic():
566
 
567
  return app
568
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
569
  if __name__ == "__main__":
570
- ui_v29_stop_logic().launch()
 
477
  # Não exibe o conteúdo da resposta do modelo no chat, apenas a confirmação
478
  novo_trecho = f"✅ **[{nome_agente}]** concluiu sua análise em ({duracao:.1f}s).\n"
479
  history[-1][1] = msg_atual + novo_trecho
 
480
  yield history, timeline_execucao, pipeline_state
481
 
482
  except Exception as e:
 
565
 
566
  return app
567
 
568
+ # if __name__ == "__main__":
569
+ # ui_v29_stop_logic().launch()
570
+ from fastapi import FastAPI, UploadFile, Form
571
+ from fastapi.responses import JSONResponse
572
+ from typing import List
573
+ import uvicorn
574
+
575
+ # Criação da aplicação FastAPI
576
+ app = FastAPI(title="AI Forensics API", description="API para análise de casos de indenizações por morte ou invalidez.")
577
+
578
+ # Endpoint para upload e processamento de arquivos
579
+ @app.post("/upload/")
580
+ async def upload_files(files: List[UploadFile], config_json: str = Form(...)):
581
+ history = []
582
+ try:
583
+ config_agentes = json.loads(config_json)
584
+ except json.JSONDecodeError:
585
+ return JSONResponse(content={"error": "Configuração JSON inválida."}, status_code=400)
586
+
587
+ for file in files:
588
+ nome = file.filename
589
+ if nome.lower().endswith('.pdf'):
590
+ pdf_proc, erro = processar_pdf_completo(file.file)
591
+ if erro:
592
+ history.append({"file": nome, "status": "error", "message": erro})
593
+ else:
594
+ history.append({"file": nome, "status": "processed", "data": pdf_proc})
595
+ else:
596
+ res = ler_arquivo_texto(file.file)
597
+ if res:
598
+ history.append({"file": nome, "status": "processed", "data": res})
599
+ else:
600
+ history.append({"file": nome, "status": "error", "message": "Falha ao ler o arquivo."})
601
+
602
+ return history
603
+
604
+ # Endpoint para iniciar uma análise com base em uma mensagem
605
+ @app.post("/analyze/")
606
+ async def analyze_message(message: str, config_json: str):
607
+ try:
608
+ protocolo = json.loads(config_json)
609
+ except json.JSONDecodeError:
610
+ return JSONResponse(content={"error": "Configuração JSON inválida."}, status_code=400)
611
+
612
+ try:
613
+ prompt_contexto = gerenciador.gerar_prompt_com_transcricoes(message)
614
+ except Exception as e:
615
+ return JSONResponse(content={"error": f"Erro ao gerar contexto: {str(e)}"}, status_code=500)
616
+
617
+ timeline_execucao = [{"passo": 1, "tipo": "prompt_usuario", "conteudo": prompt_contexto}]
618
+ pipeline_state = {"is_paused": False, "timeline": timeline_execucao, "remaining_agents": protocolo}
619
+
620
+ history = []
621
+ for response in executar_pipeline(history, timeline_execucao, protocolo, pipeline_state):
622
+ pass # Processa os passos da pipeline
623
+
624
+ return {"history": history, "timeline": timeline_execucao}
625
+
626
+ # Endpoint para consultar o estado dos arquivos processados
627
+ @app.get("/files/")
628
+ async def list_files():
629
+ return gerenciador.arquivos
630
+
631
  if __name__ == "__main__":
632
+ uvicorn.run(app, host="0.0.0.0", port=8000)