<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Matias Palomino</title>
    <description>The latest articles on DEV Community by Matias Palomino (@jmatias2411).</description>
    <link>https://dev.to/jmatias2411</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3663637%2Fb5a5ddd3-1da9-457f-af82-0596ce282230.png</url>
      <title>DEV Community: Matias Palomino</title>
      <link>https://dev.to/jmatias2411</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jmatias2411"/>
    <language>en</language>
    <item>
      <title>Crea tu propia Agencia de Marketing AI Local: Local, Privada y Open Source</title>
      <dc:creator>Matias Palomino</dc:creator>
      <pubDate>Sat, 20 Dec 2025 13:11:06 +0000</pubDate>
      <link>https://dev.to/jmatias2411/crea-tu-propia-agencia-de-marketing-ai-local-local-privada-y-open-source-32an</link>
      <guid>https://dev.to/jmatias2411/crea-tu-propia-agencia-de-marketing-ai-local-local-privada-y-open-source-32an</guid>
      <description>&lt;p&gt;La era de la Inteligencia Artificial ya no depende exclusivamente de la nube. Hoy, el poder es soberano, privado y 100% local. &lt;br&gt;
En este artículo, te guiaré paso a paso por el desarrollo de una Agencia de Marketing AI completa, construida con Python, LangGraph y Ollama. &lt;br&gt;
Descubrirás cómo orquestar un equipo de agentes autónomos un Investigador, un Redactor y un Supervisor que trabajan en perfecta sintonía desde tu propia máquina, sin suscripciones ni fugas de datos.&lt;/p&gt;
&lt;h2&gt;
  
  
  💡 ¿Por qué una solución Local y Open Source?
&lt;/h2&gt;

&lt;p&gt;Antes de entrar en el código (Enlace del repositorio al final del post), es vital entender las tres ventajas clave de esta arquitectura:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Privacidad Absoluta (Soberanía de Datos):&lt;/strong&gt; Tus investigaciones y borradores nunca salen de tu red local. Al usar modelos locales con &lt;strong&gt;Ollama&lt;/strong&gt;, garantizas que la información sensible de tu negocio o clientes permanezca segura y bajo tu control total.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Personalización Total:&lt;/strong&gt; A diferencia de las herramientas cerradas, aquí tú controlas el "cerebro". Puedes ajustar la "creatividad" del redactor o cambiar el idioma de la investigación simplemente modificando archivos de Python.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fácil Despliegue:&lt;/strong&gt; Gracias a gestores modernos como &lt;strong&gt;uv&lt;/strong&gt;, puedes clonar este repositorio y tener tu agencia funcionando en cuestión de minutos, sin las complicaciones habituales de los entornos virtuales.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  🏗️ La Arquitectura: LangGraph + Ollama
&lt;/h2&gt;

&lt;p&gt;El proyecto implementa un patrón de &lt;strong&gt;Supervisor/Worker&lt;/strong&gt; mediante un Grafo de Estado (&lt;code&gt;StateGraph&lt;/code&gt;). Imagina una oficina real: tienes trabajadores especializados y un jefe que coordina el flujo de trabajo.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ollama:&lt;/strong&gt; Es el motor de inferencia que permite ejecutar modelos como Llama 3.1 o Mistral de forma local.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LangGraph:&lt;/strong&gt; Es el director de orquesta. A diferencia de una cadena lineal, permite crear ciclos donde los agentes pueden interactuar, corregirse y colaborar hasta completar la tarea.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Paso 1: El Cerebro (&lt;code&gt;utils/llm.py&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;Aquí configuramos la conexión con Ollama utilizando &lt;code&gt;[ChatOllama(https://docs.langchain.com/oss/python/integrations/chat/ollama)&lt;/code&gt;. Lo más interesante es que adaptamos el modelo según su función mediante el parámetro de &lt;strong&gt;temperatura&lt;/strong&gt; (que controla la aleatoriedad de la respuesta):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# utils/llm.py
from langchain_ollama import ChatOllama

MODEL_NAME = "llama3.1"

# 1. Modelo preciso (Temperatura 0) para el Supervisor y decisiones lógicas.
llm = ChatOllama(model=MODEL_NAME, temperature=0)

# 2. Modelo creativo (Temperatura 0.7) para el Redactor (Textos más fluidos).
llm_creative = ChatOllama(model=MODEL_NAME, temperature=0.7)

# 3. Modelo forzado a JSON para decisiones estructuradas del Supervisor.
llm_json = ChatOllama(model=MODEL_NAME, format="json", temperature=0)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Finr39kdtveoaop62dzst.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Finr39kdtveoaop62dzst.png" alt=" " width="262" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Paso 2: La Memoria del Equipo (&lt;code&gt;agent/state.py&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;Para que los agentes colaboren, necesitan una "pizarra" compartida. Definimos un &lt;code&gt;AgentState&lt;/code&gt; que utiliza &lt;code&gt;operator.add&lt;/code&gt; para acumular el historial de mensajes. Esto asegura que el Redactor pueda consultar toda la información que el Investigador ha recopilado previamente.&lt;/p&gt;

&lt;h3&gt;
  
  
  Paso 3: Los Agentes Especializados (&lt;code&gt;agent/nodes.py&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;Cada "empleado" digital tiene una lógica específica:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;🔍 Investigador:&lt;/strong&gt; Utiliza una herramienta de búsqueda en Wikipedia (&lt;code&gt;WikipediaQueryRun&lt;/code&gt;) configurada para extraer hasta 5000 caracteres de información real. Esto es vital para evitar "alucinaciones" y basar el contenido solo en los datos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;✍️ Redactor:&lt;/strong&gt; Funciona como un "Escritor Técnico Senior". Recibe la investigación y genera artículos estructurados en Markdown, incluyendo títulos atractivos (H1), subtítulos (H2) y emojis para mejorar la legibilidad.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🧠 Supervisor:&lt;/strong&gt; Analiza el flujo. Si detecta que faltan datos, delega al Investigador; si ya hay suficiente información, pasa la tarea al Redactor.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Paso 4: El Flujo de Trabajo (&lt;code&gt;agent/graph.py&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;LangGraph une todas las piezas. Definimos que el punto de entrada es el Supervisor, establecemos las rutas condicionales y nos aseguramos de que el proceso termine (&lt;code&gt;END&lt;/code&gt;) una vez que el Redactor entrega el artículo final.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fchwp5ihxhjzejm7z1gjk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fchwp5ihxhjzejm7z1gjk.png" alt=" " width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  💻 Interfaz y Experiencia de Usuario (&lt;code&gt;main.py&lt;/code&gt;)
&lt;/h2&gt;

&lt;p&gt;Para que la herramienta sea intuitiva, implementé una Interfaz de Línea de Comandos (CLI) moderna con la librería &lt;strong&gt;Rich&lt;/strong&gt;. Esto permite visualizar en tiempo real, mediante paneles de colores y animaciones, qué agente está trabajando en cada momento. El resultado final se presenta elegantemente en formato Markdown dentro de la propia terminal.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Cómo desplegar tu propia agencia en 2 minutos
&lt;/h2&gt;

&lt;p&gt;Este proyecto está diseñado para ser clonado y ejecutado instantáneamente.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prerrequisitos:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python 3.10 o superior.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ollama&lt;/strong&gt; instalado y con el modelo descargado (&lt;code&gt;ollama pull llama3.1&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Instalación rápida:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# 1. Clonar el repositorio

git clone https://github.com/jmatias2411/agentes-langgraph-diciembre.git
cd agentes-langgraph-diciembre

# 2. Sincronizar entorno con uv (instala dependencias como langgraph y rich)

uv sync

# 3. Ejecutar la agencia

uv run main.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Vista Previa:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiuwdsy9xhnl8z39d5jx4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiuwdsy9xhnl8z39d5jx4.png" alt=" " width="800" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🌟 Conclusión
&lt;/h2&gt;

&lt;p&gt;Este proyecto es una prueba de concepto poderosa: podemos desarrollar soluciones de Marketing AI de alto nivel sin depender de nubes externas ni suscripciones mensuales. Tienes la libertad absoluta de modificar los agentes, cambiar los modelos por otros como Mistral o DeepSeek, y adaptar los prompts a tu propia voz de marca.&lt;/p&gt;

&lt;p&gt;Te invito a explorar el código, hacer un fork y contribuir con tus propios agentes especializados. ¡La IA local es el primer paso hacia la verdadera autonomía digital!&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/jmatias2411/agentes-langgraph-diciembre" rel="noopener noreferrer"&gt;Ver Repositorio en GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz7o9tcnf62tig64rzuiy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz7o9tcnf62tig64rzuiy.png" alt=" " width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Contenido redactado con asistencia de IA. Arquitectura visual e imágenes generadas por modelos de difusión para ilustrar el flujo de trabajo.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>opensource</category>
      <category>diciembredeagentes</category>
    </item>
  </channel>
</rss>
