odelgi0810
ChatInterface
b09979b
Raw
History Blame Contribute Delete
2.64 kB
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