Spaces:
Sleeping
Sleeping
Update app.py
#3
by
caarleexx
- opened
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 |
-
|
|
|
|
| 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)
|