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