Modelo de Langgraph de transformacion de articulos tecnicos en didacticos

Este código implementa un flujo completo de procesamiento de artículos Markdown usando la arquitectura de LangGraph, que permite estructurar tareas como un grafo de nodos conectados por transiciones. El objetivo es transformar un texto académico en un artículo didáctico, claro y divulgativo sobre hipótesis arqueológicas.
Aquí te explico cada parte paso a paso:
🧱 1. Importaciones y configuración
python
import os, logging, datetime
from typing import Optional, List
from pydantic import BaseModel
from langchain_core.prompts import ChatPromptTemplate
from langgraph.graph import StateGraph
from agent_service_toolkit.core.load_ret_llm_models import get_model
- Se importan módulos para manejo de archivos, fechas, tipos de datos, y modelos de lenguaje.
get_model("Deepseek")carga el modelo LLM que se usará para generar contenido.
📋 2. Definición del estado (ArticleState)
python
class ArticleState(BaseModel):
article_md: str
core_ideas: Optional[List[str]] = None
grouped_themes: Optional[List[str]] = None
final_article: Optional[str] = None
Este objeto representa el estado compartido entre nodos. Se va enriqueciendo en cada paso del grafo.
🧠 3. Nodos del grafo
Cada nodo es una función que transforma el estado:
a. extract_core_ideas
- Usa un prompt para pedir al modelo que extraiga 20 ideas clave del artículo.
- Se enfoca en hipótesis arqueológicas (Renfrew, Kurgan, Atlante, etc.).
- Devuelve el estado con
core_ideas.
b. group_themes
- Agrupa las ideas clave en 4–6 temas divulgativos.
- Cada grupo tiene título y resumen.
- Devuelve el estado con
grouped_themes.
c. write_didactic_article
- Redacta un artículo narrativo y claro en español.
- Usa los temas agrupados como base.
- Devuelve el estado con
final_article.
🔗 4. Configuración del grafo LangGraph
python
graph = StateGraph(ArticleState)
graph.add_node("extract_core_ideas", extract_core_ideas)
graph.add_node("group_themes", group_themes)
graph.add_node("write_didactic_article", write_didactic_article)
graph.set_entry_point("extract_core_ideas")
graph.add_edge("extract_core_ideas", "group_themes")
graph.add_edge("group_themes", "write_didactic_article")
graph.set_finish_point("write_didactic_article")
app = graph.compile()
- Se define el grafo con tres nodos conectados secuencialmente.
compile()genera el grafo ejecutable.
🚀 5. Ejecución principal (main())
a. Carga de archivos Markdown
python
markdown_files = ["trace_20251031_214836.md"]
- Se leen los archivos desde una carpeta local.
- Se combinan en un solo texto.
b. Invocación del grafo
python
initial_state = ArticleState(article_md=combined_text)
final_state = app.invoke(initial_state)
- Se inicia el grafo con el texto como entrada.
- El resultado contiene ideas clave, temas agrupados y el artículo final.
c. Exportación del resultado
python
with open(output_file, "w", encoding="utf-8") as f:
f.write("# Introducción\n\n")
f.write(final_state["final_article"].strip())
f.write("\n\n---\n\n")
f.write("# Ideas clave desarrolladas\n\n")
for idea in final_state["core_ideas"]:
f.write(f"- {idea.strip()}\n")
- Se guarda el artículo como archivo Markdown con estructura clara.







La Cueva que Cambió Nuestra Historia: Un Viaje a los Orígenes en Lleida – sanchezpares.com
[…] Modelo de Langgraph de transformacion de articulos tecnicos en didacticos […]
La Sombra de un Mito: ¿Estuvo la Atlántida en Iberia? – sanchezpares.com
[…] Modelo de Langgraph de transformacion de articulos tecnicos en didacticos […]
Yacimiento de Santa Coloma d’Àger – sanchezpares.com
[…] https://sanchezpares.com/2025/11/03/modelo-de-langgraph-de-transformacion-de-articulos-tecnicos-en-d… […]