Spaces:
Runtime error
Runtime error
| from utils.utils import preparar_bloques_texto_redes | |
| from knowledge_base.utils_kb import crear_prompt_resumen_parcial, crear_prompt_resumen_global | |
| from openai import OpenAI | |
| import os | |
| openai = OpenAI(api_key=os.getenv("OPENAI_API_KEY")) | |
| def generar_resumenes_multiples(red, serie, fecha, textos): | |
| """ | |
| Devuelve un diccionario con 4 resúmenes distintos para red/serie/fecha. | |
| """ | |
| tipos_resumen = [ | |
| "resumen_diario_temas", | |
| "resumen_diario_preocupaciones", | |
| "resumen_diario_atributos_emociones", | |
| "resumen_diario_hashtags_menciones" | |
| ] | |
| resultados = {} | |
| for tipo in tipos_resumen: | |
| yield f"🧩 Iniciando generación de **{tipo}** para {red} - {serie} - {fecha}" | |
| try: | |
| bloques = preparar_bloques_texto_redes(textos) | |
| res_parciales = [] | |
| for i, bloque in enumerate(bloques): | |
| yield f"🔹 Enviando bloque {i+1}/{len(bloques)} al modelo para {tipo}, {red} - {serie} - {fecha}..." | |
| prompt = crear_prompt_resumen_parcial(tipo, red, serie, fecha, bloque) | |
| respuesta = openai.chat.completions.create( | |
| model="gpt-4o-mini", | |
| messages=[{"role": "user", "content": prompt}], | |
| temperature=0.3 | |
| # max_tokens=4000 | |
| ) | |
| contenido = respuesta.choices[0].message.content.strip() | |
| res_parciales.append(contenido) | |
| if len(res_parciales) > 1: | |
| yield f"🧠 Generando resumen global para **{tipo}**, {red} - {serie} - {fecha}..." | |
| prompt_global = crear_prompt_resumen_global(tipo, res_parciales, red, serie, fecha) | |
| respuesta = openai.chat.completions.create( | |
| model="gpt-4o-mini", | |
| messages=[{"role": "user", "content": prompt_global}], | |
| temperature=0.3 | |
| # max_tokens=4000 | |
| ) | |
| resumen_final = respuesta.choices[0].message.content.strip() | |
| else: | |
| yield f"📌 Solo 1 bloque detectado para **{tipo}**, se usará directamente el resumen parcial como final." | |
| resumen_final = res_parciales[0] | |
| resultados[tipo] = resumen_final | |
| yield f"✅ Resumen final generado para **{tipo}**, {red} - {serie} - {fecha}." | |
| except Exception as e: | |
| resultados[tipo] = f"❌ Error al generar {tipo}: {e}" | |
| yield f"❌ Error al generar **{tipo}**: {e}" | |
| yield "🎉 Todos los resúmenes fueron generados con éxito." | |
| yield resultados | |