caarleexx commited on
Commit
5d76e27
·
verified ·
1 Parent(s): a7a8f85

Delete app.py

Browse files
Files changed (1) hide show
  1. app.py +0 -215
app.py DELETED
@@ -1,215 +0,0 @@
1
- # ╔════════════════════════════════════════════════════════════════════════════╗
2
- # ║ PIPELINE v18: METACOGNIÇÃO CRUA - COM EXPORTAÇÃO DE HISTÓRICO ║
3
- # ║ Adicionado: Botão para Download e Cópia de Chat Completo ║
4
- # ╚════════════════════════════════════════════════════════════════════════════╝
5
-
6
- # [TODO: Adicione as importações e código anterior do pipeline_v18_complete.py]
7
- # [Aqui estou mostrando APENAS as adições necessárias]
8
-
9
- import os
10
- import json
11
- import re
12
- from datetime import datetime
13
- from typing import Dict, List, Optional, Tuple
14
- import warnings
15
- import gradio as gr
16
- import google.generativeai as genai
17
-
18
- warnings.filterwarnings("ignore", category=FutureWarning, module="google.api_core")
19
-
20
- # ==================== NOVA SEÇÃO: EXPORTAÇÃO DE HISTÓRICO ====================
21
-
22
- def exportar_historico_txt(historico_chat: List[Dict]) -> str:
23
- """
24
- Converte histórico de chat em texto formatado para download.
25
-
26
- Entrada: Lista de dicts com 'user' e 'assistant'
27
- Saída: String formatada em TXT elegante
28
- """
29
- if not historico_chat:
30
- return "--- Nenhum histórico disponível ---\n"
31
-
32
- linhas = []
33
- linhas.append("=" * 80)
34
- linhas.append("HISTÓRICO DE CONVERSA - Pipeline v18 Metacognição")
35
- linhas.append(f"Gerado em: {datetime.now().strftime('%d/%m/%Y às %H:%M:%S')}")
36
- linhas.append(f"Total de turnos: {len(historico_chat)}")
37
- linhas.append("=" * 80)
38
- linhas.append("")
39
-
40
- for idx, turno in enumerate(historico_chat, 1):
41
- timestamp = turno.get("timestamp", "N/A")
42
- usuario = turno.get("user", "")
43
- assistente = turno.get("assistant", "")
44
-
45
- linhas.append(f"TURNO #{idx}")
46
- linhas.append(f"Timestamp: {timestamp}")
47
- linhas.append("-" * 40)
48
- linhas.append(f"👤 VOCÊ:\n{usuario}\n")
49
- linhas.append(f"🤖 ASSISTENTE:\n{assistente}\n")
50
- linhas.append("=" * 80)
51
- linhas.append("")
52
-
53
- return "\n".join(linhas)
54
-
55
-
56
- def fazer_download_historico(historico_chat: List[Dict]) -> Tuple[str, str]:
57
- """
58
- Prepara arquivo TXT para download via Gradio.
59
-
60
- Retorna:
61
- - (filepath, filename) para gr.File
62
- - Mensagem de feedback ao usuário
63
- """
64
- if not historico_chat:
65
- return None, "⚠️ Nenhum histórico para exportar."
66
-
67
- # Gera conteúdo TXT
68
- conteudo_txt = exportar_historico_txt(historico_chat)
69
-
70
- # Cria arquivo temporário
71
- timestamp_arquivo = datetime.now().strftime("%Y%m%d_%H%M%S")
72
- nome_arquivo = f"historico_chat_{timestamp_arquivo}.txt"
73
- caminho_arquivo = f"/tmp/{nome_arquivo}"
74
-
75
- try:
76
- with open(caminho_arquivo, "w", encoding="utf-8") as f:
77
- f.write(conteudo_txt)
78
-
79
- tamanho_kb = len(conteudo_txt.encode('utf-8')) / 1024
80
- mensagem = f"✅ Download pronto! ({tamanho_kb:.2f} KB)\nArquivo: {nome_arquivo}"
81
-
82
- return caminho_arquivo, mensagem
83
-
84
- except Exception as e:
85
- return None, f"❌ Erro ao criar arquivo: {str(e)}"
86
-
87
-
88
- def copiar_historico_clipboard(historico_chat: List[Dict]) -> str:
89
- """
90
- Copia histórico para clipboard (requer JavaScript no cliente).
91
- Nota: Gradio limita isso, então retornamos conteúdo que pode ser copiado manualmente.
92
- """
93
- if not historico_chat:
94
- return "⚠️ Nenhum histórico para copiar."
95
-
96
- conteudo = exportar_historico_txt(historico_chat)
97
-
98
- # Em Gradio, podemos retornar em um Textbox para copiar
99
- return f"✅ Histórico formatado (copie abaixo):\n\n{conteudo}"
100
-
101
-
102
- # ==================== INTERFACE GRADIO ATUALIZADA ====================
103
-
104
- def criar_interface():
105
- """Cria interface Gradio com exportação de histórico."""
106
-
107
- dna = criar_dna_vazio()
108
-
109
- def chat(mensagem, modo_sabio_check, historia_chat):
110
- """Callback para chat."""
111
- nonlocal dna
112
-
113
- resposta, dna = processar_turno_v18(mensagem, dna, modo_sabio_check)
114
-
115
- # Formata histórico para Gradio
116
- historia_chat.append((mensagem, resposta))
117
-
118
- return "", historia_chat, json.dumps(dna, indent=2, ensure_ascii=False)
119
-
120
-
121
- def baixar_chat(historia_chat):
122
- """Callback para download do chat."""
123
- # Converte formato Gradio para nosso formato interno
124
- historico_interno = []
125
- for user_msg, assistant_msg in historia_chat:
126
- historico_interno.append({
127
- "user": user_msg,
128
- "assistant": assistant_msg,
129
- "timestamp": datetime.now().isoformat()
130
- })
131
-
132
- filepath, mensagem = fazer_download_historico(historico_interno)
133
-
134
- if filepath:
135
- return filepath, mensagem
136
- else:
137
- return None, mensagem
138
-
139
-
140
- with gr.Blocks(title="Pipeline v18: Metacognição → Síntese") as interface:
141
- gr.Markdown("""
142
- # 🧠 Pipeline v18: Metacognição Pura
143
-
144
- **Arquitetura:**
145
- - Passos 0-6: Pensamento telegráfico (metacognição crua)
146
- - Sintetizador: Transforma em prosa humanizada
147
- - Passo 7: Verificação final (factual, lógica, ética)
148
- - Gestão de Memória: Limpeza a cada 10 turnos
149
-
150
- ---
151
-
152
- ### 📥 Exportação de Histórico
153
- Use os botões abaixo para copiar ou baixar todo o histórico da conversa em um arquivo `.txt`
154
- """)
155
-
156
- with gr.Row():
157
- with gr.Column(scale=3):
158
- chat_display = gr.Chatbot(label="Conversa", height=500)
159
-
160
- msg_input = gr.Textbox(
161
- label="Sua mensagem",
162
- placeholder="Digite sua pergunta...",
163
- lines=2
164
- )
165
-
166
- modo_sabio = gr.Checkbox(label="🧙 Modo Sábio (Filosófico)")
167
-
168
- with gr.Row():
169
- enviar_btn = gr.Button("📨 Enviar", variant="primary", scale=2)
170
- copiar_btn = gr.Button("📋 Copiar Histórico", scale=1)
171
- baixar_btn = gr.Button("📥 Baixar (.txt)", scale=1, variant="secondary")
172
-
173
- with gr.Column(scale=1):
174
- dna_display = gr.Code(label="DNA (JSON)", language="json", lines=30)
175
-
176
- # Outputs adicionais para exportação
177
- with gr.Row():
178
- status_export = gr.Textbox(label="Status de Exportação", interactive=False)
179
- arquivo_download = gr.File(label="Arquivo para Download", visible=False)
180
-
181
- # Eventos
182
- enviar_btn.click(
183
- chat,
184
- inputs=[msg_input, modo_sabio, chat_display],
185
- outputs=[msg_input, chat_display, dna_display]
186
- )
187
-
188
- msg_input.submit(
189
- chat,
190
- inputs=[msg_input, modo_sabio, chat_display],
191
- outputs=[msg_input, chat_display, dna_display]
192
- )
193
-
194
- # Botão Copiar (exibe histórico formatado)
195
- copiar_btn.click(
196
- copiar_historico_clipboard,
197
- inputs=[chat_display],
198
- outputs=[status_export]
199
- )
200
-
201
- # Botão Baixar (faz download do arquivo)
202
- baixar_btn.click(
203
- baixar_chat,
204
- inputs=[chat_display],
205
- outputs=[arquivo_download, status_export]
206
- )
207
-
208
- return interface
209
-
210
-
211
- # ==================== MAIN ====================
212
-
213
- if __name__ == "__main__":
214
- interface = criar_interface()
215
- interface.launch(share=False)