Malaji71 commited on
Commit
6f89da7
·
verified ·
1 Parent(s): ad2b58b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +71 -18
app.py CHANGED
@@ -1,9 +1,8 @@
1
  import gradio as gr
2
  import os
3
  from openai import OpenAI
4
- import random
5
 
6
- # ✅ Configuración de la API (tu endpoint interno de HF)
7
  client = OpenAI(
8
  base_url="https://router.huggingface.co/v1",
9
  api_key=os.environ.get("Tzim_tzum", ""),
@@ -56,12 +55,12 @@ TZIMTZUM_FILTERS = [
56
  ]
57
 
58
  def tzimtzum_process(concept: str, intensity: int = 3):
59
- """Motor Tzim Tzum Hermenéutico: Expande Transforma por 7 filtros Valida."""
60
 
61
  if not concept.strip():
62
  return "Por favor, ingresa un concepto para transformar."
63
 
64
- # 🌱 FASE 1: EXPANSIÓN INICIAL (sin ruido externo)
65
  expansion_prompt = f"""
66
  Eres un motor de expansión conceptual puro. Toma el concepto '{concept}' y genera exactamente {intensity} variaciones RADICALMENTE DIFERENTES entre sí, explorando estos ángulos:
67
 
@@ -91,10 +90,10 @@ Variación 2 (Absurda): [texto]
91
  except Exception as e:
92
  return f"Error en expansión: {str(e)}"
93
 
94
- # 🎯 SELECCIONA LA PRIMERA VARIACIÓN PARA EL PROCESO HERMENÉUTICO (puedes cambiarlo a aleatoria si lo prefieres)
95
  current_concept = expanded_concepts.split("\n\n")[0] if "\n\n" in expanded_concepts else expanded_concepts
96
 
97
- # 🌀 FASE 2: CONTRACCIÓN HERMENÉUTICA — PASA POR LOS 7 FILTROS EN ORDEN FIJO
98
  transformation_log = []
99
 
100
  for filter_step in TZIMTZUM_FILTERS:
@@ -102,6 +101,10 @@ Variación 2 (Absurda): [texto]
102
  filter_title = filter_step["title"]
103
  filter_prompt = filter_step["prompt"]
104
 
 
 
 
 
105
  contraction_prompt = f"""
106
  Eres un transformador conceptual hermenéutico. Aplica el filtro "{filter_title}" ({filter_name}) a la siguiente idea:
107
 
@@ -114,27 +117,58 @@ Eres un transformador conceptual hermenéutico. Aplica el filtro "{filter_title}
114
  Instrucción específica del filtro:
115
  {filter_prompt}
116
 
117
- Transforma activamente la idea según esta instrucción. No evalúes, no juzgues — RECONSTRUYE.
118
  """
119
 
120
  try:
121
  contraction_response = client.chat.completions.create(
122
  model="Qwen/Qwen3-Next-80B-A3B-Instruct",
123
  messages=[{"role": "user", "content": contraction_prompt}],
124
- max_tokens=600,
125
  temperature=0.5
126
  )
127
  new_concept = contraction_response.choices[0].message.content
 
 
 
 
 
128
  transformation_log.append({
129
  "filter": filter_name,
130
  "title": filter_title,
131
  "result": new_concept
132
  })
133
  current_concept = new_concept
 
134
  except Exception as e:
135
- return f"Error en filtro '{filter_name}': {str(e)}"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
136
 
137
- # ✅ FASE 3: VALIDACIÓN FINAL (breve y estructurada)
138
  validation_prompt = f"""
139
  Evalúa esta idea final tras pasar por los 7 filtros hermenéuticos:
140
 
@@ -145,7 +179,7 @@ Responde en JSON con esta estructura exacta:
145
  "originalidad": número del 1-10,
146
  "coherencia": número del 1-10,
147
  "profundidad": número del 1-10,
148
- "resultado_final": "versión refinada y mejorada"
149
  }}
150
  """
151
 
@@ -160,8 +194,13 @@ Responde en JSON con esta estructura exacta:
160
  # 📄 Genera el reporte final
161
  filters_applied = " → ".join([f["title"] for f in transformation_log])
162
 
 
 
 
 
 
163
  return f"""
164
- ## RESULTADO TZIM TZUM HERMENÉUTICO
165
 
166
  **Concepto original:** {concept}
167
 
@@ -169,18 +208,32 @@ Responde en JSON con esta estructura exacta:
169
  {filters_applied}
170
 
171
  ### 🧩 Evolución Detallada:
172
- """
173
- + "\n\n".join([
174
- f"**{step['title']}**:\n{step['result']}\n---"
175
- for step in transformation_log
176
- ]) + f"""
177
 
178
  ### 📊 Validación Final:
179
  {validation_response.choices[0].message.content}
180
  """
181
 
182
  except Exception as e:
183
- return f"Error en validación: {str(e)}\n\nResultado parcial:\n{current_concept}"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
184
 
185
  # 🖥️ Interfaz Gradio (minimalista y funcional)
186
  def respond(message, history, intensity):
 
1
  import gradio as gr
2
  import os
3
  from openai import OpenAI
 
4
 
5
+ # ✅ Configuración de la API (tu endpoint y token personalizados de HF)
6
  client = OpenAI(
7
  base_url="https://router.huggingface.co/v1",
8
  api_key=os.environ.get("Tzim_tzum", ""),
 
55
  ]
56
 
57
  def tzimtzum_process(concept: str, intensity: int = 3):
58
+ """Motor Tzim Tzum Hermenéutico ROBUSTO: con gestión de tokens, truncamiento y recuperación parcial."""
59
 
60
  if not concept.strip():
61
  return "Por favor, ingresa un concepto para transformar."
62
 
63
+ # 🌱 FASE 1: EXPANSIÓN INICIAL
64
  expansion_prompt = f"""
65
  Eres un motor de expansión conceptual puro. Toma el concepto '{concept}' y genera exactamente {intensity} variaciones RADICALMENTE DIFERENTES entre sí, explorando estos ángulos:
66
 
 
90
  except Exception as e:
91
  return f"Error en expansión: {str(e)}"
92
 
93
+ # 🎯 SELECCIONA LA PRIMERA VARIACIÓN
94
  current_concept = expanded_concepts.split("\n\n")[0] if "\n\n" in expanded_concepts else expanded_concepts
95
 
96
+ # 🌀 FASE 2: CONTRACCIÓN HERMENÉUTICA — CON GESTIÓN DE TOKENS
97
  transformation_log = []
98
 
99
  for filter_step in TZIMTZUM_FILTERS:
 
101
  filter_title = filter_step["title"]
102
  filter_prompt = filter_step["prompt"]
103
 
104
+ # 🧩 Trunca la entrada actual si es demasiado larga
105
+ if len(current_concept) > 1500:
106
+ current_concept = current_concept[:1500] + "... [truncado para proceso]"
107
+
108
  contraction_prompt = f"""
109
  Eres un transformador conceptual hermenéutico. Aplica el filtro "{filter_title}" ({filter_name}) a la siguiente idea:
110
 
 
117
  Instrucción específica del filtro:
118
  {filter_prompt}
119
 
120
+ Transforma activamente la idea según esta instrucción. conciso. Máximo 300 palabras.
121
  """
122
 
123
  try:
124
  contraction_response = client.chat.completions.create(
125
  model="Qwen/Qwen3-Next-80B-A3B-Instruct",
126
  messages=[{"role": "user", "content": contraction_prompt}],
127
+ max_tokens=500,
128
  temperature=0.5
129
  )
130
  new_concept = contraction_response.choices[0].message.content
131
+
132
+ # ✂️ Truncamos la salida para no saturar el siguiente paso
133
+ if len(new_concept) > 1500:
134
+ new_concept = new_concept[:1500] + " [...]"
135
+
136
  transformation_log.append({
137
  "filter": filter_name,
138
  "title": filter_title,
139
  "result": new_concept
140
  })
141
  current_concept = new_concept
142
+
143
  except Exception as e:
144
+ # Si falla, guardamos lo que tenemos y devolvemos estado parcial
145
+ partial_result = "\n\n".join([
146
+ f"**{step['title']}**:\n{step['result']}\n---"
147
+ for step in transformation_log
148
+ ])
149
+ return f"""
150
+ ## ⚠️ PROCESO INTERRUMPIDO EN: {filter_title}
151
+
152
+ **Concepto original:** {concept}
153
+
154
+ ### 🔄 Transformación hasta ahora:
155
+ {' → '.join([f['title'] for f in transformation_log])}
156
+
157
+ ### 🧩 Evolución Detallada (parcial):
158
+ {partial_result}
159
+
160
+ ### ❌ Error:
161
+ {str(e)}
162
+
163
+ ---
164
+
165
+ 💡 *El sistema truncó respuestas largas para evitar saturación. Si necesitas más detalle, reduce la intensidad o procesa en etapas.*
166
+ """
167
+
168
+ # ✅ FASE 3: VALIDACIÓN FINAL (con truncamiento también)
169
+ if len(current_concept) > 1500:
170
+ current_concept = current_concept[:1500] + " [...]"
171
 
 
172
  validation_prompt = f"""
173
  Evalúa esta idea final tras pasar por los 7 filtros hermenéuticos:
174
 
 
179
  "originalidad": número del 1-10,
180
  "coherencia": número del 1-10,
181
  "profundidad": número del 1-10,
182
+ "resultado_final": "versión refinada y mejorada (máx. 200 palabras)"
183
  }}
184
  """
185
 
 
194
  # 📄 Genera el reporte final
195
  filters_applied = " → ".join([f["title"] for f in transformation_log])
196
 
197
+ detailed_evolution = "\n\n".join([
198
+ f"**{step['title']}**:\n{step['result']}\n---"
199
+ for step in transformation_log
200
+ ])
201
+
202
  return f"""
203
+ ## RESULTADO TZIM TZUM HERMENÉUTICO
204
 
205
  **Concepto original:** {concept}
206
 
 
208
  {filters_applied}
209
 
210
  ### 🧩 Evolución Detallada:
211
+ {detailed_evolution}
 
 
 
 
212
 
213
  ### 📊 Validación Final:
214
  {validation_response.choices[0].message.content}
215
  """
216
 
217
  except Exception as e:
218
+ # Si falla la validación, devolvemos al menos la transformación completa
219
+ detailed_evolution = "\n\n".join([
220
+ f"**{step['title']}**:\n{step['result']}\n---"
221
+ for step in transformation_log
222
+ ])
223
+ return f"""
224
+ ## ✅ TRANSFORMACIÓN COMPLETA (validación fallida)
225
+
226
+ **Concepto original:** {concept}
227
+
228
+ ### 🔄 Transformación Secuencial:
229
+ {filters_applied}
230
+
231
+ ### 🧩 Evolución Detallada:
232
+ {detailed_evolution}
233
+
234
+ ### ❌ Error en validación:
235
+ {str(e)}
236
+ """
237
 
238
  # 🖥️ Interfaz Gradio (minimalista y funcional)
239
  def respond(message, history, intensity):